diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.js index f8e12b7184ed40e08276e642ce02b9e626c81538..06b41550277267768e08c7bae290b4e496bf5f9f 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.js @@ -1,6 +1,6 @@ -/*global window, rJS, RSVP, UriTemplate, URI, Query, SimpleQuery, ComplexQuery, jIO */ +/*global window, rJS, RSVP, UriTemplate, URI, SimpleQuery, ComplexQuery, jIO */ /*jslint indent: 2, maxerr: 3, nomen: true */ -(function (window, rJS, RSVP, UriTemplate, URI, Query, SimpleQuery, ComplexQuery, jIO) { +(function (window, rJS, RSVP, UriTemplate, URI, SimpleQuery, ComplexQuery, jIO) { "use strict"; function wrapJioCall(gadget, method_name, argument_list) { @@ -42,12 +42,26 @@ function isSingleLocalRoles(parsed_query) { if ((parsed_query instanceof SimpleQuery) && + (parsed_query.operator === undefined) && (parsed_query.key === 'local_roles')) { // local_roles:"Assignee" return parsed_query.value; } } + function isSingleDomain(parsed_query) { + if ((parsed_query instanceof SimpleQuery) && + (parsed_query.operator === undefined) && + (parsed_query.key !== undefined) && + (parsed_query.key.indexOf('selection_domain_') === 0)) { + // domain_region:"europe/france" + var result = {}; + result[parsed_query.key.slice('selection_domain_'.length)] = + parsed_query.value; + return result; + } + } + function isMultipleLocalRoles(parsed_query) { var i, sub_query, @@ -59,6 +73,7 @@ for (i = 0; i < parsed_query.query_list.length; i += 1) { sub_query = parsed_query.query_list[i]; if ((sub_query instanceof SimpleQuery) && + (sub_query.key !== undefined) && (sub_query.key === 'local_roles')) { local_role_list.push(sub_query.value); } else { @@ -104,76 +119,111 @@ }); }) - .declareMethod('allDocs', function (option_dict) { + .declareMethod('allDocs', function (options) { // throw new Error('do not use all docs'); - if (option_dict.list_method_template === undefined) { + if (options.list_method_template === undefined) { return wrapJioCall(this, 'allDocs', arguments); } - var query = option_dict.query, + var query = options.query, i, + key, parsed_query, sub_query, result_list, - tmp_list = [], - local_roles; - if (option_dict.query) { - parsed_query = jIO.QueryFactory.create(option_dict.query); - + local_roles, + local_role_found = false, + selection_domain, + sort_list = []; + if (options.query) { + parsed_query = jIO.QueryFactory.create(options.query); result_list = isSingleLocalRoles(parsed_query); if (result_list) { query = undefined; local_roles = result_list; } else { - - result_list = isMultipleLocalRoles(parsed_query); + result_list = isSingleDomain(parsed_query); if (result_list) { query = undefined; - local_roles = result_list; - } else if ((parsed_query instanceof ComplexQuery) && - (parsed_query.operator === 'AND')) { - - // portal_type:"Person" AND local_roles:"Assignee" - for (i = 0; i < parsed_query.query_list.length; i += 1) { - sub_query = parsed_query.query_list[i]; - - result_list = isSingleLocalRoles(sub_query); - if (result_list) { - local_roles = result_list; - parsed_query.query_list.splice(i, 1); - query = Query.objectToSearchText(parsed_query); - i = parsed_query.query_list.length; - } else { - result_list = isMultipleLocalRoles(sub_query); + selection_domain = result_list; + } else { + + result_list = isMultipleLocalRoles(parsed_query); + if (result_list) { + query = undefined; + local_roles = result_list; + } else if ((parsed_query instanceof ComplexQuery) && + (parsed_query.operator === 'AND')) { + + // portal_type:"Person" AND local_roles:"Assignee" + // AND selection_domain_region:"europe/france" + for (i = 0; i < parsed_query.query_list.length; i += 1) { + sub_query = parsed_query.query_list[i]; + + if (!local_role_found) { + result_list = isSingleLocalRoles(sub_query); + if (result_list) { + local_roles = result_list; + parsed_query.query_list.splice(i, 1); + query = jIO.Query.objectToSearchText(parsed_query); + local_role_found = true; + } else { + result_list = isMultipleLocalRoles(sub_query); + if (result_list) { + local_roles = result_list; + parsed_query.query_list.splice(i, 1); + query = jIO.Query.objectToSearchText(parsed_query); + local_role_found = true; + } + } + } + + result_list = isSingleDomain(sub_query); if (result_list) { - local_roles = result_list; parsed_query.query_list.splice(i, 1); - query = Query.objectToSearchText(parsed_query); - i = parsed_query.query_list.length; + query = jIO.Query.objectToSearchText(parsed_query); + if (selection_domain) { + for (key in result_list) { + if (result_list.hasOwnProperty(key)) { + selection_domain[key] = result_list[key]; + } + } + } else { + selection_domain = result_list; + } + i -= 1; } + } } } - } - option_dict.query = query; - option_dict.local_roles = local_roles; } - if (option_dict.sort_on) { - for (i = 0; i < option_dict.sort_on.length; i += 1) { - tmp_list.push(JSON.stringify(option_dict.sort_on[i])); + + if (options.sort_on) { + for (i = 0; i < options.sort_on.length; i += 1) { + sort_list.push(JSON.stringify(options.sort_on[i])); } - option_dict.sort_on = tmp_list; } + + if (selection_domain) { + selection_domain = JSON.stringify(selection_domain); + } + + options.query = query; + options.sort_on = sort_list; + options.local_roles = local_roles; + options.selection_domain = selection_domain; + return wrapJioCall( this, 'getAttachment', [ // XXX Ugly hardcoded meaningless id... "erp5", - new UriTemplate.parse(option_dict.list_method_template) - .expand(option_dict), + new UriTemplate.parse(options.list_method_template) + .expand(options), {format: "json"} ] ) @@ -224,4 +274,4 @@ return wrapJioCall(this, 'post', [doc]); }); -}(window, rJS, RSVP, UriTemplate, URI, Query, SimpleQuery, ComplexQuery, jIO)); \ No newline at end of file +}(window, rJS, RSVP, UriTemplate, URI, SimpleQuery, ComplexQuery, jIO)); \ No newline at end of file diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.xml index 80760bcd12d64c42b1667ca1a66fb4c58d92653d..d4d3a976108896dd34ba7713691288f81725e42b 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_jio_js.xml @@ -230,7 +230,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>963.59331.40212.55432</string> </value> + <value> <string>965.65535.18355.17288</string> </value> </item> <item> <key> <string>state</string> </key> @@ -248,7 +248,7 @@ </tuple> <state> <tuple> - <float>1512454358.33</float> + <float>1520357812.73</float> <string>UTC</string> </tuple> </state>