summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-06 23:52:12 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-12 12:38:31 +0200
commit7d434464a843a8ca8acc903367492186a0ae13e8 (patch)
treeb2b6f32a47a66e693c1e6aa7fb1ac32f3c1d8438
parent96f7ffd1186aedcd606a330047b9072cb1fd0ede (diff)
downloadacf2-7d434464a843a8ca8acc903367492186a0ae13e8.tar.bz2
acf2-7d434464a843a8ca8acc903367492186a0ae13e8.tar.xz
web client: export transaction manager instance in query result
-rw-r--r--web/transaction.js72
1 files changed, 36 insertions, 36 deletions
diff --git a/web/transaction.js b/web/transaction.js
index 9a9368b..a85b7f5 100644
--- a/web/transaction.js
+++ b/web/transaction.js
@@ -7,6 +7,8 @@ define(
["acf2/path", "acf2/type", "jquery", "underscore", "jquery-blockui"],
function(pth, type, $, _) {
return function(token, saveRequired) {
+ var txnMgr = {};
+
var txn, changed, invalid;
function reset() {
@@ -27,7 +29,7 @@ define(
return $.ajax(url, options);
}
- function abort() {
+ txnMgr.abort = function() {
request("/transaction", {type: "DELETE"});
reset();
}
@@ -58,10 +60,12 @@ define(
return def;
}
- function query(path) {
+ txnMgr.query = function(path) {
var def = $.Deferred();
objRequest(path).done(function(data) {
+ data.txnMgr = txnMgr;
+
if (type.isTreeNode(data.meta) && !_.size(data.data))
data.data = type.isList(data.meta) ? [] : {};
@@ -215,7 +219,7 @@ define(
);
if (tn && !set)
- query(mpath).done(function(data) {
+ txnMgr.query(mpath).done(function(data) {
if (mpath in invalid) {
if (data.meta.type == "model")
@@ -372,45 +376,41 @@ define(
return def;
}
- return {
- start: function() {
- var def = $.Deferred();
- if (txn && isValid() && !(_.size(changed))) abort();
+ txnMgr.start = function() {
+ var def = $.Deferred();
+ if (txn && isValid() && !(_.size(changed))) txnMgr.abort();
- if (txn) def.resolve();
+ if (txn) def.resolve();
- else request("/transaction", {type: "POST"})
- .done(function(data, status, xhr) {
- txn = xhr.getResponseHeader("X-ACF-Transaction-ID");
- def.resolve();
- })
- .fail(function() { def.reject(); });
-
- return def;
- },
-
- commit: function() {
- var def = $.Deferred();
- function reject(xhr) { def.reject(xhr); }
- request("/transaction", {type: "PUT"}).done(function() {
- reset();
- if (saveRequired)
- request("/save", {type: "POST"}).done(function() {
- def.resolve();
- }).fail(reject);
- else def.resolve();
- }).fail(reject);
- return def;
- },
+ else request("/transaction", {type: "POST"})
+ .done(function(data, status, xhr) {
+ txn = xhr.getResponseHeader("X-ACF-Transaction-ID");
+ def.resolve();
+ })
+ .fail(function() { def.reject(); });
- abort: abort,
+ return def;
+ };
- query: query,
+ txnMgr.commit = function() {
+ var def = $.Deferred();
+ function reject(xhr) { def.reject(xhr); }
+ request("/transaction", {type: "PUT"}).done(function() {
+ reset();
+ if (saveRequired)
+ request("/save", {type: "POST"}).done(function() {
+ def.resolve();
+ }).fail(reject);
+ else def.resolve();
+ }).fail(reject);
+ return def;
+ };
- logout: function() {
- return request("/login", {type: "DELETE"});
- }
+ txnMgr.logout = function() {
+ return request("/login", {type: "DELETE"});
};
+
+ return txnMgr;
}
}
);