--- a/busui/owa/modules/base/js/owa.report.js +++ b/busui/owa/modules/base/js/owa.report.js @@ -1,1 +1,221 @@ - +OWA.report = function(dom_id) { + + this.dom_id = dom_id; + this.config = OWA.config; + this.properties = {}; + this.tabs = {}; +} + +OWA.report.prototype = { + + options: {}, + + config: '', + + showSiteFilter : function(dom_id) { + + // create dom elements + // ... + + // bind event handlers + that = this; + jQuery('#owa_reportSiteFilterSelect').change( function() { that.reload(); } ); + jQuery("#owa_reportPeriodFilterSubmit").click( function() { that.reload(); } ); + }, + + reload: function() { + + // add new site_id to properties + var siteId = jQuery("#owa_reportSiteFilterSelect option:selected").val(); + OWA.debug(this.properties['action']); + this.properties['siteId'] = siteId; + // reload report + var url = OWA.util.makeUrl(OWA.config.link_template, OWA.config.main_url, this.properties); + window.location.href = url; + }, + + setRequestProperty : function(name, value) { + + this.properties[name] = value; + }, + + _parseDate: function (date) { + + + }, + + setDateRange: function (date) { + + this.properties.startDate = jQuery.datepicker.formatDate('yymmdd', jQuery("#owa_report-datepicker-start").datepicker("getDate")); + this.properties.endDate = jQuery.datepicker.formatDate('yymmdd', jQuery("#owa_report-datepicker-end").datepicker("getDate")); + if (this.properties.startDate != null && this.properties.endDate != null) { + this.setPeriod('date_range'); + } + }, + + setPeriod: function(period) { + + this.properties.period = period; + + if ( this.properties.hasOwnProperty( 'startDate' ) ) { + delete this.properties[ 'startDate' ]; + } + + if ( this.properties.hasOwnProperty( 'endDate' ) ) { + delete this.properties[ 'endDate' ]; + } + }, + + addTab : function(obj) { + + if (obj.dom_id.length > 0 ) { + this.tabs[obj.dom_id] = obj; + } else { + OWA.debug('tab cannot be added with no dom_id set.'); + } + }, + + createTabs : function() { + + var that = this; + + jQuery("#report-tabs").prepend(''); + for (tab in this.tabs) { + + if ( this.tabs.hasOwnProperty(tab) ) { + jQuery("#report-tabs > .report-tabs-nav-list").append(OWA.util.sprintf( '
  • %s
  • ', tab, that.tabs[tab].label ) ); + + } + } + + jQuery("#report-tabs").tabs({ + show: function(event, ui) { + OWA.debug('tab selected is: %s', ui.panel.id); + that.tabs[ui.panel.id].load(); + } + }); + + }, + + getSiteId : function() { + + if (this.properties.hasOwnProperty('siteId')) { + + return this.properties.siteId; + } + }, + + getPeriod : function() { + + if (this.properties.hasOwnProperty('period')) { + + return this.properties.period; + } + }, + + getStartDate : function() { + + if (this.properties.hasOwnProperty('startDate')) { + + return this.properties.startDate; + } + + }, + + getEndDate : function() { + + if (this.properties.hasOwnProperty('endDate')) { + + return this.properties.endDate; + } + } +} + +OWA.report.tab = function(dom_id) { + this.dom_id = dom_id; + this.resultSetExplorers = {}; + this.label = 'Default label'; + this.isLoaded = false; + this.load = function() { + if ( ! this.isLoaded ) { + for (rse in this.resultSetExplorers) { + + if (this.resultSetExplorers.hasOwnProperty(rse)) { + + this.resultSetExplorers[rse].load(); + } + + } + + this.isLoaded = true; + } + } +} + +OWA.report.tab.prototype = { + + addRse : function (name, rse) { + + this.resultSetExplorers[name] = rse; + }, + + setLabel : function (label) { + this.label = label; + }, + + setDomId : function (dom_id) { + this.dom_id = dom_id; + } +} + +// Bind event handlers +jQuery(document).ready(function(){ + + jQuery('#owa_reportPeriodFilter').change(owa_reportSetPeriod); + jQuery("#owa_reportPeriodLabelContainer").click(function() { + jQuery("#owa_reportPeriodFiltersContainer").toggle(); + }); + jQuery("#owa_report-datepicker-start, #owa_report-datepicker-end").datepicker({ + beforeShow: customRange, + showOn: "both", + dateFormat: 'mm-dd-yy', + onSelect: function(date) {owa_reportSetDateRange(date);} + + //buttonImage: "templates/images/calendar.gif", + //buttonImageOnly: true + }); + // make tables sortable + //jQuery.tablesorter.defaults.widgets = ['zebra']; + //jQuery('.tablesorter').tablesorter(); + // report side navigaion panels - toggle + jQuery('.owa_admin_nav_topmenu_toggle').click(function () { + jQuery(this).parent().siblings('.owa_admin_nav_subgroup').toggle(); + }); +}); + + +function customRange(input) { + + return {minDate: (input.id == "owa_report-datepicker-end" ? jQuery("#owa_report-datepicker-start").datepicker("getDate") : null), + maxDate: (input.id == "owa_report-datepicker-start" ? jQuery("#owa_report-datepicker-end").datepicker("getDate") : null)}; + +} + +function owa_reportSetDateRange(date) { + + if (date != null) { + var reportname = jQuery('.owa_reportContainer').get(0).id; + OWA.items[reportname].setDateRange(); + OWA.items[reportname].setPeriod('date_range'); + // toggle the drop down to custom data range label + jQuery("#owa_reportPeriodFilter option:contains('Custom Date Range')").attr("selected", true); + } +} + +function owa_reportSetPeriod() { + + var period = jQuery("#owa_reportPeriodFilter option:selected").val(); + var reportname = jQuery(this).parents(".owa_reportContainer").get(0).id; + OWA.items[reportname].setPeriod(period); + OWA.items[reportname].reload(); +}