RoutesMaker/Public/ecma/Managers/LayersManager.ecma.js

58 lines
1.4 KiB
JavaScript

"use strict";
import {LayerModel} from "../Models/LayerModel.ecma.js";
import {Utils} from "../Utils/Utils.ecma.js";
export const LayersManager = (function(){
const LayersManager = function(routes_maker){
const layers = {};
this.get = key => layers[key = Utils.to_key(key)] ? layers[key] : null;
this.add = (name, data, key = null) => {
let layer = null;
(key || (key = Utils.to_key(name))) &&
!layers[key] &&
(layer = layers[key] = new LayerModel(routes_maker, name, key, data));
return layer;
};
this.remove = key => {
if(layers[key = Utils.to_key(key)])
delete layers[key];
};
this.get_data = () => Object.keys(layers).reduce((dictionary, key) => {
dictionary[key] = [layers[key].name, layers[key].dots.map(dot => [dot.longitude, dot.latitude])];
return dictionary;
}, {});
this.select = name => {
for(const key in layers){
const ok = key == name;
layers[key].dots.forEach(dot => {
dot.selected(ok);
});
};
};
this.visible = (name, ok) => {
layers[name].dots.forEach(dot => {
dot.visible(ok);
});
};
};
return LayersManager;
})();