From 7d434464a843a8ca8acc903367492186a0ae13e8 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Thu, 6 Feb 2014 23:52:12 +0200 Subject: web client: export transaction manager instance in query result --- web/transaction.js | 72 +++++++++++++++++++++++++++--------------------------- 1 file 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; } } ); -- cgit v1.2.3