Add analytics
[bus.git] / busui / owa / modules / base / js / owa.widgets.js
blob:a/busui/owa/modules/base/js/owa.widgets.js -> blob:b/busui/owa/modules/base/js/owa.widgets.js
--- a/busui/owa/modules/base/js/owa.widgets.js
+++ b/busui/owa/modules/base/js/owa.widgets.js
@@ -1,1 +1,209 @@
-
+// OWA Widgets
+
+OWA.widget = function() {
+
+	this.config = OWA.config;
+	
+	return;	
+}
+
+OWA.widget.prototype = {
+
+	properties: new Object,
+	
+	config: '',
+	
+	dom_id: '',
+	
+	name: '',
+	
+	current_view: '',
+	
+	page_num: 1,
+	
+	max_page_num: 2,
+	
+	more_pages: false,
+	
+	minimized: false,
+	
+	displayPagination: function() {
+	
+		var widget_pagination_div = "#"+this.dom_id+"_widget-pagination";
+		var pages = this._makePagination();
+		jQuery(widget_pagination_div).show("fast");
+		jQuery(widget_pagination_div).html(pages);
+		jQuery('.owa_widget-paginationcontrol').click(owa_widget_page_results);
+		
+		return;
+	},
+	
+		
+	hidePagination: function() {
+	
+		var widget_pagination_div = "#"+this.dom_id+"_widget-pagination";
+		jQuery(widget_pagination_div).hide();
+		
+		return;
+	},
+			
+	changeView: function(view) {
+			
+			var widgetcontentid = "#"+this.dom_id+"_widget-content";
+			
+			this.properties.format = view;
+			
+			jQuery(widgetcontentid).slideUp("fast"); 
+				 
+			jQuery.ajax({ 
+				method: "get",
+				url: this.config.action_url,
+				data: OWA.util.nsAll(this.properties), 
+				//show loading just when link is clicked 
+				beforeSend: function(){ jQuery("#"+this.dom_id).children(".owa_widget-status").show("slow");}, 
+				//stop showing loading when the process is complete 
+				complete: function(){ jQuery("#"+this.dom_id).children(".owa_widget-status").hide("slow");}, 
+				//so, if data is retrieved, store it in html
+				success: function(html){  
+					jQuery(widgetcontentid).show("slow"); //animation 
+					jQuery(widgetcontentid).html(html); //show the html inside .content div 
+					
+					
+					
+					
+				} 
+			}); //close $.ajax( 
+			
+			this.current_view = view;
+			
+			if (view == "table") {
+				this.displayPagination();
+			} else {
+				this.hidePagination();
+			}
+			
+			return true;
+		
+	},
+	
+	_makePagination: function() {
+		
+		var pagination = '';
+		var anchor = this._makeLinkAnchor();
+		
+		// previous nav link
+		if (this.page_num > 1) {
+			pagination = 'Pages: ';
+			pagination = pagination + this._makePaginationLink(anchor, "<< Previous") + ' ... ';
+		}
+		
+		for (i = 1; i <= this.max_page_num; i++) {
+			
+			// let's pick a page name for our link
+			var page_name = i;
+		
+			// to link or not to link
+			if (i == this.page_num) {
+				pagination = pagination + page_name;
+			} else {
+				pagination = pagination + this._makePaginationLink(anchor, page_name);
+			}
+			
+			// add commas
+			if (i != this.max_page_num) {
+				pagination = pagination + ', ';
+			}
+
+		}
+		
+		// previous nav link
+		if (this.page_num < this.max_page_num) {
+			if (this.more_pages == true) {
+				pagination = pagination + this._makePaginationLink(anchor, "Next >>") + ' ... ';
+			}
+		}
+		
+        
+        return pagination;
+       	
+	},
+	
+	_makePaginationLink: function(anchor, page_name) {
+		
+		var link = '<a href="' + anchor + '" class="owa_widget-paginationcontrol">' + page_name + '</a>';
+		return link;
+	},
+	
+	_makeLinkAnchor: function() {
+		
+		return anchor = "#"+this.dom_id+"_widget-header";
+	}
+	
+	
+
+}
+
+// Bind event handlers
+jQuery(document).ready(function(){  
+	//jQuery.getScript(OWA.config.js_url + "includes/jquery/tablesorter/jquery.tablesorter.js");	 
+	jQuery('.owa_widget-control').click(owa_widget_changeView);
+	jQuery('.owa_widget-pagecontrol').click(owa_widget_changeView);
+	jQuery('.owa_widget-close').click(owa_widget_close);
+	jQuery('.owa_widget-status').hide("slow");
+	jQuery('.owa_widget-collapsetoggle').click(owa_widget_toggle);
+	jQuery('.owa_widget-paginationcontrol').click(owa_widget_page_results);
+	
+});
+
+
+// Event handler for changeing views
+function owa_widget_changeView() {
+
+	var view = jQuery(this).attr("name");
+	var widgetname = jQuery(this).parents(".owa_widget-container").get(0).id;	
+	//alert(widgetname);
+	return OWA.items[widgetname].changeView(view);
+	
+}
+
+function owa_widget_close() {
+	
+	return jQuery(this).parents(".owa_widget-container").hide("slow");	
+}
+
+function owa_widget_toggle() {
+	
+	// get the widget name
+	var widgetname = jQuery(this).parents(".owa_widget-container").get(0).id;
+	
+	// toggle the visibility of the child element
+	jQuery('#'+widgetname).children(".owa_widget-innercontainer").toggle("slow");
+	
+	if (OWA.items[widgetname].minimized != true) {
+		// set property on widget object
+		OWA.items[widgetname].minimized = true;
+		//change the text of the link to reflect new state
+		jQuery(this).html("Show");
+	} else {
+		// set property on widget object
+		OWA.items[widgetname].minimized = false;
+		//change the text of the link to reflect new state
+		jQuery(this).html("Minimize");
+	}
+	
+	return;
+}
+
+function owa_widget_page_results() {
+	var page = jQuery(this).text();
+	alert(page);
+	var widgetname = jQuery(this).parents(".owa_widget-container").get(0).id;
+	OWA.items[widgetname].page_num = page;
+	OWA.items[widgetname].properties.page = page;
+	var view = OWA.items[widgetname].current_view;
+	return OWA.items[widgetname].changeView(view);
+
+}
+
+
+