Genius Bar Widget

v1.1 by Jake Bordens

Notice of Discontinuance

Apple updated their Genius Bar system and broke this widget. The Genius Bar widget is still here for historical purposes, but is now discontinued.

Standard Beta Warning

This is beta software. Use at your own risk. You have been warned.

The "fine print" also known as the (MIT License)

Copyright (c) 2005 Jake Bordens

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Origins of the Genius Bar Widget

After installing Tiger, the first question I asked of Spotlight was, "Show me all the files that are greater than 100mb." Spotlight promptly answered... with a crash. The metadata server decided to hop out for beer, and take the system UI server with it. It did leave a few cryptic error codes in my console log though. Oh well.

When I was discussing the Genius Bar with my friend Mike, he suggested a widget. A great idea, and while waiting in the queue for the Genius Bar, I devised myself a novel challenge: write a widget which will monitor the Genius Bar's queue--and do it before I was called up for service. I nearly made my goal; however, they did call me slightly before I was done. Luckily a rude gentleman decided to cut in without a reservation. This gave me a precious few minutes to complete the initial draft.

It wasn't pretty, but it worked. Now a day later, I've prettied it up a bit, added a configuration UI, and some other minor enhancements. JavaScript has always seemed so... "presentation layer" to me. This was just an excuse to finally learn some.

Credits

A special thank you to the Geniuses at the Genius Bar in Short Hills for attempting to fix my spotlight problem. You did find something wrong with my CoreServices folder, though it hasn't fixed the problem. I've just stopped asking Spotlight for file-size information... Good luck with all the people looking for help with Tigrrrrr...

update: I filed a bug and its under investigation at Apple. Good luck finding it. Seems to me like overall, 10.4 isn't as stable as 10.3. Hope they fix all the quicks soon. :)

Thanks to Apple as well--may they not come after me for using their Genius Bar logo and name in the widget. It's freely available, and it's not like I'm making a profit. Hopefully they won't mind too much.

Thanks to Mike W. for the original idea.

How to Use

Comments?

You can email me at widgets [at] allaboutjake.com with any comments or suggestions.

Please pay careful attention to whether the widget is actually displaying the queue from your desired AppleStore. I entered the AppleStore list manually, and may have made an error or two. There are almost 100 of them!

How Does it Work?

The widget basically scrapes the queue table off of the Genius Bar "show my place in line" page. Should Apple change the format of this page, you can expect this widget to stop working. After obtaining the table with the queue information, it rendered with a different CSS style sheet to make it look reasonable for the size of the widget.

If anyone from Apple is reading this (other than their lawyers), a nice little tiny XML web service to provide some store info would be really great... for example:

...just a thought.

Known issues

How to Add an AppleStore

If Apple should build a Genius Bar equipped location near you, and it is not yet in the widget, you can modify the 'stores.js' JavaScript file. Simply follow the format of one of the other 100 or so store entries in this file. Leave the last bit of code at the bottom alone. This indexes the store entries by state.

A key piece of information is the store ID. You can find this information by going to the main page for your store's Genius Bar. Go to http://www.apple.com/retail and find your store. Then click on the Genius Bar link. The address will end with '?store=WXYZ' The 'WXYZ' part is your store ID.

In version 1.1, I've added a function called manualStoresEntry. You should add any new stores you want in there. Also you can override stores in there as well. This is so you can add and override stores that are loaded from the stores.xml database stored at wryspy.com.






Release History

DateVersionDescription
03-May-20051.0 betaInitial release
04-May-20051.0.1 beta
  • Added animated progress and error indicator to lower left instead of the text message
  • Added red "error" indicator to lover left instead of the text message
  • Indicators can be clicked to force a reload
  • Added better support for "no appointments" pages from the server
  • Added better handling for unexpected pages from the server
07-May-20051.0.2a ß (ß = beta)
  • Better table formatting (column widths)
  • Prevent unnecessary horizontal scroller in some situations (hopefully)
  • Cancel button added to preferences
  • Project URL added to about message. (Changed project url to wryspy.com)
  • Cleaned up some of the CSS a bit (though still pretty bad.)
  • Upped minimum auto referesh time to 5 minutes.
  • New 'red-X' icon and buttons graphics
  • PNGCrushed all PNGs for size
  • Title updated on new store selection, content cleared to prevent confusion.
  • Version 'a' - Minor bug fix due to typo in code - related to 'red-X' reloads.
08-May-20051.0.3ß
  • Replaced buttons with 'genericButton' for button look consistent with Apple widgets.
10-May-20051.0.4ß
  • Added all the mini stores (sorry, I didn't realize they had Genius Bars.)
  • Fixed an ID mixup between the Iowa store and the International Plaza, FL store
16-May-20051.0.5 I've removed the "beta" indicator for this release. Changes include:
  • Added support international stores. (Changed 'State' to 'State/Country') Under the hood the code still says, 'state'. I might get around to changing that, but for now, it works.
  • Added the United Kingdom and Japan stores to the database.
  • Fixed Massachusetts stores - they were all listed under "Cambridge".
06-Jun-20051.1ß Back to beta (ß) for this release.
  • Stores database now pulls from an XML file on wryspy.com - now I can update the database without needing to reversion the widget.
  • Widget will revert to an internal database if it cannot load the XML file from wryspy.com
  • Updated XML file and internal database with new stores.
  • added a manualStoresEntry function to stores.js. use this function to add your own stores or override stores in the stores.xml database
  • Added store database version indicator on the About screen. You can see if you're using an XML file or the internal database, and when the database was last updated.

Download

Mac OS X v.10.4 Tiger is required. If you're using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget's icon in the Widget Bar to open it. If you're using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget's icon in the Widget Bar to open it.


Genius Bar and Apple Store are registered trademarks of Apple Computer, Inc.
This widget is not affiliated with or endorsed by Apple Computer, Inc.