Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/64049
Change subject: (bug 48145) TimeInput expert refactoring
......................................................................
(bug 48145) TimeInput expert refactoring
Introducing _updateValue() method getting rid of redundant code.
Change-Id: I68a720cad3d06a69725f81f037594a378381cfcd
---
M ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
1 file changed, 44 insertions(+), 50 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DataValues
refs/changes/49/64049/1
diff --git
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
index 54acb2a..baca93d 100644
---
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
+++
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
@@ -112,25 +112,13 @@
this.$precision = $( '<div/>' )
.addClass( this.uiBaseClass + '-precision' )
.listrotator( { values: precisionValues.reverse(),
deferInit: true } )
- .on( 'listrotatorauto.' + this.uiBaseClass, function(
event ) {
- var value = ( self.$calendar.data(
'listrotator' ).value() )
- ? new Time( self.$input.val(), {
calendarname: self.$calendar.data( 'listrotator' ).value() } )
- : new Time( self.$input.val() );
- $( this ).data( 'listrotator' ).rotate(
value.precision() );
- self._setRawValue( value );
- self._updatePreview( value );
- self._updateCalendarHint( value );
- self._viewNotifier.notify( 'change' );
- } )
- .on( 'listrotatorselected.' + this.uiBaseClass,
function( event, precision ) {
- var value = ( self.$calendar.data(
'listrotator' ).value() )
- ? new Time( self.$input.val(), {
precision: $( this ).data( 'listrotator' ).value(), calendarname:
self.$calendar.data( 'listrotator' ).value() } )
- : new Time( self.$input.val(), {
precision: $( this ).data( 'listrotator' ).value() } );
- self._setRawValue( value );
- self._updatePreview( value );
- self._updateCalendarHint( value );
- self._viewNotifier.notify( 'change' );
- } )
+ .on(
+ 'listrotatorauto.' + this.uiBaseClass + '
listrotatorselected.' + this.uiBaseClass,
+ function( event ) {
+ var value = self._updateValue();
+ $( this ).data( 'listrotator' ).rotate(
value.precision() );
+ }
+ )
.appendTo( this.$precisionContainer );
this.$calendarContainer = $( '<div/>' )
@@ -143,28 +131,13 @@
} );
this.$calendar = $( '<div/>' )
.listrotator( { values: calendarValues, deferInit: true
} )
- .on( 'listrotatorauto', function( event ) {
- var value = ( self.$precision.data(
'listrotator' ).value() )
- ? new Time( self.$input.val(), {
precision: self.$precision.data( 'listrotator' ).value() } )
- : new Time( self.$input.val() );
-
- $( this ).data( 'listrotator' ).rotate(
value.calendarText() );
- self._setRawValue( value );
- self._updatePreview( value );
- self._updateCalendarHint( value );
- self._viewNotifier.notify( 'change' );
- } )
- .on( 'listrotatorselected', function( event ) {
- var value = ( self.$precision.data(
'listrotator' ).value() )
- ? new Time( self.$input.val(), {
precision: self.$precision.data( 'listrotator' ).value(), calendarname: $( this
).data( 'listrotator' ).value() } )
- : new Time( self.$input.val(), {
calendarname: $( this ).data( 'listrotator' ).value() } );
-
- $( this ).data( 'listrotator' ).rotate(
value.calendarText() );
- self._setRawValue( value );
- self._updatePreview( value );
- self._updateCalendarHint( value );
- self._viewNotifier.notify( 'change' );
- } )
+ .on(
+ 'listrotatorauto.' + this.uiBaseClass + '
listrotatorselected.' + this.uiBaseClass,
+ function( event ) {
+ var value = self._updateValue();
+ $( this ).data( 'listrotator' ).rotate(
value.calendarText() );
+ }
+ )
.appendTo( this.$calendarContainer );
var $toggler = $( '<a/>' )
@@ -243,6 +216,35 @@
},
/**
+ * Builds a time.Time object from the widet's current input and
advanced adjustments.
+ *
+ * @return {time.Time}
+ */
+ _updateValue: function() {
+ var options = {},
+ precision = this.$precision.data( 'listrotator'
).value(),
+ calendarname = this.$calendar.data(
'listrotator' ).value(),
+ value = null;
+
+ if( precision !== undefined ) {
+ options.precision = precision;
+ }
+
+ if( calendarname !== undefined ) {
+ options.calendarname = calendarname;
+ }
+
+ value = new Time( this.$input.val(), options );
+
+ this._setRawValue( value );
+ this._updatePreview( value );
+ this._updateCalendarHint( value );
+ this._viewNotifier.notify( 'change' );
+
+ return value;
+ },
+
+ /**
* Updates the input value's preview.
* @since 0.1
*
@@ -285,16 +287,8 @@
this.$calendarhint.children( '.' +
this.uiBaseClass + '-calendarhint-switch' )
.off( 'click.' + this.uiBaseClass )
.on( 'click.' + this.uiBaseClass, function(
event ) {
+ this._updateValue();
self.$calendar.data( 'listrotator'
).rotate( otherCalendar );
-
- var value = ( self.$precision.data(
'listrotator' ).value() )
- ? new Time( self.$input.val(),
{ precision: self.$precision.data( 'listrotator' ).value(), calendarname:
self.$calendar.data( 'listrotator' ).value() } )
- : new Time( self.$input.val(),
{ calendarname: self.$calendar.data( 'listrotator' ).value() } );
-
- self._setRawValue( value );
- self._updatePreview( value );
- self._updateCalendarHint( value );
- self._viewNotifier.notify( 'change' );
} )
.html( mw.msg(
'valueview-expert-timeinput-calendarhint-switch', otherCalendar ) );
--
To view, visit https://gerrit.wikimedia.org/r/64049
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I68a720cad3d06a69725f81f037594a378381cfcd
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