You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.8 KiB
125 lines
2.8 KiB
/*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);
|
|
}
|
|
}
|
|
|
|
}); |