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.
113 lines
2.5 KiB
113 lines
2.5 KiB
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; |
|
}
|
|
|