whychdw
2019-11-13 fb009e25937740f028e8c69ed2ba6e3c8feaf96e
数据对比逻辑修改
6个文件已修改
338 ■■■■■ 已修改文件
platforms/android/app/src/main/assets/www/js/common_functions.js 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platforms/android/app/src/main/assets/www/pages/main/main.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platforms/android/app/src/main/assets/www/pages/main/main.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
www/js/common_functions.js 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
www/pages/main/main.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
www/pages/main/main.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platforms/android/app/src/main/assets/www/js/common_functions.js
@@ -378,107 +378,70 @@
    return str;
}
// 对数据进行处理
var HandleData = function HandleData() {};
// 处理数据
HandleData.prototype.handle = function (oldData, newData, keys) {
    var result = {
        del: [],
        add: []
    };
    // 添加被删除的数据
    this._addDel(result, oldData, newData, keys);
// 对新旧数据进行对比
function HandleData() {};
    // 添加被添加的数据
    this._addAdd(result, oldData, newData, keys);
    // 删除数据
    this._del(result, oldData, keys);
    // 添加数据
    this._add(result, oldData, keys);
};
// 添加被删除的数据
HandleData.prototype._addDel = function (result, oldData, newData, keys) {
    // 遍历old数据并和newData对比,筛选出需要删除的数据
    for (var i = 0; i < oldData.length; i++) {
        var _oldData = oldData[i];
        var exist = this.checkExistObj(_oldData, newData, keys);
        if (!exist) {
            result.del.push(_oldData);
        }
    }
// 对新旧数据进行对比处理
HandleData.prototype.handle = function(oldData, newData, keys) {
    // 剔除旧数据
    this.del(oldData, newData, keys);
    // 添加新数据
    this.add(oldData, newData, keys);
};
// 添加被添加的数据
HandleData.prototype._addAdd = function (result, oldData, newData, keys) {
    // 遍历new数据和old数据对比,筛选出需要添加的数据
    for (var i = 0; i < newData.length; i++) {
        var _newData = newData[i];
        var exist = this.checkExistObj(_newData, oldData, keys);
        if (!exist) {
            result.add.push(_newData);
        }
    }
// 添加新数据
HandleData.prototype.add = function(oldData, newData, keys) {
    // 遍历新数据
    for(var i=0; i<newData.length; i++) {
        var _newData = newData[i];
        var isExist = this.checkObjIsExist(_newData, oldData, keys);
        if(isExist.code == 0) {
            oldData.push(_newData);
        }
    }
};
// 删除数据
HandleData.prototype._del = function (result, oldData, keys) {
    // 删除数据
    for (var i = 0; i < result.del.length; i++) {
        var del = result.del[i];
        for (var k = 0; k < oldData.length; k++) {
            var _oldData = oldData[k];
            var equal = this.checkObjEqual(_oldData, del, keys);
            if (equal || typeof equal == 'undefined') {
                oldData.splice(k, 1);
                break;
            }
        }
    }
// 提出旧数据
HandleData.prototype.del = function(oldData, newData, keys) {
    // 遍历旧数据
    for(var i=0; i<oldData.length; i++) {
        var _oldData = oldData[i];
        var isExist = this.checkObjIsExist(_oldData, newData, keys);
        if(isExist.code == 0) {
            oldData.splice(i, 1);
            i--;
        }
    }
};
// 添加数据
HandleData.prototype._add = function (result, oldData, keys) {
    // 添加数据
    for (var i = 0; i < result.add.length; i++) {
        var add = result.add[i];
        oldData.push(add);
    }
};
// 检测对象是否存在于对象集合
HandleData.prototype.checkExistObj = function (obj, list, keys) {
    var exist = false;
    // 遍历list
    for (var i = 0; i < list.length; i++) {
        var _list = list[i];
        // 遍历键值集合
        var equal = this.checkObjEqual(obj, _list, keys);
        // 对象与对象集合中第i个等效
        if (equal) {
            exist = true;
            break;
        }
    }
    // 返回内容
    return exist;
};
// 检测对象是否等效(返回undefined说明keys存在问题)
HandleData.prototype.checkObjEqual = function (obj1, obj2, keys) {
    // 遍历键值集合
    var equal = true;
    for (var k = 0; k < keys.length; k++) {
        var key = keys[k];
        if (obj1.hasOwnProperty(key) && obj2.hasOwnProperty(key)) {
            if (obj1[key] != obj2[key]) {
                equal = false;
                break;
            }
        } else {
            equal = undefined;
        }
    }
    return equal;
// 检测对象是否存在于对象数组中
HandleData.prototype.checkObjIsExist = function(obj, objs, keys) {
    var result = {
        code: 0,
        index: -1,
        data: {}
    };
    // 遍历数组
    for(var i=0; i<objs.length; i++) {
        var _objs = objs[i];
        var equal = true;        // 相等
        // 遍历keys
        for(var k=0; k<keys.length; k++) {
            var key = keys[k];
            if(_objs[key] == undefined || _objs[key] != obj[key]) {
                equal=false;
                break;
            }
        }
        // 存在属性值一致的对象
        if(equal) {
            result.code = 1;
            result.index = i;
            result.data = _objs;
        }
    }
    return result;
};
platforms/android/app/src/main/assets/www/pages/main/main.html
@@ -75,8 +75,8 @@
                            <div class="span1">退出系统</div>
                        </li>
                        <li class="bui-btn" @click="searchAll">
                            <div class="bui-icon danger round"><i class="iconfont icon-tuichu"></i></div>
                            <div class="span1">退出系统</div>
                            <div class="bui-icon success round"><i class="iconfont icon-quanjucanshushezhi"></i></div>
                            <div class="span1">测试数据</div>
                        </li>  
                    </ul>
                </div>
platforms/android/app/src/main/assets/www/pages/main/main.js
@@ -349,13 +349,8 @@
                            } else {
                                self.tbls.alarm.pageBtn.next = false;
                            }
                            // 添加数据
                            if (self.tbls.alarm.data.length == 0) {
                                self.tbls.alarm.data = data;
                            } else {
                                self.handleData.handle(self.tbls.alarm.data, data, ['num', 'alm_start_time']);
                            }
                            // 更新数据
                            self.handleData.handle(self.tbls.alarm.data, data, ['num', 'alm_start_time', 'MonNum']);
                        }
                    },
                    complete: function complete() {
@@ -584,7 +579,6 @@
            this.setBlock();
            window['searchAllcalljs'] = function(res) {
                bui.alert(res);
            }
        },
www/js/common_functions.js
@@ -378,107 +378,70 @@
    return str;
}
// 对数据进行处理
var HandleData = function HandleData() {};
// 处理数据
HandleData.prototype.handle = function (oldData, newData, keys) {
    var result = {
        del: [],
        add: []
    };
    // 添加被删除的数据
    this._addDel(result, oldData, newData, keys);
// 对新旧数据进行对比
function HandleData() {};
    // 添加被添加的数据
    this._addAdd(result, oldData, newData, keys);
    // 删除数据
    this._del(result, oldData, keys);
    // 添加数据
    this._add(result, oldData, keys);
};
// 添加被删除的数据
HandleData.prototype._addDel = function (result, oldData, newData, keys) {
    // 遍历old数据并和newData对比,筛选出需要删除的数据
    for (var i = 0; i < oldData.length; i++) {
        var _oldData = oldData[i];
        var exist = this.checkExistObj(_oldData, newData, keys);
        if (!exist) {
            result.del.push(_oldData);
        }
    }
// 对新旧数据进行对比处理
HandleData.prototype.handle = function(oldData, newData, keys) {
    // 剔除旧数据
    this.del(oldData, newData, keys);
    // 添加新数据
    this.add(oldData, newData, keys);
};
// 添加被添加的数据
HandleData.prototype._addAdd = function (result, oldData, newData, keys) {
    // 遍历new数据和old数据对比,筛选出需要添加的数据
    for (var i = 0; i < newData.length; i++) {
        var _newData = newData[i];
        var exist = this.checkExistObj(_newData, oldData, keys);
        if (!exist) {
            result.add.push(_newData);
        }
    }
// 添加新数据
HandleData.prototype.add = function(oldData, newData, keys) {
    // 遍历新数据
    for(var i=0; i<newData.length; i++) {
        var _newData = newData[i];
        var isExist = this.checkObjIsExist(_newData, oldData, keys);
        if(isExist.code == 0) {
            oldData.push(_newData);
        }
    }
};
// 删除数据
HandleData.prototype._del = function (result, oldData, keys) {
    // 删除数据
    for (var i = 0; i < result.del.length; i++) {
        var del = result.del[i];
        for (var k = 0; k < oldData.length; k++) {
            var _oldData = oldData[k];
            var equal = this.checkObjEqual(_oldData, del, keys);
            if (equal || typeof equal == 'undefined') {
                oldData.splice(k, 1);
                break;
            }
        }
    }
// 提出旧数据
HandleData.prototype.del = function(oldData, newData, keys) {
    // 遍历旧数据
    for(var i=0; i<oldData.length; i++) {
        var _oldData = oldData[i];
        var isExist = this.checkObjIsExist(_oldData, newData, keys);
        if(isExist.code == 0) {
            oldData.splice(i, 1);
            i--;
        }
    }
};
// 添加数据
HandleData.prototype._add = function (result, oldData, keys) {
    // 添加数据
    for (var i = 0; i < result.add.length; i++) {
        var add = result.add[i];
        oldData.push(add);
    }
};
// 检测对象是否存在于对象集合
HandleData.prototype.checkExistObj = function (obj, list, keys) {
    var exist = false;
    // 遍历list
    for (var i = 0; i < list.length; i++) {
        var _list = list[i];
        // 遍历键值集合
        var equal = this.checkObjEqual(obj, _list, keys);
        // 对象与对象集合中第i个等效
        if (equal) {
            exist = true;
            break;
        }
    }
    // 返回内容
    return exist;
};
// 检测对象是否等效(返回undefined说明keys存在问题)
HandleData.prototype.checkObjEqual = function (obj1, obj2, keys) {
    // 遍历键值集合
    var equal = true;
    for (var k = 0; k < keys.length; k++) {
        var key = keys[k];
        if (obj1.hasOwnProperty(key) && obj2.hasOwnProperty(key)) {
            if (obj1[key] != obj2[key]) {
                equal = false;
                break;
            }
        } else {
            equal = undefined;
        }
    }
    return equal;
// 检测对象是否存在于对象数组中
HandleData.prototype.checkObjIsExist = function(obj, objs, keys) {
    var result = {
        code: 0,
        index: -1,
        data: {}
    };
    // 遍历数组
    for(var i=0; i<objs.length; i++) {
        var _objs = objs[i];
        var equal = true;        // 相等
        // 遍历keys
        for(var k=0; k<keys.length; k++) {
            var key = keys[k];
            if(_objs[key] == undefined || _objs[key] != obj[key]) {
                equal=false;
                break;
            }
        }
        // 存在属性值一致的对象
        if(equal) {
            result.code = 1;
            result.index = i;
            result.data = _objs;
        }
    }
    return result;
};
www/pages/main/main.html
@@ -75,8 +75,8 @@
                            <div class="span1">退出系统</div>
                        </li>
                        <li class="bui-btn" @click="searchAll">
                            <div class="bui-icon danger round"><i class="iconfont icon-tuichu"></i></div>
                            <div class="span1">退出系统</div>
                            <div class="bui-icon success round"><i class="iconfont icon-quanjucanshushezhi"></i></div>
                            <div class="span1">测试数据</div>
                        </li>  
                    </ul>
                </div>
www/pages/main/main.js
@@ -349,13 +349,8 @@
                            } else {
                                self.tbls.alarm.pageBtn.next = false;
                            }
                            // 添加数据
                            if (self.tbls.alarm.data.length == 0) {
                                self.tbls.alarm.data = data;
                            } else {
                                self.handleData.handle(self.tbls.alarm.data, data, ['num', 'alm_start_time']);
                            }
                            // 更新数据
                            self.handleData.handle(self.tbls.alarm.data, data, ['num', 'alm_start_time', 'MonNum']);
                        }
                    },
                    complete: function complete() {
@@ -584,7 +579,6 @@
            this.setBlock();
            window['searchAllcalljs'] = function(res) {
                bui.alert(res);
            }
        },