Merge "Yangman - change loader"
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / controllers / params-admin.controller.js
1 define([
2 ], function () {
3     'use strict';
4
5     angular.module('app.yangman').controller('ParamsAdminCtrl', ParamsAdminCtrl);
6
7     ParamsAdminCtrl.$inject = ['$mdDialog', '$scope', 'YangmanService', 'HandleFileService', 'parametersList'];
8
9     function ParamsAdminCtrl($mdDialog, $scope, YangmanService, HandleFileService, parametersList) {
10         var vm = this;
11
12         vm.parametersList = parametersList;
13         vm.search = '';
14         vm.sortField = '_name';
15         vm.sortAsc = true;
16
17         vm.close = close;
18         vm.save = save;
19         vm.createEmptyParam = createEmptyParam;
20         vm.removeParam = removeParam;
21         vm.clearFilter = clearFilter;
22         vm.filterParam = filterParam;
23         vm.sortBy = sortBy;
24         vm.sortFunc = sortFunc;
25         vm.exportParameters = exportParameters;
26         vm.importParameters = importParameters;
27         vm.validateNamesUnique = validateNamesUnique;
28
29         init();
30
31
32         /**
33          * Loop over all name inputs in form and validate duplicities
34          */
35         function validateNamesUnique() {
36             var i = 0;
37             while (vm.paramsForm.hasOwnProperty('name_' + i)){
38                 var modelValue = vm.paramsForm['name_' + i].$modelValue;
39                 vm.paramsForm['name_' + i].$setValidity(
40                     'unique',
41                     vm.parametersList.isNameUnique(modelValue)
42                 );
43                 i++;
44             }
45         }
46
47         /**
48          * Importing all parameters from json
49          * @param fileContent
50          */
51         function importParameters(fileContent) {
52             if (fileContent && YangmanService.validateFile(fileContent, ['name', 'value'])){
53                 try {
54                     vm.parametersList.createParamsFromJson(fileContent);
55                     vm.parametersList.saveToStorage();
56                     angular.element(document).find('#importParameters').val('');
57                     createEmptyParam();
58                 }
59                 catch (e) {
60                     angular.element(document).find('#importParameters').val('');
61                     console.error('DataStorage error:', e);
62                 }
63             }
64             else {
65                 angular.element(document).find('#importParameters').val('');
66             }
67
68         }
69
70         /**
71          * Export all parameters to json file
72          */
73         function exportParameters() {
74
75             HandleFileService.downloadFile(
76                 'yangman_parameters.json',
77                 JSON.stringify(vm.parametersList.toJSON()),
78                 'json',
79                 'charset=utf-8',
80                 function (){},
81                 function (e){
82                     console.error('Export parameters error:', e);
83                 }
84             );
85         }
86
87         /**
88          * Set attribute to use when sorting
89          * @param sortField
90          */
91         function sortBy(sortField) {
92             vm.sortField = sortField;
93             vm.sortAsc = !vm.sortAsc;
94         }
95
96         /**
97          * Sort parameters with empty params at the end of list
98          * @param item
99          * @returns {*}
100          */
101         function sortFunc(item) {
102             return item[vm.sortField] ? item[vm.sortField] : vm.sortAsc ? 'zzzzzzzzzzzzzzzz' : '';
103         }
104
105         /**
106          * Empty or matching params will be in list
107          * @param paramObj
108          * @returns {boolean}
109          */
110         function filterParam(paramObj) {
111             return !(paramObj._name || paramObj._value) ||
112                     paramObj._name.indexOf(vm.search) !== -1 ||
113                     paramObj._value.indexOf(vm.search) !== -1;
114         }
115
116
117         function clearFilter() {
118             vm.search = '';
119         }
120
121         /**
122          * Load params list and add one empty to the end of list
123          */
124         function init(){
125             vm.parametersList.loadListFromStorage();
126             createEmptyParam();
127         }
128
129         /**
130          * Remove param from list
131          * @param paramObj
132          */
133         function removeParam(paramObj) {
134             vm.parametersList.deleteParameterItem(paramObj);
135         }
136
137         /**
138          * Create new empty param
139          */
140         function createEmptyParam() {
141             vm.parametersList.addEmptyItem();
142         }
143
144         /**
145          * Cancel dialog
146          */
147         function close() {
148             vm.parametersList.removeEmptyParams();
149             $mdDialog.hide(vm.parametersList);
150         }
151
152         /**
153          * Save list to storage and re-init dialog
154          */
155         function save() {
156             vm.parametersList.saveToStorage();
157             init();
158         }
159
160
161     }
162
163     return ParamsAdminCtrl;
164
165 });
166