summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--web/blocking.js20
-rw-r--r--web/client.js28
-rw-r--r--web/transaction.js10
3 files changed, 45 insertions, 13 deletions
diff --git a/web/blocking.js b/web/blocking.js
new file mode 100644
index 0000000..d45992f
--- /dev/null
+++ b/web/blocking.js
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2012-2015 Kaarle Ritvanen
+ * See LICENSE file for license details
+ */
+
+define(["jquery", "jquery-blockui"], function($) {
+ var enabled = false;
+
+ return {
+ enable: function() {
+ $.blockUI();
+ enabled = true;
+ },
+ disable: function() {
+ $.unblockUI();
+ enabled = false;
+ },
+ isEnabled: function() { return enabled; }
+ };
+});
diff --git a/web/client.js b/web/client.js
index 346e458..0dd510a 100644
--- a/web/client.js
+++ b/web/client.js
@@ -1,10 +1,11 @@
/*
- * Copyright (c) 2012-2014 Kaarle Ritvanen
+ * Copyright (c) 2012-2015 Kaarle Ritvanen
* See LICENSE file for license details
*/
define(
[
+ "aconf/blocking",
"aconf/dom",
"aconf/error",
"aconf/navigation",
@@ -17,11 +18,20 @@ define(
"underscore",
"aconf/layout/stacked",
"aconf/layout/tabular",
- "domReady",
- "jquery-blockui"
+ "domReady"
],
function(
- dom, formatError, navi, pth, statusBar, txnMgr, type, Inline, $, _
+ blocking,
+ dom,
+ formatError,
+ navi,
+ pth,
+ statusBar,
+ txnMgr,
+ type,
+ Inline,
+ $,
+ _
) {
return function() {
$("#login").submit(function() {
@@ -194,11 +204,11 @@ define(
function clearState() {
statusBar.reset();
render();
- $.unblockUI();
+ blocking.disable();
}
$("#commit").click(function() {
- $.blockUI();
+ blocking.enable();
txnMgr.commit().done(clearState).fail(function(xhr) {
statusBar.setError(
formatError("Commit failed", xhr), "txn"
@@ -206,7 +216,7 @@ define(
})
});
$("#revert").click(function() {
- $.blockUI();
+ blocking.enable();
txnMgr.abort();
clearState();
});
@@ -220,7 +230,9 @@ define(
statusBar.reset();
$("#content").empty();
- $(window).bind("hashchange", render);
+ $(window).bind("hashchange", function() {
+ if (!blocking.isEnabled()) render();
+ });
navi.setPath("/");
}).fail(function() {
diff --git a/web/transaction.js b/web/transaction.js
index 5c0488d..3d4a953 100644
--- a/web/transaction.js
+++ b/web/transaction.js
@@ -1,11 +1,11 @@
/*
- * Copyright (c) 2012-2014 Kaarle Ritvanen
+ * Copyright (c) 2012-2015 Kaarle Ritvanen
* See LICENSE file for license details
*/
define(
- ["aconf/path", "aconf/type", "jquery", "underscore", "jquery-blockui"],
- function(pth, type, $, _) {
+ ["aconf/blocking", "aconf/path", "aconf/type", "jquery", "underscore"],
+ function(blocking, pth, type, $, _) {
return function(token, saveRequired) {
var txnMgr = {};
@@ -39,7 +39,7 @@ define(
}
function exclusive(task) {
- $.blockUI();
+ blocking.enable();
var def = $.Deferred();
function resolve(txnValid) { def.resolve(txnValid); }
@@ -55,7 +55,7 @@ define(
tasks[0].always(function() {
exclusive(task).done(resolve).fail(reject);
});
- else task().always($.unblockUI).done(resolve).fail(reject);
+ else task().always(blocking.disable).done(resolve).fail(reject);
return def;
}