nadesiko3
Version:
Japanese Programming Language
154 lines (144 loc) • 6.16 kB
HTML
<html data-theme="winter">
<head>
<meta charset="utf-8" />
<title>Node版 なでしこ3 エディタ - ファイル一覧</title>
<!-- daisyUI-->
<link href="daisyui/tailwind.min.css" rel="stylesheet" type="text/css" />
<link href="daisyui/full.css" rel="stylesheet" type="text/css" />
<!-- nako3edit -->
<link href="/html/nako3edit.css" rel="stylesheet" type="text/css" />
<script defer type="text/javascript" src="/release/wnako3.js"></script><!-- edit_plugin.js で自動起動 -->
<script defer type="text/javascript" src="/html/edit_plugin.js"></script>
<script type="なでしこ">
#-----------
APPKEY=""
HREF=WINDOW["location"]["href"]
HREFを表示。
P=HREFをURLパラメータ解析
Pを表示。
APPKEY=P["appkey"]
「APPKEY={APPKEY}」を表示。
ファイル一覧取得処理。
#-----------
# 新規ボタン
NEW_BTN=「#new_btn」のDOM要素取得。
NEW_BTNをクリックした時には
「/html/edit.html?file=new&appkey={APPKEY}」へブラウザ移動。
ここまで。
ADD_BTN=「#add_plugins」のDOM要素取得。
ADD_BTNをクリックした時には
「/html/plugins.html?appkey={APPKEY}」へブラウザ移動。
ここまで。
#-----------
●ファイル一覧取得処理
「/files?appkey={APPKEY}」へAJAX送信した時には
HTML=「」
一覧=対象をJSONデコード
一覧を反復
F=それ
もし、LEFT(F,2)="__"ならば、続ける。
F2 = FをHTML変換
F3 = FをURLエンコード
# 編集可能ファイルか?
Fを「\.(csv|txt|tsv|js|bat|nako3|nako|css|html|htm|)$」で正規表現マッチ。
もし、そうならば
HTML=HTML&「<li>」
HTML=HTML&「<a class="btn btn-sm btn-warning del_btn" data-file="{F3}">削除</a> 」
HTML=HTML&「<a class="btn btn-sm btn-accent run_btn" data-file="{F3}">▶ 実行</a> 」
HTML=HTML&「<a class="btn btn-sm btn-primary" href="/html/edit.html?file={F3}&appkey={APPKEY}">編集</a> 」
HTML=HTML&「<a href="/html/edit.html?file={F3}&appkey={APPKEY}">📝 {F2}</a>」
HTML=HTML&「</li>」
違えば
HTML=HTML&「<li>」
HTML=HTML&「<div style="float:right;">」
HTML=HTML&「<a class="btn btn-sm btn-warning del_btn" data-file="{F3}">削除</a> 」
HTML=HTML&「<a>🌠 {F2}</a>」
HTML=HTML&「</div><div style="clear:both;"></div>」
HTML=HTML&「</li>」
ここまで。
ここまで。
「#files_ul」にHTMLをDOM_HTML設定。
各種ボタンイベント設定。
ここまで。
# ---
AJAX失敗した時には(err)
errをHTML変換してERRに代入。
S=「<p style='color: red;'>サーバとの通信に失敗しました。<br />」&_
「サーバ設定かブラウザの設定を確認してください。</p><p>{ERR}</p>」
「#files_ul」にSをDOM_HTML設定。
ここまで
ここまで。
●各種ボタンイベント設定
「.del_btn」のDOM要素全取得して反復
対象の「onclick」に「ファイル削除処理」をDOMイベント設定。
ここまで。
「.run_btn」のDOM要素全取得して反復
対象の「onclick」に「ファイル実行処理」をDOMイベント設定。
ここまで。
ここまで。
●(Eの)ファイル削除処理とは
FF=E["target"]["dataset"]["file"]
「以下のファイルを削除しても良いですか?{改行}{FF}」と二択。
もし、それがいいえならば戻る。
エラー監視
RES=「/deletefile?appkey={APPKEY}&file={FF}」からAJAX_JSON取得。
エラーならば
「エラー」と言う。
ここまで。
もし、RES="ok"ならば、
「削除しました」と言う。
違えば
「失敗しました」と言う。
ここまで。
「/html/files.html?appkey={APPKEY}」にブラウザ移動。
ここまで。
●(Eの)ファイル実行処理とは
FF=E["target"]["dataset"]["file"]
RES=「/run_direct?appkey={APPKEY}&file={FF}」からAJAXテキスト取得。
「RUN: {FF}」を表示。
RES_HTML = RESをHTML変換
「#stdout」にRES_HTMLをHTML設定。
ここまで。
#-----------
</script>
</head>
<body>
<div class="navbar bg-base-100">
<div class="dropdown">
<label tabindex="0" class="btn btn-ghost btn-circle">
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h7" /></svg>
</label>
<ul tabindex="0" class="menu menu-compact dropdown-content mt-3 p-2 shadow bg-base-100 rounded-box w-52">
<li><label for="my-modal-desc" class="modal-button">このエディタについて</label></li>
</ul>
</div>
<div class="flex-1">
<a class="btn btn-ghost normal-case text-xl">Node版 なでしこ3 エディタ</a>
</div>
</div>
<div id="filesbox">
<div class="menu-box">
<a class="btn btn-info" id="new_btn">→ファイルの新規作成</a>
<a class="btn btn-info" id="add_plugins">🔌プラグインの追加</a>
</div>
<div>
<ul id="files_ul"></ul>
</div>
<div class="menu-box">
<div class="result_output">出力結果:</div>
<div id="stdout"></div>
</div>
</div>
</body>
<!-- エディタの説明モーダルダイアログ -->
<input type="checkbox" id="my-modal-desc" class="modal-toggle">
<div class="modal">
<div class="modal-box relative">
<label for="my-modal-desc" class="btn btn-sm btn-circle absolute right-2 top-2">✕</label>
<h3 class="text-lg font-bold">Node版 なでしこ3エディタとは</h3>
<p class="py-4">なでしこ3のNode.js(PC版)ランタイムを実行するためのエディタです。</p>
<p class="py-4">もし、なでしこ3のWeb版を実行するには、「npm start」を実行してください。</p>
</div>
</div>
</html>