1 import {Injectable} from "@angular/core";
2 import {Utils} from "../../../shared/utils/utils";
3 import {Constants} from "../../../shared/utils/constants";
4 import Parameter = Constants.Parameter;
7 export class DynamicInputsService {
8 public getArbitraryInputs(inputs) {
10 let parameterList = [];
11 for (let key in inputs) {
14 type: Parameter.STRING,
16 value: inputs[key][Parameter.DEFAULT],
17 isRequired: inputs[key][Parameter.REQUIRED],
18 description: inputs[key][Parameter.DESCRIPTION]
20 switch (inputs[key][Parameter.TYPE]) {
21 case Parameter.INTEGER:
22 parameter.type = Parameter.NUMBER;
24 case Parameter.BOOLEAN:
25 parameter.type = Parameter.BOOLEAN;
30 parameter.type = Parameter.LIST;
33 parameter.type = Parameter.MAP;
36 if (Utils.hasContents(inputs[key][Parameter.CONSTRAINTS])
37 && ( inputs[key][Parameter.CONSTRAINTS].length > 0 )) {
38 let constraintsArray = inputs[key][Parameter.CONSTRAINTS];
39 this.addConstraintParameters(parameterList, constraintsArray, key, inputs, parameter);
43 parameterList.push(parameter);
49 private addConstraintParameters(parameterList, constraintsArray, key, inputs, parameter) {
50 // If there are constraints and the operator is "valid_values",
51 // use a select parameter type.
52 let i: number = constraintsArray.length;
53 let parameterPushed: boolean = false;
55 while ((i--) && (!parameterPushed)) {
56 let keys = Object.keys(constraintsArray[i]);
57 for (let operator in keys) {
58 switch (keys[operator]) {
59 case Parameter.VALID_VALUES:
60 let j: number = constraintsArray[i][Parameter.VALID_VALUES].length;
66 name: constraintsArray[i][Parameter.VALID_VALUES][j],
69 if ((Utils.hasContents(inputs[key][Parameter.DEFAULT]) )
70 && (inputs[key][Parameter.DEFAULT] === constraintsArray[i][Parameter.VALID_VALUES][j] )) {
72 name: constraintsArray[i][Parameter.VALID_VALUES][j],
78 parameter.type = Parameter.SELECT;
79 parameter.optionList = oList;
80 parameterList.push(parameter);
81 parameterPushed = true;
86 if (constraintsArray[i][Parameter.EQUAL] != null) {
87 parameter.type = Parameter.STRING;
88 parameter.isReadOnly = true;
89 parameter.value = constraintsArray[i][Parameter.EQUAL];
90 parameterList.push(parameter);
91 parameterPushed = true;
95 case Parameter.LENGTH:
96 if (constraintsArray[i][Parameter.LENGTH] != null) {
97 parameter.minLength = constraintsArray[i][Parameter.LENGTH];
98 parameter.maxLength = constraintsArray[i][Parameter.LENGTH];
99 parameterList.push(parameter);
100 parameterPushed = true;
103 case Parameter.MAX_LENGTH:
104 if (constraintsArray[i][Parameter.MAX_LENGTH] != null) {
105 parameter.maxLength = constraintsArray[i][Parameter.MAX_LENGTH];
106 parameterList.push(parameter);
107 parameterPushed = true;
110 case Parameter.MIN_LENGTH:
111 if (constraintsArray[i][Parameter.MIN_LENGTH] != null) {
112 parameter.minLength = constraintsArray[i][Parameter.MIN_LENGTH];
113 parameterList.push(parameter);
114 parameterPushed = true;
117 case Parameter.IN_RANGE:
118 if (constraintsArray[i][Parameter.IN_RANGE] != null) {
119 if (constraintsArray[i][Parameter.IN_RANGE].length > 1) {
120 parameter.min = constraintsArray[i][Parameter.IN_RANGE][0];
121 parameter.max = constraintsArray[i][Parameter.IN_RANGE][1];
122 parameter.type = Parameter.NUMBER;
123 parameter.value = inputs[key][Parameter.DEFAULT];
124 parameterList.push(parameter);
125 parameterPushed = true;
129 case Parameter.GREATER_THAN:
130 if (constraintsArray[i][Parameter.GREATER_THAN] != null) {
131 parameter.type = Parameter.NUMBER;
132 parameter.min = constraintsArray[i][Parameter.GREATER_THAN];
133 parameter.value = inputs[key][Parameter.DEFAULT];
134 parameterList.push(parameter);
135 parameterPushed = true;