@wemap/providers 3.1.23 → 3.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babel.config.json +16 -0
- package/debug/MainComponent.jsx +5 -5
- package/debug/components/AbsoluteAttitudeComponent.jsx +5 -5
- package/debug/components/AbsolutePositionComponent.jsx +7 -9
- package/debug/components/GnssWifiComponent.jsx +5 -5
- package/debug/components/ImuComponent.jsx +4 -4
- package/debug/components/InclinationComponent.jsx +4 -4
- package/debug/components/RelativeAttitudeComponent.jsx +4 -4
- package/debug/components/StepDetectionComponent.jsx +4 -4
- package/debug/components/Utils.js +1 -1
- package/debug/{Common.css → css/App.css} +0 -44
- package/debug/css/UserOnMapHandler.css +43 -0
- package/debug/details/DetailsAttitudeComponent.jsx +1 -1
- package/debug/details/DetailsComponent.jsx +4 -5
- package/debug/details/DetailsPositionComponent.jsx +2 -2
- package/debug/details/ItineraryComponent.jsx +10 -69
- package/debug/index.js +8 -8
- package/debug/map/MapComponent.jsx +23 -15
- package/debug/map/MapHandler.js +7 -16
- package/debug/map/helpers/ItineraryMapHandler.js +15 -16
- package/debug/map/helpers/MapClickHandler.js +9 -7
- package/debug/map/helpers/UserOnMapHandler.js +38 -417
- package/debug/stores/ItineraryStore.js +23 -48
- package/dist/assets/indoor-maps/bureaux-wemap-montpellier.geojson +339 -513
- package/dist/js/providers-components.js +2361 -0
- package/dist/logger.html +58 -0
- package/index.js +7 -5
- package/package.json +25 -21
- package/src/Providers.js +15 -15
- package/src/ProvidersInterface.js +7 -5
- package/src/errors/MissingAccelerometerError.js +2 -2
- package/src/errors/MissingGyroscopeError.js +2 -2
- package/src/errors/MissingMagnetometerError.js +1 -1
- package/src/events/ProviderEvent.js +1 -1
- package/src/events/{ProvidersLogger.js → ProvidersLoggerOld.js} +7 -7
- package/src/logger/NavigationLogger.js +138 -0
- package/src/logger/NavigationLoggerConverter.js +263 -0
- package/src/providers/FakeProvider.spec.js +3 -4
- package/src/providers/MetaProvider.js +3 -3
- package/src/providers/Provider.js +12 -11
- package/src/providers/Provider.spec.js +5 -7
- package/src/providers/attitude/EkfAttitude.spec.js +1 -1
- package/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.js +9 -8
- package/src/providers/attitude/absolute/AbsoluteAttitudeFromRelAttProvider.js +5 -6
- package/src/providers/attitude/absolute/AbsoluteAttitudeProvider.js +3 -3
- package/src/providers/attitude/relative/RelativeAttitudeFromBrowserProvider.js +7 -5
- package/src/providers/attitude/relative/RelativeAttitudeFromEkfProvider.js +5 -5
- package/src/providers/attitude/relative/RelativeAttitudeFromInertialProvider.js +3 -3
- package/src/providers/attitude/relative/RelativeAttitudeProvider.js +5 -4
- package/src/providers/imu/AccelerometerProvider.js +4 -4
- package/src/providers/imu/GyroscopeProvider.js +4 -4
- package/src/providers/imu/ImuProvider.js +5 -4
- package/src/providers/inclination/InclinationFromAccProvider.js +3 -3
- package/src/providers/inclination/InclinationFromRelativeAttitudeProvider.js +3 -3
- package/src/providers/inclination/InclinationProvider.js +3 -3
- package/src/providers/legacy/helpers/HeadingUnlocker.spec.js +1 -1
- package/src/providers/others/BarcodeProvider.js +3 -3
- package/src/providers/others/CameraNativeProvider.js +4 -4
- package/src/providers/others/CameraProjectionMatrixProvider.js +3 -3
- package/src/providers/position/absolute/AbsolutePositionFromRelProvider.js +4 -4
- package/src/providers/position/absolute/AbsolutePositionProvider.js +5 -5
- package/src/providers/position/absolute/GnssWifiProvider.js +9 -6
- package/src/providers/position/absolute/IpProvider.js +3 -3
- package/src/providers/position/relative/ArCoreProvider.js +5 -5
- package/src/providers/position/relative/GeoRelativePositionFromArCoreProvider.js +3 -3
- package/src/providers/position/relative/GeoRelativePositionProvider.js +3 -3
- package/src/providers/position/relative/PdrProvider.js +3 -3
- package/src/providers/steps/StepDetectionProvider.js +11 -4
- package/src/smoothers/PositionSmoother.spec.js +1 -1
- package/webpack/{webpack.common.js → webpack.common.cjs} +7 -1
- package/webpack/{webpack.dev.js → webpack.dev.cjs} +1 -7
- package/webpack/{webpack.prod.js → webpack.prod.cjs} +1 -1
- package/babel.config.js +0 -11
- package/debug/map/MapboxHelper.js +0 -50
package/dist/logger.html
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, user-scalable=no">
|
|
7
|
+
<title>Debug Pose</title>
|
|
8
|
+
<script src="js/providers-components.js"></script>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
#logger {
|
|
12
|
+
background: #ffffffaa;
|
|
13
|
+
position: absolute;
|
|
14
|
+
bottom: 0;
|
|
15
|
+
left: 0;
|
|
16
|
+
z-index: 2;
|
|
17
|
+
margin: 5px;
|
|
18
|
+
padding-left: 10px;
|
|
19
|
+
padding-right: 10px;
|
|
20
|
+
min-width: 100px;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
</head>
|
|
24
|
+
|
|
25
|
+
<body>
|
|
26
|
+
<div id="app"></div>
|
|
27
|
+
<div id="logger">
|
|
28
|
+
<div class="title">Logger</div>
|
|
29
|
+
<button id="start">Start</button>
|
|
30
|
+
<button id="stop" disabled>Stop</button>
|
|
31
|
+
</div>
|
|
32
|
+
<script>
|
|
33
|
+
const app = createReactElement(MainComponent, document.getElementById('app'));
|
|
34
|
+
|
|
35
|
+
const SERVER_URL = 'https://localhost:9002'
|
|
36
|
+
|
|
37
|
+
const startButton = document.getElementById('start');
|
|
38
|
+
const stopButton = document.getElementById('stop');
|
|
39
|
+
|
|
40
|
+
startButton.addEventListener('click', () => {
|
|
41
|
+
document.dispatchEvent(new CustomEvent('providers.logger.start', { detail : {
|
|
42
|
+
serverUrl: SERVER_URL,
|
|
43
|
+
logsSize: 300
|
|
44
|
+
}}));
|
|
45
|
+
startButton.disabled = true;
|
|
46
|
+
stopButton.disabled = false;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
stopButton.addEventListener('click', () => {
|
|
50
|
+
document.dispatchEvent(new Event('providers.logger.stop'));
|
|
51
|
+
startButton.disabled = false;
|
|
52
|
+
stopButton.disabled = true;
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
</script>
|
|
56
|
+
</body>
|
|
57
|
+
|
|
58
|
+
</html>
|
package/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import EventType from './src/events/EventType';
|
|
2
|
-
import PositionSmoother from './src/smoothers/PositionSmoother';
|
|
3
|
-
import ProvidersInterface from './src/ProvidersInterface';
|
|
4
|
-
import ProvidersOptions from './src/ProvidersOptions';
|
|
1
|
+
import EventType from './src/events/EventType.js';
|
|
2
|
+
import PositionSmoother from './src/smoothers/PositionSmoother.js';
|
|
3
|
+
import ProvidersInterface from './src/ProvidersInterface.js';
|
|
4
|
+
import ProvidersOptions from './src/ProvidersOptions.js';
|
|
5
|
+
import NavigationLogger from './src/logger/NavigationLogger.js';
|
|
6
|
+
import NavigationLoggerConverter from './src/logger/NavigationLoggerConverter.js';
|
|
5
7
|
|
|
6
8
|
export {
|
|
7
|
-
EventType, PositionSmoother, ProvidersInterface, ProvidersOptions
|
|
9
|
+
EventType, PositionSmoother, ProvidersInterface, ProvidersOptions, NavigationLogger, NavigationLoggerConverter
|
|
8
10
|
};
|
package/package.json
CHANGED
|
@@ -8,26 +8,30 @@
|
|
|
8
8
|
"Guillaume Pannetier <guillaume.pannetier@getwemap.com>"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@wemap/geo": "^3.
|
|
12
|
-
"@wemap/graph": "^3.
|
|
13
|
-
"@wemap/logger": "^3.
|
|
14
|
-
"@wemap/maths": "^3.1
|
|
15
|
-
"@wemap/osm": "^3.
|
|
16
|
-
"@wemap/utils": "^3.
|
|
11
|
+
"@wemap/geo": "^3.2.2",
|
|
12
|
+
"@wemap/graph": "^3.2.2",
|
|
13
|
+
"@wemap/logger": "^3.2.1",
|
|
14
|
+
"@wemap/maths": "^3.2.1",
|
|
15
|
+
"@wemap/osm": "^3.2.2",
|
|
16
|
+
"@wemap/utils": "^3.2.2",
|
|
17
|
+
"browser-cookies": "^1.2.0",
|
|
17
18
|
"geomagnetism": "^0.1.0",
|
|
18
19
|
"lodash.isempty": "^4.4.0",
|
|
19
|
-
"lodash.noop": "^3.0.1"
|
|
20
|
+
"lodash.noop": "^3.0.1",
|
|
21
|
+
"uuid": "^8.2.0"
|
|
20
22
|
},
|
|
21
23
|
"description": "A package using different geoloc systems",
|
|
22
24
|
"devDependencies": {
|
|
23
|
-
"@babel/core": "^7.
|
|
24
|
-
"@babel/plugin-proposal-class-properties": "^7.
|
|
25
|
-
"@babel/preset-env": "^7.
|
|
26
|
-
"@babel/preset-react": "^7.
|
|
27
|
-
"@
|
|
25
|
+
"@babel/core": "^7.11.1",
|
|
26
|
+
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
|
27
|
+
"@babel/preset-env": "^7.11.0",
|
|
28
|
+
"@babel/preset-react": "^7.10.4",
|
|
29
|
+
"@wemap/map": "^3.2.2",
|
|
28
30
|
"babel-loader": "^8.0.6",
|
|
29
31
|
"css-loader": "^3.2.0",
|
|
30
32
|
"file-loader": "^5.0.2",
|
|
33
|
+
"mapbox-gl": "^1.11.1",
|
|
34
|
+
"mapbox-gl-indoor": "0.0.4",
|
|
31
35
|
"prop-types": "^15.7.2",
|
|
32
36
|
"react": "^16.11.0",
|
|
33
37
|
"react-dom": "^16.11.0",
|
|
@@ -56,14 +60,14 @@
|
|
|
56
60
|
"url": "git+https://github.com/wemap/wemap-modules-js.git"
|
|
57
61
|
},
|
|
58
62
|
"scripts": {
|
|
59
|
-
"build": "webpack --display-modules --config webpack/webpack.prod.
|
|
60
|
-
"build-debug": "webpack --display-modules --config webpack/webpack.dev.
|
|
61
|
-
"stats": "webpack --config webpack/webpack.prod.
|
|
62
|
-
"start": "webpack-dev-server --config webpack/webpack.dev.
|
|
63
|
-
"start-secure": "webpack-dev-server --config webpack/webpack.dev.
|
|
64
|
-
"lint": "eslint --ext .js,.jsx --quiet src"
|
|
65
|
-
"test": "mocha -r esm \"src/**/*.spec.js\""
|
|
63
|
+
"build": "webpack --display-modules --config webpack/webpack.prod.cjs",
|
|
64
|
+
"build-debug": "webpack --display-modules --config webpack/webpack.dev.cjs",
|
|
65
|
+
"stats": "webpack --config webpack/webpack.prod.cjs --profile --json > stats.json",
|
|
66
|
+
"start": "webpack-dev-server --config webpack/webpack.dev.cjs --progress --inline --hot --https",
|
|
67
|
+
"start-secure": "webpack-dev-server --config webpack/webpack.dev.cjs --progress --inline --hot --https --cert $(grep PEM ../../.env | cut -d '=' -f2) --key $(grep KEY ../../.env | cut -d '=' -f2)",
|
|
68
|
+
"lint": "eslint --ext .js,.jsx --quiet src"
|
|
66
69
|
},
|
|
67
|
-
"
|
|
68
|
-
"
|
|
70
|
+
"type": "module",
|
|
71
|
+
"version": "3.2.2",
|
|
72
|
+
"gitHead": "6ff8c054aed5ccbf0f456aad752c43f46fe6b278"
|
|
69
73
|
}
|
package/src/Providers.js
CHANGED
|
@@ -24,37 +24,37 @@ const AbsoluteAttitudeFromBrowser = AbsoluteAttitudeFromBrowserProvider.instance
|
|
|
24
24
|
const AbsoluteAttitudeFromRelAtt = AbsoluteAttitudeFromRelAttProvider.instance;
|
|
25
25
|
const AbsoluteAttitude = AbsoluteAttitudeProvider.instance;
|
|
26
26
|
|
|
27
|
-
import InclinationFromAccProvider from './providers/inclination/InclinationFromAccProvider';
|
|
28
|
-
import InclinationFromRelativeAttitudeProvider from './providers/inclination/InclinationFromRelativeAttitudeProvider';
|
|
29
|
-
import InclinationProvider from './providers/inclination/InclinationProvider';
|
|
27
|
+
import InclinationFromAccProvider from './providers/inclination/InclinationFromAccProvider.js';
|
|
28
|
+
import InclinationFromRelativeAttitudeProvider from './providers/inclination/InclinationFromRelativeAttitudeProvider.js';
|
|
29
|
+
import InclinationProvider from './providers/inclination/InclinationProvider.js';
|
|
30
30
|
const InclinationFromAcc = InclinationFromAccProvider.instance;
|
|
31
31
|
const InclinationFromRelativeAttitude = InclinationFromRelativeAttitudeProvider.instance;
|
|
32
32
|
const Inclination = InclinationProvider.instance;
|
|
33
33
|
|
|
34
|
-
import StepDetectionProvider from './providers/steps/StepDetectionProvider';
|
|
34
|
+
import StepDetectionProvider from './providers/steps/StepDetectionProvider.js';
|
|
35
35
|
const StepDetection = StepDetectionProvider.instance;
|
|
36
36
|
|
|
37
|
-
import ArCoreProvider from './providers/position/relative/ArCoreProvider';
|
|
38
|
-
import PdrProvider from './providers/position/relative/PdrProvider';
|
|
39
|
-
import GeoRelativePositionFromArCoreProvider from './providers/position/relative/GeoRelativePositionFromArCoreProvider';
|
|
40
|
-
import GeoRelativePositionProvider from './providers/position/relative/GeoRelativePositionProvider';
|
|
37
|
+
import ArCoreProvider from './providers/position/relative/ArCoreProvider.js';
|
|
38
|
+
import PdrProvider from './providers/position/relative/PdrProvider.js';
|
|
39
|
+
import GeoRelativePositionFromArCoreProvider from './providers/position/relative/GeoRelativePositionFromArCoreProvider.js';
|
|
40
|
+
import GeoRelativePositionProvider from './providers/position/relative/GeoRelativePositionProvider.js';
|
|
41
41
|
const ArCore = ArCoreProvider.instance;
|
|
42
42
|
const Pdr = PdrProvider.instance;
|
|
43
43
|
const GeoRelativePositionFromArCore = GeoRelativePositionFromArCoreProvider.instance;
|
|
44
44
|
const GeoRelativePosition = GeoRelativePositionProvider.instance;
|
|
45
45
|
|
|
46
|
-
import AbsolutePositionFromRelProvider from './providers/position/absolute/AbsolutePositionFromRelProvider';
|
|
47
|
-
import GnssWifiProvider from './providers/position/absolute/GnssWifiProvider';
|
|
48
|
-
import IpProvider from './providers/position/absolute/IpProvider';
|
|
49
|
-
import AbsolutePositionProvider from './providers/position/absolute/AbsolutePositionProvider';
|
|
46
|
+
import AbsolutePositionFromRelProvider from './providers/position/absolute/AbsolutePositionFromRelProvider.js';
|
|
47
|
+
import GnssWifiProvider from './providers/position/absolute/GnssWifiProvider.js';
|
|
48
|
+
import IpProvider from './providers/position/absolute/IpProvider.js';
|
|
49
|
+
import AbsolutePositionProvider from './providers/position/absolute/AbsolutePositionProvider.js';
|
|
50
50
|
const AbsolutePositionFromRel = AbsolutePositionFromRelProvider.instance;
|
|
51
51
|
const GnssWifi = GnssWifiProvider.instance;
|
|
52
52
|
const Ip = IpProvider.instance;
|
|
53
53
|
const AbsolutePosition = AbsolutePositionProvider.instance;
|
|
54
54
|
|
|
55
|
-
import BarcodeProvider from './providers/others/BarcodeProvider';
|
|
56
|
-
import CameraNativeProvider from './providers/others/CameraNativeProvider';
|
|
57
|
-
import CameraProjectionMatrixProvider from './providers/others/CameraProjectionMatrixProvider';
|
|
55
|
+
import BarcodeProvider from './providers/others/BarcodeProvider.js';
|
|
56
|
+
import CameraNativeProvider from './providers/others/CameraNativeProvider.js';
|
|
57
|
+
import CameraProjectionMatrixProvider from './providers/others/CameraProjectionMatrixProvider.js';
|
|
58
58
|
const Barcode = BarcodeProvider.instance;
|
|
59
59
|
const CameraNative = CameraNativeProvider.instance;
|
|
60
60
|
const CameraProjectionMatrix = CameraProjectionMatrixProvider.instance;
|
|
@@ -4,12 +4,13 @@ import {
|
|
|
4
4
|
} from '@wemap/geo';
|
|
5
5
|
import { Network } from '@wemap/graph';
|
|
6
6
|
|
|
7
|
-
import EventType from './events/EventType';
|
|
8
|
-
import MetaProvider from './providers/MetaProvider';
|
|
7
|
+
import EventType from './events/EventType.js';
|
|
8
|
+
import MetaProvider from './providers/MetaProvider.js';
|
|
9
9
|
import {
|
|
10
10
|
AbsoluteAttitude, AbsolutePosition, Barcode, CameraNative, CameraProjectionMatrix, Inclination
|
|
11
|
-
} from './Providers';
|
|
12
|
-
import
|
|
11
|
+
} from './Providers.js';
|
|
12
|
+
import NavigationLogger from './logger/NavigationLogger.js';
|
|
13
|
+
import ProvidersLoggerOld from './events/ProvidersLoggerOld.js';
|
|
13
14
|
|
|
14
15
|
class ProvidersInterface {
|
|
15
16
|
|
|
@@ -47,6 +48,7 @@ class ProvidersInterface {
|
|
|
47
48
|
* @param {Object} data
|
|
48
49
|
*/
|
|
49
50
|
static feed(eventType, data) {
|
|
51
|
+
NavigationLogger.feedExternalData(eventType, data, true);
|
|
50
52
|
this._checkEventTypeDataConsistency(eventType, data);
|
|
51
53
|
this._getMetaProviderFromEventType(eventType).feed(data, eventType);
|
|
52
54
|
}
|
|
@@ -125,7 +127,7 @@ class ProvidersInterface {
|
|
|
125
127
|
* @param {Boolean} enabled
|
|
126
128
|
*/
|
|
127
129
|
static set logger(enabled) {
|
|
128
|
-
|
|
130
|
+
ProvidersLoggerOld.enabled = enabled;
|
|
129
131
|
}
|
|
130
132
|
|
|
131
133
|
static get mapMatchingMaxDistance() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import MissingSensorError from './MissingSensorError.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const DEFAULT_MESSAGE = 'Impossible to retrieve Acceleration data';
|
|
4
4
|
|
|
5
5
|
class MissingAccelerometerError extends MissingSensorError {
|
|
6
6
|
constructor(message) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import MissingSensorError from './MissingSensorError.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const DEFAULT_MESSAGE = 'Impossible to retrieve Angular Rate data';
|
|
4
4
|
|
|
5
5
|
class MissingGyroscopeError extends MissingSensorError {
|
|
6
6
|
constructor(message) {
|
|
@@ -9,7 +9,7 @@ let pushEventsRef = {};
|
|
|
9
9
|
let interval;
|
|
10
10
|
let initDate;
|
|
11
11
|
|
|
12
|
-
class
|
|
12
|
+
class ProvidersLoggerOld {
|
|
13
13
|
|
|
14
14
|
static _enabled = false;
|
|
15
15
|
|
|
@@ -47,7 +47,7 @@ class ProvidersLogger {
|
|
|
47
47
|
|
|
48
48
|
static addEvent(object, method) {
|
|
49
49
|
|
|
50
|
-
if (!
|
|
50
|
+
if (!ProvidersLoggerOld.enabled) {
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -55,9 +55,9 @@ class ProvidersLogger {
|
|
|
55
55
|
initDate = Date.now();
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
ProvidersLoggerOld.initializeInterval();
|
|
59
59
|
|
|
60
|
-
const objectId =
|
|
60
|
+
const objectId = ProvidersLoggerOld.getObjectId(object);
|
|
61
61
|
const objectClassName = object.pname;
|
|
62
62
|
|
|
63
63
|
Logger.debug(objectClassName + '[' + objectId + '].' + method);
|
|
@@ -65,11 +65,11 @@ class ProvidersLogger {
|
|
|
65
65
|
|
|
66
66
|
static incrementNotifications(object) {
|
|
67
67
|
|
|
68
|
-
if (!
|
|
68
|
+
if (!ProvidersLoggerOld.enabled) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
const objectId =
|
|
72
|
+
const objectId = ProvidersLoggerOld.getObjectId(object);
|
|
73
73
|
|
|
74
74
|
let counter = pushEvents[objectId];
|
|
75
75
|
if (!counter) {
|
|
@@ -80,4 +80,4 @@ class ProvidersLogger {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
}
|
|
83
|
-
export default
|
|
83
|
+
export default ProvidersLoggerOld;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import cookies from 'browser-cookies';
|
|
3
|
+
|
|
4
|
+
import { TimeUtils } from '@wemap/utils';
|
|
5
|
+
|
|
6
|
+
import ProvidersOptions from '../ProvidersOptions.js';
|
|
7
|
+
import NavigationLoggerConverter from './NavigationLoggerConverter.js';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class NavigationLogger {
|
|
11
|
+
|
|
12
|
+
static serverUrl;
|
|
13
|
+
static logsSize;
|
|
14
|
+
|
|
15
|
+
static logs;
|
|
16
|
+
static sessionsId;
|
|
17
|
+
|
|
18
|
+
static isRecording = false;
|
|
19
|
+
|
|
20
|
+
static start(serverUrl, logsSize = 200) {
|
|
21
|
+
if (this.isRecording) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.isRecording = true;
|
|
25
|
+
|
|
26
|
+
this.serverUrl = serverUrl;
|
|
27
|
+
this.logsSize = logsSize;
|
|
28
|
+
|
|
29
|
+
// Initialize
|
|
30
|
+
this.logs = new Array(this.logsSize);
|
|
31
|
+
this.currentLogIndex = 0;
|
|
32
|
+
|
|
33
|
+
// Fill and send the config object
|
|
34
|
+
const config = {};
|
|
35
|
+
config.startTime = TimeUtils.preciseTime;
|
|
36
|
+
config.options = ProvidersOptions;
|
|
37
|
+
config.sessionId = this.sessionId = uuidv4();
|
|
38
|
+
config.userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
|
|
39
|
+
if (typeof document !== 'undefined') {
|
|
40
|
+
config.cookieId = cookies.get('providers.logger.uuid');
|
|
41
|
+
if (!config.cookieId) {
|
|
42
|
+
config.cookieId = uuidv4();
|
|
43
|
+
cookies.set('providers.logger.uuid', config.cookieId);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this._sendConfig(config);
|
|
47
|
+
this._feed(NavigationLoggerConverter.configToLog(config));
|
|
48
|
+
|
|
49
|
+
// Dispatch started event
|
|
50
|
+
if (typeof document !== 'undefined') {
|
|
51
|
+
document.dispatchEvent(new CustomEvent('providers.logger.started', { detail: { config: this.config } }));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static stop() {
|
|
56
|
+
if (!this.isRecording) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
this._sendLogs(this.logs.filter(el => el !== null));
|
|
61
|
+
// this.config.endTime = TimeUtils.preciseTime;
|
|
62
|
+
|
|
63
|
+
if (typeof document !== 'undefined') {
|
|
64
|
+
document.dispatchEvent(new CustomEvent('providers.logger.stopped', { detail: { logs: this.logs } }));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
this.isRecording = false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static feedImuData(event) {
|
|
71
|
+
if (!this.isRecording) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this._feed(NavigationLoggerConverter.imuDataToLog(TimeUtils.preciseTime, event));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static feedGeolocation(geolocationEvent) {
|
|
78
|
+
if (!this.isRecording) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this._feed(NavigationLoggerConverter.geolocationToLog(TimeUtils.preciseTime, geolocationEvent));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static feedExternalData(eventType, data) {
|
|
85
|
+
if (!this.isRecording) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this._feed(NavigationLoggerConverter.externalDataToLog(TimeUtils.preciseTime, eventType, data));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
static _feed(line) {
|
|
93
|
+
this.logs[this.currentLogIndex++] = line;
|
|
94
|
+
if (this.logsSize && this.logs[this.logsSize - 1]) {
|
|
95
|
+
this._flush();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
static _flush() {
|
|
100
|
+
this._sendLogs(this.logs);
|
|
101
|
+
if (typeof document !== 'undefined') {
|
|
102
|
+
document.dispatchEvent(new CustomEvent('providers.logger.flush', { detail: { logs: this.logs } }));
|
|
103
|
+
}
|
|
104
|
+
this.currentLogIndex = 0;
|
|
105
|
+
this.logs = new Array(this.logsSize);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
static _sendConfig(config) {
|
|
110
|
+
const xmlhttp = new XMLHttpRequest();
|
|
111
|
+
xmlhttp.open('POST', this.serverUrl + '/config');
|
|
112
|
+
xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
|
113
|
+
xmlhttp.send(JSON.stringify(config));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static _sendLogs(logs) {
|
|
117
|
+
const xmlhttp = new XMLHttpRequest();
|
|
118
|
+
xmlhttp.open('POST', this.serverUrl + '/logs/' + this.sessionId, true);
|
|
119
|
+
xmlhttp.setRequestHeader('Content-Type', 'text/plain');
|
|
120
|
+
xmlhttp.send(logs.join('\n'));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (typeof document !== 'undefined') {
|
|
125
|
+
document.addEventListener('providers.logger.start', event => {
|
|
126
|
+
if (!('detail' in event)) {
|
|
127
|
+
throw new Error('[providers.logger.start] did not find event detail');
|
|
128
|
+
}
|
|
129
|
+
if (!('serverUrl' in event.detail)) {
|
|
130
|
+
throw new Error('[providers.logger.start] did not find serverUrl');
|
|
131
|
+
}
|
|
132
|
+
NavigationLogger.start(event.detail.serverUrl, event.detail.logsSize);
|
|
133
|
+
});
|
|
134
|
+
document.addEventListener('providers.logger.stop', () => NavigationLogger.stop());
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
export default NavigationLogger;
|