mirror of https://github.com/IoTcat/todo-ddl.git
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.
244 lines
6.8 KiB
244 lines
6.8 KiB
module.exports = () => { |
|
var o = { |
|
__: { |
|
id: (aid, zone) => { |
|
const ids = find.search(aid, 'id', zone); |
|
if(zone.length > 1){ |
|
return find.byIDs(ids, data.td()); |
|
} |
|
return find.byIDs(ids, zone[0]); |
|
}, |
|
name: (aname, zone) => { |
|
const names = find.search(aname, 'name', zone); |
|
return find.byIDs(names); |
|
}, |
|
getLogs: id => data.td().filter(item => item.id == id)[0].logs.filter(item2 => !item2.isDel), |
|
getAllLogs: id => data.td().filter(item => item.id == id)[0].logs, |
|
resetLog: id => { |
|
if(id == data.log()) { |
|
data.log('null'); |
|
} |
|
}, |
|
addLog: (id, content) => { |
|
let logs = o.__.getAllLogs(id); |
|
logs.push({ |
|
'id': o.__.generateID(16), |
|
'content': content, |
|
createTime: (new Date()).valueOf(), |
|
lastOperateTime: (new Date()).valueOf(), |
|
isDel: false |
|
}); |
|
find.updateTd(id, 'logs', logs); |
|
}, |
|
rmLog: (id, lid) => { |
|
let logs = o.__.getAllLogs(id); |
|
for(let i of logs){ |
|
if(i.id == lid){ |
|
i.isDel = true; |
|
break; |
|
} |
|
} |
|
find.updateTd(id, 'logs', logs); |
|
}, |
|
getAllClass: (zone) => { |
|
let arr = []; |
|
for(const cla of zone){ |
|
for(const i of cla){ |
|
if(arr.indexOf(i.class) != -1){ |
|
arr.push(i.class); |
|
} |
|
} |
|
} |
|
return arr; |
|
}, |
|
parseTime: t => { |
|
if(!t){ |
|
return 'null'; |
|
} |
|
const st = new Date(t); |
|
return `${st.getFullYear()}-${st.getMonth()+1}-${st.getDate()} ${st.getHours()}:${st.getMinutes()}:${st.getSeconds()}`; |
|
}, |
|
generateID: (l) => md5((new Date()).valueOf()).substring(0, l), |
|
show: arr => { |
|
let configInfo = new table({ |
|
head: ['id', 'class', 'name', 'createTime', 'todoTime', 'endTime'] |
|
}); |
|
for(const i of arr){ |
|
configInfo.push([i.id, i.class, i.name, o.__.parseTime(i.createTime), o.__.parseTime(i.todoTime), o.__.parseTime(i.endTime)]); |
|
} |
|
console.log(configInfo.toString()); |
|
}, |
|
showLogs: arr => { |
|
let configInfo = new table({ |
|
head: ['id', 'content', 'createTime'] |
|
}); |
|
for(const i of arr){ |
|
configInfo.push([i.id, i.content, o.__.parseTime(i.createTime)]); |
|
} |
|
console.log(configInfo.toString()); |
|
} |
|
}, |
|
getAll: () => data.td(), |
|
getAllClass: () => o.__.getAllClass([data.td()]), |
|
getByaID: id => o.__.id(id, [data.td()]), |
|
getByaName: name => o.__.name(name, [data.td()]), |
|
new: (name, cla) => { |
|
let d = data.td(); |
|
if(!cla){ |
|
cla = 'default'; |
|
} |
|
if(!name){ |
|
return 'Name should not be empty!!'; |
|
} |
|
if(name.length > 25){ |
|
return 'Name too Long!!'; |
|
} |
|
d.push({ |
|
id: o.__.generateID(8), |
|
'name': name, |
|
'class': cla, |
|
createTime: (new Date()).valueOf(), |
|
todoTime: null, |
|
endTime: null, |
|
lastOperateTime: (new Date()).valueOf(), |
|
idDel: false, |
|
logs: [{ |
|
id: o.__.generateID(16), |
|
content: 'Todo Item Created!!', |
|
createTime: (new Date()).valueOf(), |
|
lastOperateTime: (new Date()).valueOf() |
|
}] |
|
}); |
|
data.td(d); |
|
return; |
|
}, |
|
rm: aid => { |
|
let items = o.__.id(aid, [o.todo.getAll(), o.task.getAll(), o.history.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to remove?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
find.updateTd(items[0].id, 'isDel', true); |
|
console.log(items[0].id); |
|
o.__.resetLog(items[0].id); |
|
}, |
|
add: aid => { |
|
let items = o.__.id(aid, [o.todo.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to add to task?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
find.updateTd(items[0].id, 'todoTime', (new Date()).valueOf()); |
|
}, |
|
return: aid => { |
|
let items = o.__.id(aid, [o.task.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to return?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
find.updateTd(items[0].id, 'todoTime', null); |
|
o.__.resetLog(items[0].id); |
|
}, |
|
done: aid => { |
|
let items = o.__.id(aid, [o.task.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to finish?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
find.updateTd(items[0].id, 'endTime', (new Date()).valueOf()); |
|
o.__.resetLog(items[0].id); |
|
}, |
|
recover: aid => { |
|
let items = o.__.id(aid, [o.history.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to recover?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
find.updateTd(items[0].id, 'endTime', null); |
|
}, |
|
/* log */ |
|
ll: () => { |
|
if(data.log() == 'null'){ |
|
return 'No Task Pointed!! Please select a task to begin!!'; |
|
} |
|
let logs = o.__.getLogs(data.log()); |
|
console.log('At task ' + data.log() + ' ' + o.__.id(data.log(), [data.td()])[0].name); |
|
o.__.showLogs(logs); |
|
}, |
|
select: aid => { |
|
let items = o.__.id(aid, [o.task.getAll()]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to add to task?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
data.log(items[0].id); |
|
console.log(items[0].id); |
|
}, |
|
log: content => { |
|
if(data.log() == "null"){ |
|
return 'No Task Pointed!! Please select a task to begin!!'; |
|
} |
|
o.__.addLog(data.log(), content); |
|
}, |
|
rml: aid => { |
|
if(data.log() == "null"){ |
|
return 'No Task Pointed!! Please select a task to begin!!'; |
|
} |
|
let items = o.__.id(aid, [o.__.id(data.log(), [data.td()])[0].logs]); |
|
if(items.length > 1){ |
|
return 'Which id do you want to add to task?'; |
|
} |
|
if(items.length <= 0){ |
|
return 'Not found!!'; |
|
} |
|
o.__.rmLog(data.log(), items[0].id); |
|
console.log(items[0].id); |
|
}, |
|
/* sub */ |
|
todo: { |
|
getAll: () => data.td().filter(item => !item.isDel && item.todoTime == null), |
|
getByaID: id => o.__.id(id, [o.todo.getAll()]), |
|
getByaName: name => o.__.name(name, [o.todo.getAll()]), |
|
getAllClass: () => o.__.getAllClass([o.todo.getAll()]), |
|
}, |
|
task: { |
|
getAll: () => data.td().filter(item => !item.isDel && item.todoTime != null && item.endTime == null), |
|
getByaID: id => o.__.id(id, [o.task.getAll()]), |
|
getByaName: name => o.__.name(name, [o.task.getAll()]), |
|
getAllClass: () => o.__.getAllClass([o.task.getAll()]), |
|
}, |
|
history: { |
|
getAll: () => data.td().filter(item => !item.isDel && item.todoTime != null && item.endTime != null), |
|
getByaID: id => o.__.id(id, [o.history.getAll()]), |
|
getByaName: name => o.__.name(name, [o.history.getAll()]), |
|
getAllClass: () => o.__.getAllClass([o.history.getAll()]), |
|
}, |
|
ash: { |
|
getAll: () => data.td().filter(item => item.isDel), |
|
getByaID: id => o.__.id(id, [o.ash.getAll()]), |
|
getByaName: name => o.__.name(name, [o.ash.getAll()]), |
|
getAllClass: () => o.__.getAllClass([o.ash.getAll()]), |
|
} |
|
} |
|
|
|
var data = require(__dirname + '/../utilities/data.js')(); |
|
const find = require(__dirname + '/../utilities/find.js')(); |
|
const colors = require('colors'); |
|
const boxen = require('boxen'); |
|
const table = require('cli-table'); |
|
const md5 = require('md5'); |
|
|
|
return o; |
|
} |