refactor(eslint): use cordova-eslint w/ fix (#61)
diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 0000000..17277f7
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+root: true
+extends: '@cordova/eslint-config/browser'
+
+overrides:
+ - files: [tests/**/*.js]
+ extends: '@cordova/eslint-config/node-tests'
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index 27669d4..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "browser": true
- , "devel": true
- , "bitwise": true
- , "undef": true
- , "trailing": true
- , "quotmark": false
- , "indent": 4
- , "unused": "vars"
- , "latedef": "nofunc"
- , "globals": {
- "module": false,
- "exports": false,
- "require": false,
- "cordova": true,
- "CompassError": true,
- "CompassHeading": true
- }
-}
diff --git a/package.json b/package.json
index a84a1dc..ff9f103 100644
--- a/package.json
+++ b/package.json
@@ -25,8 +25,8 @@
"cordova-browser"
],
"scripts": {
- "test": "npm run jshint",
- "jshint": "node node_modules/jshint/bin/jshint www && node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint tests"
+ "test": "npm run lint",
+ "lint": "eslint ."
},
"author": "Apache Software Foundation",
"license": "Apache-2.0",
@@ -38,6 +38,6 @@
}
},
"devDependencies": {
- "jshint": "^2.6.0"
+ "@cordova/eslint-config": "^3.0.0"
}
}
diff --git a/src/browser/CompassProxy.js b/src/browser/CompassProxy.js
index 860c258..55f160c 100644
--- a/src/browser/CompassProxy.js
+++ b/src/browser/CompassProxy.js
@@ -17,12 +17,12 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
var Compass = {
- getHeading: function(success, error) {
+ getHeading: function (success, error) {
var orient = {};
- var heading = (Math.round((Math.random() * 360) * 100) / 100);
+ var heading = Math.round(Math.random() * 360 * 100) / 100;
orient.trueHeading = heading;
orient.magneticHeading = heading;
diff --git a/src/windows/CompassProxy.js b/src/windows/CompassProxy.js
index 4302636..f587f7e 100644
--- a/src/windows/CompassProxy.js
+++ b/src/windows/CompassProxy.js
@@ -1,4 +1,4 @@
-/*
+/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -17,17 +17,14 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
-/*jslint sloppy:true */
-/*global Windows:true, require, module, setTimeout */
+/* global Windows */
-var CompassHeading = require('cordova-plugin-device-orientation.CompassHeading'),
- CompassError = require('cordova-plugin-device-orientation.CompassError');
-
+var CompassHeading = require('cordova-plugin-device-orientation.CompassHeading');
+var CompassError = require('cordova-plugin-device-orientation.CompassError');
module.exports = {
-
onReadingChanged: null,
getHeading: function (win, lose) {
var deviceCompass = Windows.Devices.Sensors.Compass.getDefault();
@@ -36,8 +33,8 @@
lose(CompassError.COMPASS_NOT_SUPPORTED);
}, 0);
} else {
- var reading = deviceCompass.getCurrentReading(),
- heading = new CompassHeading(reading.headingMagneticNorth, reading.headingTrueNorth, null, reading.timestamp.getTime());
+ var reading = deviceCompass.getCurrentReading();
+ var heading = new CompassHeading(reading.headingMagneticNorth, reading.headingTrueNorth, null, reading.timestamp.getTime());
setTimeout(function () {
win(heading);
}, 0);
@@ -50,4 +47,4 @@
}
};
-require("cordova/exec/proxy").add("Compass", module.exports);
+require('cordova/exec/proxy').add('Compass', module.exports);
diff --git a/tests/tests.js b/tests/tests.js
index 387aa58..2924d3d 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -1,33 +1,33 @@
/*
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*
-*/
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
-/* jshint jasmine: true */
+/* global CompassError, CompassHeading */
exports.defineAutoTests = function () {
var fail = function (done, message) {
- message = (typeof message !== 'string') ? "Forced failure: wrong callback called" : message;
+ message = typeof message !== 'string' ? 'Forced failure: wrong callback called' : message;
expect(true).toFailWithMessage(message);
done();
- },
- unexpectedFailure = "Forced failure: error callback should not have been called";
+ };
+ var unexpectedFailure = 'Forced failure: error callback should not have been called';
describe('Compass (navigator.compass)', function () {
beforeEach(function () {
@@ -37,7 +37,7 @@
compare: function (actual, customMessage) {
var pass = false;
if (customMessage === undefined) {
- customMessage = "Forced failure: wrong callback called";
+ customMessage = 'Forced failure: wrong callback called';
}
return {
pass: pass,
@@ -55,19 +55,21 @@
if (isCompassAvailable === false) {
// if we're already ensured that compass is not available, no need to check it again
done();
- return;
} else if (isCompassAvailable === null) {
// Try to access compass device, and if it is not available
// set hardwarefailure flag to mark some tests pending
- navigator.compass.getCurrentHeading(function () {
- isCompassAvailable = true;
- done();
- }, function (error) {
- if (error.code == CompassError.COMPASS_NOT_SUPPORTED) {
- isCompassAvailable = false;
+ navigator.compass.getCurrentHeading(
+ function () {
+ isCompassAvailable = true;
+ done();
+ },
+ function (error) {
+ if (error.code === CompassError.COMPASS_NOT_SUPPORTED) {
+ isCompassAvailable = false;
+ }
+ done();
}
- done();
- });
+ );
} else {
// wait a little
setTimeout(function () {
@@ -76,44 +78,44 @@
}
});
- it("compass.spec.1 should exist", function () {
+ it('compass.spec.1 should exist', function () {
expect(navigator.compass).toBeDefined();
});
- it("compass.spec.2 should contain a getCurrentHeading function", function () {
+ it('compass.spec.2 should contain a getCurrentHeading function', function () {
expect(navigator.compass.getCurrentHeading).toBeDefined();
- expect(typeof navigator.compass.getCurrentHeading == 'function').toBe(true);
+ expect(typeof navigator.compass.getCurrentHeading === 'function').toBe(true);
});
- it("compass.spec.3 getCurrentHeading success callback should be called with a Heading object", function (done) {
+ it('compass.spec.3 getCurrentHeading success callback should be called with a Heading object', function (done) {
if (!isCompassAvailable) {
pending();
}
navigator.compass.getCurrentHeading(function (a) {
expect(a instanceof CompassHeading).toBe(true);
expect(a.magneticHeading).toBeDefined();
- expect(typeof a.magneticHeading == 'number').toBe(true);
+ expect(typeof a.magneticHeading === 'number').toBe(true);
expect(a.trueHeading).not.toBe(undefined);
- expect(typeof a.trueHeading == 'number' || a.trueHeading === null).toBe(true);
+ expect(typeof a.trueHeading === 'number' || a.trueHeading === null).toBe(true);
expect(a.headingAccuracy).not.toBe(undefined);
- expect(typeof a.headingAccuracy == 'number' || a.headingAccuracy === null).toBe(true);
- expect(typeof a.timestamp == 'number').toBe(true);
+ expect(typeof a.headingAccuracy === 'number' || a.headingAccuracy === null).toBe(true);
+ expect(typeof a.timestamp === 'number').toBe(true);
done();
}, fail.bind(null, done, unexpectedFailure));
});
- it("compass.spec.4 should contain a watchHeading function", function () {
+ it('compass.spec.4 should contain a watchHeading function', function () {
expect(navigator.compass.watchHeading).toBeDefined();
- expect(typeof navigator.compass.watchHeading == 'function').toBe(true);
+ expect(typeof navigator.compass.watchHeading === 'function').toBe(true);
});
- it("compass.spec.5 should contain a clearWatch function", function () {
+ it('compass.spec.5 should contain a clearWatch function', function () {
expect(navigator.compass.clearWatch).toBeDefined();
- expect(typeof navigator.compass.clearWatch == 'function').toBe(true);
+ expect(typeof navigator.compass.clearWatch === 'function').toBe(true);
});
describe('Compass Constants (window.CompassError)', function () {
- it("compass.spec.1 should exist", function () {
+ it('compass.spec.1 should exist', function () {
expect(window.CompassError).toBeDefined();
expect(window.CompassError.COMPASS_INTERNAL_ERR).toBe(0);
expect(window.CompassError.COMPASS_NOT_SUPPORTED).toBe(20);
@@ -121,31 +123,31 @@
});
describe('Compass Heading model (CompassHeading)', function () {
- it("compass.spec.1 should exist", function () {
+ it('compass.spec.1 should exist', function () {
expect(CompassHeading).toBeDefined();
});
- it("compass.spec.8 should be able to create a new CompassHeading instance with no parameters", function () {
+ it('compass.spec.8 should be able to create a new CompassHeading instance with no parameters', function () {
var h = new CompassHeading();
expect(h).toBeDefined();
expect(h.magneticHeading).toBeUndefined();
expect(h.trueHeading).toBeUndefined();
expect(h.headingAccuracy).toBeUndefined();
- expect(typeof h.timestamp == 'number').toBe(true);
+ expect(typeof h.timestamp === 'number').toBe(true);
});
- it("compass.spec.9 should be able to create a new CompassHeading instance with parameters", function () {
+ it('compass.spec.9 should be able to create a new CompassHeading instance with parameters', function () {
var h = new CompassHeading(1, 2, 3, 4);
expect(h.magneticHeading).toBe(1);
expect(h.trueHeading).toBe(2);
expect(h.headingAccuracy).toBe(3);
expect(h.timestamp.valueOf()).toBe(4);
- expect(typeof h.timestamp == 'number').toBe(true);
+ expect(typeof h.timestamp === 'number').toBe(true);
});
});
- describe("Compass watch heading", function() {
- it("compass.spec.10 watchCurrentHeading called with a Heading object", function (done) {
+ describe('Compass watch heading', function () {
+ it('compass.spec.10 watchCurrentHeading called with a Heading object', function (done) {
if (!isCompassAvailable) {
pending();
}
@@ -153,15 +155,15 @@
var calledOnce = false;
var watchId = navigator.compass.watchHeading(
- function (a){
+ function (a) {
expect(a instanceof CompassHeading).toBe(true);
expect(a.magneticHeading).toBeDefined();
- expect(typeof a.magneticHeading == 'number').toBe(true);
+ expect(typeof a.magneticHeading === 'number').toBe(true);
expect(a.trueHeading).not.toBe(undefined);
- expect(typeof a.trueHeading == 'number' || a.trueHeading === null).toBe(true);
+ expect(typeof a.trueHeading === 'number' || a.trueHeading === null).toBe(true);
expect(a.headingAccuracy).not.toBe(undefined);
- expect(typeof a.headingAccuracy == 'number' || a.headingAccuracy === null).toBe(true);
- expect(typeof a.timestamp == 'number').toBe(true);
+ expect(typeof a.headingAccuracy === 'number' || a.headingAccuracy === null).toBe(true);
+ expect(typeof a.timestamp === 'number').toBe(true);
if (calledOnce) {
navigator.compass.clearWatch(watchId);
@@ -170,12 +172,12 @@
calledOnce = true;
},
- function (compassError){},
+ function (compassError) {},
{ frequency: 50 }
);
});
- it("compass.spec.11 the watch success callback should not be called once the watch is cleared", function (done) {
+ it('compass.spec.11 the watch success callback should not be called once the watch is cleared', function (done) {
if (!isCompassAvailable) {
pending();
}
@@ -191,14 +193,14 @@
if (calledOnce && !watchCleared) {
navigator.compass.clearWatch(watchId);
watchCleared = true;
- setTimeout(function(){
+ setTimeout(function () {
done();
}, 1000);
}
calledOnce = true;
},
- function (compassError){},
+ function (compassError) {},
{ frequency: 50 }
);
});
@@ -211,7 +213,7 @@
/******************************************************************************/
exports.defineManualTests = function (contentEl, createActionButton) {
- function roundNumber(num) {
+ function roundNumber (num) {
var dec = 3;
var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
return result;
@@ -222,16 +224,16 @@
/**
* Set compass status
*/
- function setCompassStatus(status) {
+ function setCompassStatus (status) {
document.getElementById('compass_status').innerHTML = status;
}
// Success callback for both watchHeading and getCurrentHeading
- function success(a) {
+ function success (a) {
var magneticHeading = document.getElementById('magneticHeading');
- var trueHeading = document.getElementById("trueHeading");
- var headingAccuracy = document.getElementById("headingAccuracy");
- var timestamp = document.getElementById("timestamp");
+ var trueHeading = document.getElementById('trueHeading');
+ var headingAccuracy = document.getElementById('headingAccuracy');
+ var timestamp = document.getElementById('timestamp');
magneticHeading.innerHTML = roundNumber(a.magneticHeading);
trueHeading.innerHTML = roundNumber(a.trueHeading);
@@ -242,8 +244,8 @@
/**
* Stop watching the acceleration
*/
- function stopCompass() {
- setCompassStatus("Stopped");
+ function stopCompass () {
+ setCompassStatus('Stopped');
if (watchCompassId) {
navigator.compass.clearWatch(watchCompassId);
watchCompassId = null;
@@ -254,11 +256,11 @@
* Start watching compass
*/
var watchCompass = function () {
- console.log("watchCompass()");
+ console.log('watchCompass()');
// Fail callback
var fail = function (e) {
- console.log("watchCompass fail callback with error: " + JSON.stringify(e));
+ console.log('watchCompass fail callback with error: ' + JSON.stringify(e));
stopCompass();
setCompassStatus(e);
};
@@ -271,21 +273,21 @@
opt.frequency = 1000;
watchCompassId = navigator.compass.watchHeading(success, fail, opt);
- setCompassStatus("Running");
+ setCompassStatus('Running');
};
/**
* Get current compass
*/
var getCompass = function () {
- console.log("getCompass()");
+ console.log('getCompass()');
// Stop compass if running
stopCompass();
// Fail callback
var fail = function (e) {
- console.log("getCompass fail callback with error: " + JSON.stringify(e));
+ console.log('getCompass fail callback with error: ' + JSON.stringify(e));
setCompassStatus(e);
};
@@ -296,7 +298,8 @@
/******************************************************************************/
- var orientation_tests = '<h3>iOS devices may bring up a calibration screen when initiating these tests</h3>' +
+ var orientation_tests =
+ '<h3>iOS devices may bring up a calibration screen when initiating these tests</h3>' +
'<div id="getCompass"></div>' +
'Expected result: Will update the status box with current heading. Status will read "Stopped"' +
'<p/> <div id="watchCompass"></div>' +
@@ -304,7 +307,8 @@
'<p/> <div id="stopCompass"></div>' +
'Expected result: Will clear the compass watch, so heading value will no longer be updated. Status will read "Stopped"';
- contentEl.innerHTML = '<div id="info"><b>Status: </b>' +
+ contentEl.innerHTML =
+ '<div id="info"><b>Status: </b>' +
'<span id="compass_status">Stopped</span>' +
'<table width="100%">' +
'<tr><td width="33%">Magnetic heading: <span id="magneticHeading"></span></td></tr>' +
@@ -314,15 +318,27 @@
'</table></div>' +
orientation_tests;
- createActionButton('Get Compass', function () {
- getCompass();
- }, 'getCompass');
+ createActionButton(
+ 'Get Compass',
+ function () {
+ getCompass();
+ },
+ 'getCompass'
+ );
- createActionButton('Start Watching Compass', function () {
- watchCompass();
- }, 'watchCompass');
+ createActionButton(
+ 'Start Watching Compass',
+ function () {
+ watchCompass();
+ },
+ 'watchCompass'
+ );
- createActionButton('Stop Watching Compass', function () {
- stopCompass();
- }, 'stopCompass');
+ createActionButton(
+ 'Stop Watching Compass',
+ function () {
+ stopCompass();
+ },
+ 'stopCompass'
+ );
};
diff --git a/www/CompassError.js b/www/CompassError.js
index 7b5b485..7861292 100644
--- a/www/CompassError.js
+++ b/www/CompassError.js
@@ -17,15 +17,15 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
/**
* CompassError.
* An error code assigned by an implementation when an error has occurred
* @constructor
*/
-var CompassError = function(err) {
- this.code = (err !== undefined ? err : null);
+var CompassError = function (err) {
+ this.code = err !== undefined ? err : null;
};
CompassError.COMPASS_INTERNAL_ERR = 0;
diff --git a/www/CompassHeading.js b/www/CompassHeading.js
index 70343ee..2753f43 100644
--- a/www/CompassHeading.js
+++ b/www/CompassHeading.js
@@ -17,13 +17,13 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
-var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) {
- this.magneticHeading = magneticHeading;
- this.trueHeading = trueHeading;
- this.headingAccuracy = headingAccuracy;
- this.timestamp = timestamp || new Date().getTime();
+var CompassHeading = function (magneticHeading, trueHeading, headingAccuracy, timestamp) {
+ this.magneticHeading = magneticHeading;
+ this.trueHeading = trueHeading;
+ this.headingAccuracy = headingAccuracy;
+ this.timestamp = timestamp || new Date().getTime();
};
module.exports = CompassHeading;
diff --git a/www/compass.js b/www/compass.js
index 603e727..ba3df60 100644
--- a/www/compass.js
+++ b/www/compass.js
@@ -17,102 +17,106 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
-var argscheck = require('cordova/argscheck'),
- exec = require('cordova/exec'),
- utils = require('cordova/utils'),
- CompassHeading = require('./CompassHeading'),
- CompassError = require('./CompassError'),
+/* global cordova */
- timers = {},
- eventTimerId = null,
- compass = {
- /**
- * Asynchronously acquires the current heading.
- * @param {Function} successCallback The function to call when the heading
- * data is available
- * @param {Function} errorCallback The function to call when there is an error
- * getting the heading data.
- * @param {CompassOptions} options The options for getting the heading data (not used).
- */
- getCurrentHeading:function(successCallback, errorCallback, options) {
- argscheck.checkArgs('fFO', 'compass.getCurrentHeading', arguments);
+var argscheck = require('cordova/argscheck');
+var exec = require('cordova/exec');
+var utils = require('cordova/utils');
+var CompassHeading = require('./CompassHeading');
+var CompassError = require('./CompassError');
- var win = function(result) {
- var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp);
- successCallback(ch);
- };
- var fail = errorCallback && function(code) {
+var timers = {};
+var eventTimerId = null;
+var compass = {
+ /**
+ * Asynchronously acquires the current heading.
+ * @param {Function} successCallback The function to call when the heading
+ * data is available
+ * @param {Function} errorCallback The function to call when there is an error
+ * getting the heading data.
+ * @param {CompassOptions} options The options for getting the heading data (not used).
+ */
+ getCurrentHeading: function (successCallback, errorCallback, options) {
+ argscheck.checkArgs('fFO', 'compass.getCurrentHeading', arguments);
+
+ var win = function (result) {
+ var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp);
+ successCallback(ch);
+ };
+ var fail =
+ errorCallback &&
+ function (code) {
var ce = new CompassError(code);
errorCallback(ce);
};
- // Get heading
- exec(win, fail, "Compass", "getHeading", [options]);
- },
+ // Get heading
+ exec(win, fail, 'Compass', 'getHeading', [options]);
+ },
- /**
- * Asynchronously acquires the heading repeatedly at a given interval.
- * @param {Function} successCallback The function to call each time the heading
- * data is available
- * @param {Function} errorCallback The function to call when there is an error
- * getting the heading data.
- * @param {HeadingOptions} options The options for getting the heading data
- * such as timeout and the frequency of the watch. For iOS, filter parameter
- * specifies to watch via a distance filter rather than time.
- */
- watchHeading:function(successCallback, errorCallback, options) {
- argscheck.checkArgs('fFO', 'compass.watchHeading', arguments);
- // Default interval (100 msec)
- var frequency = (options !== undefined && options.frequency !== undefined) ? options.frequency : 100;
- var filter = (options !== undefined && options.filter !== undefined) ? options.filter : 0;
+ /**
+ * Asynchronously acquires the heading repeatedly at a given interval.
+ * @param {Function} successCallback The function to call each time the heading
+ * data is available
+ * @param {Function} errorCallback The function to call when there is an error
+ * getting the heading data.
+ * @param {HeadingOptions} options The options for getting the heading data
+ * such as timeout and the frequency of the watch. For iOS, filter parameter
+ * specifies to watch via a distance filter rather than time.
+ */
+ watchHeading: function (successCallback, errorCallback, options) {
+ argscheck.checkArgs('fFO', 'compass.watchHeading', arguments);
+ // Default interval (100 msec)
+ var frequency = options !== undefined && options.frequency !== undefined ? options.frequency : 100;
+ var filter = options !== undefined && options.filter !== undefined ? options.filter : 0;
- var id = utils.createUUID();
- if (filter > 0) {
- // is an iOS request for watch by filter, no timer needed
- timers[id] = "iOS";
- compass.getCurrentHeading(successCallback, errorCallback, options);
+ var id = utils.createUUID();
+ if (filter > 0) {
+ // is an iOS request for watch by filter, no timer needed
+ timers[id] = 'iOS';
+ compass.getCurrentHeading(successCallback, errorCallback, options);
+ } else {
+ // Start watch timer to get headings
+ timers[id] = window.setInterval(function () {
+ compass.getCurrentHeading(successCallback, errorCallback);
+ }, frequency);
+ }
+
+ if (cordova.platformId === 'browser' && !eventTimerId) {
+ // Start firing deviceorientation events if haven't already
+ var deviceorientationEvent = new Event('deviceorientation');
+ eventTimerId = window.setInterval(function () {
+ window.dispatchEvent(deviceorientationEvent);
+ }, 200);
+ }
+
+ return id;
+ },
+
+ /**
+ * Clears the specified heading watch.
+ * @param {String} id The ID of the watch returned from #watchHeading.
+ */
+ clearWatch: function (id) {
+ // Stop javascript timer & remove from timer list
+ if (id && timers[id]) {
+ if (timers[id] !== 'iOS') {
+ clearInterval(timers[id]);
} else {
- // Start watch timer to get headings
- timers[id] = window.setInterval(function() {
- compass.getCurrentHeading(successCallback, errorCallback);
- }, frequency);
+ // is iOS watch by filter so call into device to stop
+ exec(null, null, 'Compass', 'stopHeading', []);
}
+ delete timers[id];
- if (cordova.platformId === 'browser' && !eventTimerId) {
- // Start firing deviceorientation events if haven't already
- var deviceorientationEvent = new Event('deviceorientation');
- eventTimerId = window.setInterval(function() {
- window.dispatchEvent(deviceorientationEvent);
- }, 200);
- }
-
- return id;
- },
-
- /**
- * Clears the specified heading watch.
- * @param {String} id The ID of the watch returned from #watchHeading.
- */
- clearWatch:function(id) {
- // Stop javascript timer & remove from timer list
- if (id && timers[id]) {
- if (timers[id] != "iOS") {
- clearInterval(timers[id]);
- } else {
- // is iOS watch by filter so call into device to stop
- exec(null, null, "Compass", "stopHeading", []);
- }
- delete timers[id];
-
- if (eventTimerId && Object.keys(timers).length === 0) {
- // No more watchers, so stop firing 'deviceorientation' events
- window.clearInterval(eventTimerId);
- eventTimerId = null;
- }
+ if (eventTimerId && Object.keys(timers).length === 0) {
+ // No more watchers, so stop firing 'deviceorientation' events
+ window.clearInterval(eventTimerId);
+ eventTimerId = null;
}
}
- };
+ }
+};
module.exports = compass;