63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
"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.<DotModel>} */
|
|
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;
|
|
})(); |