Skip to content

SC-016 期間機種別差枚ランキングショートコード

概要

  • 指定期間・ホールの 機種別差枚ランキング(合計 / 平均タブ切替)と 折れ線グラフ(累計 / 単日切替、チェックボックスで系列 ON/OFF)を出力する。
  • PUB-005 では 専用ページテンプレート を正とし、固定ページ本文にショートコードを置く必要はない。タグ [period_kishu_samai_ranking] は埋め込み・後方互換用(広告なし・結果エリア一体型)。
  • 期間・ホール・台数条件は ページ上フォーム で変更する。初回 HTML はフォーム + プレースホルダ。データ本体は API-001-15 で取得する。
  • 日別記事(PUB-003 機種別ランキング / SC-009 kishudata)からクエリ付きリンクで遷移し、記事日の ホール・任意 kishu を初期状態に反映する。

ワイヤーフレーム

PUB-005同一 HostPeriodKishuSamaiRankingWireframeReactHost)。新規 React は作らない。

ブロック一覧(要約)

正本の詳細は PUB-005 ブロック一覧 を参照。

ブロックIDブロック名表示内容(要約)SC 経路での差分
B-0画面ヘッダページタイトル・機能説明埋め込み時は省略されうる
B-1検索フォーム期間・ホール・台数・不等号・表示ボタン同一
B-2指標タブ合計差枚 / 平均差枚同一
B-3ランキング表順位・機種・指標・集計台数・グラフチェック同一
B-4折れ線グラフ累計 / 単日切替 + Chart.js同一
B-5状態表示ローディング / 0件 / エラー同一
B-6機種ハイライトURL kishu 時の行強調 + グラフチェック ON同一
B-7広告B-3 と B-4 の間([random_adsense_ad provider="a8"]SC 経路では出さない(PUB テンプレのみ)
B-8グラフ見出し「機種別差枚 折れ線グラフ」PUB のみ常時表示の見出し。SC では結果エリア内(一体型)

表示条件・注記

  • 共有 Host: PUB-005 と同一。ブロック詳細・アクションは PUB-005 側が正本。
  • SC 経路の差分: ショートコード埋め込みは 広告なし(PUB の B-7 はテンプレート配置のため SC では表示されない)。結果エリアは一体型。B-8 も PUB テンプレ配置で常時表示。SC は一体型のため同等の常時見出しは出さない。
  • 実装参照: mockup mockups/PeriodKishuSamaiRankingWireframe/(または PUB-005 側 Host 登録)。部分 Twig・webpack は共有。エントリは SC 用 / PUB ページ用で分離(広告・見出し配置の差分はここに集約)。

外部インターフェース

ショートコードタグ

  • タグ名: [period_kishu_samai_ranking]
  • 入力例(最小): [period_kishu_samai_ranking]
  • 入力例(初期値指定): [period_kishu_samai_ranking default_hall="アイランド秋葉原" chart_top_n="5"]

属性一覧

属性役割必須
default_hallフォーム初期ホール(HallEnum 対応)。URL hall がある場合は URL 優先任意
default_period_startフォーム初期開始日(YYYY-MM-DD / YYYY/MM/DD / YYYYMMDD)任意
default_period_endフォーム初期終了日(同上)任意
chart_top_nグラフチェックボックスの初期 ON 件数(既定 5、上限 10)任意
ranking_limit後方互換用(非推奨。クライアント側で初期 10 行 +「さらに読み込む」+10 行)任意

必須属性なし(フォーム駆動のため)。

URL クエリ(ディープリンク)

クエリ役割
hallフォーム初期ホール
target_dayリンク元記事日 → 属する暦月を期間に展開
period_start明示開始日(target_day より target_day 優先)
period_end明示終了日
kishuハイライト機種(表強調 + グラフチェック ON)

後方互換: 旧 day パラメータは読み取りのみサポート。新規リンクは target_day を使用する。

出力

ブロック内容
フォーム期間・ホール・台数・不等号入力 + 表示ボタン + 注記
タブ合計差枚 / 平均差枚
機種別ランキング + グラフ列チェックボックス
グラフChart.js 折れ線(累計 / 単日切替、チェック ON 機種のみ描画)

アセット

  • SC-016 専用 webpack エントリ(Chart.js を daily-article-public バンドルと分離)
  • CSS: BEM + ranking-common.css 再利用

エラー

条件ユーザー向け挙動メッセージ / ログ
期間未入力・不正形式B-5 エラー表示ValidationException(SC-010 同等)
period_start > period_end同上ValidationException
期間が 366 日超同上ValidationException
hall 未選択または不正同上ValidationException(HallEnum 照合失敗)
台数のみ指定・不等号未指定同上ValidationException
unit_count が負数または非整数同上ValidationException
API エラーB-5 エラー表示REST エラーメッセージ
0 件B-5 空状態メッセージデータなし文言

今後の更新で崩してはいけないところ(互換性契約)

公開契約(Breaking change 扱い)

  • ショートコード名 period_kishu_samai_ranking を変更しない
  • 属性名 default_hall / default_period_start / default_period_end / chart_top_n / ranking_limit を変更しない
  • URL クエリ名 hall / target_day / period_start / period_end / kishu を変更しない(日別記事リンクとの契約)。旧 day は読み取り互換として残す

関連設計書

種別参照
公開画面PUB-005
DTOIF-002
RESTAPI-001-15