Daniel Werner has uploaded a new change for review.

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


Change subject: Properly implemented JS GlobeCoordinateValue::toJSON and 
newFromJSON
......................................................................

Properly implemented JS GlobeCoordinateValue::toJSON and newFromJSON

Allows round tripping with the backend implementation now. Precision is not yet 
implemented.
Moved the problem of dealing with precision from globeCoordinate.js into 
GlobeCoordinateValue
since "globeCoordinate.js" should not really know or care about the problems of 
the "backend"
or anything else Wikibase related.

Change-Id: I6b0e3584996a0709de81b37ac07659d6b5bd2c97
---
M DataValues/resources/globeCoordinate.js/src/globeCoordinate.GlobeCoordinate.js
M DataValues/resources/values/GlobeCoordinateValue.js
2 files changed, 21 insertions(+), 19 deletions(-)


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

diff --git 
a/DataValues/resources/globeCoordinate.js/src/globeCoordinate.GlobeCoordinate.js
 
b/DataValues/resources/globeCoordinate.js/src/globeCoordinate.GlobeCoordinate.js
index 1c0cd87..d4d3263 100644
--- 
a/DataValues/resources/globeCoordinate.js/src/globeCoordinate.GlobeCoordinate.js
+++ 
b/DataValues/resources/globeCoordinate.js/src/globeCoordinate.GlobeCoordinate.js
@@ -50,14 +50,9 @@
                } else {
                        this._latitude = globeCoordinateDefinition.latitude;
                        this._longitude = globeCoordinateDefinition.longitude;
-
-                       // The backend does not return precision, so we need to 
parse the coordinate values:
-                       // TODO: Have the backend support precision
-                       parsed = globeCoordinateParser.parse( this._latitude + 
', ' + this._longitude );
-                       this._precision = parsed[2];
-
-                       // TODO: Capture altitude and globe
+                       this._precision = globeCoordinateDefinition.precision;
                }
+               // TODO: Capture altitude and globe
 
                this._globe = 'http://wikidata.org/id/Q2'; // TODO: Support 
other globes
        };
diff --git a/DataValues/resources/values/GlobeCoordinateValue.js 
b/DataValues/resources/values/GlobeCoordinateValue.js
index 71062a8..97447eb 100644
--- a/DataValues/resources/values/GlobeCoordinateValue.js
+++ b/DataValues/resources/values/GlobeCoordinateValue.js
@@ -6,7 +6,7 @@
  *
  * @author H. Snater < mediaw...@snater.com >
  */
-( function( dv, $, GlobeCoordinate ) {
+( function( dv, $, GlobeCoordinate, globeCoordinateParse ) {
        'use strict';
 
        var PARENT = dv.DataValue,
@@ -75,26 +75,33 @@
                toJSON: function() {
                        var globeCoordinate = this.getValue();
 
-                       // TODO: Backend should interact with a proper JSON 
structure and have precision implemented.
-                       return globeCoordinate.getLatitude() + '|' + 
globeCoordinate.getLongitude();
+                       return {
+                               latitude: globeCoordinate.getLatitude(),
+                               longitude: globeCoordinate.getLongitude(),
+                               globe: globeCoordinate.getGlobe(),
+                               precision: globeCoordinate.getPrecision()
+                               // altitude: ...
+                       };
                }
-
        } );
 
        /**
         * @see dv.DataValue.newFromJSON
         */
        SELF.newFromJSON = function( json ) {
-               var data = json.split( '|' );
+               // The backend does not return precision, so we need to parse 
the coordinate values:
+               // TODO: Have the backend support precision
+               var precision = globeCoordinateParse( json.latitude + ', ' + 
json.longitude )[2];
 
-               var c = new GlobeCoordinate( {
-                       latitude: parseFloat( data[0] ),
-                       longitude: parseFloat( data[1] ),
-                       altitude: ( data[2] ) ? parseFloat( data[2] ) : null,
-                       globe: ( data[3] ) ? data[3] : null
+               var gc = new GlobeCoordinate( {
+                       latitude: json.latitude,
+                       longitude: json.longitude,
+                       globe: json.globe,
+                       precision: precision
+                       // altitude: json.altitude, // TODO: make 
globeCoordinate.js support altitude
                } );
 
-               return new SELF( c );
+               return new SELF( gc );
        };
 
        /**
@@ -104,4 +111,4 @@
 
        dv.registerDataValue( SELF );
 
-}( dataValues, jQuery, globeCoordinate.GlobeCoordinate ) );
+}( dataValues, jQuery, globeCoordinate.GlobeCoordinate, 
globeCoordinate.parser.parse ) );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6b0e3584996a0709de81b37ac07659d6b5bd2c97
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DataValues
Gerrit-Branch: master
Gerrit-Owner: Daniel Werner <daniel.wer...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to