diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-11-08 00:48:32 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-11-08 00:48:32 +0900 |
| commit | a81bb98c971bd9470bbba0c415b6c111f5146ad3 (patch) | |
| tree | be5fc4b3280a8892c3d277c19cca588361f868f5 /scripts/park-editor.mjs | |
| parent | f6bdca7dea59e81006a659676a00aae10d2cec58 (diff) | |
公園マップ: フィルタを分類・拡充し、地図の表示不具合を修正
ParksFilters.astro: フィルタを「遊具/広場・休憩/設備/利用ルール」に
分類し、パーゴラ・ボール遊び禁止の表示なし・犬禁止の表示なしを追加。
冒頭にβ版の注意書きを追加
ParkMap.astro: 全画面時のズーム調整と、小数ズーム時のタイル読込の
不具合を修正
ParksTable.astro: 絞り込みトークンを追加し、確認済みの表示を反映
park-editor: 確認チェックの自動同期と文字化けを修正
kodaira-parks.json: 水飲み場表記の統一と確認済みを反映
park-icons.ts: パーゴラのアイコンを追加
parks.mdx: 説明文を更新
Diffstat (limited to 'scripts/park-editor.mjs')
| -rw-r--r-- | scripts/park-editor.mjs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/scripts/park-editor.mjs b/scripts/park-editor.mjs index feeb059..b3a3e80 100644 --- a/scripts/park-editor.mjs +++ b/scripts/park-editor.mjs @@ -109,7 +109,7 @@ function canonicalKeysFrom(lists) { return [...keys]; } -// 「ベンチ・椅���」のような項目名の文字化けを、前後の文字から正しい項目名に戻す +// 「ベンチ・椅子」のような項目名の文字化けを、前後の文字から正しい項目名に戻す function normalizeRecordKeys(rec, canonicalKeys) { const src = rec && rec.properties ? rec.properties : rec; if (!src) return; @@ -241,6 +241,40 @@ const server = createServer(async (req, res) => { return; } + // 確認チェックの切り替えを、その場でJSONに反映する(サイトの「未確認」用)。 + if (req.method === "POST" && url === "/api/check") { + let body = ""; + for await (const chunk of req) body += chunk; + const payload = JSON.parse(body); + const dataset = DATASETS[payload.id]; + if (!dataset) { + send(res, 404, "text/plain; charset=utf-8", "not found"); + return; + } + const data = JSON.parse(await readFile(dataset.path, "utf-8")); + const list = payload.id === "nearbyParks" ? data.features : data; + const updates = Array.isArray(payload.updates) ? payload.updates : []; + for (const update of updates) { + const rec = list[Number(update.index)]; + if (!rec) continue; + const props = rec.properties || rec; + props["確認"] = update.checked ? "済" : ""; + } + const text = dataset.pretty + ? `${JSON.stringify(data, null, 2)}\n` + : `${JSON.stringify(data)}\n`; + const tmp = `${dataset.path}.tmp`; + await writeFile(tmp, text, "utf-8"); + await rename(tmp, dataset.path); + send( + res, + 200, + "application/json; charset=utf-8", + JSON.stringify({ ok: true, count: updates.length }), + ); + return; + } + const target = datasetFromUrl(url); if (!target) { send(res, 404, "text/plain; charset=utf-8", "not found"); |
