PageSourceSearch

https://app.nefiks.si/angular/scripts/controllers/questioneer/QuestioneerEditCtrl.js?v=20201107

js nefiks.si collected 2026-10-01 13:06:07 UTC 8,624 bytes, 226 lines download raw bytes

1'use strict';
2
3angular.module('nefiksApp')
4	.controller('QuestioneerEditCtrl', function ($rootScope, $scope, $routeParams, $filter, $location, QuestioneerFactory, ActivityFactory, QuestioneerCdlFactory, LinkManager) {
5		if(!$rootScope.Auth.isCompany()) {
6    		$rootScope.Msgs.addNext(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('Neveljavna akcija.')));
7    		$window.history.back();
8    		return;
9    	}
10		
11		$scope.modeActivity = $routeParams.actid;
12
13		$rootScope.titles = {
14	        pageTitle: $scope.modeActivity ? Utf8._(!!$routeParams.id?'Urejanje ankete':'Dodajanje ankete') : Utf8._(!!$routeParams.id?'Urejanje prijavnice':'Dodajanje prijavnice')
15	    };
16		$rootScope.sideSelected = 'quest';
17	    $rootScope.bodyClass = '';
18	    $rootScope.contentClass = 'edit-state';
19	    $scope.rs = $rootScope;
20	    $scope.Common = Common;
21	    
22	    if(!!$scope.modeActivity) {
23	    	$scope.msg = Utf8._('V kolikor {zh}elite dodati k anketi {sh}e kak{sh}en {sh}ifrant, lahko to uredite <a href="/questioneercdls">tukaj</a>. <b>POZOR:</b> klik vas bo samodejno preusmeril, zato pred klikom shranite trenutno anketo.');
24	    }
25	    
26	    $scope.elementTypes = [
27	                           //{idname:'ktext', name:'Kratek tekstovni odgovor'},
28	                           //{idname:'stext', name:'Srednji tekstovni odgovor'},
29	                           {idname:'dtext', name:'Tekstovni odgovor'},
30	                           {idname:'spis', name:'Tekstovni odgovor kot spis'},
31	                           {idname:'drop', name:'Dropdown'},
32	                           {idname:'radio', name:'Ena izbira'},
33	                           {idname:'check', name:'Ve{ch} izbir'},
34	                           {idname:'mail', name:'E-mail'},
35	                           {idname:'davcn', name:Utf8._('Dav{ch}na {sh}tevilka')},
36	                           {idname:'matic', name:Utf8._('Mati{ch}na {sh}tevilka')},
37	                           {idname:'stv', name:Utf8._('{Sh}tevilka')},
38	                           {idname:'stv2d', name:Utf8._('{Sh}tevilka na 2 decimalki')},
39	                           {idname:'emso', name:Utf8._('EM{Sh}O')},
40	                           {idname:'datum', name:'Datum'},
41	                           {idname:'file', name:'Datoteka'}
42	                           ];
43		
44		// Can be an independent questioneer or an activity survey
45		$scope.objActivity = null;
46							   
47	    $scope.sortableOpts = {
48		    	axis: 'y',
49		    	handle: '.sort-handle'
50		    };
51	    
52	    var requiredFields = {'title': true};
53	    
54	    $scope.obj = null;
55	    var sourceQuestioneerId = LinkManager.parseHash().sourceQuestioneer;
56	    
57	    if(!!$routeParams.id || !!sourceQuestioneerId) {
58	    	$scope.isNew = !$routeParams.id;
59	    	QuestioneerFactory.getQuestioneer($routeParams.id || sourceQuestioneerId, 'edit')
60		    	.success(function(data) {
61		    		if(!data || data.status!=200) {
62		    			$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.')), data);
63		    		} else {
64		    			$scope.obj = Nefhance.questioneer(data.obj);
65		    			$scope.focusTitle = true;
66		    			
67		    			//Leave all fields, except id
68		    			if(!!sourceQuestioneerId) {
69		    				delete $scope.obj.id;
70		    				
71		    				if(!!$scope.elements) {
72			    				for(var i=0; i<$scope.elements.length; i++) {
73			    					delete $scope.elements[i].id;
74			    				}
75		    				}
76		    			}
77		    		}
78		    	}).error(function() {
79		    		$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.')));
80		    	});
81	    } else {
82	    	$scope.isNew = true;
83	    	$scope.focusTitle = true;
84	    	$scope.obj = {
85	    		elements: []
86	    	};
87	    }
88		
89		$scope.fetchActivity = function() {
90			ActivityFactory.getActivity($routeParams.actid)
91	    	.success(function(data) {
92	    		if(!data || data.status!=200) {
93	    			$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatk
93ov o aktivnosti.')), data);
94	    		} else {
95					$scope.objActivity = Nefhance.activity(data.obj);
96	    		}
97	    	}).error(function() {
98	    		$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov o aktivnosti.')));
99			});
100			
101		}
102		$scope.modeActivity ? $scope.fetchActivity() : null;
103
104	    var cdlParams = new CommonQueryParams();
105	    cdlParams.other['all'] = '1';
106	    QuestioneerCdlFactory.getCodelists(cdlParams)
107	    	.success(function(data) {
108	    		if(!data || data.status!=200) {
109	    			$scope.codelists=[];
110	    		} else {
111	    			$scope.codelists=data.res;
112	    		}
113	    	}).error(function() {
114	    		$scope.codelists=[];  //Do nothing
115	    	});
116	    
117	    $scope.onCancelClick = function() {
118			if($scope.modeActivity) {
119				LinkManager.setPathAndHashFromFullLink('/activity-surveys/' + $scope.objActivity.id);
120			} else {
121				LinkManager.setPathAndHashFromFullLink('/myquestioneers');
122			}
123	    };
124	    
125	    var validateFields = function() {
126	    	$scope.errors = {};
127	    	var allOK = true;
128	    	
129	    	allOK = PPValidate.stringE($scope.obj.title, {emp: 'Prosimo, vpi{sh}ite naziv prijavnice.'}, requiredFields, $scope.errors, 'title') && allOK;
130	    	
131	    	return allOK;
132	    };
133	    
134	    $scope.onSaveClick = function(sendAlso) {
135	    	//Validate fields
136	    	if(!validateFields()) {
137	    		Common.scrollToTop();
138	    		return;
139	    	}
140	    	
141	    	var json = {
142	    		obj: {
143		    		id: $scope.obj.id,
144		    		title: $scope.obj.title,
145		    		desc: $scope.obj.desc,
146		    		phoneField: $scope.obj.phoneField,
147		    		cityField: $scope.obj.cityField,
148		    		yobField: $scope.obj.yobField,
149					elements: $scope.obj.elements,
150					actId: $scope.modeActivity ? $scope.objActivity.id : null
151	    		}
152	    	};
153	    	
154	    	QuestioneerFactory.updateQuestioneer(json)
155	    		.success(function(data) {
156	    			if(data == null || (data.status!=200 && data.status!=201)) {
157	    				$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri shranjevanju prijavnice.')), data);
158						Common.scrollToTop();
159	    			} else if(data.status == 201) {
160	    				//Report back errors
161	    				if(!!data.ers) {
162	    					for(var key in data.ers) {
163	    						if(key == 'els') {
164	    							Common.setErrorTableByHKey(data.ers[key], $scope.obj.elements);
165	    						} else {
166	    							$scope.errors[key] = data.ers[key];	    							
167	    						}
168	    					}
169	    				}
170	    			} else {
171	    				var msg = 'Prijavnica ';
172	    				msg += $scope.obj.title;
173	    				msg += ' je bila shranjena.';
174						$rootScope.Msgs.addNext(MESSAGE_TYPE.SUCCESS, Common.createResponseMessage(Utf8._(msg)));
175						
176						if($scope.modeActivity) {
177							LinkManager.setPathAndHashFromFullLink('/activity-surveys/' + $scope.objActivity.id);
178						} else {
179							LinkManager.setPathAndHashFromFullLink('/myquestioneers');
180						}
181	    				
182	    			}
183	    		}).error(function() {
184	    			$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri shranjevanju prijavnice.')));
185	    			Common.scrollToTop();
186	    		});
187	    };
188	    
189	    $scope.removeObjClick = function(event) {
190			if(!!event.ctrlKey) { //Direct remove
191				$scope.removeObj();
192			} else { 
193				$scope.removeObjWarn = true;
194				$scope.removeData = {
195					warnMsg: Utf8._('Ste prepri{ch}ani, da {zh}elite izbrisati prijavnico?'),
196					tagData: {}
197				};
198			}
199		};
200		$scope.removeObj = function() {
201			QuestioneerFactory.deleteQuestioneer($scope.obj.id, null)
202				.success(function(data) {
203					if(data.status == 200) {
204						$window.history.back();
205						$rootScope.Msgs.addNext(MESSAGE_TYPE.SUCCESS, Common.createResponseMessage(Utf8._('Prijavnica '+$scope.obj.title+' je bila izbrisana.')));
206					} else {
207						$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri brisanju prijavnice.')), data);
208						Common.scrollToTop();
209					}
210				}).error(function() {
211					$rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri brisanju prijavnice.')));
212					Common.scrollToTop();
213				});
214		};
215		
216		$scope.onNewQuestionClick = function() {
217			$scope.obj.elements.push(Nefhance.HKey({}));
218		};
219		
220		$scope.onDeleteQuestionClick = function(ind) {
221			if($scope.obj.elements.length <= ind) {
222				return;
223			}
224			$scope.obj.elements.splice(ind, 1);
225		};
226	});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.