[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