diff --git a/README.md b/README.md index 7ca83549..f34dfb82 100644 --- a/README.md +++ b/README.md @@ -105,8 +105,9 @@ Other methods an `Expert` needs to provide: ## Release notes -### 0.14.4 (2015-06-08) +### 0.14.4 (2015-06-10) * Added expert for `UnDeserializableValue`s. +* Updated DataValues JavaScript dependency to version 0.7. ### 0.14.3 (2015-04-02) * Fix premature afterparse handling (e.g. save) of parsed values. diff --git a/composer.json b/composer.json index c184e4f6..84cc1b48 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ }, "require": { "php": ">=5.3.0", - "data-values/javascript": "~0.6.0" + "data-values/javascript": "~0.7.0" }, "autoload": { "files": [ diff --git a/src/ExpertExtender/ExpertExtender.CalendarHint.js b/src/ExpertExtender/ExpertExtender.CalendarHint.js index 8fe119c6..06d7acd3 100644 --- a/src/ExpertExtender/ExpertExtender.CalendarHint.js +++ b/src/ExpertExtender/ExpertExtender.CalendarHint.js @@ -1,4 +1,4 @@ -( function( $, ExpertExtender, Time ) { +( function( $, ExpertExtender, TimeValue ) { 'use strict'; /** @@ -94,15 +94,17 @@ return; } - // Are we in the interesting range - if( !( value.year() > 1581 && value.year() < 1930 && value.precision() > 10 ) ) { + var assumeCalendar = value.getYear() <= 1581 || value.getYear() >= 1930; + + if( assumeCalendar || value.getOption( 'precision' ) <= 10 ) { this.$calendarhint.hide(); return; } - var msg = this._messageProvider.getMessage( - this._prefix + '-' + value.calendar().toLowerCase() - ); + var calendarModel = value.getOption( 'calendarModel' ), + msg = this._messageProvider.getMessage( + this._prefix + '-' + TimeValue.getCalendarModelKeyByUri( calendarModel ) + ); if( !msg ) { return; @@ -110,12 +112,12 @@ this.$calendarhint.children( '.' + this._prefix + '-message' ).text( msg ); - this._otherCalendar = ( value.calendar() === Time.CALENDAR.GREGORIAN ) - ? Time.CALENDAR.JULIAN - : Time.CALENDAR.GREGORIAN; + this._otherCalendar = calendarModel === TimeValue.CALENDARS.GREGORIAN + ? TimeValue.CALENDARS.JULIAN + : TimeValue.CALENDARS.GREGORIAN; msg = this._messageProvider.getMessage( - this._prefix + '-switch-' + this._otherCalendar.toLowerCase() + this._prefix + '-switch-' + TimeValue.getCalendarModelKeyByUri( this._otherCalendar ) ); if( msg ) { this.$calendarhint.children( '.' + this._prefix + '-switch' ).html( msg ); @@ -138,4 +140,4 @@ this._otherCalendar = null; } } ); -}( jQuery, jQuery.valueview.ExpertExtender, time.Time ) ); +}( jQuery, jQuery.valueview.ExpertExtender, dataValues.TimeValue ) ); diff --git a/src/ExpertExtender/resources.php b/src/ExpertExtender/resources.php index c6edb8d6..d67b94fd 100644 --- a/src/ExpertExtender/resources.php +++ b/src/ExpertExtender/resources.php @@ -33,8 +33,8 @@ 'ExpertExtender.CalendarHint.css', ), 'dependencies' => array( + 'dataValues.TimeValue', 'jquery.valueview.ExpertExtender', - 'time.js' ), 'messages' => array( 'valueview-expertextender-calendarhint-gregorian', diff --git a/src/experts/TimeInput.js b/src/experts/TimeInput.js index e581020e..a8d1f6a5 100644 --- a/src/experts/TimeInput.js +++ b/src/experts/TimeInput.js @@ -1,9 +1,6 @@ -( function( $, vv, time ) { +( function( $, vv, TimeValue ) { 'use strict'; - var Time = time.Time, - timeSettings = time.settings; - var PARENT = vv.experts.StringValue; /** @@ -38,7 +35,7 @@ $.proxy( this._onRotatorChange, this ), function() { var value = self.viewState().value(); - return value && value.getValue().precision(); + return value && value.getOption( 'precision' ); } ); @@ -53,7 +50,7 @@ $.proxy( this._onRotatorChange, this ), function() { var value = self.viewState().value(); - return value && value.getValue().calendar(); + return value && value.getOption( 'calendarModel' ); } ); @@ -64,8 +61,7 @@ new vv.ExpertExtender.CalendarHint( this._messageProvider, function() { - var value = self.viewState().value(); - return value && value.getValue(); + return self.viewState().value(); }, function( value ) { // FIXME: Do not use private function: @@ -143,13 +139,13 @@ valueCharacteristics: function() { var options = {}, precision = this.precisionRotator && this.precisionRotator.getValue() || null, - calendarname = this.calendarRotator && this.calendarRotator.getValue() || null; + calendarUri = this.calendarRotator && this.calendarRotator.getValue() || null; if( precision !== null ) { options.precision = precision; } - if( calendarname !== null ) { - options.calendar = calendarNameToUri( calendarname ); + if( calendarUri !== null ) { + options.calendar = calendarUri; } return options; @@ -162,11 +158,12 @@ * @return {Object[]} [{ value: <{number}>, label: <{string}>}, ...] */ function getPrecisionValues() { - var precisionValues = []; - $.each( timeSettings.precisiontexts, function( i, text ) { - if( i <= Time.PRECISION.DAY ) { + var precisionValues = [], + dayPrecision = TimeValue.getPrecisionById( 'DAY' ); + $.each( TimeValue.PRECISIONS, function( precisionValue, precision ) { + if( precisionValue <= dayPrecision ) { // TODO: Remove this check as soon as time values are supported. - precisionValues.unshift( { value: i, label: text } ); + precisionValues.unshift( { value: precisionValue, label: precision.text } ); } } ); return precisionValues; @@ -180,23 +177,13 @@ */ function getCalendarValues( messageProvider ) { var calendarValues = []; - $.each( timeSettings.calendarnames, function( calendarKey, calendarTerms ) { + $.each( TimeValue.CALENDARS, function( key, uri ) { var label = messageProvider.getMessage( - 'valueview-expert-timevalue-calendar-' + calendarTerms[0].toLowerCase() - ) || calendarTerms[0]; - calendarValues.push( { value: calendarTerms[0], label: label } ); + 'valueview-expert-timevalue-calendar-' + key.toLowerCase() + ) || key.toLowerCase(); + calendarValues.push( { value: uri, label: label } ); } ); return calendarValues; } - /** - * @ignore - * - * @param {string} calendarname - * @return {string} - */ - function calendarNameToUri( calendarname ) { - return new Time( { calendarname: calendarname, precision: 0, year: 0 } ).calendarURI(); - } - -}( jQuery, jQuery.valueview, time ) ); +}( jQuery, jQuery.valueview, dataValues.TimeValue ) ); diff --git a/src/experts/resources.php b/src/experts/resources.php index 89005483..27a752db 100644 --- a/src/experts/resources.php +++ b/src/experts/resources.php @@ -119,6 +119,7 @@ 'TimeInput.css', ), 'dependencies' => array( + 'dataValues.TimeValue', 'jquery.valueview.ExpertExtender', 'jquery.valueview.ExpertExtender.CalendarHint', 'jquery.valueview.ExpertExtender.Container', @@ -127,7 +128,6 @@ 'jquery.valueview.ExpertExtender.Toggler', 'jquery.valueview.experts', 'jquery.valueview.Expert', - 'time.js', 'util.MessageProvider', ), 'messages' => array( diff --git a/tests/src/ExpertExtender/ExpertExtender.CalendarHint.tests.js b/tests/src/ExpertExtender/ExpertExtender.CalendarHint.tests.js index c6b8d9d6..e0ab0e76 100644 --- a/tests/src/ExpertExtender/ExpertExtender.CalendarHint.tests.js +++ b/tests/src/ExpertExtender/ExpertExtender.CalendarHint.tests.js @@ -7,7 +7,7 @@ $, ExpertExtender, testExpertExtenderExtension, - Time, + TimeValue, HashMessageProvider, sinon, QUnit, @@ -37,11 +37,11 @@ 'valueview-expertextender-calendarhint-switch-julian': 'MSG2' } ), function() { - return new time.Time( '2014-01-01' ); + return new TimeValue( '2014-01-01T00:00:00Z' ); }, null ); - var $extender = $( '
' ).appendTo( 'body' ) ; + var $extender = $( '' ).appendTo( 'body' ); calendarHint.init( $extender ); calendarHint.draw(); @@ -58,7 +58,7 @@ 'valueview-expertextender-calendarhint-switch-julian': 'MSG2' } ), function() { - return new Time( '1901-01-01' ); + return new TimeValue( '1901-01-01T00:00:00Z' ); }, null ); @@ -74,7 +74,7 @@ QUnit.test( 'switch switches the calendar model', function( assert ) { var setSpy = sinon.spy(); - var timeValue = new Time( '1901-01-01' ); + var timeValue = new TimeValue( '1901-01-01T00:00:00Z' ); var calendarHint = new ExpertExtender.CalendarHint( new HashMessageProvider( { 'valueview-expertextender-calendarhint-gregorian': 'MSG1', @@ -102,7 +102,7 @@ QUnit.test( 'switch twice switches the calendar model back', function( assert ) { var setSpy = sinon.spy(); - var timeValue = new Time( '1901-01-01' ); + var timeValue = new TimeValue( '1901-01-01T00:00:00Z' ); var calendarHint = new ExpertExtender.CalendarHint( new HashMessageProvider( { 'valueview-expertextender-calendarhint-gregorian': 'MSG1', @@ -125,12 +125,9 @@ sinon.assert.calledOnce( setSpy ); assert.equal( setSpy.firstCall.args[0], 'Julian' ); - timeValue = new Time( { - year: timeValue.year(), - month: timeValue.month(), - day: timeValue.day(), - calendarname: Time.CALENDAR.JULIAN, - precision: timeValue.precision() + timeValue = new TimeValue( timeValue.toJSON().time, { + calendarModel: TimeValue.CALENDARS.JULIAN, + precision: timeValue.getOption( 'precision' ) } ); calendarHint.draw(); @@ -146,7 +143,7 @@ jQuery, jQuery.valueview.ExpertExtender, jQuery.valueview.tests.testExpertExtenderExtension, - time.Time, + dataValues.TimeValue, util.HashMessageProvider, sinon, QUnit, diff --git a/tests/src/ExpertExtender/resources.php b/tests/src/ExpertExtender/resources.php index b1570c6a..d8444644 100644 --- a/tests/src/ExpertExtender/resources.php +++ b/tests/src/ExpertExtender/resources.php @@ -32,10 +32,10 @@ 'ExpertExtender.CalendarHint.tests.js', ), 'dependencies' => array( + 'dataValues.TimeValue', 'jquery.valueview.ExpertExtender.CalendarHint', 'jquery.valueview.test.testExpertExtenderExtension', 'util.HashMessageProvider', - 'time.js' ), ), diff --git a/tests/src/experts/resources.php b/tests/src/experts/resources.php index c2abe52b..3c53805b 100644 --- a/tests/src/experts/resources.php +++ b/tests/src/experts/resources.php @@ -53,9 +53,9 @@ 'TimeInput.tests.js', ), 'dependencies' => array( + 'dataValues.TimeValue', 'jquery.valueview.experts.TimeInput', 'jquery.valueview.tests.testExpert', - 'time.js', ), ),