generated at
howm のリマインダの inline 実装
howmのリマインダの記号を認識して、すべてのページに含まれるリマインダ行を表示する

inajobさんが作ったinline上のタスクリストを見つけたtakker
赤が期限切れのTODOかな
1以上で赤くなる、浮遊は0までしか上がってこないので、こうならないinajob
QFixHowmとおんなじ仕様takker
やるべきことと気にかけたいものとで色分けしているということかtakker
作った時は基本は赤が出てこないように運用できると思っていたwinajob
赤にずっといるものは、こっそり浮遊に切り替えたりしている
takker
黄色がhowmのリマインダの保留タスクのうち、当日(↑スクショなら2023-09-11)浮遊タイミングだったタスク
ではなく、スコアが0のタスクかな?
白TODOはまだ底に沈んでいるTODO
白浮遊と灰浮遊の違いがわからない。なんだろう?
スコアが-10以下は非表示にしようかな?どうしようかな?と思ってとりあえず色を付けて様子を見ているinajob
あれ、値が大きい方が上位でしたっけ?takker
少なくとも自分の実装はそうしてます。本家は知らないですinajob
なるほどですtakker
本家は値が小さい方が上位っぽいです
QFixHowmは値が大きい方が上位
+0 って意味あるのかな?デフォルトの + (= +7 )でいいと思うけど
そんな気がする、雰囲気でやっているinajob
ぜんぜんわからない 俺たちは雰囲気でタスク管理しているtakker
リンククリックで該当項目にジャンプ
スマホだと位置がずれるっぽい
行にフォーカスする機能はないので単にSPAでスクロール位置が保存されているだけですねinajob
見つかったinajob
scheduleブロック記法で、これが展開されるので、どこでもこれを書くと出てきます
今は使っていないけど
一時期日記ページに毎回書いていた
今はサイドペインができたので、Dashboardをサイドペインに出すようにしている
リンクの横の * をクリックすると右ペインに表示できる(便利)
これそういう意味だったのかtakker
締め切り、覚書、全く使っていないな
趣味タスクしか無いから締め切りないし
howm作者によると、「todo」や「〆切」は本当に必要なものだけそれ以外は「覚書」で沈むにまかせる (どうせ全部はできません :p)https://howm.osdn.jp/README-j.html#label-5 だそうですtakker
自分は浮遊にして放置派inajob

スコア計算実装
(render.mjsはhttp://inline.inajob.tk/web/static/js/main.d93c876e.chunk.js のソースマップから復元したファイル。アクセスしても404 not foundとなる)
優先度最低は -9999 で擬似的に再現している
生HTMLを作ってて恐れ入った
あの……react……
うごけば良いinajob
この時はReactよくわかってなくて、全体的に生のHTMLを作ってます・・
既存のライブラリとかを使うときも出力がHTMLの物とかが多くて、HTMLのレンダリングは自前という方針でやっていた
行やブロックごとにReactでキャッシュさせているので、無意味ということはない
シンタックスハイライトとか
うごけば良い大事takker
コンソール見たら invalid schedule [2023-05-18ポッドキャストテスト] が出力されてた
おや、消しておこう doneinajob
単に対象行を消しただけ、パーサーを賢くすれば、そもそもスケジュールと認識しないようにもできそう
serverでパースしたスケジュールを、clientで更にパースしてるみたい?takker
js
case "schedule": ret += "<span class='mode'>&gt;&gt; schedule</span>"; global.sendSearchSchedule().then((resp) => { resp.json().then((o) => { let body = []; body.push("<span class='mode'>&gt;&gt; schedule</span>") o.lines.forEach((v)=>{ let m = v.text.match(/^\[(\d{4})-(\d{2})-(\d{2})\](([@.\-~+!])(\d+|)|)/)
server側で雑にパースして、clientで正確にパースしているのかな
バグ発見
line 287
js
case "-": // note v.label = "覚書"; if(!number){ number = 7; } // その日に優先度が0となり X日かけて沈んでいく if(today.getTime() < date.getTime()){ // その日が来るまで現れない v.priority = -9999; }else{ // TODO: 指定日以降は現れない v.priority = Math.floor((today.getTime() - date.getTime())/oneday); } break;
-{number} number 日で1沈む識別子のはず
v.priority = Math.floor((today.getTime() - date.getTime())/oneday); だと number に関係なく沈み具合が決まってしまう
v.priority = -Math.floor((today.getTime() - date.getTime())/number); で直るかな?
ん?バグじゃなくて未実装なだけか
// TODO: 指定日以降は現れないとある
てかよく見たら v.priority = Math.floor((today.getTime() - date.getTime())/oneday); は他の処理をそのままコピペしただけか
+ もなにか変な気がする
JavaScriptはこうやって人に見られてしまうのが面白いinajob
そして、よく考えたらinline全体は実はソースを公開しているので、URL貼っておきます
リポジトリ名からしてやる気を感じない
scheduleのパーサー(サーバ側)
セキュリティ上まずいところがあったら、突かずにそっと教えてね
公開してたの知らなかったtakker
repo名がinlineと関係なかったから気づかなかった

howmのリマインダの保留タスクの優先度をある一定以上より上がらないように実装したinajob
ToDoや締め切りが浮遊タスクに紛れ込んでわかりにくくなる
今のところいい感じ