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

Reply via email to