AJAX calls are now async.
* JS file is now versioned. * AJAX calls are now asynchronous (since many browsers no longer support synchronous calls).
This commit is contained in:
parent
64e90eaeb5
commit
7ba8d76843
8
Makefile
8
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
|
||||
|
@ -18,10 +18,10 @@
|
||||
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone.js" defer></script>
|
||||
-->
|
||||
|
||||
<script src="js/personal-display.js" type="text/javascript" defer></script>
|
||||
<script src="js/personal-display-%VERSION%.js" type="text/javascript" defer></script>
|
||||
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no">
|
||||
<meta name=version content="1.4">
|
||||
<meta name=version content="1.5">
|
||||
</head>
|
||||
<body>
|
||||
<section id=current-task>
|
||||
|
@ -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,48 +229,59 @@
|
||||
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");
|
||||
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); }); },
|
||||
$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;} });
|
||||
|
||||
$.when(contextLoaded, projectsLoaded).then(function() {
|
||||
// Populate the available contexts and projects drop-down.
|
||||
var $categorySelectEl = $(".gtd-config .category")
|
||||
$categorySelectEl.empty();
|
||||
@ -283,7 +294,7 @@
|
||||
$optionEl.attr("value", category.id);
|
||||
$optionEl.text(category.id);
|
||||
$categorySelectEl.append($optionEl); });
|
||||
$categorySelectEl[0].selectedIndex = 0; },
|
||||
$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();
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user