ChooseProject::getServiceProjects()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 3.0309

Importance

Changes 0
Metric Value
cc 2
eloc 10
nc 2
nop 1
dl 0
loc 15
ccs 4
cts 11
cp 0.3636
crap 3.0309
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace Godbout\Alfred\Time\Menus;
4
5
use Godbout\Alfred\Time\Workflow;
6
use Godbout\Alfred\Workflow\Icon;
7
use Godbout\Alfred\Workflow\Item;
8
use Godbout\Alfred\Workflow\ScriptFilter;
9
10
class ChooseProject extends Menu
11
{
12 12
    public static function scriptFilter()
13
    {
14 12
        $service = Workflow::serviceEnabled();
15
16 12
        if ($service->allowsEmptyProject) {
17 12
            ScriptFilter::add(self::getNoProject());
18
        }
19
20 12
        foreach (self::getServiceProjects($service) as $project) {
21
            ScriptFilter::add($project);
22
        }
23
24 12
        if (self::userInput()) {
25
            ScriptFilter::filterItems(self::userInput());
26
        }
27
28 12
        ScriptFilter::sortItems('asc', 'match');
29 12
    }
30
31 12
    private static function getNoProject()
32
    {
33 12
        return Item::create()
34 12
            ->title('No project')
35 12
            ->subtitle('Timer will be created without a project')
36 12
            ->match('')
37 12
            ->arg('choose_tag');
38
    }
39
40 12
    private static function getServiceProjects($service)
41
    {
42 12
        $projects = [];
43
44 12
        foreach ($service->projects() as $id => $name) {
45
            $projects[] = Item::create()
46
                ->title($name)
47
                ->variable('timer_project_id', $id)
48
                ->variable('timer_project_name', $name)
49
                ->match($name)
50
                ->arg('choose_tag')
51
                ->icon(Icon::create("resources/icons/$service.png"));
52
        }
53
54 12
        return $projects;
55
    }
56
}
57