summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/env.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/env.js')
-rw-r--r--addons/web/static/src/js/env.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/addons/web/static/src/js/env.js b/addons/web/static/src/js/env.js
new file mode 100644
index 00000000000..c223fcc91ee
--- /dev/null
+++ b/addons/web/static/src/js/env.js
@@ -0,0 +1,86 @@
+odoo.define("web.env", function (require) {
+ "use strict";
+
+ const { _lt, _t, bus } = require("web.core");
+ const { blockUI, unblockUI } = require("web.framework");
+ const { device, isDebug } = require("web.config");
+ const { jsonRpc } = require('web.ajax');
+ const rpc = require("web.rpc");
+ const session = require("web.session");
+ const utils = require("web.utils");
+
+
+ const qweb = new owl.QWeb({ translateFn: _t });
+
+ function ajaxJsonRPC() {
+ return jsonRpc(...arguments);
+ }
+
+ function getCookie() {
+ return utils.get_cookie(...arguments);
+ }
+
+ function httpRequest(route, params = {}, readMethod = 'json') {
+ const formData = new FormData();
+ for (const key in params) {
+ if (key === 'method') {
+ continue;
+ }
+ const value = params[key];
+ if (Array.isArray(value) && value.length) {
+ for (const val of value) {
+ formData.append(key, val);
+ }
+ } else {
+ formData.append(key, value);
+ }
+ }
+
+ return fetch(route, {
+ method: params.method || 'POST',
+ body: formData,
+ }).then(response => response[readMethod]());
+ }
+
+ function navigate(url, params) {
+ window.location = $.param.querystring(url, params);
+ }
+
+ function performRPC(params, options) {
+ const query = rpc.buildQuery(params);
+ return session.rpc(query.route, query.params, options);
+ }
+
+ function reloadPage() {
+ window.location.reload();
+ }
+
+ function setCookie() {
+ utils.set_cookie(...arguments);
+ }
+
+ // There should be as much dependencies as possible in the env object.
+ // This will allow an easier testing of components.
+ // See https://github.com/odoo/owl/blob/master/doc/reference/environment.md#content-of-an-environment
+ // for more information on environments.
+ return {
+ _lt,
+ _t,
+ bus,
+ device,
+ isDebug,
+ qweb,
+ services: {
+ ajaxJsonRPC,
+ blockUI,
+ getCookie,
+ httpRequest,
+ navigate,
+ reloadPage,
+ rpc: performRPC,
+ setCookie,
+ unblockUI,
+ },
+ session,
+ };
+});