A big piece of upgrading the Hub in recent months has been moving more of our UI to dojo and sprucing up the detail view was one of the main areas we focused on. Travis did most of the work of moving ui code to dojo, and most of the detail view work. I did a final touch-up, standing on the shoulders of giants.
The detail view effort aimed to simplify what users see as they create and edit their data. Now, a simple note looks like this:
We’ve moved the Remove and Save buttons to the top, so they don’t shift around as the detail view size changes. We’ve also simplified the UI for adding the “star” stamp (which used to be called task) and adding to the calendar.
Throughout the new UI, we make use of dojo’s elaborate support for fades, which help make expand and disappear changes easier to follow.
One of these fade-ins happens if you click on “ADD TO CALENDAR” or the event icon.
To reduce clutter, we’ve used more hint-text in widgets and fewer permanent labels. We also hide event related widgets that don’t apply to the current event. So, for example, “anytime” events which don’t have a start time don’t need a timezone, so we don’t display a timezone picker until you choose a start time for your event.
We’ve also made a much-clamored for addition for events, a date picker. Happily, dojo gave us this for free.
Once you fill in a start-date, end-date defaults to start-date.
Finally, we’ve moved our notes field to dojo’s expanding text area. So if you’ve got three pages of notes, the notes field (and the entire detail view pane) will automatically expand to give you room to type everything.
For reference, here’s a snapshot of the old detail view.
After our preview release last year we heard quite a bit of feedback related to the sharing workflows in the Chandler Web UI. Many people seemed to immediately grasp how useful it is to be able to send links to friends and collaborators that can be plugged into Chandler Desktop or directly into a web browser for instant view-only or view-and-edit access to the contents of a collection. Unfortunately, until Chandler Server 0.15, released in May of this year, actually getting at these links was pretty difficult.
The solution to this problem, the collection sharing dialog you can find on Chandler Hub today, solves this problem and more. Any time you’d like to share your Chandler Hub data with other people or even just other applications you use, this starting point will make everything else easier.
Today we’ll two follow users, Adam and Zed, as they run through a sharing worflow we think you’ll find useful.
Adam and Zed are coaching their sons’ soccer team, the Beagles. Adam has been using Chandler at work, and creates a new collection to help with the mountain of organization that will need to take place. He has published this collection to http://hub.chandlerproject.org and would like Zed to give him some feedback on a proposed practice schedule.
After logging into the Hub Web UI, Adam clicks on the pulldown arrow next to “Soccer” to bring up the collection sharing dialog.

He then clicks on the “invite” button to generate two sharing links.
Finally, he right clicks on the “View and Edit” sharing link and selects Send link…. He could also just copy the link location and paste it manually into the email or instant message program of his choice.

When Zed gets the link he can paste it into his favorite web browser and instantly review and edit Adam’s practice schedule. What’s more, if he wants to start using the Chandler Desktop client, he can use this link to subscribe to this collection there.
Zed’s not ready to take the Chandler Desktop plunge. It’s not that he doesn’t like Chandler, but he’s been a die-hard Apple iCal fan for years. Fortunately, iCal and Chandler work great together. Once Zed pastes the link he received from Adam into his web browser, he’s excited to see a big green button on the left side of the screen labeled “Apple iCal, Google.” He clicks it and follows the instructions in the dialog that appears to add this collection to iCal. Unfortunately, due to underlying technical restrictions he won’t be able to edit the collection or add new events from iCal. Fortunately, Zed has bookmarked the link Adam sent him, and can do all the editing he needs there.
Hub interoperability doesn’t end with support for Apple iCal. Several other clients, including the Lightning Calendaring Extension for Mozilla Thunderbird, have built in support for CalDAV, a calendar sharing standard. Hundreds of feed readers, usually used for keeping track of blogs and news, can subscribe to the Atom based collection feeds provided by Chandler Hub. Instructions for each of these methods can be found in the collection sharing dialog and the Chandler Project wiki.
I’ve been working on a Chandler Server feature that allows users to setup and receive a daily/weekly agenda via email that would include upcoming items for the day/week and also a list of items with a triage status of NOW. While this work isn’t done, I’ve discovered a way to get a daily agenda for a collection shared on Chandler Hub using Google Calendar. So in the mean time if you want an easy way to get a daily agenda via email (or SMS) you can do the following:



You are done! Google Calendar will automatically refresh the URL every few hours and will send a daily agenda to you at 5am every morning.
Of course there are some limitations. The email will go to your gmail account, the agenda only includes events, there is a possibility of data being out of date, there is no triage status information, and no way to link back to the original items on Chandler Hub. Of course, this is why we are currently developing these features for the server!
Application
Development
service
tools
system:has:for
bitly
isgd
The 0.14.0 release of Chandler Server, pushed live to our open service Chandler Hub on Friday, boasts few obviously new features. Instead we’ve taken this release to merge a branch of development that has been open for several months which moves us to the 1.0 line of the Dojo Javascript Toolkit. Hopefully Hub users have already noticed improved load times and a generally snappier interface as a result of this upgrade, but unsurprisingly the most exciting improvements are in the code.
The first changes I’m excited about are, like our latest release, less wholesale modifications than improvements and commitments to stable APIs with performance enhancement sugar to sweeten the deal. Dojo’s internationalization (i18n) and event APIs have matured to the point where developers can expect to rely on them without fearing a future change like the one we’ve just experienced. As a result we’ve begun the process of migrating our custom i18n code to Dojo’s API, away from the custom, backend dependent code we’ve used in the past. We’ve also started streamlining our use of Dojo’s topic APIs to make our code easier to read and understand. Both these processes are works in progress, so keep an eye on this space for more detailed information in the future.
Several components have also seen essentially complete overhauls, most prominently
the XMLHttpRequest wrappers and Dijit, the full featured HTML/CSS UI toolkit built on
Dojo Core. Instead of using dojo.io.bind and passing callback functions,
method, and header information dojo.xhrGet, dojo.xhrPost and a
handful of other methods accept a variety of arguments, make HTTP requests and return
dojo.Deferred objects. This return value, a port of the asynchronous
task management API introduced by Python’s
Twisted networking library, provides an easy way for developers to manage complex
sets of asynchronous actions like server requests. Since our Web UI data APIs already used
dojo.Deferred internally, this change led to a very nice code reduction.
Dojo’s user interface building API, Dijit, has been greatly improved since Dojo 0.4. In addition to moving to its own namespace as part of Dojo’s overall API flattening, Dijit is better streamlined, better tested, and easier to use. A number of Chandler Server UI components have been ported to the Dijit APIs, and are, as a result, better tested, more modular, and closer to being embeddable outside of our Web UI.
The Dojo team has also been hard at work putting together the next generation of Javascript tools to support high performance rich applications on top of the Open Web. Two of these tools are already finding their way into heavy use within our code base, and are poised to become critical pieces of our infrastructure over the next year.
The first, dojo.data,
is “uniform data access layer” that allows UI components to be built without worrying
about backend data formats. Our user administration interface has been essentially
completely rewritten, but required almost no new UI code. All we had to do
was implement a dojo.data store on top of the Cosmo Management Protocol
(CMP)
and hook it up to Dojo’s
Grid widget
to get full in-place user field editing, “infinite scrolling” for handling
large numbers of users and a handful of other goodies. While our end-user calendar and
item list UIs have not been moved to this API, the ongoing
web widget project
is being built on a new dojo.data store that we hope to eventually
integrate into our current UI.
The second piece of new functionality that I’m excited about is
dojo.query. This do-it-all CSS query function
is the go-to guy for finding pieces of DOM to manipulate. The beauty of this and other
query functions is that they are based on features most web developers eventually expect
to be supported natively by all major web browsers. By allowing developers to start using
these features now we can build advanced web applications that will get trivially more
performant with time, and motivate browser developers to continue implementing this
critical functionality.
In addition to improving the tools we use to build our Web UI, Dojo’s 1.0 line has introduced some major infrastructure improvements in the form of a DOH, a new Dojo-independent testing harness, and a from-scratch rewrite of the Dojo build system. We’ve managed to port all of our tests to DOH by writing some wrappers to avoid a completely rewrite, which has allowed us to take advantage of the very nice test harness bundled with Dojo. Nearly as important as this test framework is the build system that plays a key role in transforming over 1MB of Javascript into a much more digestible 138K loaded in several different stages. The Dojo 1.0 line makes this process much cleaner and easy to understand, as well as offering advanced functionality like layering, which allows us to break our Javascript into large chunks appropriate to different pieces of our UI.
Dojo has been an integral part of our project to build a new kind of information and knowledge management ecosystem and we are lucky to be able to rely on a vibrant community of developers producing a first class piece of software. If you’re interested in digging deeper and helping us integrate even more of the exciting new functionality provided in its latest release, Dojo 1.1, please don’t hesitate to ask questions on our development list, or via IRC on irc.freenode.net in the #cosmo channel.
Chandler Hub has been updated to the latest version of Chandler Server 0.14.0. This release incorporates a major update to Dojo, the toolkit used to build our Web UI. Please report any problems.