SharePointで定員制御機能ありの申込機能を作ってみた(3)

前回からの続き。ビューの書式設定を使いたいところですが、やりたい事があるのでまずは列の書式設定から。

現在のセミナー画面。ちなみにステータス列は集計列にしています。

=IF([現在の申込人数]=[定員], "受付終了", IF(([定員] - [現在の申込人数]) <= 5, "定員残り僅か", "受付中"))

◆Before

◆After

  • 申込人数 / 定員 ⇒1行テキスト、中身は空です。(申込人数 ÷ 定員 × 100)% のWidthでバーを表示します。
  • ステータス ⇒上記通り集計列。ステータスに応じて色を変えています。
  • 申込み ⇒1行テキスト、中身は空です。セミナーの申込画面を(リストアイテムの登録画面)を別画面で表示するリンクです。

いやーイマイチ。デザインセンスはさておき、後ろの2つの列「現在の申込人数」「定員」。これ本当は非表示にしたいんですけど、これを非表示にすると「xx名 / xx名」が使えなくなるんです。この辺りはJSリンクと一緒でビューに表示しなければ使えないっぽいですね。

あとは申込リンク。押すと登録画面が出る、までは良いんですが、選択したセミナーを選択状態に出来ないんです。こればっかりは書式設定の範囲では無理ですし、スクリプトも使えませんしどうすればいいんでしょうか。PowerApps使えば出来るんでしょうか。
クラシックモードであればリクエストパラメータでアイテムIDを渡せば、選択肢のvalueにアイテムIDが設定されてますし、スクリプトで受けて何とでもなるんですけどねー。


◆申込人数/ 定員

{
  "elmType": "div",
  "txtContent": {
    "operator": "+",
    "operands": [
      "[$_x73fe__x5728__x306e__x7533__x8f]",
      "名 / ",
      "[$_x5b9a__x54e1_]",
      "名"
    ]
  },
  "attributes": {
    "class": "sp-field-dataBars"
  },
  "style": {
    "color": "black",
    "font-weight": "bold",
    "padding-left": "10px",
    "white-space": "nowrap",
    "width": "=toString(([$_x73fe__x5728__x306e__x7533__x8f] / [$_x5b9a__x54e1_]) * 100) + '%'"
  }
}

◆ステータス

{
  "elmType": "span",
  "style": {
    "color": "=if(@currentField == '受付中', 'blue', if(@currentField == '受付終了', 'gray', 'red'))"
  },
  "txtContent": "@currentField"
}

◆申込み

{
  "elmType": "a",
  "attributes": {
    "target": "_blank",
    "href": "/sites/[サイトパス]/Lists/[リストパス]/NewForm.aspx"
  },
  "style": {
    "display": "block",
    "border": "1px black solid",
    "color": "black",
    "width": "80px",
    "text-align": "center",
    "font-weight": "bold"
  },
  "txtContent": "申し込む"
}

ちなみにやりたかったのは%のバー表示です。