re base code
[sdc.git] / catalog-ui / src / app / ng2 / components / ui / modal / add-elements / add-elements.component.ts
1 /**
2  * Created by ob0695 on 11.04.2018.
3  */
4 import {Component, Input} from "@angular/core";
5 import {UiBaseObject} from "../../../../../models/ui-models/ui-base-object";
6 import {IDropDownOption} from "sdc-ui/lib/angular/form-elements/dropdown/dropdown-models";
7
8 @Component({
9     selector: 'add-elements',
10     templateUrl: './add-elements.component.html',
11     styleUrls: ['./add-elements.component.less']
12 })
13
14 export class AddElementsComponent {
15
16     @Input() elementsToAdd:Array<UiBaseObject>;
17     @Input() elementName: string;
18
19     private existingElements:Array<UiBaseObject>;
20     private dropdownOptions:Array<IDropDownOption>;
21     private selectedElement:IDropDownOption;
22
23     ngOnInit() {
24         this.existingElements = [];
25         this.convertElementToDropdownDisplay();
26
27     }
28
29     private convertElementToDropdownDisplay = () => {
30         this.dropdownOptions = [];
31         _.forEach(this.elementsToAdd, (elementToAdd:UiBaseObject) =>{
32            this.dropdownOptions.push({label:elementToAdd.name, value: elementToAdd.uniqueId })
33         });
34     }
35
36     onElementSelected(selectedElement:IDropDownOption):void {
37         this.selectedElement = selectedElement
38     }
39
40     addElement():void {
41
42         if(this.selectedElement){
43             this.dropdownOptions = _.reject(this.dropdownOptions, (option: IDropDownOption) => { // remove from dropDown
44                 return option.value === this.selectedElement.value;
45             });
46
47             let selected = _.find(this.elementsToAdd, (element:UiBaseObject) => {
48                 return this.selectedElement.value === element.uniqueId;
49             });
50
51             this.elementsToAdd =_.without(this.elementsToAdd, selected); // remove from optional elements to add
52             this.existingElements.push(selected); // add to existing element list
53             this.selectedElement = undefined;
54         } else {
55             console.log("no element selected"); //TODO:show error?
56         }
57     }
58
59     removeElement(element:UiBaseObject):void {
60
61         this.existingElements =_.without(this.existingElements, element); // remove from optional elements to add
62         this.dropdownOptions.push({label:element.name, value: element.uniqueId });
63         this.elementsToAdd.push(element);
64     }
65 }