// 常用的工具类
function ZkUtil(){
}
//数据缓存工具类
var ZkDataCache=function(){
this.updateMap= new Map();
this.insertSet=new Set();
this.deleteSet=new Set();
//添加修改项
this.addUpdate=function(data){
//先判断这个元素是否存在与新增或者删除项中,若不存在在 修改项进行缓存
if(this.insertSet.has(data)||this.deleteSet.has(data)){
return;
}
this.updateMap.set(data,JSON.stringify(data));
};
//添加新增项
this.addInsert=function(data){
this.insertSet.add(data);
}
//添加新增项(数组,多项)
this.addInsertArray=function(array){
for(var i in array){
this.addInsert(array[i]);
}
}
//添加删除项
this.addDelete=function(data){
//判断元素是否存在于新增项中,若存在新增项中,则删除新增项中对应条目,删除项也不缓存,直接返回
if(this.insertSet.has(data)){
this.insertSet.delete(data);
return;
}
//判断是否修改项中,如果存在则要把他们删除,只在删除项中缓存
if(this.updateMap.has(data)){
this.updateMap.delete(data);
}
this.deleteSet.add(data);
}
//添加删除项(数组,多项)
this.addDeleteArray = function(array) {
for (var i in array) {
this.addDelete(array[i]);
}
};
//获取修改项
this.getUpdate = function() {
var resultArray = [];
for (const entry of this.updateMap) {
var keyJson = JSON.stringify(entry[0]);
var valueJson = entry[1];
if (keyJson != valueJson) {
resultArray.push(entry[0]);
}
}
return resultArray;
};
//获取新增项
this.getInsert = function(){
return Array.from(this.insertSet);
};
//获取删除项
this.getDelete=function(){
return Array.from(this.deleteSet)
};
// 清除所有值
this.clearAll=function(){
this.updateMap= new Map();
this.insertSet=new Set();
this.deleteSet=new Set();
}
}