summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2013-08-08 15:45:20 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2013-08-08 15:45:20 +0200
commit2e6d38f0681b680dfbd2e053a724da5e7f6cc9a3 (patch)
tree3e627254d0efe2653b500368c8fa6cb3eae3d8d0 /addons/web
parenta5c6872150d280406cb8fe72dbd78fab103ebeba (diff)
[IMP] Moved the date formatting functions in openerpframework.js
bzr revid: nicolas.vanhoren@openerp.com-20130808134520-v0n2b29vuffstyu0
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/__openerp__.py1
-rw-r--r--addons/web/static/src/js/dates.js159
-rw-r--r--addons/web/static/src/js/openerpframework.js167
-rw-r--r--addons/web/static/test/formats.js33
-rw-r--r--addons/web/static/test/framework.js78
5 files changed, 245 insertions, 193 deletions
diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py
index 103e71c8290..5c8d27e11cb 100644
--- a/addons/web/__openerp__.py
+++ b/addons/web/__openerp__.py
@@ -46,7 +46,6 @@ This module provides the core of the OpenERP Web Client.
"static/src/js/testing.js",
"static/src/js/pyeval.js",
"static/src/js/core.js",
- "static/src/js/dates.js",
"static/src/js/formats.js",
"static/src/js/chrome.js",
"static/src/js/views.js",
diff --git a/addons/web/static/src/js/dates.js b/addons/web/static/src/js/dates.js
deleted file mode 100644
index 0e3c9ff7874..00000000000
--- a/addons/web/static/src/js/dates.js
+++ /dev/null
@@ -1,159 +0,0 @@
-
-(function() {
-
-var instance = openerp;
-openerp.web.dates = {};
-
-var _t = instance.web._t;
-
-/**
- * Converts a string to a Date javascript object using OpenERP's
- * datetime string format (exemple: '2011-12-01 15:12:35').
- *
- * The time zone is assumed to be UTC (standard for OpenERP 6.1)
- * and will be converted to the browser's time zone.
- *
- * @param {String} str A string representing a datetime.
- * @returns {Date}
- */
-instance.web.str_to_datetime = function(str) {
- if(!str) {
- return str;
- }
- var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/;
- var res = regex.exec(str);
- if ( !res ) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
- }
- var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');
- if (! obj) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
- }
- return obj;
-};
-
-/**
- * Converts a string to a Date javascript object using OpenERP's
- * date string format (exemple: '2011-12-01').
- *
- * As a date is not subject to time zones, we assume it should be
- * represented as a Date javascript object at 00:00:00 in the
- * time zone of the browser.
- *
- * @param {String} str A string representing a date.
- * @returns {Date}
- */
-instance.web.str_to_date = function(str) {
- if(!str) {
- return str;
- }
- var regex = /^\d\d\d\d-\d\d-\d\d$/;
- var res = regex.exec(str);
- if ( !res ) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
- }
- var obj = Date.parseExact(str, 'yyyy-MM-dd');
- if (! obj) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
- }
- return obj;
-};
-
-/**
- * Converts a string to a Date javascript object using OpenERP's
- * time string format (exemple: '15:12:35').
- *
- * The OpenERP times are supposed to always be naive times. We assume it is
- * represented using a javascript Date with a date 1 of January 1970 and a
- * time corresponding to the meant time in the browser's time zone.
- *
- * @param {String} str A string representing a time.
- * @returns {Date}
- */
-instance.web.str_to_time = function(str) {
- if(!str) {
- return str;
- }
- var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/;
- var res = regex.exec(str);
- if ( !res ) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
- }
- var obj = Date.parseExact("1970-01-01 " + res[1], 'yyyy-MM-dd HH:mm:ss');
- if (! obj) {
- throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
- }
- return obj;
-};
-
-/*
- * Left-pad provided arg 1 with zeroes until reaching size provided by second
- * argument.
- *
- * @param {Number|String} str value to pad
- * @param {Number} size size to reach on the final padded value
- * @returns {String} padded string
- */
-var zpad = function(str, size) {
- str = "" + str;
- return new Array(size - str.length + 1).join('0') + str;
-};
-
-/**
- * Converts a Date javascript object to a string using OpenERP's
- * datetime string format (exemple: '2011-12-01 15:12:35').
- *
- * The time zone of the Date object is assumed to be the one of the
- * browser and it will be converted to UTC (standard for OpenERP 6.1).
- *
- * @param {Date} obj
- * @returns {String} A string representing a datetime.
- */
-instance.web.datetime_to_str = function(obj) {
- if (!obj) {
- return false;
- }
- return zpad(obj.getUTCFullYear(),4) + "-" + zpad(obj.getUTCMonth() + 1,2) + "-"
- + zpad(obj.getUTCDate(),2) + " " + zpad(obj.getUTCHours(),2) + ":"
- + zpad(obj.getUTCMinutes(),2) + ":" + zpad(obj.getUTCSeconds(),2);
-};
-
-/**
- * Converts a Date javascript object to a string using OpenERP's
- * date string format (exemple: '2011-12-01').
- *
- * As a date is not subject to time zones, we assume it should be
- * represented as a Date javascript object at 00:00:00 in the
- * time zone of the browser.
- *
- * @param {Date} obj
- * @returns {String} A string representing a date.
- */
-instance.web.date_to_str = function(obj) {
- if (!obj) {
- return false;
- }
- return zpad(obj.getFullYear(),4) + "-" + zpad(obj.getMonth() + 1,2) + "-"
- + zpad(obj.getDate(),2);
-};
-
-/**
- * Converts a Date javascript object to a string using OpenERP's
- * time string format (exemple: '15:12:35').
- *
- * The OpenERP times are supposed to always be naive times. We assume it is
- * represented using a javascript Date with a date 1 of January 1970 and a
- * time corresponding to the meant time in the browser's time zone.
- *
- * @param {Date} obj
- * @returns {String} A string representing a time.
- */
-instance.web.time_to_str = function(obj) {
- if (!obj) {
- return false;
- }
- return zpad(obj.getHours(),2) + ":" + zpad(obj.getMinutes(),2) + ":"
- + zpad(obj.getSeconds(),2);
-};
-
-})();
diff --git a/addons/web/static/src/js/openerpframework.js b/addons/web/static/src/js/openerpframework.js
index f5f5820f278..2a4bcc50ffd 100644
--- a/addons/web/static/src/js/openerpframework.js
+++ b/addons/web/static/src/js/openerpframework.js
@@ -1244,6 +1244,173 @@ openerp.Mutex = openerp.Class.extend({
}
});
+/**
+ * Converts a string to a Date javascript object using OpenERP's
+ * datetime string format (exemple: '2011-12-01 15:12:35.832').
+ *
+ * The time zone is assumed to be UTC (standard for OpenERP 6.1)
+ * and will be converted to the browser's time zone.
+ *
+ * @param {String} str A string representing a datetime.
+ * @returns {Date}
+ */
+openerp.str_to_datetime = function(str) {
+ if(!str) {
+ return str;
+ }
+ var regex = /^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d(?:\.(\d+))?)$/;
+ var res = regex.exec(str);
+ if ( !res ) {
+ throw new Error("'" + str + "' is not a valid datetime");
+ }
+ var tmp = new Date();
+ tmp.setUTCFullYear(parseFloat(res[1]));
+ tmp.setUTCMonth(parseFloat(res[2]) - 1);
+ tmp.setUTCDate(parseFloat(res[3]));
+ tmp.setUTCHours(parseFloat(res[4]));
+ tmp.setUTCMinutes(parseFloat(res[5]));
+ tmp.setUTCSeconds(parseFloat(res[6]));
+ tmp.setUTCSeconds(parseFloat(res[6]));
+ tmp.setUTCMilliseconds(parseFloat(rpad((res[7] || "").slice(0, 3), 3)));
+ return tmp;
+};
+
+/**
+ * Converts a string to a Date javascript object using OpenERP's
+ * date string format (exemple: '2011-12-01').
+ *
+ * As a date is not subject to time zones, we assume it should be
+ * represented as a Date javascript object at 00:00:00 in the
+ * time zone of the browser.
+ *
+ * @param {String} str A string representing a date.
+ * @returns {Date}
+ */
+openerp.str_to_date = function(str) {
+ if(!str) {
+ return str;
+ }
+ var regex = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
+ var res = regex.exec(str);
+ if ( !res ) {
+ throw new Error("'" + str + "' is not a valid date");
+ }
+ var tmp = new Date();
+ tmp.setFullYear(parseFloat(res[1]));
+ tmp.setMonth(parseFloat(res[2]) - 1);
+ tmp.setDate(parseFloat(res[3]));
+ tmp.setHours(0);
+ tmp.setMinutes(0);
+ tmp.setSeconds(0);
+ return tmp;
+};
+
+/**
+ * Converts a string to a Date javascript object using OpenERP's
+ * time string format (exemple: '15:12:35').
+ *
+ * The OpenERP times are supposed to always be naive times. We assume it is
+ * represented using a javascript Date with a date 1 of January 1970 and a
+ * time corresponding to the meant time in the browser's time zone.
+ *
+ * @param {String} str A string representing a time.
+ * @returns {Date}
+ */
+openerp.str_to_time = function(str) {
+ if(!str) {
+ return str;
+ }
+ var regex = /^(\d\d):(\d\d):(\d\d(?:\.(\d+))?)$/;
+ var res = regex.exec(str);
+ if ( !res ) {
+ throw new Error("'" + str + "' is not a valid time");
+ }
+ var tmp = new Date();
+ tmp.setFullYear(1970);
+ tmp.setMonth(0);
+ tmp.setDate(1);
+ tmp.setHours(parseFloat(res[1]));
+ tmp.setMinutes(parseFloat(res[2]));
+ tmp.setSeconds(parseFloat(res[3]));
+ tmp.setMilliseconds(parseFloat(rpad((res[4] || "").slice(0, 3), 3)));
+ return tmp;
+};
+
+/*
+ * Left-pad provided arg 1 with zeroes until reaching size provided by second
+ * argument.
+ *
+ * @param {Number|String} str value to pad
+ * @param {Number} size size to reach on the final padded value
+ * @returns {String} padded string
+ */
+var lpad = function(str, size) {
+ str = "" + str;
+ return new Array(size - str.length + 1).join('0') + str;
+};
+
+var rpad = function(str, size) {
+ str = "" + str;
+ return str + new Array(size - str.length + 1).join('0');
+};
+
+/**
+ * Converts a Date javascript object to a string using OpenERP's
+ * datetime string format (exemple: '2011-12-01 15:12:35').
+ *
+ * The time zone of the Date object is assumed to be the one of the
+ * browser and it will be converted to UTC (standard for OpenERP 6.1).
+ *
+ * @param {Date} obj
+ * @returns {String} A string representing a datetime.
+ */
+openerp.datetime_to_str = function(obj) {
+ if (!obj) {
+ return false;
+ }
+ return lpad(obj.getUTCFullYear(),4) + "-" + lpad(obj.getUTCMonth() + 1,2) + "-"
+ + lpad(obj.getUTCDate(),2) + " " + lpad(obj.getUTCHours(),2) + ":"
+ + lpad(obj.getUTCMinutes(),2) + ":" + lpad(obj.getUTCSeconds(),2);
+};
+
+/**
+ * Converts a Date javascript object to a string using OpenERP's
+ * date string format (exemple: '2011-12-01').
+ *
+ * As a date is not subject to time zones, we assume it should be
+ * represented as a Date javascript object at 00:00:00 in the
+ * time zone of the browser.
+ *
+ * @param {Date} obj
+ * @returns {String} A string representing a date.
+ */
+openerp.date_to_str = function(obj) {
+ if (!obj) {
+ return false;
+ }
+ return lpad(obj.getFullYear(),4) + "-" + lpad(obj.getMonth() + 1,2) + "-"
+ + lpad(obj.getDate(),2);
+};
+
+/**
+ * Converts a Date javascript object to a string using OpenERP's
+ * time string format (exemple: '15:12:35').
+ *
+ * The OpenERP times are supposed to always be naive times. We assume it is
+ * represented using a javascript Date with a date 1 of January 1970 and a
+ * time corresponding to the meant time in the browser's time zone.
+ *
+ * @param {Date} obj
+ * @returns {String} A string representing a time.
+ */
+openerp.time_to_str = function(obj) {
+ if (!obj) {
+ return false;
+ }
+ return lpad(obj.getHours(),2) + ":" + lpad(obj.getMinutes(),2) + ":"
+ + lpad(obj.getSeconds(),2);
+};
+
openerp.declare = declare;
return openerp;
diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js
index db0887b4d4e..4043e8e05f5 100644
--- a/addons/web/static/test/formats.js
+++ b/addons/web/static/test/formats.js
@@ -1,36 +1,3 @@
-openerp.testing.section('server-formats', {
- dependencies: ['web.core', 'web.dates']
-}, function (test) {
- test('Parse server datetime', function (instance) {
- var date = instance.web.str_to_datetime("2009-05-04 12:34:23");
- deepEqual(
- [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
- date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()],
- [2009, 5 - 1, 4, 12, 34, 23]);
- deepEqual(
- [date.getFullYear(), date.getMonth(), date.getDate(),
- date.getHours(), date.getMinutes(), date.getSeconds()],
- [2009, 5 - 1, 4, 12 - (date.getTimezoneOffset() / 60), 34, 23]);
-
- var date2 = instance.web.str_to_datetime('2011-12-10 00:00:00');
- deepEqual(
- [date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(),
- date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds()],
- [2011, 12 - 1, 10, 0, 0, 0]);
- });
- test('Parse server date', function (instance) {
- var date = instance.web.str_to_date("2009-05-04");
- deepEqual(
- [date.getFullYear(), date.getMonth(), date.getDate()],
- [2009, 5 - 1, 4]);
- });
- test('Parse server time', function (instance) {
- var date = instance.web.str_to_time("12:34:23");
- deepEqual(
- [date.getHours(), date.getMinutes(), date.getSeconds()],
- [12, 34, 23]);
- });
-});
openerp.testing.section('web-formats', {
dependencies: ['web.formats']
}, function (test) {
diff --git a/addons/web/static/test/framework.js b/addons/web/static/test/framework.js
index 23ed5be6653..3619ab87e65 100644
--- a/addons/web/static/test/framework.js
+++ b/addons/web/static/test/framework.js
@@ -401,4 +401,82 @@ ropenerp.testing.section('Widget.events', {
});
});
+ropenerp.testing.section('server-formats', {
+ dependencies: ['web.core', 'web.dates']
+}, function (test) {
+ test('Parse server datetime', function () {
+ var date = openerp.str_to_datetime("2009-05-04 12:34:23");
+ deepEqual(
+ [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
+ date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()],
+ [2009, 5 - 1, 4, 12, 34, 23]);
+ deepEqual(
+ [date.getFullYear(), date.getMonth(), date.getDate(),
+ date.getHours(), date.getMinutes(), date.getSeconds()],
+ [2009, 5 - 1, 4, 12 - (date.getTimezoneOffset() / 60), 34, 23]);
+
+ var date2 = openerp.str_to_datetime('2011-12-10 00:00:00');
+ deepEqual(
+ [date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(),
+ date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds()],
+ [2011, 12 - 1, 10, 0, 0, 0]);
+
+ var date3 = openerp.str_to_datetime("2009-05-04 12:34:23.84565");
+ deepEqual(
+ [date3.getUTCFullYear(), date3.getUTCMonth(), date3.getUTCDate(),
+ date3.getUTCHours(), date3.getUTCMinutes(), date3.getUTCSeconds(), date3.getUTCMilliseconds()],
+ [2009, 5 - 1, 4, 12, 34, 23, 845]);
+ });
+ test('Parse server date', function () {
+ var date = openerp.str_to_date("2009-05-04");
+ deepEqual(
+ [date.getFullYear(), date.getMonth(), date.getDate()],
+ [2009, 5 - 1, 4]);
+ });
+ test('Parse server time', function () {
+ var date = openerp.str_to_time("12:34:23");
+ deepEqual(
+ [date.getHours(), date.getMinutes(), date.getSeconds()],
+ [12, 34, 23]);
+
+ date = openerp.str_to_time("12:34:23.5467");
+ deepEqual(
+ [date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()],
+ [12, 34, 23, 546]);
+ });
+ test('Format server datetime', function () {
+ var date = new Date();
+ date.setUTCFullYear(2009);
+ date.setUTCMonth(5 - 1);
+ date.setUTCDate(4);
+ date.setUTCHours(12);
+ date.setUTCMinutes(34);
+ date.setUTCSeconds(23);
+ equal(openerp.datetime_to_str(date), "2009-05-04 12:34:23");
+ });
+ test('Format server date', function () {
+ var date = new Date();
+ date.setUTCFullYear(2009);
+ date.setUTCMonth(5 - 1);
+ date.setUTCDate(4);
+ date.setUTCHours(0);
+ date.setUTCMinutes(0);
+ date.setUTCSeconds(0);
+ equal(openerp.date_to_str(date), "2009-05-04");
+ });
+ test('Format server time', function () {
+ var date = new Date();
+ date.setUTCFullYear(1970);
+ date.setUTCMonth(1 - 1);
+ date.setUTCDate(1);
+ date.setUTCHours(0);
+ date.setUTCMinutes(0);
+ date.setUTCSeconds(0);
+ date.setHours(12);
+ date.setMinutes(34);
+ date.setSeconds(23);
+ equal(openerp.time_to_str(date), "12:34:23");
+ });
+});
+
})();