diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2011-08-22 14:35:16 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2011-08-22 14:35:16 +0200 |
| commit | 5199d2bf9e67c271aae8d07dc0cc1477afad0a8b (patch) | |
| tree | b05646151a20e4c396019f9b2c74c9297386ab34 /addons/base/static/src | |
| parent | 0f296d6a9c76af5a8c97d6384d9f55939d9fe9b6 (diff) | |
[imp] made parse function and began tests
bzr revid: nicolas.vanhoren@openerp.com-20110822123516-7qf7700v0irc70nd
Diffstat (limited to 'addons/base/static/src')
| -rw-r--r-- | addons/base/static/src/js/formats.js | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/addons/base/static/src/js/formats.js b/addons/base/static/src/js/formats.js index 3db6138106c..a2c7956df8b 100644 --- a/addons/base/static/src/js/formats.js +++ b/addons/base/static/src/js/formats.js @@ -48,7 +48,7 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) { return value.strftime(_.sprintf("%s %s", openerp.base._t.database.parameters.date_format, openerp.base._t.database.parameters.time_format)); } catch (e) { - return openerp.base.datetime_to_str(value); + return value.strftime("%m/%d/%Y %H:%M:%S"); } return value; case 'date': @@ -57,21 +57,75 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) { try { return value.strftime(openerp.base._t.database.parameters.date_format); } catch (e) { - return openerp.base.date_to_str(value); + return value.strftime("%m/%d/%Y"); } - case 'datetime': + case 'time': if (typeof(value) == "string") value = openerp.base.str_to_time(value); try { return value.strftime(openerp.base._t.database.parameters.time_format); } catch (e) { - return openerp.base.time_to_str(value); + return value.strftime("%H:%M:%S"); } default: return value; } }; +openerp.base.parse_value = function (value, descriptor, value_if_empty) { + switch (value) { + case false: + case "": + return value_if_empty === undefined ? false : value_if_empty; + } + switch (descriptor.widget || descriptor.type) { + case 'integer': + var tmp = Number(value); + if (isNaN(tmp)) + throw value + " is not a correct integer"; + return tmp; + case 'float': + var tmp = Number(value); + if (!isNaN(tmp)) + return tmp; + tmp = tmp.replace(openerp.base._t.database.parameters.decimal_point, "."); + var tmp2 = tmp; + do { + tmp = tmp2; + tmp2 = tmp.replace(openerp.base._t.database.parameters.thousands_sep, ""); + } while(tmp !== tmp2); + tmp = Number(value); + if (isNaN(tmp)) + throw value + " is not a correct float"; + return tmp; + case 'float_time': + var tmp = value.split(":"); + if (tmp.length != 2) + throw value + " is not a correct float_time"; + var tmp1 = openerp.base.parse_value(tmp[0], {type: "integer"}); + var tmp2 = openerp.base.parse_value(tmp[1], {type: "integer"}); + return tmp1 + (tmp2 / 60); + case 'progressbar': + return openerp.base.parse_value(value, {type: "float"}); + case 'datetime': + var tmp = Date.parse(value); + if (tmp !== null) + return tmp; + throw value + " is not a valid datetime"; + case 'date': + var tmp = Date.parse(value); + if (tmp !== null) + return tmp; + throw value + " is not a valid date"; + case 'time': + var tmp = Date.parse(value); + if (tmp !== null) + return tmp; + throw value + " is not a valid time"; + } + return value; +}; + /** * Formats a provided cell based on its field type * |
