takker99/takker-scheduler/mobile
任意のprojectでいつでもタスクを追加できるようにしておきたいので
2022-02-22 使わなくなったので外した
バグとか
2023-12-25
16:23:05 間違えてformatまで消してしまっていたのを復元
2023-12-18
12:33:37 計画作成系コマンドを消す
2022-05-09
08:10:32 getLineRange()の定義が抜けてた
2022-04-20
code:script.ts
import {
addTask, startTask, endTask, posterioriEndTask,
walkDay, moveToday, toggleTask,
transport, createTask, toString, format
} from "../takker99%2Ftakker-scheduler/deps.ts";
import {
parse,
toTaskLine,
} from "../takker99%2Ftakker-scheduler/workflow.ts";
import {
caret, getLines, replaceLines, openInTheSameTab,
} from "../scrapbox-userscript-std/dom.ts";
import { isMobile } from "../mobile版scrapboxの判定/script.js";
import type { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts";
declare const scrapbox: Scrapbox;
if (isMobile()) {
const id = "task";
scrapbox.PageMenu.addMenu({
title: id,
});
scrapbox.PageMenu.addMenu({
title: 'Toggle task',
onClick: toggleTask,
});
scrapbox.PageMenu(id).addItem({
title: 'Add task',
onClick: addTask,
});
scrapbox.PageMenu(id).addItem({
title: 'Start task',
onClick: startTask,
});
scrapbox.PageMenu(id).addItem({
title: 'End task',
onClick: endTask,
});
scrapbox.PageMenu(id).addItem({
title: 'Posteriori end task',
onClick: posterioriEndTask,
});
scrapbox.PageMenu(id).addItem({
title: 'Book starting',
onClick: async () => {
const text = getLines().slice(start, end + 1).map((line) => {
const text = line.text;
const link = line.text.match(/\[(^\]+)\]/)?.1; if (!link) return text;
const result = parse(link);
if (!result || !result.ok) return text;
const task = result.value;
if (task.freshness?.status === "done") return text;
const taskLine = toTaskLine(task);
taskLine.title = [${link}];
if (!taskLine) return text;
return toString(taskLine);
}).join("\n");
await replaceLines(start, end, text);
await createTask();
},
});
scrapbox.PageMenu(id).addItem({
title: 'Walk a day',
onClick: () => walkDay(),
});
scrapbox.PageMenu(id).addItem({
title: 'Move today',
onClick: () => moveToday(),
});
scrapbox.PageMenu(id).addItem({
title: 'Format',
onClick: () => format(scrapbox.Project.name, scrapbox.Page.title!),
});
scrapbox.PageMenu(id).addItem({
title: 'Transport',
onClick: () => transport({
from: {
project: scrapbox.Project.name,
title: scrapbox.Page.title!,
},
to: "takker-memex",
}),
});
scrapbox.PageMenu(id).addItem({
title: 'Sync',
onClick: () => window.open(
),
});
}
/** 選択範囲に含まれる行かカーソルがいる行を返す
*
*/
const { selectionRange: { start, end }, selectedText, position } = caret();
return selectedText === ""
: start.line > end.line
};