見出し画像

Vuejsでマンダラチャート作ってみた

Vtuberとして目標をちゃんと決めなきゃいけないなぁと思ってたところ、マンダラチャート(マンダラート)なる方法を発見したので、せっかくだしVueで作ってみようかと思って作ってみました。マンダラチャートで作れますので、ぜひ使ってみてください。

ツールは以下の通りです。自分の脳に負担がかからないようなツールを選んでます。
・vuejs
・buefy
・typescript
・parcel
・pug
・stylus

ビルドツールとしてparcelを使いました。勝手に依存するライブラリをインストールしてくれるので、控えめに言って最高です。htmlは頭がこんがらがるので、すべてpugで書いてます。可読性かなり上がると思います。vueのtemplateとしても使えます。sylusはsassみたいなやつですが、可読性がいいです。もちろんvueでも使えます。

できたマンダラチャートは画像で保存できるようにするためhtml2canvasを使いました。画像が表示されなくなる現象が起きたんですが、原因は幅の設定をvminでやってたことでした。vwだとうまくいきますので、参考になれば。

最後に核になる部分のコードをのせておきます。vueでpugはほんとおすすめです!

    table#mandara(style="border: 1px solid black")
     tr(v-for="i in [0, 1, 2]")
       td(v-for="j in [0, 1, 2]")
         table(border=1 style="border-collapse: collapse")
           tr(v-for="k in [0, 1, 2]")
             td(v-for="l in [0, 1, 2]")
               div.mandara(@click="clicked(9 * (3 * i + j) +  3 * k + l, $event)" :i="3 * i + j", :j="3 * k + l")
                 b-field(v-if="toggle[9 * (3 * i + j) + 3 * k + l]")
                   b-input(@keydown.enter.native="submit(3 * i + j, 3 * k + l, $event)" @keydown.enter.shift.native="" :va
lue="text[9 * (3 * i + j) + 3 * k + l]" type="textarea")
                 span.wrap(v-else) {{text[9 * (3 * i + j) + 3 * k + l]}}

この記事が気に入ったらサポートをしてみませんか?