From: phasefx Date: Wed, 5 Jan 2011 21:54:39 +0000 (+0000) Subject: backporting r16742,r17492 for proper dojo timestamp handling X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c0370f0ddb72cb66f82ffd06c72b299dfc51ea5e;p=working%2FEvergreen.git backporting r16742,r17492 for proper dojo timestamp handling git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6@19126 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/js/dojo/openils/Util.js b/Open-ILS/web/js/dojo/openils/Util.js index 9d160367cd..7a918da6f5 100644 --- a/Open-ILS/web/js/dojo/openils/Util.js +++ b/Open-ILS/web/js/dojo/openils/Util.js @@ -26,6 +26,31 @@ if(!dojo._hasResource["openils.Util"]) { dojo.declare('openils.Util', null, {}); + openils.Util.timeStampRegexp = + /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\+-]\d{2})(\d{2})$/; + + openils.Util.timeStampAsDateObj = function(s) { + if (s.constructor.name == "Date") return s; + return dojo.date.stamp.fromISOString( + s.replace(openils.Util.timeStampRegexp, "$1:$2") + ); + } + + /** + * Returns a locale-appropriate representation of a timestamp when the + * timestamp (first argument) is actually a string as provided by + * fieldmapper objects. + * The second argument is an optional argument that will be provided + * as the second argument to dojo.date.locale.format() + */ + openils.Util.timeStamp = function(s, opts) { + if (typeof(opts) == "undefined") opts = {}; + + return dojo.date.locale.format( + openils.Util.timeStampAsDateObj(s), opts + ); + }; + /** * Wrapper for dojo.addOnLoad that verifies a valid login session is active * before adding the function to the onload set diff --git a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js index 6cf751362d..53ae36ea2e 100644 --- a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js +++ b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js @@ -144,10 +144,9 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) { } case 'timestamp': if (!value) return ''; - dojo.require('dojo.date.locale'); - dojo.require('dojo.date.stamp'); - var date = dojo.date.stamp.fromISOString(value); - return dojo.date.locale.format(date, {formatLength:'short'}); + return openils.Util.timeStamp( + value, {"formatLength": "short"} + ); case 'org_unit': if(value === null || value === undefined) return ''; return fieldmapper.aou.findOrgUnit(value).shortname(); @@ -223,8 +222,11 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) { dojo.require('dijit.form.DateTextBox'); dojo.require('dojo.date.stamp'); this.widget = new dijit.form.DateTextBox(this.dijitArgs, this.parentNode); - if(this.widgetValue != null) - this.widgetValue = dojo.date.stamp.fromISOString(this.widgetValue); + if (this.widgetValue != null) { + this.widgetValue = openils.Util.timeStampAsDateObj( + this.widgetValue + ); + } break; case 'bool':