PageSourceSearch

https://info.mors.org/NOAH/plugins/unitegallery-master/dist/themes/grid/ug-theme-grid.js

js mors.org collected 2026-09-24 09:42:43 UTC 9,721 bytes, 422 lines download raw bytes

1
2if(typeof g_ugFunctions != "undefined")
3    try { g_ugFunctions.registerTheme("grid"); } catch (ex) { console.log(ex.message); }
4else 
5    jQuery(document).ready(function () { try { g_ugFunctions.registerTheme("grid") } catch (ex) { console.log(ex.message); } });
6
7/**
8 * Grid gallery theme
9 */
10function UGTheme_grid(){
11
12	var t = this;
13	var g_gallery = new UniteGalleryMain(), g_objGallery, g_objects, g_objWrapper; 
14	var g_objSlider;
15	var g_functions = new UGFunctions();
16	var g_objPanel = new UGGridPanel();
17
18	
19	//theme options
20	var g_options = {
21			theme_load_slider:true,					//true, false - load the slider
22			theme_load_panel:true,					//true, false - load the thumbs grid panel
23			theme_panel_position: "right",			//left, right, top, bottom - thumbs panel position
24			theme_hide_panel_under_width: 480		//hide panel under certain browser width, if null, don't hide
25	};
26	
27	//global defaults (for right side)
28	var g_defaults = {
29			slider_controls_always_on:true,
30			slider_vertical_scroll_ondrag: true
31	};
32	
33	//special defaults for left side panel position
34	var g_defaults_left = {
35		slider_zoompanel_align_hor: "right",
36		slider_fullscreen_button_align_hor: "right",
37		slider_play_button_align_hor: "right",
38		
39		slider_zoompanel_offset_vert: 9,
40		slider_zoompanel_offset_hor: 11,
41		slider_play_button_offset_hor: 88,
42		slider_play_button_offset_vert: 8,
43		slider_fullscreen_button_offset_hor: 52,
44		slider_fullscreen_button_offset_vert: 9								
45	};
46	
47	var g_defaults_right = {
48			slider_zoompanel_offset_vert: 9,
49			slider_zoompanel_offset_hor: 11,
50			slider_play_button_offset_hor: 88,
51			slider_play_button_offset_vert: 8,
52			slider_fullscreen_button_offset_hor: 52,
53			slider_fullscreen_button_offset_vert: 9						
54	}
55	
56	var g_defaults_bottom = {
57		slider_enable_text_panel: false,
58		slider_zoompanel_align_hor: "right",
59		slider_zoompanel_offset_vert: 10,
60		
61		slider_progress_indicator_align_hor: "left",
62		slider_progress_indicator_offset_vert: 36,	
63		slider_progress_indicator_offset_hor: 16
64	}
65	
66	var g_defaults_top = {
67			slider_enable_text_panel: false,
68			slider_zoompanel_align_vert: "bottom",
69			slider_zoompanel_offset_vert: 10,
70			
71			slider_play_button_align_hor: "right",
72			slider_play_button_align_vert: "bottom",
73			
74			slider_fullscreen_button_align_vert: "bottom",	
75			slider_fullscreen_button_align_hor: "right",
76			
77			slider_progress_indicator_align_vert: "bottom",
78			slider_progress_indicator_offset_vert: 40,			
79			gridpanel_padding_border_top: 4,		    //padding between the top border of the panel
80			gridpanel_padding_border_bottom: 10			//padding between the bottom border of the panel	
81	}
82	
83	//temp variables
84	var g_temp = {
85		isMobileModeWasEnabled: false,
86		isHorPos: false
87	};
88	
89	
90	/**
91	 * Init the theme
92	 */
93	function initTheme(gallery, customOptions){
94		
95		g_gallery = gallery;
96		
97		g_options = jQuery.extend(g_options, g_defaults);
98		g_options = jQuery.extend(g_options, customOptions);
99		
100		switch(g_options.theme_panel_position){
101			case "left":
102				g_options = jQuery.extend(g_options, g_defaults_left);
103			break;
104			case "right":
105				g_options = jQuery.extend(g_options, g_defaults_right);
106			break;
107			case "top":
108				g_options = jQuery.extend(g_options, g_defaults_top);
109			break;
110			case "bottom":
111				g_options = jQuery.extend(g_options, g_defaults_bottom);
112			break;			
113		}
114		
115		g_options = jQuery.extend(g_options, customOptions);
116		
117		modifyOptions();
118		
119		//set gallery options
120		g_gallery.setOptions(g_options);
121				
122		//include gallery elements
123		if(g_options.theme_load_panel == true){
124			if(g_options.theme_panel_position == "top" || g_options.theme_panel_position == "bottom")
125				g_temp.isHorPos = true;
126				
127			g_objPanel.setOrientation(g_options.theme_panel_position);
128			g_objPanel.init(gallery, g_options);
129		}else
130			g_objPanel = null;
131		
132		if(g_options.theme_load_slider == true)
133			g_gallery.initSlider(g_options);
134		
135		g_objects = gallery.getObjects();
136		
137		//get some objects for local use
138		g_objGallery = jQuery(gallery);		
139		g_objWrapper = g_objects.g_objWrapper;
140		
141		if(g_options.theme_load_slider == true)
142			g_objSlider = g_objects.g_objSlider;
143		
144	}
145	
146	
147	/**
148	 * modify options
149	 */
150	function modifyOptions(){
151		
152		if(g_options.theme_load_panel == true && g_options.theme_panel_position == "left"){
153			g_options.gridpanel_handle_position = "right";
154		}
155	}
156	
157	/**
158	 * init all the theme's elements and set them to their places 
159	 * according gallery's dimentions.
160	 * this function should work on resize too.
161	 */
162	function initAndPlaceElements(){
163		
164		//place objects:
165		if(g_objPanel){
166			initThumbsPanel();
167			placeThumbsPanel();
168		}
169		
170		if(g_objSlider){
171			g_objSlider.run();
172			placeSlider();
173		}
174		
175	}
176	
177	
178	/**
179	 * run the theme
180	 */
181	function runTheme(){
182		
183		setHtml();
184		
185		initAndPlaceElements();
186		
187		initEvents();
188	}
189	
190	
191	/**
192	 * set gallery html elements
193	 */
194	function setHtml(){
195		
196		//add html elements
197		g_objWrapper.addClass("ug-theme-grid");
198		
199		//set panel html
200		if(g_objPanel)
201			g_objPanel.setHtml();
202			
203		//set slider html
204		if(g_objSlider)
205			g_objSlider.setHtml();
206		
207	}
208	
209	
210	/**
211	 * init size of the thumbs panel
212	 */
213	function initThumbsPanel(){
214				
215		//set size:
216		var objGallerySize = g_gallery.getSize();
217		if(g_temp.isHorPos == true)
218			g_objPanel.setWidth(objGallerySize.width);
219		else
220			g_objPanel.setHeight(objGallerySize.height);
221					
222		g_objPanel.run();
223	}
224	
225	
226	/**
227	 * place thumbs panel according the settings
228	 */
229	function placeThumbsPanel(){
230		
231		var objPanelElement = g_objPanel.getElement();
232		
233		var isNeedToHide = isPanelNeedToHide();
234		var isHidden = g_objPanel.isPanelClosed();		
235		
236		var showClosed = (isNeedToHide || isHidden);
237
238		var pos = g_options.theme_panel_position;
239		
240		//place the panel closed or opened state.
241		if(showClosed){
242			var hiddenDest = g_objPanel.getClosedPanelDest();
243			var originalPos =  g_functions.getElementRelativePos(objPanelElement, g_options.theme_panel_position);
244			g_objPanel.setClosedState(originalPos);
245			pos = hiddenDest;
246		}else{
247			g_objPanel.setOpenedState();
248		}
249		
250		if(g_temp.isHorPos == true)		
251			g_functions.placeElement(objPanelElement, "left", pos);
252		else
253			g_functions.placeElement(objPanelElement, pos, "top");
254		
255	} 
256	
257	
258	/**
259	 * place the slider according the thumbs panel size and position
260	 */
261	function placeSlider(){
262		
263		//g_objPanel
264		var gallerySize = g_functions.getElementSize(g_objWrapper);
265		
266		var sliderWidth = gallerySize.width;
267		var sliderHeight = gallerySize.height;
268		var sliderTop = 0;
269		var sliderLeft = 0;
270		
271		if(g_objPanel){
272			
273			var panelSize = g_objPanel.getSize();
274						
275			switch(g_options.theme_panel_position){
276				case "left":
277					sliderLeft = panelSize.right;
278					sliderWidth = gallerySize.width - panelSize.right;				
279				break;
280				case "right":
281					sliderWidth = panelSize.left;					
282				break;
283				case "top":
284					sliderHeight = gallerySize.height - panelSize.bottom;
285					sliderTop = panelSize.bottom;
286				break;
287				case "bottom":
288					sliderHeight = panelSize.top;					
289				break;
290			}
291						
292		}
293				
294		g_objSlider.setSize(sliderWidth, sliderHeight);
295		g_objSlider.setPosition(sliderLeft, sliderTop);
296	}
297
298	
299	/**
300	 * check if need to hide the panel according the options.
301	 */
302	function isPanelNeedToHide(){
303		
304		if(!g_options.theme_hide_panel_under_width)
305			return(false);
306		
307		var windowWidth = jQuery(window).width();
308		var hidePanelValue = g_options.theme_hide_panel_under_width;
309		
310		if(windowWidth <= hidePanelValue)
311			return(true);
312			
313		return(false);
314	}
315	
316	/**
317	 * check if need to hide or show panel according the theme_hide_panel_under_width option
318	 */
319	function checkHidePanel(){
320		
321		//check hide panel:
322		if(!g_options.theme_hide_panel_under_width)
323			return(false);
324		
325			var needToHide = isPanelNeedToHide();
326			
327			if(needToHide == true){
328				g_objPanel.closePanel(true);
329				g_temp.isMobileModeWasEnabled = true;
330			}
331			else{
332				if(g_temp.isMobileModeWasEnabled == true){
333					g_objPanel.openPanel(true);
334					g_temp.isMobileModeWasEnabled = false;
335				}
336			}
337	}
338	
339	
340	/**
341	 * on gallery size change - resize the theme.
342	 */
343	function onSizeChange(){
344		
345		initAndPlaceElements();
346		
347		if(g_objPanel)
348			checkHidePanel();
349		
350	}
351	
352	
353	/**
354	 * on panel move event
355	 */
356	function onPanelMove(){
357		placeSlider();
358	}
359
360
361	/**
362	 * before items request: hide items, show preloader
363	 */
364	function onBeforeReqestItems(){
365	
366		g_gallery.showDisabledOverlay();
367	
368	}
369	
370	
371	/**
372	 * init buttons functionality and events
373	 */
374	function initEvents(){
375						
376		g_objGallery.on(g_gallery.events.SIZE_CHANGE,onSizeChange);		
377		g_objGallery.on(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS, onBeforeReqestItems);
378	
379		if(g_objPanel){
380			jQuery(g_objPanel).on(g_objPanel.events.FINISH_MOVE, onPanelMove);
381		}
382		
383	}
384	
385	
386	/**
387	 * destroy the theme events
388	 */
389	this.destroy = function(){
390		
391		g_objGallery.off(g_gallery.events.SIZE_CHANGE,onSizeChange);		
392		g_objGallery.off(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS);
393		
394		if(g_objPanel)
395			jQuery(g_objPanel).off(g_objPanel.events.FINISH_MOVE);
396		
397		g_objPanel.destroy();
398		g_objSlider.destroy();
399	
400	}
401	
402	
403	/**
404	 * run the theme setting
405	 */
406	this.run = function(){
407		
408		runTheme();
409	}
410	
411	
412	/**
413	 * init 
414	 */
415	this.init = function(gallery, customOptions){
416				
417		initTheme(gallery, customOptions);
418	}
419	
420	
421}
422

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.