[Cosmo-dev] Fwd: [commits-cosmo] (mde) [4909] Item selection in the calendar canvas is now persisted correctly

Bobby Rullo br at osafoundation.org
Fri Jun 29 17:32:22 PDT 2007


Can we change this back to newItem? "newItemNote" is unnecessarily  
unwieldy.

Begin forwarded message:

> From: svncheckin at osafoundation.org
> Date: June 29, 2007 2:57:23 PM PDT
> To: commits-cosmo at osafoundation.org
> Subject: [commits-cosmo] (mde) [4909] Item selection in the  
> calendar canvas is now persisted correctly
> List-Id: OSAF Cosmo Checkins <commits-cosmo.osafoundation.org>
>
> Revision
> 4909
> Author
> mde
> Date
> 2007-06-29 14:57:23 -0700 (Fri, 29 Jun 2007)
> Log Message
>
> Item selection in the calendar canvas is now persisted correctly
> after the various types of edits to recurring items.
> Modified Paths
>
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/service/transport/Rest.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/minical.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/navbar.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/cal/canvas.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/common.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/list/canvas.js
> cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/service.js
> Diff
>
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/service/ 
> transport/Rest.js (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/service/transport/ 
> Rest.js	2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/service/transport/ 
> Rest.js	2007-06-29 21:57:23 UTC (rev 4909)
> @@ -69,9 +69,9 @@
>              request.headers["Cache-Control"] = "no-cache";
>              request.headers["Pragma"] = "no-cache";
>              // Fight the dark powers of IE's evil caching mechanism
> -            if (dojo.render.html.ie) {
> +            //if (dojo.render.html.ie) {
>                  request.preventCache = request.preventCache || true;
> -            }
> +            //}
>              if (request.method){
>                  if (!this.methodIsSupported 
> [request.method.toLowerCase()]){
>                      request.headers['X-Http-Method-Override'] =  
> request.method;
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/minical.js  
> (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/minical.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/minical.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -37,6 +37,8 @@
>  dojo.require("cosmo.util.validate");
>  dojo.require("cosmo.app.pim");
>  dojo.require("cosmo.datetime");
> +dojo.require("cosmo.datetime.Date");
> +dojo.require("cosmo.datetime.util");
>  dojo.require("cosmo.service.exception");
>
>  cosmo.ui.minical.MiniCal = function (p) {
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/navbar.js  
> (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/navbar.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/ui/navbar.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -22,6 +22,7 @@
>  dojo.require("cosmo.util.i18n");
>  dojo.require("cosmo.util.hash");
>  dojo.require("cosmo.util.html");
> +dojo.require("cosmo.datetime.util");
>  dojo.require("cosmo.convenience");
>  dojo.require("cosmo.ui.ContentBox");
>  dojo.require("cosmo.ui.button");
> @@ -201,8 +202,15 @@
>          d.appendChild(t);
>      };
>      this._showMonthHeader = function () {
> -        var vS = cosmo.view.cal.viewStart;
> -        var vE =  cosmo.view.cal.viewEnd;
> +        if (!cosmo.view.cal.viewStart || !cosmo.view.cal.viewEnd) {
> +            var defaultDate = cosmo.app.pim.currDate;
> +            var vS = cosmo.datetime.util.getWeekStart(defaultDate);
> +            var vE = cosmo.datetime.util.getWeekEnd(defaultDate);
> +        }
> +        else {
> +            var vS = cosmo.view.cal.viewStart;
> +            var vE =  cosmo.view.cal.viewEnd;
> +        }
>          var mS = vS.getMonth();
>          var mE = vE.getMonth();
>          var headerDiv = this.monthHeader;
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/cal/ 
> canvas.js (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/cal/canvas.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/cal/canvas.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -63,7 +63,7 @@
>      this.view = cosmo.view.cal;
>      // UIDs for selected events keyed by the uid of
>      // the currently displayed collection
> -    this.selectedEventIdRegistry = {};
> +    this.selectedItemIdRegistry = {};
>      // Available lozenge colors
>      this.colors = {};
>      // The scrolling div for timed events
> @@ -645,20 +645,27 @@
>      /**
>       * Set the passed calendar event as the selected one on
>       * canvas
> -     * @param ev CalItem object, the event to select
> +     * @param p CalItem object or CalItem id string, the event to  
> select
>       */
> -    function setSelectedCalItem(ev) {
> -        if (!ev) {
> -            throw('No CalItem passed to setSelectedCalItem.');
> +    function setSelectedCalItem(/* Can be CalItem object or String  
> id */ p) {
> +        if (!p) {
> +            throw('No CalItem or CalItem id passed to  
> setSelectedCalItem.');
>          }
>          // Deselect previously selected event if any
>          var sel = self.getSelectedItem();
>          if (sel) {
>              sel.lozenge.setDeselected();
>          }
> -        self.setSelectedItem(ev);
> +        // Pass the item or id, set as the selected item
> +        // for the current collection
> +        self.setSelectedItem(p);
> +
> +        // Grab the selected item -- have to do this lookup
> +        // because the passed-in param might be an id string
> +        var sel = self.getSelectedItem();
> +
>          // Show the associated lozenge as selected
> -        ev.lozenge.setSelected();
> +        sel.lozenge.setSelected();
>      };
>      /**
>       * Removes an event lozenge from the canvas -- called in three  
> cases:
> @@ -828,7 +835,7 @@
>          dojo.debug("saveSuccess saveType: " + saveType);
>          var delta = cmd.delta;
>          var deferred = null;
> -        var newItem = cmd.newItem;
> +        var newItemNote = cmd.newItemNote; // stamped Note
>
>          //if the event is recurring and all future or all events  
> are changed, we need to
>          //re expand the event
> @@ -837,7 +844,7 @@
>              //first remove the event and recurrences from the  
> registry.
>              var idsToRemove = [data.getUid()];
>              if (saveType == recurOpts.ALL_FUTURE_EVENTS){
> -                idsToRemove.push(newItem.getUid());
> +                idsToRemove.push(newItemNote.getUid());
>              }
>              var newRegistry = self.view.filterOutRecurrenceGroup(
>                  cosmo.view.cal.itemRegistry.clone(), idsToRemove);
> @@ -847,7 +854,7 @@
>              var deferredArray =  
> [cosmo.app.pim.serv.expandRecurringItem(data.getMaster(),
>                  cosmo.view.cal.viewStart,cosmo.view.cal.viewEnd)];
>              if (saveType == recurOpts.ALL_FUTURE_EVENTS){
> -              deferredArray.push 
> (cosmo.app.pim.serv.expandRecurringItem(newItem,
> +              deferredArray.push 
> (cosmo.app.pim.serv.expandRecurringItem(newItemNote,
>                  cosmo.view.cal.viewStart,cosmo.view.cal.viewEnd));
>              }
>              deferred = new dojo.DeferredList(deferredArray);
> @@ -870,8 +877,8 @@
>              }
>              deferred.addCallback(addExpandedOccurrences);
>
> -        }
> -        // Non-recurring / "only this item'
> +        }
> +        // Non-recurring / "only this item'
>          else {
>              // Saved event is still in view
>              var inRange = !item.isOutOfViewRange();
> @@ -888,17 +895,41 @@
>              dojo.debug("updateEventsCallback")
>              // Don't re-render when requests are still processing
>              if (!cosmo.view.service.processingQueue.length) {
> -              if (false /*&& cmd.qualifier.newEvent ||
> -                    (cmd.qualifier.onCanvas && opts.saveType !=  
> 'instanceOnlyThisEvent')*/) {
> -                    var sel = cosmo.view.cal.lastSent;
> -                    sel.lozenge.setInputDisabled(false);
> -                    dojo.event.topic.publish('/calEvent',  
> { 'action': 'setSelected',
> -                        'data': sel });
> +                updateEventsDisplay();
> +
> +                // Anything except editing an existing event requires
> +                // adding the selection to an item in the  
> itemRegistry
> +                if (saveType) {
> +                    var sel = null;
> +                    switch (saveType) {
> +                        case 'new':
> +                            sel = item;
> +                            sel.lozenge.setInputDisabled(false);
> +                            break;
> +                        case recurOpts.ALL_EVENTS:
> +                        case recurOpts.ONLY_THIS_EVENT:
> +                            sel = item.data.getItemUid();
> +                            break;
> +                        case recurOpts.ALL_FUTURE_EVENTS:
> +                            sel = newItemNote.getNoteOccurrence(
> +                                newItemNote.getEventStamp 
> ().getStartDate()).getItemUid();
> +                            break;
> +                            break;
> +                        default:
> +                            throw('Undefined saveType of "' +  
> saveType +
> +                                '" in command object passed to  
> saveSuccess');
> +                            break;
> +
> +                    }
> +                    setSelectedCalItem(sel);
> +                    sel = self.getSelectedItem();
> +                    dojo.event.topic.publish('/calEvent',  
> { action: 'setSelected',
> +                        data: sel });
>                  }
> -                updateEventsDisplay();
> -            } else {
> -                dojo.debug("how many left in queue: "  
> +cosmo.view.service.processingQueue.length);
>              }
> +            else {
> +                dojo.debug("how many left in queue: " +  
> cosmo.view.service.processingQueue.length);
> +            }
>          }
>
>          if (deferred){
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/common.js  
> (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/common.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/common.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -87,23 +87,24 @@
>  cosmo.view.canvasBase = new function () {
>      this.getSelectedItem = function () {
>          var key = cosmo.app.pim.currentCollection.getUid();
> -        var id = this.selectedEventIdRegistry[key];
> +        var id = this.selectedItemIdRegistry[key];
>          var reg = this.view.itemRegistry;
>          return reg ? reg.getItem(id) : null;
>      };
> -    this.setSelectedItem = function (ev) {
> +    this.setSelectedItem = function (p) {
>          var key = cosmo.app.pim.currentCollection.getUid();
> -        this.selectedEventIdRegistry[key] = ev.id;
> +        var id = typeof p == 'string' ? p : p.id
> +        this.selectedItemIdRegistry[key] = id;
>          return true;
>      };
>      this.clearSelectedItem = function (ev) {
>          var key = cosmo.app.pim.currentCollection.getUid();
> -        this.selectedEventIdRegistry[key] = '';
> +        this.selectedItemIdRegistry[key] = '';
>          return true;
>      };
>      this.getSelectedItemId = function () {
>          var key = cosmo.app.pim.currentCollection.getUid();
> -        var id = this.selectedEventIdRegistry[key];
> +        var id = this.selectedItemIdRegistry[key];
>          return id;
>      }
>  };
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/list/ 
> canvas.js (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/list/canvas.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/list/canvas.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -40,7 +40,7 @@
>      //this.currSelectedId = '';
>      // UIDs for selected events keyed by the uid of
>      // the currently displayed collection
> -    this.selectedEventIdRegistry = {};
> +    this.selectedItemIdRegistry = {};
>      //this.currSelectedItem = null;
>      this.currSortCol = 'Triage';
>      this.currSortDir = 'Desc';
> Modified: cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/ 
> service.js (4908 => 4909)
>
> --- cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/service.js	 
> 2007-06-29 21:42:35 UTC (rev 4908)
> +++ cosmo/trunk/cosmo/src/main/webapp/js/cosmo/view/service.js	 
> 2007-06-29 21:57:23 UTC (rev 4909)
> @@ -165,13 +165,13 @@
>                  // Break the previous recurrence and start a new one
>                  case opts.ALL_FUTURE_EVENTS:
>                      dojo.debug("ALL_FUTURE");
> -                    var newItem  = delta.applyToOccurrenceAndFuture 
> ();
> +                    var newItemNote  =  
> delta.applyToOccurrenceAndFuture();
>                      f = function () {
>                          doSaveItem(item,
>                          {
>                            'saveType': opts.ALL_FUTURE_EVENTS,
>                            'delta': delta,
> -                          'newItem': newItem
> +                          'newItemNote': newItemNote
>                          });
>                      };
>                      break;
> @@ -233,7 +233,7 @@
>          var isNew = opts['new'] || false;
>          var note = item.data;
>          var delta = opts.delta;
> -        var newItem = opts.newItem;
> +        var newItemNote = opts.newItemNote;
>          dojo.debug("Do save: savetype: " + opts.saveType)
>          dojo.debug("Do save: iznew: " + isNew)
>
> @@ -248,17 +248,17 @@
>                      break;
>                  case OPTIONS.ALL_FUTURE_EVENTS:
>                      dojo.debug("about to save note in ALL FUTURE  
> EVENTS")
> -                    var newItemDeferred = cosmo.app.pim.serv.
> -                        createItem(newItem,  
> cosmo.app.pim.currentCollection);
> -                    var requestId = newItemDeferred.id;
> +                    var newItemNoteDeferred = cosmo.app.pim.serv.
> +                        createItem(newItemNote,  
> cosmo.app.pim.currentCollection);
> +                    var requestId = newItemNoteDeferred.id;
>                      self.processingQueue.push(requestId);
>
> -                    newItemDeferred.addCallback(function(){
> -                        dojo.debug("in newItemDeferred call back")
> -                        if (newItemDeferred.results[1] != null){
> +                    newItemNoteDeferred.addCallback(function(){
> +                        dojo.debug("in newItemNoteDeferred call  
> back")
> +                        if (newItemNoteDeferred.results[1] != null){
>                              //if there was an error, pass it to  
> handleSaveItem, with the original
>                              //item
> -                            handleSaveItem(item,  
> newItemDeferred.results[1], requestId,opts.saveType, delta);
> +                            handleSaveItem(item,  
> newItemNoteDeferred.results[1], requestId,opts.saveType, delta);
>                          }
>                          else {
>                              //get rid of the id from the  
> processing queue
> @@ -273,7 +273,7 @@
>                                      originalDeferred.id,
>                                      opts.saveType,
>                                      delta,
> -                                    newItem);
> +                                    newItemNote);
>                              });
>                              self.processingQueue.push 
> (originalDeferred.id);
>                              self.lastSent = item;
> @@ -336,14 +336,14 @@
>       * @param item A ListItem/CalItem object, the original item  
> clicked on,
>       * or created by double-clicking on the cal canvas.
>       * FIXME: Comments below are hopelessly out of date
> -     * @param newItemId String, the id for the item returned when  
> creating a
> +     * @param newItemNoteId String, the id for the item returned  
> when creating a
>       * new item
>       * @param err A JS object, the error returned from the server  
> when
>       * a save operation fails.
>       * @param reqId Number, the id of the async request.
>       * @param optsParam A JS Object, options for the save operation.
>       */
> -    function handleSaveItem(item, err, reqId, saveType, delta,  
> newItem) {
> +    function handleSaveItem(item, err, reqId, saveType, delta,  
> newItemNote) {
>          dojo.debug("handleSaveItem");
>          var OPTIONS = self.recurringEventOptions;
>          var errMsg = '';
> @@ -376,11 +376,11 @@
>          self.processingQueue.shift();
>          // Broadcast message for success/failure
>          dojo.event.topic.publish('/calEvent', {
> -             'action': act,
> -             'data': item,
> -             'saveType': saveType,
> -             'delta':delta,
> -             'newItem':newItem
> +             action: act,
> +             data: item,
> +             saveType: saveType,
> +             delta: delta,
> +             newItemNote: newItemNote
>          });
>      }
>
>
> _______________________________________________
> Commits-Cosmo mailing list
> Commits-Cosmo at osafoundation.org
> http://lists.osafoundation.org/cgi-bin/mailman/listinfo/commits-cosmo

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osafoundation.org/pipermail/cosmo-dev/attachments/20070629/de34384d/attachment.htm


More information about the cosmo-dev mailing list