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.
114 lines
2.5 KiB
114 lines
2.5 KiB
4 years ago
|
module.exports = () => {
|
||
|
var o = {
|
||
|
search: (s, w, zone) => {
|
||
|
let res = [];
|
||
|
let ban = ora(`Searching ${w}s...`).start();
|
||
|
for(const cla of zone){
|
||
|
for(const i of cla){
|
||
|
let pos = i[w].indexOf(s);
|
||
|
if(pos != -1 && res.indexOf(i[w]) == -1){
|
||
|
res.push(i[w]);
|
||
|
ban.info(i[w].substring(0, pos) + String(s).yellow + i[w].substring(pos + String(s).length) + ' ' + ((typeof i.name == "undefined")?'':i.name) + ((typeof i.content == "undefined")?'':i.content));
|
||
|
ban = new ora(`Searching ${w}s...`).start();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
ban.succeed('Search finished!! Found '+res.length+' results!!');
|
||
|
return res;
|
||
|
},
|
||
|
byIDs: (id, arr) => arr.filter(item => id.indexOf(item.id) >= 0),
|
||
|
updateTd: (id, w, s) => {
|
||
|
let d = data.td();
|
||
|
for(let i = 0; i < d.length; i ++){
|
||
|
if(d[i].id == id){
|
||
|
d[i][w] = s;
|
||
|
d[i]['lastOperateTime'] = (new Date()).valueOf();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
data.td(d);
|
||
|
},
|
||
|
mergeArray: (a, b) => Array.from(new Set(a.concat(b))),
|
||
|
merge: (a, b) => {
|
||
|
let td = [];
|
||
|
|
||
|
for(let td1 of a.td){
|
||
|
for(let td2 of b.td){
|
||
|
|
||
|
if(td1.id == td2.id && !td.some(item => item.id == td2.id)){
|
||
|
let obj = {};
|
||
|
let logs = [];
|
||
|
for(let l2 of td2.logs){
|
||
|
if(!logs.some(item => item.id == l2.id)){
|
||
|
let l1 = td1.logs.filter(item => item.id == l2.id);
|
||
|
if(l1.length){
|
||
|
l1 = l1[0];
|
||
|
if(l1.lastOperateTime < l2.lastOperateTime){
|
||
|
logs.push(l2);
|
||
|
}else{
|
||
|
logs.push(l1);
|
||
|
}
|
||
|
}else{
|
||
|
logs.push(l2);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for(let l1 of td1.logs){
|
||
|
if(!logs.some(item => item.id == l1.id)){
|
||
|
let l2 = td2.logs.filter(item => item.id == l1.id);
|
||
|
if(l2.length){
|
||
|
l2 = l2[0];
|
||
|
if(l2.lastOperateTime < l1.lastOperateTime){
|
||
|
logs.push(l1);
|
||
|
}else{
|
||
|
logs.push(l2);
|
||
|
}
|
||
|
}else{
|
||
|
logs.push(l1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(td1.lastOperateTime < td2.lastOperateTime){
|
||
|
obj = td2;
|
||
|
}else{
|
||
|
obj = td1;
|
||
|
}
|
||
|
obj.logs = logs;
|
||
|
td.push(obj);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
for(let td1 of a.td){
|
||
|
if(!td.some(item => item.id == td1.id)){
|
||
|
td.push(td1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for(let td2 of b.td){
|
||
|
if(!td.some(item => item.id == td2.id)){
|
||
|
td.push(td2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/* ddl */
|
||
|
//console.log(td);
|
||
|
return {
|
||
|
'td': td,
|
||
|
'ddl': []
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const colors = require('colors');
|
||
|
const ora = require('ora');
|
||
|
var data = require(__dirname + '/../utilities/data.js')();
|
||
|
|
||
|
return o;
|
||
|
}
|