aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.service.ts
blob: 4a958056377f1dcd8e7c87cf4fbd839c3d5cf284 (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
import {Injectable} from "@angular/core";
import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
import {MultiSelectItem} from "./multiselect.model";
import * as _ from "lodash";


@Injectable()
export class MultiselectFormControlService {

  convertOriginalItems = (data : MultiselectFormControl) : Promise<MultiSelectItem[]> => {
    return new Promise<MultiSelectItem[]>((resolve) =>{
      let result: MultiSelectItem[] = [];
      if(data.options$) {
        let index: number = 1;
        data.options$.map((originalItems: any) => {
          result.push(new MultiSelectItem(index, originalItems[data.ngValue], originalItems[data.selectedFieldName]));
          index++;
        });
      }
      resolve(result);
    })
  };


  convertOptionsToHashMap = (config : MultiselectFormControl) => {
    let index = 1;
    return _.reduce(config.options$ , (obj, param: any ) => {
      param.index = index;
      index++;
      obj[param[config.ngValue]] = param;
      return obj;
    }, {});
  };

  convertSelectedItems(data : MultiselectFormControl) : Promise<MultiSelectItem[]>{
    return new Promise<MultiSelectItem[]>((resolve) =>{
      let result: MultiSelectItem[] = [];
      const hashMap = this.convertOptionsToHashMap(data);

      if(data.options$ && data.value) {
        const convertArray = data.convertOriginalDataToArray ? data.convertOriginalDataToArray(data.value) : data.value;
        convertArray.map((itemId) => {
          const uniqueIdentifier = itemId.trim();
          result.push(new MultiSelectItem(hashMap[uniqueIdentifier].index, hashMap[uniqueIdentifier][data.ngValue], hashMap[uniqueIdentifier][data.selectedFieldName]));
        });
      }
      resolve(result);
    });
  }
}