/* * μlogger * * Copyright(C) 2019 Bartek Fabiszewski (www.fabiszewski.net) * * This is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import uEvent from './event.js'; export default class uConfig { constructor() { this.inititialize(); } inititialize() { this.interval = 10; this.units = 'metric'; this.mapapi = 'openlayers'; this.gkey = null; this.ol_layers = {}; this.init_latitude = 52.23; this.init_longitude = 21.01; this.pass_regex = new RegExp('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{12,})'); this.strokeWeight = 2; this.strokeColor = '#ff0000'; this.strokeOpacity = 1; this.showLatest = false; // marker colors this.colorNormal = '#fff'; this.colorStart = '#55b500'; this.colorStop = '#ff6a00'; this.colorExtra = '#ccc'; this.colorHilite = '#feff6a'; } /** * * @param {uBinder} binder */ set binder(binder) { this._binder = binder; } /** * Dispatch event * @param {string} property */ notify(property) { if (this._binder) { this._binder.dispatchEvent(uEvent.CONFIG, property); } } /** * @return {number} */ get interval() { return this._interval; } /** * @param {number} value */ set interval(value) { this._interval = value; } /** * @return {string} */ get units() { return this._units; } /** * @param {string} value */ set units(value) { this._units = value; if (this._units === 'imperial') { this._factor_kmh = 0.62; // to mph this._unit_kmh = 'mph'; this._factor_m = 3.28; // to feet this._unit_m = 'ft'; this._factor_km = 0.62; // to miles this._unit_km = 'mi'; } else if (this._units === 'nautical') { this._factor_kmh = 0.54; // to knots this._unit_kmh = 'kt'; this._factor_m = 1; // meters this._unit_m = 'm'; this._factor_km = 0.54; // to nautical miles this._unit_km = 'nm'; } else { this._factor_kmh = 1; this._unit_kmh = 'km/h'; this._factor_m = 1; this._unit_m = 'm'; this._factor_km = 1; this._unit_km = 'km'; } } /** * @return {string} */ get mapapi() { return this._mapapi; } /** * @param {string} value */ set mapapi(value) { this._mapapi = value; } /** * @return {?string} */ get gkey() { return this._gkey; } /** * @param {?string} value */ set gkey(value) { this._gkey = value; } /** * @return {Object.} */ get ol_layers() { return this._ol_layers; } /** * @param {Object.} value */ set ol_layers(value) { this._ol_layers = value; } /** * @return {number} */ get init_latitude() { return this._init_latitude; } /** * @param {number} value */ set init_latitude(value) { this._init_latitude = value; } /** * @return {number} */ get init_longitude() { return this._init_longitude; } /** * @param {number} value */ set init_longitude(value) { this._init_longitude = value; } /** * @return {RegExp} */ get pass_regex() { return this._pass_regex; } /** * @param {RegExp} value */ set pass_regex(value) { this._pass_regex = value; } /** * @return {number} */ get strokeWeight() { return this._strokeWeight; } /** * @param {number} value */ set strokeWeight(value) { this._strokeWeight = value; } /** * @return {string} */ get strokeColor() { return this._strokeColor; } /** * @param {string} value */ set strokeColor(value) { this._strokeColor = value; } /** * @return {number} */ get strokeOpacity() { return this._strokeOpacity; } /** * @param {number} value */ set strokeOpacity(value) { this._strokeOpacity = value; } /** * @return {number} */ get factor_kmh() { return this._factor_kmh; } /** * @return {string} */ get unit_kmh() { return this._unit_kmh; } /** * @return {number} */ get factor_m() { return this._factor_m; } /** * @return {string} */ get unit_m() { return this._unit_m; } /** * @return {number} */ get factor_km() { return this._factor_km; } /** * @return {string} */ get unit_km() { return this._unit_km; } /** * @return {boolean} */ get showLatest() { return this._showLatest; } /** * @param {boolean} value */ set showLatest(value) { if (this._showLatest !== value) { this._showLatest = value; this.notify('showLatest'); } } /** * @return {string} */ get colorNormal() { return this._colorNormal; } /** * @param {string} value */ set colorNormal(value) { this._colorNormal = value; } /** * @return {string} */ get colorStart() { return this._colorStart; } /** * @param {string} value */ set colorStart(value) { this._colorStart = value; } /** * @return {string} */ get colorStop() { return this._colorStop; } /** * @param {string} value */ set colorStop(value) { this._colorStop = value; } /** * @return {string} */ get colorExtra() { return this._colorExtra; } /** * @param {string} value */ set colorExtra(value) { this._colorExtra = value; } /** * @return {string} */ get colorHilite() { return this._colorHilite; } /** * @param {string} value */ set colorHilite(value) { this._colorHilite = value; } }