1 define(['app/yangman/models/baselist.model'], function (BaseListModel){
5 * Base parameters list object
7 * @param ParsingJsonService
8 * @param ParametersService
10 function ParametersListModel($filter, ParsingJsonService, ParametersService){
12 BaseListModel.call(this, $filter, ParsingJsonService);
14 /* jshint validthis: true */
18 self.addItemToList = addItemToList;
20 self.createItem = createItem;
21 self.deleteParameterItem = deleteParameterItem;
22 self.setName = setName;
23 self.addEmptyItem = addEmptyItem;
25 self.createParamsFromJson = createParamsFromJson;
26 self.isNameUnique = isNameUnique;
27 self.removeEmptyParams = removeEmptyParams;
28 self.applyValsForFilters = applyValsForFilters;
32 * Create copy of parameters list model
35 var result = ParametersService.createEmptyParametersList(self.name);
36 self.list.forEach(function (param) {
37 result.addItemToList(param.clone());
43 * Apply all parameters names and values for filtering
45 function applyValsForFilters() {
46 self.list.forEach(function (param) {
47 param.applyValsForFilters();
52 * Returns false if name is already used
56 function isNameUnique(nameValue) {
57 return !nameValue || self.list.filter(function (item) {
58 return item.name === nameValue;
63 * Using when importing data from json file
66 function createParamsFromJson(data){
69 ParsingJsonService.parseJson(data).map(function (elem) {
70 return ParametersService.createParameter(elem);
71 }).forEach(function (elem) {
72 self.addItemToList(elem);
78 * Get all parameters in json for exporting
82 return self.list.map(function (param){
83 return param.toJSON();
91 function setName(name) {
96 * Add empty param to list
98 function addEmptyItem() {
99 self.addItemToList(self.createItem());
102 function removeEmptyParams() {
103 self.list = self.list.filter(function (param) {
104 return param.name && param.name.length > 0;
111 * @returns {Parameter|*}
113 function createItem(element) {
120 return ParametersService.createParameter(element);
127 function addItemToList(paramObj){
128 self.list.push(paramObj);
135 function deleteParameterItem(paramObj){
136 self.list.splice(self.list.indexOf(paramObj), 1);
147 self.toJSON = function () {
148 return self.list.filter(notEmptyParam).map(function (elem) {
149 return elem.toJSON();
152 function notEmptyParam(item){
158 ParametersListModel.prototype = Object.create(BaseListModel.prototype);
160 return ParametersListModel;