58 lines
1.4 KiB
JavaScript
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;
|
|
})(); |