PageSourceSearch

https://www.salamair.com/libraries/cegcore2/assets/js/g2.actions.js

js salamair.com collected 2026-09-24 10:09:07 UTC 13,279 bytes, 469 lines download raw bytes

1(function($){
2	if($.G2 == undefined){
3		$.G2 = {};
4	}
5	
6	$.G2.actions = {};
7	$.G2.actions.list = {};
8	
9	$.G2.actions.include = function(items){
10		$.each(items, function(k, item){
11			$.G2.actions.list[k] = item;
12		});
13	};
14	
15	$.G2.actions.ready = function(Elem){
16		if(typeof Elem == 'undefined'){
17			Elem = $('body');
18		}
19		
20		Elem.find('.G2-static').each(function(k, element){
21			$.G2.actions.statics(element);
22		});
23		
24		Elem.find('.G2-dynamic').each(function(k, element){
25			$.G2.actions.dynamics(element);
26		});
27		
28	};
29	
30	$.G2.actions.statics = function(element){
31		var id = $(element).data('id');
32		
33		$(element).off('click.static');
34		$(element).on('click.static', function(e){
35			e.preventDefault();
36			if($.G2.actions.list.hasOwnProperty(id) && $.G2.actions.list[id].hasOwnProperty('click')){
37				var result = $.G2.actions.list[id].click($(element), e);
38				if(result == false){
39					return ret;
40				}
41			}
42		});
43		
44		if($(element).data('task')){
45			
46			var targets = $.G2.actions.getTarget(element, $(element).data('task'));
47			target_element = targets[1];
48			element_task = targets[0];
49			$(element).data('target', target_element);
50			
51			if(element_task == 'popup'){
52				
53				popup_element = target_element;
54				
55				if(popup_element == null){
56					$(element).after($('<div class="ui fluid popup top left transition hidden G2-static-popup"><div class="ui active inline centered loader"></div></div>'));
57					popup_element = $(element).next('.popup').first();
58				}
59				
60				if(popup_element != null){
61					$(element).popup({
62						//inline: true, 
63						position: (typeof popup_element.data('position') == 'undefined') ? 'top right' : popup_element.data('position'),
64						popup: popup_element,
65						on : 'click',
66						closable: true,
67						exclusive: true,
68						preserve: true,
69						lastResort: true,
70						onHidden: function(){
71							//$('body').off('click.staticpopup');
72						},
73						onVisible: function(){
74							/*$('body').on('click.staticpopup', function(_e){
75								if(_e.target !== $(element).next('.popup')[0] && !$.contains($(element).next('.popup')[0], _e.target)){
76									if($(element).next('.popup').hasClass('visible')){
77										$(element).popup('show');
78										$(element).popup('hide');
79									}
80								}
81							});*/
82						}
83					});
84					/*$(element).on('click', function(){
85						$(element).popup('show');
86					});*/
87				}
88				
89			}else if(element_task == 'modal'){
90				
91				modal_element = target_element;
92				$(element).on('click', function(){
93					$(element).next('.ui.modal').modal({'detachable' : false, 'inverted' : true}).modal('show');
94				});
95			}else if(element_task == 'scroll'){
96				
97				$(element).off('click').on('click', function(e){
98					e.preventDefault();
99					target_element = $(element).data('target');
100					
101					if(target_element != null){
102						$.G2.scrollTo(target_element);
103					}
104				});
105			}else if(element_task == 'hide'){
106				
107				$(element).off('click').on('click', function(e){
108					e.preventDefault();
109					target_element = $(element).data('target');
110					
111					target_element.removeClass('visible').addClass('hidden');
112				});
113			}else if(element_task == 'remove'){
114				
115				$(element).off('click').on('click', function(e){
116					e.preventDefault();
117					target_element = $(element).data('target');
118					
119					target_element.remove();
120					$(element).trigger('g2.actions.static.remove');
121				});
122			}else if(element_task == 'clone'){
123				
124				$(element).off('click').on('click', function(e){
125					e.preventDefault();
126					target_element = $(element).data('target');
127					
128					var clone = target_element.clone();
129					var counter = target_element.data('counter') ? parseInt(target_element.data('counter')) : 0;
130					counter = counter + 1;
131					target_element.data('counter', counter);
132					
133					clone.html(clone.html().replace(/\[0\]/g, '[' + counter + ']').replace(/-0/g, counter));
134					target_element.after(clone);
135					
136					clone.trigger('contentChange.basics');
137				});
138			}
139		}
140	};
141	
142	$.G2.actions.getTarget = function(element, string){
143		
144		var task_data = string.split(':');
145		var task_data1 = task_data[0].split('/');
146		
147		if(task_data.length > 1){
148			var task_data2 = task_data[1].split('/');
149		}else{
150			var task_data2 = '';
151		}
152		
153		var target_element = null;
154		
155		if(task_data1[1] == 'self'){
156			
157			target_element = $(element);
158		
159		}else if(task_data1[1] == 'next'){
160			
161			if(task_data2[0] == undefined){
162				target_element = $(element).next();
163			}else{
164				target_element = $(element).next().find(task_data2[0]);
165			}
166			
167		}else if(task_data1[1] == 'closest' && task_data2[0] != undefined){
168			
169			target_element = $(element).closest(task_data2[0]);
170			
171		}else if(task_data1[1] == 'child'){
172			
173		}else if((task_data1[1] == 'find' || task_data1[1] == undefined) && task_data2[0] != undefined){
174			
175			target_element = $(task_data2[0]);
176			
177		}else if(task_data1[1] == undefined && task_data2[0] == undefined){
178			target_element = $(element).next();
179		}
180		
181		return [task_data1[0], target_element];
182	};
183	
184	$.G2.actions.dynamics = function(element){
185		var id = $(element).data('id');
186		
187		var Event = 'click'; 
188		if($(element).prop('tagName') == 'FORM'){
189			Event = 'submit';
190			$(element).data('url', $(element).attr('action'));
191		}
192		
193		if($(element).data('url') == undefined && $(element).attr('href')){
194			$(element).data('url', $(element).attr('href'));
195		}
196		/*
197		if($(element).is('.ui.dropdown')){
198			$(element).data('url', $(element).find('select').first().data('url'));
199		}
200		*/
201		$(element).off(Event + '.dynamic');
202		$(element).on(Event + '.dynamic', function(e){
203			
204			e.preventDefault();
205			
206			$.G2.actions.dynamics.run(element);
207		});
208	};
209	
210	$.G2.actions.dynamics.run = function(element){
211		var id = $(element).data('id');
212		
213		var counter = $(element).data('counter') ? parseInt($(element).data('counter')) : 0;
214		//counter = counter + 1;
215		//$(element).data('counter', counter);
216		
217		var counterParam = $(element).attr('name') ? '&' + $(element).attr('name') + '[counter]=' + counter : '';
218		counterParam = counterParam + '&_counter=' + counter;
219		//update the counter for the next run
220		counter = counter + 1;
221		$(element).data('counter', counter);
222		
223		if($(element).data('once') && $(element).data('called')){
224			return false;
225		}
226		
227		//trigger element completion event
228		var beforeStartValue = $(element).triggerHandler('g2.actions.dynamic.beforeStart');
229		if(beforeStartValue === false || $(element).data('beforeStart') === false){
230			return false;
231		}
232		
233		if($(element).data('url')){
234			var requestData = {};
235			var content = false;//'application/x-www-form-urlencoded; charset=UTF-8';
236			var container = '';
237			var buildData = false;
238			
239			if($(element).data('dtask')){
240				
241				var targets = $.G2.actions.getTarget(element, $(element).data('dtask'));
242				target_element = targets[1];
243				element_task = targets[0];
244				
245				if(element_task == 'send'){
246					
247					if(target_element != null){
248						buildData = true;
249						container = target_element;
250					}
251					
252				}
253			}
254			
255			//check triggers
256			if($(element).data('dynamic') && $(element).data('dynamic')['onstart']){
257				$.each($(element).data('dynamic')['onstart'], function(dact, dactdata){
258					if(dact == 'send'){
259						buildData = true;
260						$.each(dactdata, function(k, dactid){
261							container = $(dactid);
262						});
263					}
264				});
265			}
266			
267			if(buildData){
268				//add text data
269				requestData = new FormData();
270				$.each(container.find(':input').serializeArray(), function(key, input){
271					requestData.append(input.name, input.value);
272				});
273				//add files data
274				container.find('input[type="file"]').each(function(key, input){
275					requestData.append($(input).attr('name'), $(input)[0].files[0]);
276				});
277			}
278			
279			$.ajax({
280				xhr: function(){
281					var xhr = new window.XMLHttpRequest();
282					
283					if(container && jQuery.fn.progress != undefined){
284						//container.find('.progress').show();
285						xhr.upload.addEventListener('progress', function(evt){
286							if(evt.lengthComputable){
287								var percentComplete = evt.loaded / evt.total;
288								percentComplete = parseInt(percentComplete * 100);
289								
290								container.find('.progress').progress('set percent', percentComplete);
291								
292								if(percentComplete === 100){
293									//container.find('.progress').hide();
294								}
295							}
296						}, false);
297					}
298					return xhr;
299				},
300				url: $(element).data('url') + counterParam,
301				type: "POST",
302				data: requestData,
303				processData: false,
304				contentType: content,
305				beforeSend: function(){
306					$(element).addClass('loading');
307					if(container && container.hasClass('loading') == false){
308						container.append('<div class="ui active inverted dimmer"><div class="ui text loader"></div></div>');
309					}
310				},
311				error: function(xhr, textStatus, message){
312					$(element).removeClass('loading');
313					if(container){
314						container.children('.ui.active.dimmer').remove();
315					}
316					
317					if(jQuery.fn.popup != undefined){
318						$(element).popup({html : '<div class="ui message error small">'+textStatus+':'+message+'</div>'});
319						$(element).popup('show');
320					}else{
321						alert(textStatus+':'+message);
322					}
323				},
324				success: function(data, textStatus, xhr){
325					$('.g2-message').remove();
326					
327					$(element).removeClass('loading');
328					//$(element).popup('destroy');
329					
330					if(container){
331						container.find('.ui.dimmer').remove();
332					}
333					var is_json = false;
334					//check response data type
335					if(data.substring(0, 1) == '{' && data.slice(-1) == '}'){
336						var is_json = true;
337						
338						var json = JSON.parse(data);
339						
340						if(json.hasOwnProperty('error') && json.error != 0){
341							if(jQuery.fn.popup != undefined){
342								$(element).popup({html : '<div class="ui message error small">'+json.error+'</div>'});
343								$(element).popup('show');
344							}else{
345								alert(json.error);
346							}
347						}else{
348							json.error = 0;
349						}
350						
351						data = json;
352					}
353					
354					var newContent = '';
355					
356					if($(element).data('result') && (is_json == false || (is_json == true && data.error == 0))){
357						
358						if(is_json == false){
359							var newContent = $(data);
360						}
361						
362						var targets = $.G2.actions.getTarget(element, $(element).data('result'));
363						target_element = targets[1];
364						element_task = targets[0];
365						
366						if(element_task == 'replace'){
367							
368							if(target_element != null){
369								target_element.replaceWith(newContent);
370							}
371						}else if(element_task == 'after'){
372							
373							if(target_element != null){
374								target_element.after(newContent);
375							}
376						}else if(element_task == 'before'){
377							
378							if(target_element != null){
379								target_element.before(newContent);
380							}
381						}else if(element_task == 'html'){
382							
383							if(target_element != null){
384								target_element.html(newContent);
385							}
386						}else if(element_task == 'text'){
387							
388							if(target_element != null){
389								target_element.text(data);
390							}
391						}else if(element_task == 'append'){
392							
393							if(target_element != null){
394								target_element.append(newContent);
395							}
396						}else if(element_task == 'prepend'){
397							
398							if(target_element != null){
399								target_element.prepend(newContent);
400							}
401						}else if(element_task == 'remove'){
402							
403							if(target_element != null){
404								if(target_element.prop('tagName') == 'TR'){
405									target_element.remove();
406								}else{
407									target_element.transition({
408										'animation' : 'fly right', 
409										'onComplete' : function(){
410											target_element.remove();
411										}
412									});
413								}
414							}
415						}
416						
417					}
418					
419					//process click events for the element
420					/*if($.G2.actions.list.hasOwnProperty(id) && $.G2.actions.list[id].hasOwnProperty('success')){
421						$.G2.actions.list[id].success($(element), data, is_json, newContent);
422					}*/
423					
424					//check triggers
425					if($(element).data('dynamic') && $(element).data('dynamic')['oncomplete']){
426						//$.each($(element).data('dynamic'), function(devent, deventdata){
427							$.each($(element).data('dynamic')['oncomplete'], function(dact, dactdata){
428								if(dact == 'reload'){
429									$.each(dactdata, function(k, dactid){
430										$(dactid).addClass('loading');
431										$.ajax({
432											url: $(dactid).data('url'),
433											success: function(result){
434												var newContent = $(result);
435												$(dactid).replaceWith(newContent);
436												newContent.trigger('contentChange');
437											}
438										});
439									});
440								}else if(dact == 'show'){
441									$.each(dactdata, function(k, dactid){
442										$(dactid).removeClass('hidden');
443										$(dactid).show();
444									});
445								}else if(dact == 'hide'){
446									$.each(dactdata, function(k, dactid){
447										$(dactid).addClass('hidden');
448										$(dactid).hide();
449									});
450								}
451							});
452						//});
453					}
454					//trigger element completion event
455					$(element).trigger('g2.actions.dynamic.complete', [data, is_json, newContent]);
456					//set called status
457					if($(element).data('once')){
458						$(element).data('called', true);
459					}
460					
461					if(is_json == false && newContent){
462						newContent.trigger('contentChange');
463					}
464				}
465			});
466		}
467	};
468	
469}(jQuery));

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.