src/Application/View/SideMenu/Presenter.ts   A
last analyzed

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 50
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 42
dl 0
loc 50
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0
wmc 2
mnd 1
bc 1
fnc 1
bpm 1
cpm 2
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A Presenter.present 0 24 2
1
import PageRegistry from '@enbock/application-router/Registry';
2
import {PageData} from '@enbock/application-router/Router';
3
import {Observer} from '@enbock/state-value-observer/ValueObserver';
4
import Translator from '../../../Language/Translator';
5
import Model from './Model';
6
7
export default class Presenter {
8
  menuOpenState: Observer<boolean>;
9
  routerObserver: Observer<PageData | null>;
10
  pageRegistry: PageRegistry;
11
  translator: Observer<Translator>;
12
13
  constructor(
14
    menuOpenState: Observer<boolean>,
15
    translator: Observer<Translator>,
16
    routerObserver: Observer<PageData | null>,
17
    pageRegistry: PageRegistry
18
  ) {
19 3
    this.translator = translator;
20 3
    this.menuOpenState = menuOpenState;
21 3
    this.routerObserver = routerObserver;
22 3
    this.pageRegistry = pageRegistry;
23
  }
24
25
  present(): Model {
26 2
    const model: Model = new Model();
27 2
    model.isOpen = this.menuOpenState.value;
28
29 2
    const translator: Translator = this.translator.value;
30 2
    model.translation = {
31
      home: translator.translate('Application.SideMenu.Home'),
32
      settings: translator.translate('Application.SideMenu.Settings')
33
    };
34
35 2
    const pages: PageData[] = this.pageRegistry.getPages();
36 2
    const activePage: string = this.routerObserver.value?.name || '';
37
38 2
    model.pageNames = [];
39 2
    pages.forEach(
40
      (page: PageData) => {
41 4
        model.pageNames.push(page.name);
42 4
        model.isActive[page.name] = (activePage == page.name);
43 4
        model.url[page.name] = page.currentUrl;
44
      }
45
    );
46
47 2
    return model;
48
  }
49
}
50