Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / home / folders.ts
1
2 export interface IItemMenu {
3
4 }
5
6 export interface IMenuItemProperties {
7     text:string;
8     group:string;
9     state:string;
10     dist:string;
11     groupname:string;
12     states:Array<any>;
13 }
14
15 export class FoldersMenu {
16     private _folders:Array<FoldersItemsMenu> = [];
17
18     constructor(folders:Array<IMenuItemProperties>) {
19         let self = this;
20         folders.forEach(function (folder:IMenuItemProperties) {
21             if (folder.groupname) {
22                 self._folders.push(new FoldersItemsMenuGroup(folder));
23             } else {
24                 self._folders.push(new FoldersItemsMenu(folder));
25             }
26         });
27         self._folders[0].setSelected(true);
28     }
29
30     public getFolders():Array<FoldersItemsMenu> {
31         return this._folders;
32     }
33
34     public getCurrentFolder():FoldersItemsMenu {
35         let menuItem:FoldersItemsMenu = undefined;
36         this.getFolders().forEach(function (tmpFolder:FoldersItemsMenu) {
37             if (tmpFolder.isSelected()) {
38                 menuItem = tmpFolder;
39             }
40         });
41         return menuItem;
42     }
43
44     public setSelected(folder:FoldersItemsMenu):void {
45         this.getFolders().forEach(function (tmpFolder:FoldersItemsMenu) {
46             tmpFolder.setSelected(false);
47         });
48         folder.setSelected(true);
49     }
50 }
51
52 export class FoldersItemsMenu implements IItemMenu {
53     public text:string;
54     public group:string;
55     public state:string;
56     public dist:string;
57     public states:Array<any>;
58
59     private selected:boolean = false;
60
61     constructor(menuProperties:IMenuItemProperties) {
62         this.text = menuProperties.text;
63         this.group = menuProperties.group;
64         this.state = menuProperties.state;
65         this.states = menuProperties.states;
66         this.dist = menuProperties.dist;
67     }
68
69     public isSelected():boolean {
70         return this.selected;
71     }
72
73     public setSelected(value:boolean):void {
74         this.selected = value;
75     }
76
77     public isGroup():boolean {
78         return false;
79     }
80 }
81
82 export class FoldersItemsMenuGroup extends FoldersItemsMenu {
83     public groupname:string;
84
85     constructor(menuProperties:IMenuItemProperties) {
86         super(menuProperties);
87         this.groupname = menuProperties.groupname;
88     }
89
90     public isGroup():boolean {
91         return true;
92     }
93 }