"use strict"; import {DotModel} from "./DotModel.ecma.js"; import {Check} from "../Utils/Check.ecma.js"; /** * @typedef {import("../Application/RoutesMaker.ecma.js").RoutesMaker} RoutesMaker */ /** * @class * @constructor * @param {!RoutesMaker} routes_maker * @param {!string} name * @param {!string} key * @returns {void} * @access public * @static */ export const RouteModel = (function(){ /** * @constructs RouteModel * @param {!RoutesMaker} routes_maker * @param {!string} name * @param {!string} key * @returns {void} * @access public * @static */ const RouteModel = function(routes_maker, name, key){ /** @type {RouteModel} */ const self = this; /** @type {RoutesMaker} */ this.routes_maker = routes_maker; /** @type {Array.} */ this.dots = []; /** @type {string} */ this.name = name; /** @type {string} */ this.key = key; /** @type {number} */ this.from = 0; this.add_dot = (longitude, latitude) => { const dot = new DotModel(self, longitude, latitude, self.dots.length); self.dots.push(dot); return dot; }; this.get_distance = (...slice) => ( slice.length ? self.dots.slice(...slice) : self.dots ).reduce((distance, dot) => distance + dot.distance, 0); }; return RouteModel; })();