\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
+ 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
}\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
\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
};\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
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
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
}\r
}\r
\r
-appDS2.directive('parameterBlock', [ "$log", "PARAMETER", "UtilityService",\r
+appDS2.directive('parameterBlock', [ "$log", "PARAMETER", "UtilityService", "$compile",\r
parameterBlockDirective ]);\r
\r
\r