From 6f9869b18751a60f5b7512a59180b580adcdad6e Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Wed, 12 Oct 2016 08:11:50 +0000 Subject: [PATCH] [erp5_web_renderjs_ui] Simplify editor panel implementation --- .../rjs_gadget_erp5_editor_panel_html.html | 1 - .../rjs_gadget_erp5_editor_panel_html.xml | 4 +- .../rjs_gadget_erp5_editor_panel_js.js | 74 ++++++++----------- .../rjs_gadget_erp5_editor_panel_js.xml | 4 +- 4 files changed, 34 insertions(+), 49 deletions(-) diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.html b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.html index ea0b0bacdf..d3edfa6a49 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.html +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.html @@ -13,6 +13,5 @@ <script src="gadget_erp5_editor_panel.js"></script> </head> <body> - <div class="jqm-navmenu-panel"></div> </body> </html> \ No newline at end of file diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.xml index fae6d89ef7..1ac228e419 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_html.xml @@ -234,7 +234,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>954.34618.13218.7202</string> </value> + <value> <string>954.35607.14703.35106</string> </value> </item> <item> <key> <string>state</string> </key> @@ -252,7 +252,7 @@ </tuple> <state> <tuple> - <float>1476258673.41</float> + <float>1476258994.21</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.js index f847f2e169..15cc67d2e6 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.js @@ -1,65 +1,51 @@ -/*jslint indent: 2, maxerr: 3, nomen: true */ -/*global window, rJS, RSVP */ -(function (window, rJS, RSVP) { +/*jslint indent: 2, maxerr: 3, nomen: true, maxlen: 80 */ +/*global window, rJS */ +(function (window, rJS) { "use strict"; rJS(window) - ///////////////////////////////////////////////////////////////// - // ready - ///////////////////////////////////////////////////////////////// - // Init local properties - .ready(function (g) { - g.props = {}; - }) - .ready(function (g) { - return g.getElement() - .push(function (element) { - g.props.element = element; - g.props.container = element.querySelector(".jqm-navmenu-panel"); - }); - }) - .allowPublicAcquisition('trigger', function () { - this.props.element.classList.toggle('visible'); - // return this.props.jelement.panel("toggle"); - }) ////////////////////////////////////////////// // acquired method ////////////////////////////////////////////// - //local method + .allowPublicAcquisition('trigger', function () { + this.element.classList.toggle('visible'); + }) + .declareMethod('close', function () { - var container = this.props.container; - while (container.firstChild) { - container.removeChild(container.firstChild); + var element = this.element; + while (element.firstChild) { + element.removeChild(element.firstChild); } - if (this.props.element.classList.contains('visible')) { - this.props.element.classList.remove('visible'); + if (element.classList.contains('visible')) { + element.classList.remove('visible'); } }) + .declareMethod('render', function (url, options) { + this.element.classList.toggle('visible'); + return this.changeState({ + url: url, + options: JSON.stringify(options) + }); + }) + + .onStateChange(function (modification_dict) { var gadget = this, declared_gadget; - if (url && JSON.stringify(gadget.props.options) !== JSON.stringify(options)) { - gadget.props.options = options; - return new RSVP.Queue() - .push(function () { - return gadget.declareGadget(url, {scope: "declared_gadget"}); - }) + if (gadget.state.url && modification_dict.hasOwnProperty('options')) { + return gadget.declareGadget(gadget.state.url, + {scope: "declared_gadget"}) .push(function (result) { declared_gadget = result; - return declared_gadget.render(options); + return declared_gadget.render(JSON.parse(gadget.state.options)); }) .push(function () { - return RSVP.all([ - gadget.close(), - declared_gadget.getElement() - ]); + return gadget.close(); }) - .push(function (result) { - var fragment = result[1]; - gadget.props.container.appendChild(fragment); - gadget.props.element.classList.toggle('visible'); + .push(function () { + gadget.element.appendChild(declared_gadget.element); + gadget.element.classList.toggle('visible'); }); } - gadget.props.element.classList.toggle('visible'); }); -}(window, rJS, RSVP)); \ No newline at end of file +}(window, rJS)); \ No newline at end of file diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.xml index 1e4093327f..9e5cf68597 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_editor_panel_js.xml @@ -230,7 +230,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>953.42201.31550.52070</string> </value> + <value> <string>954.35625.39214.6929</string> </value> </item> <item> <key> <string>state</string> </key> @@ -248,7 +248,7 @@ </tuple> <state> <tuple> - <float>1472808729.65</float> + <float>1476259803.78</float> <string>UTC</string> </tuple> </state> -- 2.30.9