Files
Chamilo/plugin/mindmap/edit-mindmap/vendor/js/MapsManager.js
2025-04-10 12:36:07 +02:00

125 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*global kampfer*/
kampfer.require('Class');
kampfer.require('store');
kampfer.provide('mindMap.MapsManager');
/*
* 负责维护localStorage
* MapsManager提供的查询方法返回的都是对数据的引用因此它们都是只读的。
* 绝对不要直接对它们进行写操作。
* localStorage目前维护两部分内容:
* 1. map的信息
* 2. clipboard的信息
*/
kampfer.mindMap.MapsManager = kampfer.Class.extend({
initializer : function(appName) {
if(appName) {
this._appName = appName;
}
},
_appName : 'mindMap',
getAppName : function() {
return this._appName;
},
//从localStorage中读取mindMap保存的数据。
//如果没有任何数据,那么就创建一个新的空的数据对象,并将它写入 localStorage。
getMapStorage : function() {
var mapStore = kampfer.store.get(this._appName);
if(!mapStore) {
mapStore = {};
mapStore.maps = {};
mapStore.maps._count = 0;
kampfer.store.set(this._appName, mapStore);
}
return mapStore;
},
getMapData : function(name) {
var mapStore = this.getMapStorage();
if(name) {
return mapStore.maps[name];
}
},
//只接受object作为参数
saveMapToLocalStorage : function(data) {
if( kampfer.type(data) === 'object' ) {
var mapStorage = this.getMapStorage(),
name = data.name;
if( !(name in mapStorage.maps) ) {
mapStorage.maps._count++;
}
mapStorage.maps[name] = data;
kampfer.store.set(this._appName, mapStorage);
}
},
getMapCount : function() {
var mapStorage = this.getMapStorage();
return mapStorage.maps._count;
},
//返回包含所有map名字的数组
getMapList : function() {
var mapStorage = this.getMapStorage();
if(mapStorage.maps._count > 0) {
var ret = [];
for(var map in mapStorage.maps) {
if( map !== '_count') {
ret.push(mapStorage.maps[map]);
}
}
return ret;
}
},
hasMap : function(mapName) {
var mapStore = kampfer.store.get(this._appName);
if(mapStore) {
if(mapName in mapStore.maps) {
return true;
}
}
return false;
},
removeMap : function(mapName) {
if( this.hasMap(mapName) ) {
var mapStore = kampfer.store.get(this._appName);
delete mapStore.maps[mapName];
kampfer.store.set(this._appName, mapStore);
}
},
setClipboard : function(data) {
var mapStore = kampfer.store.get(this._appName);
if(mapStore) {
mapStore.clipboard = data;
kampfer.store.set(this._appName, mapStore);
}
},
getClipboard : function() {
var mapStore = kampfer.store.get(this._appName);
if(mapStore && mapStore.clipboard) {
return mapStore.clipboard;
}
},
removeClipboard : function() {
var mapStore = kampfer.store.get(this._appName);
if(mapStore && mapStore.clipboard) {
delete mapStore.clipboard;
kampfer.store.set(this._appName, mapStore);
}
}
});