125 lines
2.8 KiB
JavaScript
125 lines
2.8 KiB
JavaScript
/*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);
|
||
}
|
||
}
|
||
|
||
}); |