details: https://code.openbravo.com/erp/devel/pi/rev/12d6cc4e0e5d changeset: 19769:12d6cc4e0e5d user: David Baz Fayos <david.baz <at> openbravo.com> date: Thu Feb 21 14:44:49 2013 +0100 summary: [calendar] Changed the way the checked filter is handled
details: https://code.openbravo.com/erp/devel/pi/rev/e8aaf57d9953 changeset: 19770:e8aaf57d9953 user: David Baz Fayos <david.baz <at> openbravo.com> date: Thu Feb 21 14:46:16 2013 +0100 summary: [calendar] Modified OBMultiCalendarLegendElement to show color only if set details: https://code.openbravo.com/erp/devel/pi/rev/607c7929ee14 changeset: 19771:607c7929ee14 user: David Baz Fayos <david.baz <at> openbravo.com> date: Thu Feb 21 14:54:23 2013 +0100 summary: [calendar] Added capabilities to define a custom filter in OBMultiCalendar diffstat: modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-calendar.js | 17 +- modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-multicalendar.js | 100 ++++++++- 2 files changed, 99 insertions(+), 18 deletions(-) diffs (220 lines): diff -r 387d054faef6 -r 607c7929ee14 modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-calendar.js --- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-calendar.js Fri Mar 01 13:57:28 2013 +0100 +++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-calendar.js Thu Feb 21 14:54:23 2013 +0100 @@ -118,7 +118,7 @@ }, transformResponse: function (dsResponse, dsRequest, data) { var showDSAlert, records = data && data.response && data.response.data, - i; + i, j; showDSAlert = function (text) { isc.warn(text, function () { @@ -152,6 +152,13 @@ if (typeof calendar.customTransformResponse === 'function') { records[i] = calendar.customTransformResponse(records[i], calendar); } + if (multiCalendar && multiCalendar.calendarData.hasCustomFilters) { + for (j = 0; j < multiCalendar.calendarData.customFilters.length; j++) { + if (typeof multiCalendar.calendarData.customFilters[j].handler.transformResponse === 'function') { + records[i] = multiCalendar.calendarData.customFilters[j].handler.transformResponse(records[i], calendar, multiCalendar.calendarData.customFilters[j]); + } + } + } } } } @@ -341,6 +348,14 @@ criteria.criteria.push(orPart); } + if (this.multiCalendar && this.multiCalendar.calendarData.hasCustomFilters) { + for (i = 0; i < this.multiCalendar.calendarData.customFilters.length; i++) { + if (typeof this.multiCalendar.calendarData.customFilters[i].handler.filterCriteria === 'function') { + criteria.criteria.push(this.multiCalendar.calendarData.customFilters[i].handler.filterCriteria(this, this.multiCalendar.calendarData.customFilters[i])); + } + } + } + if (typeof this.getCustomCriteria === 'function') { criteria.criteria.push(this.getCustomCriteria(this)); } diff -r 387d054faef6 -r 607c7929ee14 modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-multicalendar.js --- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-multicalendar.js Fri Mar 01 13:57:28 2013 +0100 +++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/calendar/ob-multicalendar.js Thu Feb 21 14:54:23 2013 +0100 @@ -35,6 +35,17 @@ id: null, checked: true, overflow: 'hidden', + changed: function (form, item, value) { + var calendarData = form.parentElement.multiCalendar.calendarData, + i; + this.Super('changed', arguments); + for (i = 0; i < calendarData.calendars.length; i++) { + if (calendarData.calendars[i].id === form.parentElement.id) { + calendarData.calendars[i].checked = value; + } + } + form.parentElement.multiCalendar.refreshCalendar(); + }, initWidget: function () { var checkbox, color, name; this.Super('initWidget', arguments); @@ -44,7 +55,9 @@ if (this.checked === 'false') { this.checked = false; } - OB.Utilities.Style.addRule('.bgColor_' + this.color, 'background-color: ' + OB.Utilities.getRGBAStringFromOBColor(this.color) + ';' + 'color: ' + (OB.Utilities.getBrightFromOBColor(this.color) > 125 ? 'black' : 'white')); + if (this.color) { + OB.Utilities.Style.addRule('.bgColor_' + this.color, 'background-color: ' + OB.Utilities.getRGBAStringFromOBColor(this.color) + ';' + 'color: ' + (OB.Utilities.getBrightFromOBColor(this.color) > 125 ? 'black' : 'white')); + } checkbox = isc.DynamicForm.create({ width: 20, checked: this.checked, @@ -53,17 +66,7 @@ width: 20, showTitle: false, value: this.checked, - changed: function (form, item, value) { - var calendarData = form.parentElement.multiCalendar.calendarData, - i; - this.Super('changed', arguments); - for (i = 0; i < calendarData.calendars.length; i++) { - if (calendarData.calendars[i].id === form.parentElement.id) { - calendarData.calendars[i].checked = value; - } - } - form.parentElement.multiCalendar.refreshCalendar(); - }, + changed: this.changed, type: 'checkbox' }] }); @@ -79,7 +82,11 @@ styleName: 'OBMultiCalendarLegendElementName', contents: this.name }); - this.addMembers([checkbox, color, name]); + this.addMembers([checkbox]); + if (this.color) { + this.addMembers([color]); + } + this.addMembers([name]); } }); @@ -152,22 +159,36 @@ return legendArray; }, initWidget: function () { - var button, label, legend, leftControls = this; + var button, label, legend, customFilterObj, leftControls = this, + currentFilter = null, + i; this.Super('initWidget', arguments); if (this.multiCalendar.calendarData.hasFilter) { + for (i = 0; i < leftControls.multiCalendar.calendarData.filters.length; i++) { + if (leftControls.multiCalendar.calendarData.filters[i].checked) { + currentFilter = leftControls.multiCalendar.calendarData.filters[i].id; + break; + } + } this.filter = isc.DynamicForm.create({ fields: [{ name: 'filter', title: leftControls.multiCalendar.filterName, type: 'comboBox', valueMap: leftControls.getFilterValueMap(), - value: leftControls.multiCalendar.calendarData.currentFilter, + value: currentFilter, width: 180, titleOrientation: 'top', required: true, changed: function (form, item, value) { this.Super('changed', arguments); - leftControls.multiCalendar.calendarData.currentFilter = value; + for (i = 0; i < leftControls.multiCalendar.calendarData.filters.length; i++) { + if (leftControls.multiCalendar.calendarData.filters[i].id === value) { + leftControls.multiCalendar.calendarData.filters[i].checked = true; + } else { + leftControls.multiCalendar.calendarData.filters[i].checked = false; + } + } leftControls.legend.updateMembers(leftControls.getLegendValueMap()); }, @@ -218,6 +239,26 @@ height: 10, contents: this.multiCalendar.legendName + ' :' }); + this.customFiltersContainer = isc.VLayout.create({ + width: 1, + height: 1, + initWidget: function () { + var i; + if (leftControls.multiCalendar.calendarData.hasCustomFilters) { + for (i = 0; i < leftControls.multiCalendar.calendarData.customFilters.length; i++) { + if (leftControls.multiCalendar.calendarData.customFilters[i].handler.constructor) { + customFilterObj = leftControls.multiCalendar.calendarData.customFilters[i].handler.constructor.create({ + multiCalendar: leftControls.multiCalendar, + checked: leftControls.multiCalendar.calendarData.customFilters[i].checked, + customFilter: leftControls.multiCalendar.calendarData.customFilters[i] + }, leftControls.multiCalendar.calendarData.customFilters[i].handler.constructorProps); + this.addMembers([customFilterObj]); + } + } + } + this.Super('initWidget', arguments); + } + }); this.legend = isc.OBMultiCalendarLegend.create({ multiCalendar: this.multiCalendar }); @@ -226,7 +267,7 @@ if (this.multiCalendar.canCreateEvents) { this.addMembers([button]); } - this.addMembers([this.dateChooser, label, this.legend]); + this.addMembers([this.dateChooser, this.customFiltersContainer, label, this.legend]); } }); @@ -248,6 +289,11 @@ } else { calendarData.hasFilter = false; } + if (calendarData.customFilters) { + calendarData.hasCustomFilters = true; + } else { + calendarData.hasCustomFilters = false; + } for (i = 0; i < calendarData.calendars.length; i++) { if (typeof calendarData.calendars[i].checked === 'undefined') { calendarData.calendars[i].checked = true; @@ -267,6 +313,26 @@ this.calendarProps.canCreateEvents = false; } } + if (calendarData.hasFilter) { + for (i = 0; i < calendarData.filters.length; i++) { + if (typeof calendarData.filters[i].checked === 'undefined') { + calendarData.filters[i].checked = false; + } + } + } + if (calendarData.hasCustomFilters) { + for (i = 0; i < calendarData.customFilters.length; i++) { + if (typeof calendarData.customFilters[i].checked === 'undefined') { + calendarData.customFilters[i].checked = false; + } + if (typeof calendarData.customFilters[i].handler === 'string' && this.calendarProps[calendarData.customFilters[i].handler]) { + calendarData.customFilters[i].handler = this.calendarProps[calendarData.customFilters[i].handler]; + } + if (typeof calendarData.customFilters[i].handler.constructor === 'string') { + calendarData.customFilters[i].handler.constructor = new Function('return ' + calendarData.customFilters[i].handler.constructor)(); + } + } + } return calendarData; }, setLoading: function (value) { ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits