diff options
Diffstat (limited to 'web/widget/abstract/base.js')
-rw-r--r-- | web/widget/abstract/base.js | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/web/widget/abstract/base.js b/web/widget/abstract/base.js index df02ee3..d4ed661 100644 --- a/web/widget/abstract/base.js +++ b/web/widget/abstract/base.js @@ -24,12 +24,11 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.level = level; var value = data.get(name); - var status = data.status(name); if (!editable || !meta.editable) { var el = this.staticRender(value, meta); if (el) { - dom.setStatus(el, status); + dom.setStatus(el, data.status(name)); return el; } } @@ -37,18 +36,6 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.makeEl(); this.dynamic = meta.dynamic; - var self = this; - - var request; - function handleRequest(req) { - request = req; - req.done(function(value, meta) { - if (req != request) return; - self.render(value, meta); - self.setStatus(status); - }); - } - this.wrapped = this.wrap(); this.visible = true; @@ -63,10 +50,12 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.wrapped.append(link); } - handleRequest(this.requestData(value, meta)); + this.handleResponse(this.requestData(value, meta)); + + var self = this; function validate() { - request.done(function(value) { + self.request.done(function(value) { self.validate(value); }); } @@ -78,7 +67,7 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { }); this.wrapped.on("updated", function(event, field) { - if (self.dynamic) handleRequest(self.refreshData()); + if (self.dynamic) self.refresh(); if (!field || self.dynamic || (meta.condition && field in meta.condition)) @@ -104,6 +93,18 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { return def; }, + handleResponse: function(request) { + this.request = request; + var self = this; + request.done(function(value, meta) { + if (request != self.request) return; + self.render(value, meta); + self.setStatus(self.data.status(self.name)); + }); + }, + + refresh: function() { this.handleResponse(this.refreshData()); }, + wrap: function() { return this.el; }, showStatus: true, |