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