From cd44454bdebc8bf101ec4e43c458c0357f00bcd2 Mon Sep 17 00:00:00 2001 From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> Date: Fri, 23 Oct 2026 21:55:36 +0900 Subject: hp-archive: 市Xの新着と終了表示を反映 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 市公式Xの10月22日・23日の新着を追加 - 終了した予定に「終了」バッジを表示 - LoGoフォームの猫の譲渡会を追加し、一覧の注意書きを追記 - 教育委員会の追加議事日程、西部出張所の移転を反映 - 10月19日開催の予定を削除 --- src/components/KodairaNews.astro | 96 ++++++++++++++++++++++++++++++++ src/components/ScheduleInteractive.astro | 18 ++++++ 2 files changed, 114 insertions(+) (limited to 'src/components') diff --git a/src/components/KodairaNews.astro b/src/components/KodairaNews.astro index c4a319f..b4a1ab8 100644 --- a/src/components/KodairaNews.astro +++ b/src/components/KodairaNews.astro @@ -34,6 +34,102 @@ const LABEL: Record = { }; const posts: Post[] = [ + { + date: "10月23日", + cat: "status", + note: "10月7日から発生している障害の状況。暫定サイトで一部の手続きが可能", + links: [{ text: "ホームページの障害状況について", url: X("2113540936579879112") }], + }, + { + date: "10月23日", + cat: "status", + note: "PHPの対策が完了し、こだっこアプリのサービスを再開", + links: [{ text: "こだっこアプリの再開", url: X("2113533380784476198") }], + }, + { + date: "10月23日", + cat: "other", + note: "西部出張所は10月30日(金)臨時休業。11月2日(月)から小川パレット内で業務開始", + links: [{ text: "西部出張所の移転(市のX)", url: X("2113510734760186286") }], + }, + { + date: "10月23日", + cat: "other", + note: "10月25日(日)午前9時から午後5時まで。受診前に医療機関へ確認", + links: [{ text: "休日歯科応急診療", url: X("2113465447488311714") }], + }, + { + date: "10月23日", + cat: "other", + note: "健康センター。準夜19:15〜22:15(年中無休)、休日9:00〜16:45", + links: [{ text: "休日・準夜応急診療(内科・小児科)", url: X("2113465436037664796") }], + }, + { + date: "10月23日", + cat: "event", + note: "10月25日(日)、味の素スタジアムでFC東京vs水戸。小平の日ブースを設置", + links: [{ text: "FC東京「小平の日」(市のX)", url: X("2113420142453678421") }], + }, + { + date: "10月22日", + cat: "status", + note: "PHPの脆弱性でWebサービスの一部が閲覧不可。緊急点検を実施", + links: [{ text: "Webサービスの一時停止について", url: X("2113186095626351015") }], + }, + { + date: "10月22日", + cat: "status", + note: "緊急点検のため、市立学校・学校給食センターのホームページを停止", + links: [ + { text: "学校ホームページの停止について", url: X("2113183575956926631") }, + { text: "詳細(LoGoフォーム)", url: "https://logoform.jp/form/exdH/1861824" }, + ], + }, + { + date: "10月22日", + cat: "status", + note: "10月7日から発生している障害の状況。暫定サイトで一部の手続きが可能", + links: [{ text: "ホームページの障害状況について", url: X("2113178545342095435") }], + }, + { + date: "10月22日", + cat: "procedure", + note: "都市計画マスタープランのパブリックコメントを11月1日まで延長", + links: [ + { text: "意見募集(市のX)", url: X("2113163443574640688") }, + { text: "意見募集フォーム", url: "https://logoform.jp/form/exdH/1840919" }, + ], + }, + { + date: "10月22日", + cat: "other", + note: "近隣9市で魅力を発信。今回は武蔵村山市を紹介", + links: [{ text: "広域連携の取組(市のX)", url: X("2113148348178031035") }], + }, + { + date: "10月22日", + cat: "status", + note: "PHPの脆弱性でこだっこアプリを一時停止。こだっこWEB予約は通常どおり", + links: [{ text: "こだっこアプリの一時停止", url: X("2113118146596835498") }], + }, + { + date: "10月22日", + cat: "meeting", + note: "10月22日(木)午後2時から。追加の議事日程があり、傍聴できない案件も", + links: [{ text: "教育委員会定例会(市のX)", url: X("2113118146605306218") }], + }, + { + date: "10月22日", + cat: "other", + note: "国民健康保険の40歳以上の特定健診は10月31日まで", + links: [{ text: "特定健診の期限(市のX)", url: X("2113103051414524237") }], + }, + { + date: "10月22日", + cat: "event", + note: "10月24日(土)午前10時から午後2時、リサイクルセンター広場(雨天中止)", + links: [{ text: "ごみゼロフリーマーケット(市のX)", url: X("2113057748812259523") }], + }, { date: "10月21日", cat: "status", diff --git a/src/components/ScheduleInteractive.astro b/src/components/ScheduleInteractive.astro index 5fb058b..bc26e0a 100644 --- a/src/components/ScheduleInteractive.astro +++ b/src/components/ScheduleInteractive.astro @@ -206,6 +206,24 @@ const months = [...new Set(dateKeys.map((k) => k.slice(0, 7)))].sort(); const today = new Date(); const todayKey = toKey(today.getFullYear(), today.getMonth() + 1, today.getDate()); + + // 開催日がすべて過去のものは「終了」と表示する。 + // 複数回の催しで未来の回が残っているものは対象外。 + for (const entry of entries) { + if (entry.dateText.includes('申込開始')) continue; + if (entry.dates.length === 0) continue; + if (!entry.dates.every((d) => d < todayKey)) continue; + const row = document.getElementById(entry.rowId); + if (!row) continue; + row.classList.add('is-ended'); + if (!row.querySelector('.schedule-ended-badge') && row.cells[0]) { + const badge = document.createElement('span'); + badge.className = 'schedule-ended-badge'; + badge.textContent = '終了'; + row.cells[0].appendChild(badge); + } + } + let selectedDate = byDate.has(todayKey) ? todayKey : dateKeys[0]; let currentMonth = selectedDate.slice(0, 7); let activeCategory = 'all'; -- cgit v1.3.1