From 2c51448e6ad5c9c03c21b4031f3653c927d96a76 Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Fri, 28 Jun 2019 13:51:54 +0000 Subject: [PATCH] [erp5_core/erp5_web_renderjs_ui] Update jio 3.38.0 --- .../web_page_module/rjs_jio_js.js | 74 ++++++++++++------- .../web_page_module/rjs_jio_js.xml | 4 +- .../portal_skins/erp5_core/jio.js.js | 74 ++++++++++++------- 3 files changed, 98 insertions(+), 54 deletions(-) diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js index 1f82e4b54e..e965a3c8c3 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js @@ -6105,6 +6105,8 @@ var arrayExtend = function () { return true; } return false; +}, parseQuotedString = function (string) { + return string.replace(/(?:\\(")|(\\[^"]))/g, '$1$2'); }, error_offsets = [], error_lookaheads = [], @@ -6226,7 +6228,7 @@ case 17: this.$ = mkSimpleQuery('', $$[$0]); break; case 18: - this.$ = mkSimpleQuery('', $$[$0-1]); + this.$ = mkSimpleQuery('', parseQuotedString($$[$0-1])); break; } }, @@ -6930,6 +6932,9 @@ return new Parser; throw new TypeError("jioquery.sortOn(): " + "Argument 1 is not of type 'array'"); } + if (sort_on_option.length === 0) { + return list; + } list.sort(generateSortFunction( key_schema, sort_on_option @@ -7445,6 +7450,16 @@ return new Parser; "Argument 1 is not a search text or a parsable object"); }; + function ensureString(value) { + if (value === undefined) { return "undefined"; } + if (value === null) { return "null"; } + return value.toString(); + } + + function renderSearchTextValue(value) { + return '"' + ensureString(value).replace(/"/g, '\\"') + '"'; + } + function objectToSearchText(query) { var i = 0, query_list = null, @@ -7453,7 +7468,8 @@ return new Parser; common_key = ""; if (query.type === "simple") { return (query.key ? query.key + ": " : "") + - (query.operator || "") + ' "' + query.value + '"'; + (query.operator || "") + ' ' + + renderSearchTextValue(query.value); } if (query.type === "complex") { query_list = query.query_list; @@ -7484,7 +7500,7 @@ return new Parser; for (i = 0; i < query_list.length; i += 1) { string_list.push( (query_list[i].operator || "") + - ' "' + query_list[i].value + '"' + ' ' + renderSearchTextValue(query_list[i].value) ); } } else { @@ -10357,7 +10373,8 @@ return new Parser; }); } report.log(id, options.from_local ? LOG_UNEXPECTED_REMOTE_ATTACHMENT : - LOG_UNEXPECTED_LOCAL_ATTACHMENT); + LOG_UNEXPECTED_LOCAL_ATTACHMENT, + JSON.stringify(attachment_dict)); }, function (error) { if ((error instanceof jIO.util.jIOError) && (error.status_code === 404)) { @@ -14916,13 +14933,19 @@ return new Parser; } function waitForOpenIndexedDB(db_name, callback) { + var request; + + function canceller() { + if ((request !== undefined) && (request.result !== undefined)) { + request.result.close(); + } + } + function resolver(resolve, reject) { // Open DB // - var request = indexedDB.open(db_name); + request = indexedDB.open(db_name); request.onerror = function (error) { - if (request.result) { - request.result.close(); - } + canceller(); if ((error !== undefined) && (error.target instanceof IDBOpenDBRequest) && (error.target.error instanceof DOMError)) { @@ -14934,17 +14957,16 @@ return new Parser; }; request.onabort = function () { - request.result.close(); + canceller(); reject("Aborting connection to: " + db_name); }; request.ontimeout = function () { - request.result.close(); reject("Connection to: " + db_name + " timeout"); }; request.onblocked = function () { - request.result.close(); + canceller(); reject("Connection to: " + db_name + " was blocked"); }; @@ -14952,26 +14974,32 @@ return new Parser; request.onupgradeneeded = handleUpgradeNeeded; request.onversionchange = function () { - request.result.close(); + canceller(); reject(db_name + " was upgraded"); }; request.onsuccess = function () { + var result; + try { + result = callback(request.result); + } catch (error) { + reject(error); + } return new RSVP.Queue() .push(function () { - return callback(request.result); + return result; }) - .push(function (result) { - request.result.close(); - resolve(result); + .push(function (final_result) { + canceller(); + resolve(final_result); }, function (error) { - request.result.close(); + canceller(); reject(error); }); }; } - return new RSVP.Promise(resolver); + return new RSVP.Promise(resolver, canceller); } function waitForTransaction(db, stores, flag, callback) { @@ -15001,14 +15029,8 @@ return new Parser; reject(error); }); }; - tx.onerror = function (error) { - canceller(); - reject(error); - }; - tx.onabort = function (evt) { - reject(evt.target); - }; - return tx; + tx.onerror = reject; + tx.onabort = reject; } return new RSVP.Promise(resolver, canceller); } diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml index 8b58bdf35c..fd7ae2a7da 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml @@ -234,7 +234,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>974.4070.21826.50261</string> </value> + <value> <string>976.45837.16266.40243</string> </value> </item> <item> <key> <string>state</string> </key> @@ -252,7 +252,7 @@ </tuple> <state> <tuple> - <float>1551694892.25</float> + <float>1561969491.3</float> <string>UTC</string> </tuple> </state> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/jio.js.js b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/jio.js.js index 1f82e4b54e..e965a3c8c3 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/jio.js.js +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/jio.js.js @@ -6105,6 +6105,8 @@ var arrayExtend = function () { return true; } return false; +}, parseQuotedString = function (string) { + return string.replace(/(?:\\(")|(\\[^"]))/g, '$1$2'); }, error_offsets = [], error_lookaheads = [], @@ -6226,7 +6228,7 @@ case 17: this.$ = mkSimpleQuery('', $$[$0]); break; case 18: - this.$ = mkSimpleQuery('', $$[$0-1]); + this.$ = mkSimpleQuery('', parseQuotedString($$[$0-1])); break; } }, @@ -6930,6 +6932,9 @@ return new Parser; throw new TypeError("jioquery.sortOn(): " + "Argument 1 is not of type 'array'"); } + if (sort_on_option.length === 0) { + return list; + } list.sort(generateSortFunction( key_schema, sort_on_option @@ -7445,6 +7450,16 @@ return new Parser; "Argument 1 is not a search text or a parsable object"); }; + function ensureString(value) { + if (value === undefined) { return "undefined"; } + if (value === null) { return "null"; } + return value.toString(); + } + + function renderSearchTextValue(value) { + return '"' + ensureString(value).replace(/"/g, '\\"') + '"'; + } + function objectToSearchText(query) { var i = 0, query_list = null, @@ -7453,7 +7468,8 @@ return new Parser; common_key = ""; if (query.type === "simple") { return (query.key ? query.key + ": " : "") + - (query.operator || "") + ' "' + query.value + '"'; + (query.operator || "") + ' ' + + renderSearchTextValue(query.value); } if (query.type === "complex") { query_list = query.query_list; @@ -7484,7 +7500,7 @@ return new Parser; for (i = 0; i < query_list.length; i += 1) { string_list.push( (query_list[i].operator || "") + - ' "' + query_list[i].value + '"' + ' ' + renderSearchTextValue(query_list[i].value) ); } } else { @@ -10357,7 +10373,8 @@ return new Parser; }); } report.log(id, options.from_local ? LOG_UNEXPECTED_REMOTE_ATTACHMENT : - LOG_UNEXPECTED_LOCAL_ATTACHMENT); + LOG_UNEXPECTED_LOCAL_ATTACHMENT, + JSON.stringify(attachment_dict)); }, function (error) { if ((error instanceof jIO.util.jIOError) && (error.status_code === 404)) { @@ -14916,13 +14933,19 @@ return new Parser; } function waitForOpenIndexedDB(db_name, callback) { + var request; + + function canceller() { + if ((request !== undefined) && (request.result !== undefined)) { + request.result.close(); + } + } + function resolver(resolve, reject) { // Open DB // - var request = indexedDB.open(db_name); + request = indexedDB.open(db_name); request.onerror = function (error) { - if (request.result) { - request.result.close(); - } + canceller(); if ((error !== undefined) && (error.target instanceof IDBOpenDBRequest) && (error.target.error instanceof DOMError)) { @@ -14934,17 +14957,16 @@ return new Parser; }; request.onabort = function () { - request.result.close(); + canceller(); reject("Aborting connection to: " + db_name); }; request.ontimeout = function () { - request.result.close(); reject("Connection to: " + db_name + " timeout"); }; request.onblocked = function () { - request.result.close(); + canceller(); reject("Connection to: " + db_name + " was blocked"); }; @@ -14952,26 +14974,32 @@ return new Parser; request.onupgradeneeded = handleUpgradeNeeded; request.onversionchange = function () { - request.result.close(); + canceller(); reject(db_name + " was upgraded"); }; request.onsuccess = function () { + var result; + try { + result = callback(request.result); + } catch (error) { + reject(error); + } return new RSVP.Queue() .push(function () { - return callback(request.result); + return result; }) - .push(function (result) { - request.result.close(); - resolve(result); + .push(function (final_result) { + canceller(); + resolve(final_result); }, function (error) { - request.result.close(); + canceller(); reject(error); }); }; } - return new RSVP.Promise(resolver); + return new RSVP.Promise(resolver, canceller); } function waitForTransaction(db, stores, flag, callback) { @@ -15001,14 +15029,8 @@ return new Parser; reject(error); }); }; - tx.onerror = function (error) { - canceller(); - reject(error); - }; - tx.onabort = function (evt) { - reject(evt.target); - }; - return tx; + tx.onerror = reject; + tx.onabort = reject; } return new RSVP.Promise(resolver, canceller); } -- 2.30.9