update: add scripts -> taskCalendar modified and QuickAdd
This commit is contained in:
85
_Scripts/passionsync.js
Normal file
85
_Scripts/passionsync.js
Normal file
@@ -0,0 +1,85 @@
|
||||
module.exports = {
|
||||
SelectFromAllTasks: SelectFromAllTasks,
|
||||
GetAllTasksFromProject: GetAllTasksFromProject,
|
||||
GetAllTasksFromSection: GetAllTasksFromSection,
|
||||
};
|
||||
|
||||
const getTodoistPluginApi = (t) => t.plugins.plugins["todoist-sync-plugin"].api;
|
||||
async function SelectFromAllTasks(t) {
|
||||
const s = await getAllTasks(t);
|
||||
if (0 === s.length) return void new Notice("No tasks.");
|
||||
const e = await selectTasks(t, s);
|
||||
return await closeSelectedTasks(t.app, e), formatTasksToTasksPluginTask(e);
|
||||
}
|
||||
async function GetAllTasksFromProject(t) {
|
||||
const [s, e] = await Promise.all([getAllTasks(t), getProjects(t.app)]),
|
||||
a = await t.quickAddApi.suggester(
|
||||
(t) => (
|
||||
(t.tasks = s.filter((s) => s.projectID === t.id)),
|
||||
`${t.name} (${t.tasks.length})`
|
||||
),
|
||||
e
|
||||
);
|
||||
if (a) {
|
||||
if (0 !== a.tasks.length)
|
||||
return (
|
||||
new Notice(`Added ${a.tasks.length} tasks from '${a.name}'.`),
|
||||
await closeSelectedTasks(t.app, a.tasks),
|
||||
formatTasksToTasksPluginTask(a.tasks)
|
||||
);
|
||||
new Notice(`No tasks in '${a.name}'.`);
|
||||
}
|
||||
}
|
||||
async function GetAllTasksFromSection(t) {
|
||||
const [s, e, a] = await Promise.all([
|
||||
getProjects(t.app),
|
||||
getSections(t.app),
|
||||
getAllTasks(t),
|
||||
]),
|
||||
n = await t.quickAddApi.suggester((t) => {
|
||||
const e = s.find((s) => s.id === t.project_id);
|
||||
return (
|
||||
(t.tasks = a.filter((s) => s.sectionID === t.id)),
|
||||
`${e.name} > ${t.name} (${t.tasks.length})`
|
||||
);
|
||||
}, e);
|
||||
if (0 !== n.tasks.length)
|
||||
return (
|
||||
new Notice(`Added ${n.tasks.length} tasks from '${n.name}'.`),
|
||||
await closeSelectedTasks(n.tasks),
|
||||
formatTasksToTasksPluginTask(n.tasks)
|
||||
);
|
||||
new Notice(`No tasks in '${n.name}'.`);
|
||||
}
|
||||
async function getAllTasks(t) {
|
||||
const s = getTodoistPluginApi(t.app),
|
||||
{ ok: e } = await s.getTasks();
|
||||
return e;
|
||||
}
|
||||
async function selectTasks(t, s) {
|
||||
const e = await t.quickAddApi.checkboxPrompt(s.map((t) => t.content));
|
||||
return s.filter((t) => e.some((s) => s.contains(t.content)));
|
||||
}
|
||||
async function closeSelectedTasks(t, s) {
|
||||
const e = getTodoistPluginApi(t);
|
||||
s.forEach(async (t) => await e.closeTask(t.id));
|
||||
}
|
||||
function formatTasksToTasksPluginTask(t) {
|
||||
const todayDate = moment().format("YYYY-MM-DD HH:mm:ss");
|
||||
return t.map((t) => `- [ ] ${t.content}`).join("\n");
|
||||
}
|
||||
async function getTasksGroupedByProject(t) {
|
||||
const s = getTodoistPluginApi(t),
|
||||
{ ok: e } = await s.getTasksGroupedByProject();
|
||||
return e;
|
||||
}
|
||||
async function getProjects(t) {
|
||||
const s = getTodoistPluginApi(t),
|
||||
{ ok: e } = await s.getProjects();
|
||||
return e;
|
||||
}
|
||||
async function getSections(t) {
|
||||
const s = getTodoistPluginApi(t),
|
||||
{ ok: e } = await s.getSections();
|
||||
return e;
|
||||
}
|
||||
Reference in New Issue
Block a user