takker99/takker-scheduler
takker-ScrapSchedulerの実装
scrapboxベタ打ちから、git管理に移行した
これでversion管理が簡単になる
takker99/takker-scheduler
docs
実装
TypeScriptで書いている
開発支援にDenoを用いている
バグ
解決したものはリンクを外す
⬜format()がバグるケースを見つけた
またmakePlan()のページ遷移に失敗した
2022-01-14のページに移らなかった
どこでこけたんだろう?
smartphoneだとエラー内容がわからない……
alert()でエラー内容を表示するようにしてみようかな?
⬜開始日時指定記法の正規表現がURLを誤認識してしまう
⏳同期中にRangeError: Invalid time valueが発生する
実装したいこと
JavaScriptから任意ページのタスクのCRUDをおこなう函数を生やす
とりあえず作成pushTasks()だけ実装した✅pushTasks()を実装す
makePlanの進捗状況をstatus-bar (scrapbox)に表示する
✅format()に読み込み中表示をつけると同じことをする
task portal page (takker-scheduler-3)にある繰り返し設定をいい感じに楽に編集できるようにする
現状の仕組み(JSコードを書き換える)だと全く設定変更を行う気にならない
判断time 2022-01-14の作成時に開始日時を決められるoptionがほしい
⬜開始日時と見積もり時間を簡単に変更したい
予定開始日時と見積もり時間と実績開始日時と実績終了日時とタスク名が同一なら同じタスクだと判定する
タスクの転送機能 (takker99/takker-scheduler)で同一のタスクがあったら、元ページのタスクの削除だけをする、みたいな用途を考えている
これを実装できれば、転送機能などで日刊記録sheetを新規作成したときに、task portal page (takker-scheduler-3)で指定されたタスクを、まだ書き込まれていない分だけ書き込めるようになる
タスクの転送機能 (takker99/takker-scheduler)使用時にカレンダーとの同期とformatを行う
あんまり一緒のコマンドにしたくないな
くみあわせられるようにすればいいだろう
それには、タスクの転送機能 (takker99/takker-scheduler)に、どのページへ転送したかの情報を返してもらう必要がある
見積もり時間のない予定をカレンダーで同期できないtakker.icon
これは失念していた
どうする?
見積もり時間を既定で20分とみなす
これが妥当かな
時間を指定しないイベントとして入れる
でも開始時刻は全部指定してるしなあ……
やり残したタスクを今日にコピーする機能がほしいtakker.icon
takker-schedulerで実装せずに、scrapboxにuserscriptとして直接書いた方がいい?
何でもかんでも実装したら高速でクソアプリになるからな
細かい機能は、小回りの利くuserscriptで直接scrapboxに書いたほうがよさそう
すぐ修正しやすい
そのためには、必要そうなAPIをすべてexportしたJSファイルを用意しなくては
scrapbox-userscript-stdとtakker99/takker-schedulerの全函数
for-takker-memex/script.jsにだけ生やせばいいか
🚧APIだけ提供したい
/motoso/ScrapboxでGTD#61d571e0774b170000dd7ff1
これだいたいできそうだな
2022-02-10
13:07:29 release 0.7.1
13:07:07 release 0.7.0
✅Google Calendarに自動で転記する (takker99/takker-scheduler)部分を新機能としてrelease
ふいー。これで✅lib/をscrapbox-userscript-stdで置き換えるを単独でreleaseできる
13:05:07 release 0.6.2
✅開始日時指定記法の見積時間の書き込みがバグっているを含んだ部分を✅lib/をscrapbox-userscript-stdで置き換えると混ざらないようにするために、別途tagを切ってreleaseした
2022-01-20
11:20:17 release 0.6.0
2022-01-19
/icons/done.iconmobileでjudgeが動作していない
明日調べる
2022-01-20 10:18:06 exportし忘れてただけだった
21:43:05 release 0.5.0
2022-01-17
00:44:11 release 0.2.0
2022-01-06
13:28:40 release 0.1.2
13:28:16 deno-uddでpackageのversion管理を自動化した
2022-01-05
16:53:11 自分のUserScriptに入れ終えた
mobile用の設定はtakker99/takker-scheduler/mobileに書いた
これもgit管理したほうがいいかなあ
16:27:55 release 0.1.0
16:21:31 releaseする
11:45:07 一旦import-devに入れて試してみる
https://scrapbox-bundler.vercel.app/?url=https://scrapbox.io/api/code/takker/takker99%252Ftakker-scheduler/mod.ts&external=/api/code/takker-memex/Google_API_for_Scrapbox/script.js&template=https://scrapbox.io/api/code/takker/takker99%252Ftakker-scheduler/template-test&bundle&minify&sourcemap&output=download&run
code:mod.ts
import {
CLIENT_ID, CLIENT_SECRET,
} from "/api/code/takker-memex/Google_API_for_Scrapbox/script.js";
import { initialize } from "https://pax.deno.dev/takker99/takker-scheduler/api/calendar.ts";
// Google APIの認証情報をセット
const clientId = CLIENT_ID;
const clientSecret = CLIENT_SECRET;
const scopes = ["https://www.googleapis.com/auth/calendar.events"];
initialize({ clientId, clientSecret, });
export * from "https://pax.deno.dev/takker99/takker-scheduler";
code:template-test(txt)
takker-scheduler-min
/takker/takker99/takker-schedulerのbundle済みconde
scrapbox-bundler @URL@を使って生成されました
code:mod.js
@CODE@
12:06:16 手作業でコードをコピーした
昨日ページのインポート機能を使いすぎたので、今日は止めておいた
12:07:07 設定を書く
ScrapBindings-settingsに倣う
12:17:32 できた
12:31:29 ensureArray()の実装ミスってた
やっぱテスト書かなきゃだめか……
13:12:51 format()のテスト
ミスを見つけたのでアルゴリズムを直している
純粋な処理にしたつもりが、window.scrapboxを使ったコードが混ざってしまっていた
14:23:00 テスト書いた
テストを書きながらバグを潰した
結構見つかった
11:44:43 ほぼすべての機能を実装し終えた
予定開始時刻等の調節とタスクの転送機能はコード自体を削った
すぐに実装できそうにないので
後ほど追加実装する
型エラーなども全部解消した
15:04:45 機能をだいたい確認できた
タスクの作成・開始・終了は問題なし
ソートも問題ない
通信の分だけ少しラグがあるけど、以前よりも圧倒的に速く終わる
必要なところしか更新しないからテロメアも以前に比べて汚れが抑えられている
バグって挿入できていなかった見出しも挿入できるようになって満足
sort中であることをstatus-bar (scrapbox)に表示するとより親切かも
calendarの同期は認証情報を入れるのを忘れてた
15:27:45 入れて正常に動作することを確認した
日刊記録sheetの作成
15:51:50 moduleは読み込まれるが実行がされていない?
詳しく調べる
minifyすると変数が省略されてdebugしにくい。bundleだけにしよう
16:06:34 原因がわかった
task line生成関数の条件を変えてしまっていた
非同期函数から同期函数にしていた
あとTaskの定義も若干違い
baseDateをbaseに変えてた
durationをObjectからnumberにした
まずは非同期函数でも受け取れるようにしよう
16:19:28 上記を解消したら問題なく生成された
大丈夫そう
2021-12-07
21:07:55 これ以上refactoringするには、scrapbox-headless-scriptの機能強化が必要だな
別ページに書き込む機能を使いたい
code:deps.ts
export * from "https://raw.githubusercontent.com/takker99/takker-scheduler/0.7.8/mod.ts";
export * from "https://raw.githubusercontent.com/takker99/takker-scheduler/0.7.8/task.ts";
code:diary.ts
export * from "https://raw.githubusercontent.com/takker99/takker-scheduler/0.7.8/diary.ts";
code:plan.ts
export * from "https://raw.githubusercontent.com/takker99/takker-scheduler/0.7.8/plan.ts";
#2022-12-24 16:17:13
#2022-11-29 12:57:28 diary.tsをexport
#2022-04-06 18:17:51
#2022-03-12 22:47:30
#2022-03-12 21:16:57 型定義もexportする
#2022-02-17 18:00:15 update ↑のdeps.ts
#2022-02-16 15:10:39
#2022-02-10 12:52:33
#2022-01-30 07:19:26
#2022-01-22 15:45:57
#2022-01-21 06:25:37
#2022-01-20 11:19:03
#2022-01-19 15:50:25
#2022-01-18 13:50:37
#2022-01-17 00:44:27
#2022-01-16 18:17:30
#2022-01-14 07:51:07
#2022-01-12 22:10:14
#2022-01-10 17:28:48
#2022-01-08 18:09:11
#2022-01-07 14:57:01
#2022-01-06 03:21:38
#2022-01-05 11:44:41
#2021-12-18
#2021-12-17 20:26:40
#2021-12-07 21:08:58