Vacation Hour Tracker app
Most of us deal with some aspect of our job/career that isn't directly
under our control. For those who do not know, I am a firefighter for a
medium to large metropolitan fire department that is located 1.5 hours
south of Phoenix, Az. There are many of aspects in my job that I have
very little control over.
Recently, I was charged for three days of vacation time that I did not
take. I have to admit that I caught the error by mistake as I generally
glance at the number of hours without much thought. When I realized the
error, I decided to go back and inspect the last six months and I found
two more errors... Which prompted another 6 months of inspection and one
more error.
I really don't want to painstakingly evaluate and cross reference my pay
stub to our staffing software for correctness every two weeks. That
isn't exactly my idea of a good time. So I wrote this little application
that should, in theory, be my ever watchful vacation hour sentry. As a
great by product of writing this app, I investigated several javascript
MV* / MVVM frameworks and various libraries.
The libraries used for this app are:
- Phonegap / Cordova - Phone
version - Knockoutjs - MVVM Framework / Data
Binding - jQuery Mobile - 1.0
- jStorage - localStorage
- Momentjs - JavaScript Date
Library - Mobiscroll jQuery Mobile
plugin - Zend Framework GData Library - PHP
The file tree and code are completely UGLY and it is not
my prettiest work to be sure. So when you go snooping around the
src remember I've been HACKING on this like crazy. I have three or four
implementations of this app contained within the asset/www file so be
sure to snoop around and look at the backbone version and vanilla jQuery
mobile version.
I chose to go with Knockout for a variety of reasons for the main app.
The big reason was that it works with my brain and I was able to
accomplish a ton with very little boilerplate. I really eff'ing hate
boilerplate. I watched several Backbone tutorials and I read countless
lines of Backbone code and I was (am?) still pretty much lost. It made
me work way too hard to get basic functionality. I had several "aha"
moments with Backbone... only to have them stuffed in my pie-hole
minutes later. Not a good experience but I plan on re-visiting Backbone
in the future.
I'll have several follow on posts regarding this app in the coming days.
I will also spend some time styling this app as its is default to a
fault right now using non-standard icons and Adobe Fireworks. I can post
that as a tutorial if there is interest.
Here is the fully functional app (tested with Safari 5+, Firefox 9,
Chrome 16 on Mac): Sadly had to remove :(