diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js index 1e55ebfc0139f60ebe7dba63e046bbad16ff5f48..1f0b49ac88737837424911a338a9405696729cfe 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js @@ -67,25 +67,45 @@ ///////////////////////////////////////////////////////////////// .declareMethod('render', function (options) { + var group_list = options.form_definition.group_list, + rendered_form = options.erp5_document._embedded._view, + i, + j, + hash = ""; + + // Check the list of field to render + // If the list is different, DOM content will be dropped + // and recreated + for (i = 0; i < group_list.length; i += 1) { + hash += group_list[i][0]; + for (j = 0; j < group_list[i][1].length; j += 1) { + if (rendered_form.hasOwnProperty(group_list[i][1][j][0])) { + hash += group_list[i][1][j][0]; + } + } + } + + return this.changeState({ + erp5_document: options.erp5_document, + form_definition: options.form_definition, + hash: hash, + view: options.view + }); + }) + + .declareMethod('updateDOM', function (modification_dict) { var i, - erp5_document = options.erp5_document, - form_definition = options.form_definition, + erp5_document = this.state.erp5_document, + form_definition = this.state.form_definition, rendered_form = erp5_document._embedded._view, group_list = form_definition.group_list, queue = new RSVP.Queue(), form_gadget = this, - suboption_dict = {}, parent_element = document.createElement("div"); - form_gadget.state_parameter_dict = options.form_gadget || {}; - // XXX Hardcoded for searchfield - remove later! - if (form_definition.extended_search) { - suboption_dict.extended_search = form_definition.extended_search; + if (modification_dict.hasOwnProperty('hash')) { + form_gadget.props.gadget_list = []; } - // XXX Hardcoded for listbox's hide functionality - suboption_dict.hide_enabled = form_definition.hide_enabled; - - form_gadget.props.gadget_list = []; function addGroup(group) { queue @@ -104,11 +124,20 @@ sandbox = "public", field_element = document.createElement("div"), renderered_field = rendered_form[field[0]], - suboptions = options[renderered_field.key] || suboption_dict; + // suboptions = options[renderered_field.key] || suboption_dict; + suboptions = {}; + + // XXX Hardcoded for searchfield - remove later! + if (form_definition.extended_search) { + suboptions.extended_search = form_definition.extended_search; + } + // XXX Hardcoded for listbox's hide functionality + suboptions.hide_enabled = form_definition.hide_enabled; + suboptions.field_url = getFieldTypeGadgetUrl(renderered_field.type); suboptions.label = false; suboptions.field_json = renderered_field; - suboptions.field_json.view = options.view; + suboptions.field_json.view = form_gadget.state.view; if (group[0] !== "bottom") { suboptions.label = true; @@ -116,20 +145,26 @@ return field_queue .push(function () { - return form_gadget.declareGadget('gadget_erp5_label_field.html', { - scope: renderered_field.key, - element: field_element, - sandbox: sandbox - }); + if (modification_dict.hasOwnProperty('hash')) { + return form_gadget.declareGadget('gadget_erp5_label_field.html', { + scope: renderered_field.key, + element: field_element, + sandbox: sandbox + }); + } + return form_gadget.getDeclaredGadget(renderered_field.key); }) .push(function (label_gadget) { - //XXXXX Hardcoded to get one listbox gadget - //pt form list gadget will get this listbox's info - //then pass to search field gadget - if (suboptions.field_url === "gadget_erp5_field_listbox.html") { - form_gadget.props.listbox_gadget = label_gadget; + if (modification_dict.hasOwnProperty('hash')) { + + //XXXXX Hardcoded to get one listbox gadget + //pt form list gadget will get this listbox's info + //then pass to search field gadget + if (suboptions.field_url === "gadget_erp5_field_listbox.html") { + form_gadget.props.listbox_gadget = label_gadget; + } + form_gadget.props.gadget_list.push(label_gadget); } - form_gadget.props.gadget_list.push(label_gadget); return label_gadget.render(suboptions); }) .push(function () { @@ -155,19 +190,17 @@ return queue .push(function () { - var dom_element = form_gadget.element - .querySelector(".field_container"); - while (dom_element.firstChild) { - dom_element.removeChild(dom_element.firstChild); + if (modification_dict.hasOwnProperty('hash')) { + var dom_element = form_gadget.element + .querySelector(".field_container"); + while (dom_element.firstChild) { + dom_element.removeChild(dom_element.firstChild); + } + dom_element.appendChild(parent_element); } - dom_element.appendChild(parent_element); - // return $(parent_element).trigger("create"); - }); }) - - .declareMethod("getListboxInfo", function () { //XXXXX get listbox gadget's info var gadget = this; diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml index 3942b9aa2a383aae843a7d2037c001f2c9204f5d..ad3096876e3ca5abc7d301a15ef7ca39e135039b 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml @@ -230,7 +230,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>954.24492.61471.3703</string> </value> + <value> <string>954.27320.12986.51029</string> </value> </item> <item> <key> <string>state</string> </key> @@ -248,7 +248,7 @@ </tuple> <state> <tuple> - <float>1475681076.93</float> + <float>1475762090.29</float> <string>UTC</string> </tuple> </state>