diff --git a/Makefile b/Makefile index 058cf9b..b3c3ba1 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,19 @@ -VERSION =1.4 +VERSION =1.5 BUILD_NUMBER_FILE = build-number.txt BUILD_NUMBER = $$(cat $(BUILD_NUMBER_FILE)) build : increment-build-number mkdir -p build/css + mkdir -p build/js cp src/www/*.* build - cp -r src/www/js build cp -r resources/* build/. + cp src/www/js/personal-display.js build/js/personal-display-$(VERSION).$(BUILD_NUMBER)js + sed -i "s/%VERSION%/$(VERSION).$(BUILD_NUMBER)/g" build/index.html sass src/www/css/personal-display.scss build/css/personal-display.css tar czf personal-display-$(VERSION).$(BUILD_NUMBER).tar.gz build clean : - rm -r build + -rm -r build local-deploy: build cp -r build ~/temp/server diff --git a/src/www/index.html b/src/www/index.html index 42c4837..b2f5efa 100644 --- a/src/www/index.html +++ b/src/www/index.html @@ -18,10 +18,10 @@ --> - + - +
diff --git a/src/www/js/personal-display.js b/src/www/js/personal-display.js index a10c3be..01134f4 100644 --- a/src/www/js/personal-display.js +++ b/src/www/js/personal-display.js @@ -2,7 +2,7 @@ var root = this; var PD = root.PersonalDisplay = {}; - PD.version = "1.4" + PD.version = "1.5" PD.hasHTML5LocalStorage = function() { try { @@ -171,7 +171,6 @@ xhrFields: { withCredentials: true }, processData: false, type: 'POST', - async: false, data: JSON.stringify( {"username": username, "password": password}), @@ -183,7 +182,10 @@ else { $(".validate-tips").text("There was an error " + "trying to log into the TimeStamper service: " + error); } - PD.tsAuth = false; }, + PD.tsAuth = false; + + // Hide the wait overlay. + this.$el.find(".wait-overlay").fadeOut(); }, success: function(data, textStatus, jqXHR) { PD.tsAuth = true; @@ -192,11 +194,10 @@ // Load the user's timelines. PD.configDialog.loadTsData(host, username); - } - }); - // Success or failure we hide the wait overlay. - this.$el.find(".wait-overlay").fadeOut(); + // Hide the wait overlay. + this.$el.find(".wait-overlay").fadeOut(); } + }); }, @@ -217,7 +218,6 @@ xhrFields: { withCredentials: true }, processData: false, type: 'POST', - async: false, data: JSON.stringify( {"username": username, "password": password}), @@ -229,61 +229,72 @@ else { $(".validate-tips").text("There was an error " + "trying to log into the Getting Things Done service: " + error); } - PD.gtdAuth = false; }, + PD.gtdAuth = false; + this.$el.find(".wait-overlay").fadeOut(); }, success: function(data, textStatus, jqXHR) { PD.gtdAuth = true; $(".validate-tips").text(""); - PD.configDialog.loadGtdData(host); } + PD.configDialog.loadGtdData(host); + this.$el.find(".wait-overlay").fadeOut(); } }); - this.$el.find(".wait-overlay").fadeOut(); }, loadTsData: function(host, username) { + var thisView = this; // (Re)load the user's timelines. - PD.tsCfg.timelines = JSON.parse($.ajax({ + $.ajax({ url: 'https://' + host + '/ts_api/timelines/' + username, xhrFields: { withCredentials: true }, - async: false}).responseText); + success: function(data, textStatus, jqXHR) { + debugger; + PD.tsCfg.timelines = data; - // Populate the available timelines list. - var $timelineSelectEl = this.$el.find(".timestamper-config .timeline"); - $timelineSelectEl.empty(); - _.forEach(PD.tsCfg.timelines, function(timeline) { - var $optionEl = $(document.createElement("option")); - $optionEl.attr("value", timeline.id); - $optionEl.text(timeline.description); - $timelineSelectEl.append($optionEl); }); }, + // Populate the available timelines list. + var $timelineSelectEl = $(".timestamper-config .timeline"); + + $timelineSelectEl.empty(); + _.forEach(PD.tsCfg.timelines, function(timeline) { + var $optionEl = $(document.createElement("option")); + $optionEl.attr("value", timeline.id); + $optionEl.text(timeline.description); + $timelineSelectEl.append($optionEl); }); + }}); }, loadGtdData: function(host) { + + // Load the user's contexts - PD.gtdCfg.contexts = JSON.parse($.ajax({ + var contextedLoaded = $.ajax({ url: 'http://' + host + '/gtd/contexts', xhrFields: { withCredentials: true }, - async: false }).responseText); + success: function(data, textStatus, jqXHR) { + PD.gtdCfg.contexts = data;} }); // Load the user's projects - PD.gtdCfg.projects = JSON.parse($.ajax({ + var projectsLoaded = $.ajax({ url: 'http://' + host + '/gtd/projects', xhrFields: { withCredentials: true }, - async: false }).responseText); + success: function(data, statuxText, jqXHR) { + PD.gtdCfg.projects = data;} }); - // Populate the available contexts and projects drop-down. - var $categorySelectEl = $(".gtd-config .category") - $categorySelectEl.empty(); - $categorySelectEl.append( - ""); - _.forEach(PD.gtdCfg.contexts.concat(PD.gtdCfg.projects), - function(category) { - var $optionEl = $(document.createElement("option")); - $optionEl.attr("value", category.id); - $optionEl.text(category.id); - $categorySelectEl.append($optionEl); }); - $categorySelectEl[0].selectedIndex = 0; }, + $.when(contextLoaded, projectsLoaded).then(function() { + // Populate the available contexts and projects drop-down. + var $categorySelectEl = $(".gtd-config .category") + $categorySelectEl.empty(); + $categorySelectEl.append( + ""); + _.forEach(PD.gtdCfg.contexts.concat(PD.gtdCfg.projects), + function(category) { + var $optionEl = $(document.createElement("option")); + $optionEl.attr("value", category.id); + $optionEl.text(category.id); + $categorySelectEl.append($optionEl); }); + $categorySelectEl[0].selectedIndex = 0; }}, makeCategoryItem: function(catName) { var $liEl = $( @@ -394,7 +405,6 @@ xhrFields: { withCredentials: true }, processData: false, type: "POST", - async: false, data: JSON.stringify( { "username": PD.tsCfg.username, @@ -416,7 +426,6 @@ xhrFields: { withCredentials: true }, processData: false, type: "POST", - async: false, data: JSON.stringify( { "username": PD.gtdCfg.username, @@ -451,12 +460,10 @@ if (jqXHR.status == 401) { PD.tsAuth = false; } else { alert("Unable to retrieve current timestamp: " + errorText); - PD.configDialog.show(); } - }, + PD.configDialog.show(); } }, success: function(data, textStatus, jqXHR) { - PD.currentActivityModel.set(data[0]); } - }); + PD.currentActivityModel.set(data[0]); } }); // Get the list of GTD entries for each of our categories. var categories = _.reduce( @@ -476,8 +483,7 @@ else if (jqXHR.status == 500) { return; } else { alert("Unable to retrieve next actions: " + errorText); - PD.configDialog.show(); } - }, + PD.configDialog.show(); } }, success: function(data, textStatus, jqXHR) { var collection = PD.gtdNextActionCollection; @@ -497,9 +503,7 @@ // longer in our retrieved data and remove them. collection.forEach(function(model) { if (!_.any(data, model.equals)) { - collection.remove(model); }}); - } - }); + collection.remove(model); }}); } }); if (evt) evt.preventDefault(); },