Bump versions by x.(y+1).z for next dev cycle
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / models / parameterslist.model.js
index bcbd560cf3d6af201d8f7687cfaea9e3f2d27c7e..c2247d39b58b5d25de7be4b9aeced0fab935f29f 100644 (file)
@@ -7,17 +7,17 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
      * @param ParsingJsonService
      * @param ParametersService
      */
-    function ParametersListModel(ParsingJsonService, ParametersService){
+    function ParametersListModel($filter, ParsingJsonService, ParametersService){
 
-        BaseListModel.call(this, ParsingJsonService);
+        BaseListModel.call(this, $filter, ParsingJsonService);
 
         /* jshint validthis: true */
         var self = this;
         self.list = [];
 
-        self.addRequestToList = addRequestToList;
+        self.addItemToList = addItemToList;
         self.clear = clear;
-        self.createEntry = createEntry;
+        self.createItem = createItem;
         self.deleteParameterItem = deleteParameterItem;
         self.setName = setName;
         self.addEmptyItem = addEmptyItem;
@@ -25,6 +25,28 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         self.createParamsFromJson = createParamsFromJson;
         self.isNameUnique = isNameUnique;
         self.removeEmptyParams = removeEmptyParams;
+        self.applyValsForFilters = applyValsForFilters;
+        self.clone = clone;
+
+        /**
+         * Create copy of parameters list model
+         */
+        function clone() {
+            var result = ParametersService.createEmptyParametersList(self.name);
+            self.list.forEach(function (param) {
+                result.addItemToList(param.clone());
+            });
+            return result;
+        }
+
+        /**
+         * Apply all parameters names and values for filtering
+         */
+        function applyValsForFilters() {
+            self.list.forEach(function (param) {
+                param.applyValsForFilters();
+            });
+        }
 
         /**
          * Returns false if name is already used
@@ -32,7 +54,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          * @returns {boolean}
          */
         function isNameUnique(nameValue) {
-            return nameValue.length === 0 || self.list.filter(function (item) {
+            return !nameValue || self.list.filter(function (item) {
                 return item.name === nameValue;
             }).length === 1;
         }
@@ -47,7 +69,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
                 ParsingJsonService.parseJson(data).map(function (elem) {
                     return ParametersService.createParameter(elem);
                 }).forEach(function (elem) {
-                    self.addRequestToList(elem);
+                    self.addItemToList(elem);
                 });
             }
         }
@@ -74,12 +96,12 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          * Add empty param to list
          */
         function addEmptyItem() {
-            self.addRequestToList(self.createEntry());
+            self.addItemToList(self.createItem());
         }
 
         function removeEmptyParams() {
             self.list = self.list.filter(function (param) {
-                return param.name.length > 0;
+                return param.name && param.name.length > 0;
             });
         }
 
@@ -88,7 +110,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          * @param elem
          * @returns {Parameter|*}
          */
-        function createEntry(element) {
+        function createItem(element) {
             if (!element){
                 element = {
                     name: '',
@@ -102,7 +124,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          *
          * @param paramObj
          */
-        function addRequestToList(paramObj){
+        function addItemToList(paramObj){
             self.list.push(paramObj);
         }