Skip to content

PUB-005 期間機種別差枚ランキング

概要

  • WordPress 固定ページ(スラッグ period-kishu-ranking)に 専用ページテンプレート「期間機種別差枚ランキング」myCustom/myTemplate/page-period-kishu-samai-ranking-template.php)を割り当てて公開する画面。UI は SC-016 と同一機能をテンプレート層で出力する(固定ページ本文のショートコードブロックは不要)。
  • ユーザーが 期間・ホール・台数条件 をフォームで指定し、期間内の 機種別差枚ランキング(合計差枚 / 平均差枚のタブ切替)と 折れ線グラフ(累計差枚 / 単日差枚の切替、チェックボックスで系列 ON/OFF)を表示する。
  • PUB-001 日別記事(シングル) の機種別ランキング(PUB-003 B-2)および SC-009 kishudata から クエリ付きリンク で遷移可能。リンク元記事の日付が属する 暦月 を期間初期値とし、任意で kishu をハイライトする。
  • データ取得は初回 HTML 後に API-001-15(REST)経由。契約は IF-002 を正とする。
  • 折れ線グラフ描画には Chart.js を新規導入する(リポジトリ内に既存の折れ線グラフ実装なし)。

ワイヤーフレーム

画面仕様

ブロック一覧

ブロックIDブロック名表示内容初期値ユーザー操作アクション
B-0画面ヘッダページタイトル・機能説明(固定ページ見出しと重複しない短文)固定文言なし-
B-1検索フォーム開始日・終了日・ホール・台数不等号(以上/以下)・「表示」ボタン。注記を併記URL クエリ > SC 属性 > デフォルト(直近7日・HallEnum 先頭)条件変更、表示A-1
B-2指標タブ「合計差枚」「平均差枚」タブ「合計差枚」タブクリックA-2
B-3ランキング表順位・機種名・指標値(枚)・集計台数・グラフ(チェックボックス)。初期 10 行、「さらに読み込む」で +10 行(全件まで)未検索時は非表示グラフチェック ON/OFF、さらに読み込むA-2, A-5, A-7
B-4折れ線グラフ累計差枚 / 単日差枚 切替 + Chart.js。チェック ON の機種のみ 描画未検索時は非表示。グラフ種別 = 累計グラフ種別切替A-2, A-6
B-5状態表示ローディング / 0件 / バリデーションエラー未検索時は「条件を指定して表示してください」なし-
B-6機種ハイライトURL kishu 指定時、該当行を強調表示。グラフチェックも ON(top N 外でも可)クエリ kishu があるときのみなしA-4
B-7広告B-3 と B-4 の間。常時表示SC-003 [random_adsense_ad provider="a8"](テンプレート Twig 配置)常時なし-
B-8グラフ見出し「機種別差枚 折れ線グラフ」セクション見出し(id="chart-section")。常時表示固定文言なし-

検索フォーム(B-1)— 台数フィルタ

要素仕様
台数入力整数 ≧ 0。空 = フィルタなし
不等号セレクト「以上」「以下」。台数が空のときは 無効化し API に送らない
注記フォーム近傍に 「台数は条件の終了日の台数とする」 を常時表示

指標の定義

タブソートキー表示値
合計差枚期間内 diff_coin 合計(降順)合計差枚数(符号付き整数+「枚」)
平均差枚期間内台あたり平均差枚(降順)平均差枚(小数1桁+「枚」)
  • 「集計台数」列は 期間内の台数合計aggregated_count)。台数フィルタの判定値(count_on_period_end)とは別。

グラフ列チェックボックス(B-3)

項目仕様
列位置「集計台数」の右
初期 ONA-1 成功時、現在タブのソート上位 chart_top_n + highlight_kishu(top N 外でも ON)
タブ切替 A-2表のソートのみ切替。チェック状態は機種名キーで保持(リセットしない)
再検索 A-1チェック状態を 初期状態にリセット
リアルタイムA-5: ON/OFF 即時に B-4 を再描画(API 再取得なし)

折れ線グラフ(B-4)

項目仕様
グラフ種別切替累計差枚 / 単日差枚(ラジオまたはセグメント)。初期 = 累計
系列B-3 で チェック ON の機種のみ
X軸期間内の各日(period_startperiod_end の暦日すべて)
Y軸(累計)cumulative_samai(累計差枚・枚)
Y軸(単日)daily_samai(単日差枚・枚)
データ無し日daily_samai: 0、累計は前日累計 + 0(横持ちしない)
種別切替 A-6保持 JSON から Y 軸データを切替描画(API 不要)

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

param必須説明
hallホール名(HallEnum 日本語名。URL エンコード)
target_dayリンク元日別記事の対象日。属する 暦月 を期間に展開(例: 202403152024-03-012024-03-31
period_start明示開始日。target_day より target_day を優先
period_end明示終了日。target_day とセットで使用
kishu任意ハイライト対象機種名(B-6)。グラフチェックも ON

後方互換: 旧パラメータ day(Ymd)はクライアント側で読み取り可能だが、WordPress 予約クエリ変数と衝突するため新規リンクでは target_day を使用する。

初期値の優先順位: URL クエリ > ショートコード属性 > デフォルト

日別記事からのリンク(実装フェーズ)

リンク元対象要素付与パラメータ
PUB-003 ランキング B-2機種名セルhall, target_day, kishu
SC-009 kishudata機種名見出しhall, target_day, kishu
  • リンク先ベース URL: PHP 定数(1箇所管理)で固定ページのパーマリンクを参照
  • スタイル: colors.css--color-link / --color-link-hover を踏襲

処理連携仕様

A-1 検索フォーム送信

フォームの「表示」ボタン押下、または Enter 確定時に API-001-15 を呼び出す。

リクエスト

requestParam本画面の値(どの部品から何を送るか)
period_startB-1 開始日入力(YYYY-MM-DD
period_endB-1 終了日入力(YYYY-MM-DD
hallB-1 ホール選択値
unit_countB-1 台数入力。空のときは送らない
unit_count_operatorB-1 不等号(gte=以上 / lte=以下)。台数指定時のみ必須
chart_top_nSC-016 属性 chart_top_n(初期チェック件数の参照)
highlight_kishuURL クエリ kishu が残っている場合のみ

レスポンス

項目内容
成功時IF-002 相当 JSON。B-3/B-4 を描画
失敗時B-5 にエラーメッセージ表示
画面更新時の処理ローディング → 成功時 B-3/B-4 更新、グラフチェックを初期状態にリセット、0件時 B-5 空状態

A-2 指標タブ切替

リクエスト

requestParam本画面の値
なしA-1 済みのレスポンスをクライアント保持

レスポンス

項目内容
成功時保持 JSON からタブに応じて B-3 を再ソート。B-4 は A-5/A-6 の状態を維持
失敗時なし(クライアントのみ)
画面更新時の処理ソートキーのみ切替。グラフチェック状態は機種名キーで保持

A-3 初回表示

リクエスト

requestParam本画面の値
なしURL / SC 属性から B-1 を初期化のみ

レスポンス

項目内容
成功時フォーム初期値反映
失敗時不正クエリは無視しデフォルトへフォールバック
画面更新時の処理A-4 の条件を満たせば続けて A-1 を実行

A-4 ディープリンク初回自動検索

hall かつ(target_day または period_start+period_end)が有効なとき、DOMContentLoaded 後に A-1 を自動実行。kishu があれば B-6 を適用(行ハイライト + グラフチェック ON)。旧 day パラメータも読み取りのみサポート。

リクエスト

requestParam本画面の値
(A-1 同様)B-1 初期化後のフォーム値

レスポンス

項目内容
成功時A-1 成功 + B-6 ハイライト
失敗時B-5 エラー表示(手動再検索可能)
画面更新時の処理該当行 scrollIntoView(任意)

A-5 グラフチェック切替

リクエスト

requestParam本画面の値
なしB-3 チェックボックスの ON/OFF

レスポンス

項目内容
成功時保持 JSON の daily_series_by_kishu から ON 機種のみ B-4 再描画
失敗時なし
画面更新時の処理Chart.js 系列を即時更新(API 再取得なし)

A-6 折れ線グラフ種別切替

リクエスト

requestParam本画面の値
なしB-4 の累計 / 単日切替 UI

レスポンス

項目内容
成功時累計 → cumulative_samai、単日 → daily_samai で B-4 再描画
失敗時なし
画面更新時の処理Y 軸ラベル・系列データを切替(API 再取得なし)

A-7 ランキング「さらに読み込む」

リクエスト

requestParam本画面の値
なしA-1 済みのレスポンスをクライアント保持

レスポンス

項目内容
成功時保持 JSON から B-3 を +10 行追加表示(API 再取得なし)
失敗時なし
画面更新時の処理初期 10 行 → ボタン押下で +10 行(全件まで)

外部インターフェース

画面 URL

項目
URLWordPress 固定ページのパーマリンク(例: /period-kishu-ranking/)。テンプレート: myCustom/myTemplate/page-period-kishu-samai-ranking-template.php
種別公開画面
権限不要(公開ページ)

関連設計書

種別参照
ショートコードSC-016
Presentation DTOIF-002
RESTAPI-001-15
リンク元PUB-003 ランキングSC-009