Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/67431


Change subject: Improved Time object's string representation
......................................................................

Improved Time object's string representation

The Time object's string representation now takes the user setting into 
account. However, the
change set is just a minor improvement. For further optimization, either a lot 
of i18n needs to
be implemented in the front-end or the back-end needs to be queried for 
localized Time objects.

Change-Id: I093af8477b1bba7ea3fca497d03561a9c52b8d93
---
M DataValues/resources/time.js/src/time.Time.js
M DataValues/resources/time.js/src/time.js
M ValueView/resources/jquery.time/jquery.time.timeinput.js
M ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
M ValueView/resources/jquery.valueview/valueview.experts/experts.TimeValue.js
5 files changed, 80 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DataValues 
refs/changes/31/67431/1

diff --git a/DataValues/resources/time.js/src/time.Time.js 
b/DataValues/resources/time.js/src/time.Time.js
index 8f694a1..5319c79 100644
--- a/DataValues/resources/time.js/src/time.Time.js
+++ b/DataValues/resources/time.js/src/time.Time.js
@@ -159,22 +159,57 @@
                                + ':' + pad( second, 2 ) + 'Z';
                };
 
-               this.text = function() {
-                       return time.getTextFromDate( precision, year, month, 
day );
-               };
+               this.text = function( options ) {
+                       options = options || {};
 
-               this.gregorianText = function() {
-                       var result = this.gregorian();
-                       return time.getTextFromDate( precision, result.year, 
result.month, result.day );
-               };
+                       if( !options.format || options.format === 'default' ) {
+                               options.format = 'mdy';
+                       }
 
-               this.julianText = function() {
-                       var result = this.julian();
-                       if( result === null ) {
+                       if( year === null ) {
                                return '';
                        }
-                       return time.getTextFromDate( precision, result.year, 
result.month, result.day );
+
+                       if( options.format === 'ISO 8601' ) {
+                               return this.iso8601();
+                       }
+
+                       if( precision < 9 ) {
+                               return time.writeApproximateYear( year, 
precision );
+                       }
+
+                       if( precision === 9 ) {
+                               return time.writeYear( year );
+                       }
+
+                       var result = '';
+
+                       if( /^[ymd]{3}$/.test( options.format ) && precision >= 
10 ) {
+                               var template = options.format;
+
+                               if( precision < 11 ) {
+                                       template = template.replace( /d/, '' );
+                               }
+
+                               template = template.split( '' ).join( ' ' );
+
+                               for( var i = 0; i < template.length; i++ ) {
+                                       switch( template[i] ) {
+                                               case 'y': result += 
time.writeYear( year ); break;
+                                               case 'm': result += 
time.writeMonth( month ); break;
+                                               case 'd': result += 
time.writeDay( day ); break;
+                                               default: result += template[i];
+                                       }
+                               }
+                       }
+
+                       if( precision > 11 ) {
+                               result += ' (time not implemented yet)';
+                       }
+
+                       return result;
                };
+
        };
 
        /**
diff --git a/DataValues/resources/time.js/src/time.js 
b/DataValues/resources/time.js/src/time.js
index 4f1aac5..ade68ed 100644
--- a/DataValues/resources/time.js/src/time.js
+++ b/DataValues/resources/time.js/src/time.js
@@ -178,31 +178,12 @@
                return year;
        };
 
-       var writeMonth = function( year, month ) {
-               return settings.monthnames[month - 1][0] + ' ' + writeYear( 
year );
+       var writeMonth = function( month ) {
+               return settings.monthnames[month - 1][0];
        };
 
-       var writeDay = function( year, month, day ) {
-               return settings.monthnames[ month - 1 ][0] + ' ' + day + ', ' + 
writeYear( year );
-       };
-
-       var getTextFromDate = function( precision, year, month, day ) {
-               if( year === null ) {
-                       return '';
-               }
-               if( precision < 9 ) {
-                       return writeApproximateYear( year, precision );
-               }
-               switch( precision ) {
-                       case 9:
-                               return writeYear( year );
-                       case 10:
-                               return writeMonth( year, month );
-                       case 11:
-                               return writeDay( year, month, day );
-                       default:
-                               return writeDay( year, month, day ) + ' (time 
not implemented yet)';
-               }
+       var writeDay = function( day ) {
+               return day;
        };
 
        var precisionText = function( acc ) {
@@ -223,7 +204,6 @@
        time.writeYear = writeYear;
        time.writeMonth = writeMonth;
        time.writeDay = writeDay;
-       time.getTextFromDate = getTextFromDate;
        time.precisionText = precisionText;
        time.maxPrecision = maxPrecision;
 
diff --git a/ValueView/resources/jquery.time/jquery.time.timeinput.js 
b/ValueView/resources/jquery.time/jquery.time.timeinput.js
index 98a7e47..f6177e7 100644
--- a/ValueView/resources/jquery.time/jquery.time.timeinput.js
+++ b/ValueView/resources/jquery.time/jquery.time.timeinput.js
@@ -18,6 +18,14 @@
 
        $.widget( 'time.timeinput', {
                /**
+                * Default options.
+                * @type {Object}
+                */
+               options: {
+                       mediaWiki: null
+               },
+
+               /**
                 * Caches the widget's current value.
                 * @type {time.Time|null}
                 */
@@ -84,7 +92,13 @@
                        if( value === null ) {
                                this.element.val( '' );
                        } else {
-                               this.element.val( value.text() );
+                               var options = {};
+
+                               if( this.options.mediaWiki ) {
+                                       options.format = 
this.options.mediaWiki.user.options.get( 'date' );
+                               }
+
+                               this.element.val( value.text( options ) );
                        }
 
                        this._value = value;
diff --git 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
index 52195f6..f717442 100644
--- 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
+++ 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
@@ -191,7 +191,7 @@
                                        self._updateCalendarHint();
                                }
                        } )
-                       .timeinput()
+                       .timeinput( { mediaWiki: this._options.mediaWiki } )
                        // TODO: Move input extender out of here to a more 
generic place since it is not
                        // TimeInput specific.
                        .inputextender( {
@@ -284,8 +284,14 @@
                 * Updates the preview.
                 */
                _updatePreview: function() {
-                       var rawValue = this._getRawValue();
-                       this.preview.update( ( rawValue ) ? rawValue.text() : 
null );
+                       var rawValue = this._getRawValue(),
+                               options = {};
+
+                       if ( this._options.mediaWiki ) {
+                               options.format = 
this._options.mediaWiki.user.options.get( 'date' );
+                       }
+
+                       this.preview.update( ( rawValue ) ? rawValue.text( 
options ) : null );
                },
 
                /**
diff --git 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeValue.js 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeValue.js
index 58cf9f4..82a91e6 100644
--- 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeValue.js
+++ 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeValue.js
@@ -50,6 +50,10 @@
                                        return $node;
                                }
 
+                               var dateFormat = ( this.mediaWiki )
+                                       ? this.mediaWiki.user.options.get( 
'date' )
+                                       : 'default';
+
                                // Display the calendar being used if the date 
lies within a time frame when
                                // multiple calendars have been in use or if 
the time value features a calendar that
                                // is uncommon for the specified time:
@@ -65,10 +69,10 @@
                                        )
                                ) {
                                        $node
-                                       .append( $( '<span/>' ).text( 
currentRawValue.text() ) )
+                                       .append( $( '<span/>' ).text( 
currentRawValue.text( { format: dateFormat }) ) )
                                        .append( $( '<sup/>' ).text( 
currentRawValue.calendarText() ) );
                                } else {
-                                       $node.text( currentRawValue.text() );
+                                       $node.text( currentRawValue.text( { 
format: dateFormat }) );
                                }
 
                                return $node;

-- 
To view, visit https://gerrit.wikimedia.org/r/67431
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I093af8477b1bba7ea3fca497d03561a9c52b8d93
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DataValues
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to