1 import {Injectable} from "@angular/core";
2 import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
3 import {MultiSelectItem} from "./multiselect.model";
4 import * as _ from "lodash";
8 export class MultiselectFormControlService {
10 convertOriginalItems = (control : MultiselectFormControl) : Promise<MultiSelectItem[]> => {
11 return new Promise<MultiSelectItem[]>((resolve) =>{
12 let result: MultiSelectItem[] = [];
13 if(control.options$) {
14 let index: number = 1;
15 control.options$.map((originalItems: any) => {
16 result.push(new MultiSelectItem(index, originalItems[control.ngValue], originalItems[control.selectedFieldName]));
25 convertOptionsToHashMap = (config : MultiselectFormControl) => {
27 return _.reduce(config.options$ , (obj, param: any ) => {
30 obj[param[config.ngValue]] = param;
35 convertSelectedItems(control : MultiselectFormControl) : Promise<MultiSelectItem[]>{
36 return new Promise<MultiSelectItem[]>((resolve) =>{
37 let result: MultiSelectItem[] = [];
38 const hashMap = this.convertOptionsToHashMap(control);
40 if(control.options$ && control.value) {
41 const convertArray = control.convertOriginalDataToArray ? control.convertOriginalDataToArray(control.value) : control.value;
42 convertArray.map((itemId) => {
43 const uniqueIdentifier = itemId.trim();
44 result.push(new MultiSelectItem(hashMap[uniqueIdentifier].index, hashMap[uniqueIdentifier][control.ngValue], hashMap[uniqueIdentifier][control.selectedFieldName]));