2 'app/yangman/services/handle-file.services',
6 angular.module('app.yangman').controller('ParamsAdminCtrl', ParamsAdminCtrl);
8 ParamsAdminCtrl.$inject = ['$mdMenu', '$mdDialog', '$scope', '$timeout', 'YangmanService', 'YMHandleFileService', 'parametersList'];
10 function ParamsAdminCtrl($mdMenu, $mdDialog, $scope, $timeout, YangmanService, YMHandleFileService, parametersList) {
14 vm.parametersList = parametersList.clone();
16 vm.sortField1 = '_name';
17 vm.sortField2 = '_value';
22 vm.createEmptyParam = createEmptyParam;
23 vm.removeParam = removeParam;
24 vm.clearFilter = clearFilter;
25 vm.filterParam = filterParam;
27 vm.sortFunc = sortFunc;
28 vm.exportParameters = exportParameters;
29 vm.importParameters = importParameters;
30 vm.validateNamesUnique = validateNamesUnique;
31 vm.filterChange = filterChange;
37 * Force validation after some filter is applied
39 function filterChange() {
40 $timeout(vm.validateNamesUnique);
44 * Loop over all name inputs in form and validate duplicities
46 function validateNamesUnique() {
48 while (vm.paramsForm.hasOwnProperty('name_' + i)){
49 var modelValue = vm.paramsForm['name_' + i].$modelValue;
50 vm.paramsForm['name_' + i].$setValidity(
52 vm.parametersList.isNameUnique(modelValue)
59 * Importing all parameters from json
62 function importParameters(fileContent) {
63 if (fileContent && YangmanService.validateFile(fileContent, ['name', 'value'])){
65 vm.parametersList.createParamsFromJson(fileContent);
66 vm.parametersList.saveToStorage();
67 angular.element(document).find('#importParameters').val('');
71 angular.element(document).find('#importParameters').val('');
72 console.error('DataStorage error:', e);
76 angular.element(document).find('#importParameters').val('');
82 * Export all parameters to json file
84 function exportParameters() {
86 YMHandleFileService.downloadFile(
87 'yangman_parameters.json',
88 vm.parametersList.toJSON(),
93 console.error('Export parameters error:', e);
99 * Set attribute to use when sorting
100 * @param sortField1 , sortField2
102 function sortBy(sortField1, sortField2) {
103 vm.sortField1 = sortField1;
104 vm.sortField2 = sortField2;
105 vm.sortAsc = !vm.sortAsc;
106 vm.parametersList.applyValsForFilters();
107 $timeout(vm.validateNamesUnique);
111 * Sort parameters with empty params at the end of list
115 function sortFunc(item) {
116 return [item[vm.sortField1] ? item[vm.sortField1] : (vm.sortAsc ? String.fromCharCode(255) : ''),
117 item[vm.sortField2] ? item[vm.sortField2] : (vm.sortAsc ? String.fromCharCode(255) : '')];
121 * Empty or matching params will be in list
125 function filterParam(paramObj) {
126 return !(paramObj._name || paramObj._value) ||
127 (paramObj._name && paramObj._name.indexOf(vm.search) !== -1) ||
128 (paramObj._value && paramObj._value.indexOf(vm.search) !== -1);
132 function clearFilter() {
137 * Load params list and add one empty to the end of list
140 vm.parametersList.loadListFromStorage();
142 openMenuListener = $scope.$on('$mdMenuOpen', function () {
144 $timeout(registerClickOutside);
149 * Remove param from list
152 function removeParam(paramObj) {
153 vm.parametersList.deleteParameterItem(paramObj);
154 $timeout(vm.validateNamesUnique);
158 * Create new empty param
160 function createEmptyParam() {
161 vm.parametersList.addEmptyItem();
168 vm.parametersList.removeEmptyParams();
173 * Save list to storage and re-init dialog
176 vm.parametersList.saveToStorage();
180 function registerClickOutside() {
181 $(document).click(function () {
186 function unregisterClickOutside() {
187 $(document).off('click');
190 function openMenuDestroyListener() {
191 $scope.$on('$destroy', function () {
196 function closeOpenedMenu() {
197 unregisterClickOutside();
198 openMenuDestroyListener();
206 return ParamsAdminCtrl;