From 302bc9ccdd5609decebf09bed06a7e1b613e05f3 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Wed, 27 Apr 2011 14:11:54 -0500 Subject: [PATCH] Trying to gather thoughts and code coherently. Added client-side architecture model. Playing with UI code. --- db/test/DECISION_TAB.LOG | Bin 156 -> 156 bytes db/test/LATEST.LOG | Bin 92 -> 92 bytes doc/model.txt | 34 +++++++++++++ doc/model.xcf | Bin 0 -> 94164 bytes www/css/ts-screen.css | 22 +++++++-- www/css/ts-screen.scss | 21 +++++++- www/index.yaws | 64 ++++++++++++++++-------- www/js/ts.js | 102 +++++++++++++++++---------------------- 8 files changed, 158 insertions(+), 85 deletions(-) create mode 100644 doc/model.txt create mode 100644 doc/model.xcf diff --git a/db/test/DECISION_TAB.LOG b/db/test/DECISION_TAB.LOG index b7cfd436cbf3e2937606479f1ea094d7a21ee6a2..f9db5684ce45925782fe73e887645223efd49de7 100644 GIT binary patch delta 21 dcmbQkIEQgUI0tXR^CSkA=}RZZTQgZ^0RT<$2LJ#7 delta 21 ccmbQkIEQgUI0vI;Xc7Z!-|30*)=cJE07PvDM*si- diff --git a/db/test/LATEST.LOG b/db/test/LATEST.LOG index 3facf33e1ebfa29ef77ce747795ad52ac4610548..938530218a85aadb98925d4a13733e7dcced7977 100644 GIT binary patch delta 13 Ucma!vnGnLkTkt%Ifi+qb03L4x-~a#s delta 13 Ucma!vnGnLkXc?Nsz`E=z02+7%761SM diff --git a/doc/model.txt b/doc/model.txt new file mode 100644 index 0000000..ea15525 --- /dev/null +++ b/doc/model.txt @@ -0,0 +1,34 @@ +Data +---- +UserModel +TimelineModel +TimelineListModel +EntryListModel +EntryModel + + +Views +----- +EntryView +NewEntryInput +TimelineListView +TimelineView +UserView + + +Data Dependencies +----------------- +UserModel: none +TimelineModel: UserModel +TimelineListModel: UserModel +EntryModel: TimelineModel +EntryListModel: TimelineModel + + +View Dependencies +----------------- +UserView: UserModel +TimelineView: TimelineModel, UserView +TimelineListView: TimelineListModel, UserView +EntryView: EntryModel, EntryListView +EntryListView: EntryListModel, TimelineView diff --git a/doc/model.xcf b/doc/model.xcf new file mode 100644 index 0000000000000000000000000000000000000000..670924f75e5cd528e9b0897bfa10540a28031b38 GIT binary patch literal 94164 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 DeewZv literal 0 HcmV?d00001 diff --git a/www/css/ts-screen.css b/www/css/ts-screen.css index 21b405a..46af972 100644 --- a/www/css/ts-screen.css +++ b/www/css/ts-screen.css @@ -34,10 +34,12 @@ body { display: inline-block; } #user.fullname-edit .fullname { display: none; } - #user ul#user-controls { + #user .drop-menu { + display: inline-block; } + #user .drop-menu .drop-menu-items { float: right; list-style: none; } - #user ul#user-controls li { + #user .drop-menu .drop-menu-items li { float: right; text-align: center; padding-right: 1em; } @@ -54,13 +56,25 @@ body { #timeline .timeline-desc { display: inline-block; width: 70%; } + #timeline .timeline-desc-input { + width: 70%; } #timeline .timeline-id { display: inline-block; } - #timeline .timeline-menu { + #timeline .timeline-desc-input, #timeline .timeline-id-input { + display: none; } + #timeline.edit-id .timeline-id-input { + display: inline-block; } + #timeline.edit-id .timeline-id { + display: none; } + #timeline.edit-desc .timeline-desc-input { + display: inline-block; } + #timeline.edit-desc .timeline-desc { + display: none; } + #timeline .drop-menu { text-align: right; display: inline-block; width: 29%; } - #timeline .timeline-menu .drop-menu-items { + #timeline .drop-menu .drop-menu-items { text-align: right; right: 0; } diff --git a/www/css/ts-screen.scss b/www/css/ts-screen.scss index 06ecf7d..d8c2c04 100644 --- a/www/css/ts-screen.scss +++ b/www/css/ts-screen.scss @@ -48,7 +48,10 @@ body { .fullname { display: none; } } - ul#user-controls { + .drop-menu { display: inline-block; } + + .drop-menu .drop-menu-items { + float: right; list-style: none; @@ -81,9 +84,23 @@ body { width: 70%; } + .timeline-desc-input { width: 70% } + .timeline-id { display: inline-block; } - .timeline-menu { + .timeline-desc-input, .timeline-id-input { display: none; } + + &.edit-id { + .timeline-id-input { display: inline-block; } + .timeline-id { display: none; } + } + + &.edit-desc { + .timeline-desc-input { display: inline-block; } + .timeline-desc { display: none; } + } + + .drop-menu { text-align: right; display: inline-block; width: 29%; diff --git a/www/index.yaws b/www/index.yaws index 98afab9..aef2d14 100644 --- a/www/index.yaws +++ b/www/index.yaws @@ -3,8 +3,8 @@ TimeStamper - Simple Time Tracking - - + + @@ -13,44 +13,54 @@ --> - - + + - - - - + + + + - +
- Work-related events. + No timeline loaded. -
-
( work )
+
+
( none )
    -
  • jdb-labs
  • -
  • timestamper
-
Jonathan Bernard
+
Not Logged In
-
- jdbernard
- +
+
- not_logged_in
+ +
@@ -74,6 +84,20 @@ + +
+
+
+ + + + +
+
+

+
diff --git a/www/js/ts.js b/www/js/ts.js index e94e1b2..4b27d4e 100644 --- a/www/js/ts.js +++ b/www/js/ts.js @@ -35,7 +35,11 @@ $(document).ready(function(){ * - join_date */ TS.UserModel = Backbone.Model.extend({ + url: function() { return '/ts_api/users/' + this.get('id'); }, + initialize: function(attrs, options) { + _.bind(this, 'url'); + } }); TS.EntryList = Backbone.Collection.extend({ @@ -84,7 +88,7 @@ $(document).ready(function(){ events: { "dblclick div.mark" : "editMark", "dblclick div.timestamp" : "editTimestamp", - "keypress .mark-input" : "updateOnEnter" + "keypress .mark-input" : "updateOnEnter", "keypress .timestamp-input" : "updateOnEnter" }, @@ -181,7 +185,7 @@ $(document).ready(function(){ $(this.el).addClass('edit-desc'); this.$('.timeline-desc-input').focus(); return this; - }; + }, close: function() { this.model.save({ @@ -195,40 +199,9 @@ $(document).ready(function(){ } }); - TS.TimelineListView = Backbone.View.extend({ - - el: $("#timeline .drop-menu-items"), - - events: { - 'click #timeline .drop-menu-items a': 'selectTimeline' - }, - - initialize: function() { - _.bindAll(this, 'addOne', 'render'); - this.collection.bind('add', this.addOne); - this.collection.bind('refresh', this.refresh); - this.collection.view = this; - }, - - addOne: function(timeline) { - $(this.el).append(ich.timelineLink(timeline.toJSON())); - }, - - render: function() { - $(this.el).empty(); - this.collection.each(this.addOne); - return this; - }, - - selectTimeline: function() { - // note that this refers to the element that initiated this event - // TODO - } - }); - TS.UserView = Backbone.View.extend({ - el: $("user"), + el: $("#user"), model: TS.UserModel, @@ -245,7 +218,7 @@ $(document).ready(function(){ render: function() { this.$('.fullname').text(this.model.get('name')); - this.$('.username').text(this.model.get('id')); + this.$('.username').text(" - " + this.model.get('id')); return this; }, @@ -266,6 +239,37 @@ $(document).ready(function(){ } }); + TS.AppView = Backbone.View.extend({ + + el: $("body"), + + events: { + 'click #timeline .drop-menu-items a': 'selectTimeline', + 'keypress #new-entry-input' : 'newTimestamp', + }, + + initialize: function() { + _.bindAll(this, 'render'); + }, + + renderTimelineList: function() { + var tlUL = this.$('#timeline ul.drop-menu-items'); + //var curTimeline = + //var remTimelines = TS.user.timelines.filter(function(timeline) + } + }); + + // wire the login dialog using jQuery UI + $("#login-dialog").dialog({ + autoOpen: false, + height: 400, + width: 400, + modal: true, + buttons: { Login: function(){login()} } + }); + + $('#login-dialog').dialog('open'); + }) function login() { @@ -296,35 +300,15 @@ function login() { // create the user model TS.user = new TS.UserModel({ - id: name.val();, + id: name.val(), name: '' }); - // create the user view - new TS.UserView({model: TS.user}); - // fetch the initial user data from the server TS.user.fetch(); - // create the user's timelines - TS.timelineList = new TS.TimelineList([], {user: TS.user}); + // create the user view + new TS.UserView({model: TS.user}); + TS.user.view.render(); - // create the timeline list view - new TS.TimelineListView({collection: TS.timelineList}); - TS.timelineList.fetch(); - - // load the current timeline - TS.currentTimeline = TS.timelineList.at(0); - - // create the timeline view - new TS.TimelineView({model: TS.currentTimeline}); - - // render the timeline view - TS.currentTimeline.view.render(); - - // load the entries for this timeline - TS.entryList = new TS.EntryList([], {timeline: TS.currentTimeline}); - - // create the new entry list view - new TS.EntryListView }}); }