org.onap migration
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / directives / parameterBlockDirective.js
index e57b43e..d36b382 100755 (executable)
@@ -20,7 +20,7 @@
 \r
 "use strict";\r
 \r
-var parameterBlockDirective = function($log, PARAMETER, UtilityService) {\r
+var parameterBlockDirective = function($log, PARAMETER, UtilityService, $compile) {\r
     /*\r
      * If "IS_SINGLE_OPTION_AUTO_SELECTED" is set to "true" ...\r
      * \r
@@ -221,6 +221,9 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
                     + additionalStyle + "'>" + getOptionListHtml(parameter)\r
                     + "</select>";\r
                 break;\r
+            case PARAMETER.MULTI_SELECT:\r
+                return '<multiselect id="' + parameter.id + '"' + attributeString + ' ng-model="multiselectModel.' + parameter.id + '" options="getOptionsList(\'' + parameter.id + '\')" display-prop="name" id-prop="id"></multiselect>';\r
+                break;\r
             case PARAMETER.STRING:\r
             default:\r
                 var value = "";\r
@@ -255,9 +258,7 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
         }\r
 \r
         if (UtilityService.hasContents(parameter.prompt)) {\r
-           if (!(IS_SINGLE_OPTION_AUTO_SELECTED && parameter.optionList.length === 1) || !(parameter.isSingleOptionAutoSelected && parameter.optionList.length === 1)) {\r
                 html += "<option value=''>" + parameter.prompt + "</option>";\r
-            }\r
         }\r
 \r
         for (var i = 0; i < parameter.optionList.length; i++) {\r
@@ -298,7 +299,7 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
 \r
     var getParameter = function(element, expectedId) {\r
         var id = $(element).attr("parameter-id");\r
-        if (expectedId !== undefined && expectedId !== id) {\r
+        if (!id || (expectedId !== undefined && expectedId !== id)) {\r
             return undefined;\r
         }\r
         var parameter = {\r
@@ -327,14 +328,20 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
     };\r
 \r
     var getRequiredField = function(element) {\r
-        if ($(element).prop("type") === "text") {\r
-            $(element).val($(element).val().trim());\r
+        if($(element).is("multiselect")) {\r
+            if(!$(element).find(".active").text().trim()) {\r
+                return '"' + $(element).attr("parameter-name") + '"';\r
+            }\r
         }\r
-        if ($(element).val() === "" || $(element).val() === null) {\r
-            return '"' + $(element).attr("parameter-name") + '"';\r
-        } else {\r
-            return "";\r
+        else {\r
+            if ($(element).prop("type") === "text") {\r
+                $(element).val($(element).val().trim());\r
+            }\r
+            if ($(element).val() === "" || $(element).val() === null) {\r
+                return '"' + $(element).attr("parameter-name") + '"';\r
+            }\r
         }\r
+        return "";\r
     };\r
 \r
     var callback = function(element, scope) {\r
@@ -354,13 +361,20 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
         link : function(scope, element, attrs) {\r
 \r
             var control = scope.control || {};\r
+            scope.multiselectModel = {};\r
 \r
+            scope.getOptionsList = function (parameterId) {\r
+                return _.find(scope.parameterList, {'id': parameterId})["optionList"];\r
+            };\r
             control.setList = function(parameterList) {\r
+                scope.parameterList = parameterList;\r
+                scope.multiselectModel = {};\r
                 var html = "";\r
                 for (var i = 0; i < parameterList.length; i++) {\r
                     html += getParameterHtml(parameterList[i], attrs.editable);\r
                 }\r
-                element.html(html);\r
+                element.replaceWith($compile(element.html(html))(scope));\r
+\r
                 element.find("input, select").bind("change", function() {\r
                     callback(this, scope);\r
                 });\r
@@ -390,13 +404,16 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
                         parameterList.push(parameter);\r
                     }\r
                 });\r
+                angular.forEach(scope.multiselectModel, function(value, key) {\r
+                    parameterList.push({id: key, value: value});\r
+                });\r
                 return parameterList;\r
             }\r
 \r
             control.getRequiredFields = function() {\r
                 var requiredFields = "";\r
                 var count = 0;\r
-                element.find("input, select").each(function() {\r
+                element.find("input, select, multiselect").each(function() {\r
                     if ($(this).attr("is-required") === "true") {\r
                         var requiredField = getRequiredField(this);\r
                         if (requiredField !== "") {\r
@@ -418,7 +435,7 @@ var parameterBlockDirective = function($log, PARAMETER, UtilityService) {
     }\r
 }\r
 \r
-appDS2.directive('parameterBlock', [ "$log", "PARAMETER", "UtilityService",\r
+appDS2.directive('parameterBlock', [ "$log", "PARAMETER", "UtilityService", "$compile",\r
     parameterBlockDirective ]);\r
 \r
 \r