Bluemo's Brain

Search

Search IconIcon to open search

ScrapboxHomeUtil

Last updated Dec 16, 2022 Edit Source

    • [/akitok/CSSいじり 0212]( https://scrapbox.io/akitok/CSSいじり 0212)のやつ

      • scrapboxを生活のホームページにしたい
        
      • 	タスクがページ遷移しなくても確認できるようにしたい
        
      • 	日付とかどーんと出したい
        
      • その日の予定が全部見れるようにしたい
        
    • preact">[React]をScrapbox Userscriptで試しに使って見たかったので、ちょうど良いタスク

      • 🙏🙏axokxi.icon
        • pin-diary-3、日記に戻して使うのが合理的だなーとずっと思ってたけど週間ビューの方がタスク入れやすい & 毎日1ページ増えるとちょっと一覧で荒れて見えそう なので我儘許してください🙏
          • いまは手動で今日の予定を一番上に持ってきて一覧ビューで見えるようにしてる
    • とりあえず今の/akitokみたいな感じのを再現目指す

    • トップページ表示検知はpin-diary-3を参考にできそう

      • pin-diary-4以降は仕組み違うので参考にできなさそう
      • タイマーで繰り返し処理しているのは、ページカードに変更があった時に対応するためか
        • 大変だな
      • 今回はしなくて良さそう?
    • preactを使おう

    • 先にシンプルなdom追加やってからだな

    • scrapbox.layoutによって表示非表示のロジック作ってたけど、要らなそう

      • .app .container [2]がトップ以外だとhiddenなので、そこに突っ込めばOK
    • renderされるタイミングがいまいち掴めないな〜

      • 仕組みもわからん
      • divをrenderすると元々あったdivが消し飛ぶの意味わからないな
        • たぶん差分が誤認識されてるんだろうな

    style.css

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    .util {
    	background-color: gray;
    	height: 50px;
    	width: 100%;
    }
    .util .sub-title {
    	color: white;
      	font-size: 10px;
    }
    .util .title {
    	color: white;
    	font-size: 20px;
    }
    

    テスト用task source

    script.js

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    import {html, render} from 'https://scrapbox.io/api/code/programming-notes/htm@3.0.4%2Fpreact/script.js';
    
    const projectName = "blu3mo"
    const taskSource = "task source" //後で動的に値返す関数にする 
    
    const getSentencesInPage = async (projectName, pageName) => {
    	const response = await fetch(`https://scrapbox.io/api/pages/${projectName}/${pageName}/text`)
        const text = await response.text();
        return text.split("\n");
    }
    
    const getTasksInPage = async (projectName, pageName) => {
    	const sentences = getSentencesInPage(projectName, pageName);
    	sentences.
    }
    
    getTasks(projectName, taskSource)
    	.then(text => {
    		console.log("test");
    		console.log(text);
    	})
    
    let isListPage = true;
    const Util = (props) => {
    	return (html`
    		<Fragment>
    			<div className="util">
    				<p className="sub-title">Tuesday 2022</p>
    				<p className="title">Feb 26</p>
    			</div>
    		</Fragment>
    	`)
    }
    
    
    handleLayoutChange()
    scrapbox.on('layout:changed', handleLayoutChange)
    
    function handleLayoutChange () {
        const app = document.querySelectorAll('.app .container')[2];
    	isListPage = (scrapbox.Layout === "list");
    	render(html`<${Util} isListPage=${isListPage}/>`, app);
    	console.log(isListPage)
    }
    (() => {
        
    })()