summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/components/ui/modal/add-elements/add-elements.component.ts
blob: 1d05b27d6809f459582fabdcdbf0ae6a54aca5e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
 * Created by ob0695 on 11.04.2018.
 */
import {Component, Input} from "@angular/core";
import {UiBaseObject} from "../../../../../models/ui-models/ui-base-object";
import {IDropDownOption} from "sdc-ui/lib/angular/form-elements/dropdown/dropdown-models";

@Component({
    selector: 'add-elements',
    templateUrl: './add-elements.component.html',
    styleUrls: ['./add-elements.component.less']
})

export class AddElementsComponent {

    @Input() elementsToAdd:Array<UiBaseObject>;
    @Input() elementName: string;

    private existingElements:Array<UiBaseObject>;
    private dropdownOptions:Array<IDropDownOption>;
    private selectedElement:IDropDownOption;

    ngOnInit() {
        this.existingElements = [];
        this.convertElementToDropdownDisplay();

    }

    private convertElementToDropdownDisplay = () => {
        this.dropdownOptions = [];
        _.forEach(this.elementsToAdd, (elementToAdd:UiBaseObject) =>{
           this.dropdownOptions.push({label:elementToAdd.name, value: elementToAdd.uniqueId })
        });
    }

    onElementSelected(selectedElement:IDropDownOption):void {
        this.selectedElement = selectedElement
    }

    addElement():void {

        if(this.selectedElement){
            this.dropdownOptions = _.reject(this.dropdownOptions, (option: IDropDownOption) => { // remove from dropDown
                return option.value === this.selectedElement.value;
            });

            let selected = _.find(this.elementsToAdd, (element:UiBaseObject) => {
                return this.selectedElement.value === element.uniqueId;
            });

            this.elementsToAdd =_.without(this.elementsToAdd, selected); // remove from optional elements to add
            this.existingElements.push(selected); // add to existing element list
            this.selectedElement = undefined;
        } else {
            console.log("no element selected"); //TODO:show error?
        }
    }

    removeElement(element:UiBaseObject):void {

        this.existingElements =_.without(this.existingElements, element); // remove from optional elements to add
        this.dropdownOptions.push({label:element.name, value: element.uniqueId });
        this.elementsToAdd.push(element);
    }
}