# モデルのダッシュボード

> モデルの上に定義する自由な形のダッシュボードと、そのバインドが持つユニットの差し込み、そして各ユニットが自分用に解決された控えをどう開くかを説明します。

**モデルのダッシュボード**は、自分のモデルを名指すふつうのダッシュボードです。View のページのどのダッシュボードとも同じコンポーネントで組み立て、同じ編集ツールで編集します（[ダッシュボードの編集ツール](view-editor)を参照）。それをモデルのものにしているのは、それがどこにあるかと、そのバインドが何を名指すかです。Process > モデル > モデル > 可視化 > **ダッシュボード**の下に並び、そのアドレスの欄はモデルのチャネルを差し出し、ふつうなら 1 台のユニットが名指される場所に、ユニットの差し込みを書きます。1 つの定義が、そのモデルのすべてのユニットに効きます。ダッシュボードを作ること、取り除くこと、印を付けることには**Process の管理**の権限が要ります。その上にあるものを編集するには、Dashboard の範囲の**ダッシュボードの編集**の権限が要ります。

## ダッシュボードのフォルダー {#the-dashboards-folder}

**ダッシュボード**の行を選ぶとフォルダーのページが開きます。見出し（「このモデルに定義した運転用ダッシュボードです。1 つの定義がすべてのユニットに使われ、各ユニットは、そのユニットにバインドされたチャネルでこれを開く行を自分で持ちます。」）と、ダッシュボード 1 つにつき 1 枚のカードが、その記号と名前とともに並びます。カードを押すとそのダッシュボードが開き、カードの X が取り除きます。モデルに 1 つもないときは「まだダッシュボードがありません。追加してから、ダッシュボードの編集ツールで編集してください。」と出ます。ツリーはフォルダーの下にダッシュボードを名前順で並べ、フォルダーの行がそれを数えます。

| 指令 | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| **ダッシュボード**（詳細のバー、フォルダーを選んだとき。右クリック**ダッシュボードを追加**） | `ダッシュボード <n>`（このモデルのどのダッシュボードもまだ使っていない最初の番号）という名前の空のダッシュボードを作り、保存し、そのカードをこのページで強調表示して見える位置までスクロールします。ダッシュボードは開かれず、開くのはそのカード、またはツリーのその行です。 | どれか 1 つのユニットが実行に占められているとき、またはランタイムが停止しているとき。 | Process の管理がないとき。 |

新しいダッシュボードは、上に何もない状態で始まります。名前、説明、記号、そのほかダッシュボードが持つものはすべて、編集ツールが変えるものです（[ダッシュボードの設定](view-settings)を参照）。Process のページには、そのための欄はありません。

## ダッシュボードのページ {#the-dashboards-page}

ダッシュボードを選ぶと、それが内容のパネルの中で、余白なく、前に何も置かずに走ります。これが定義そのものであり、ほかのどのダッシュボードとも同じキャンバスの上に描かれます。ここではユニットが名指されていないので、モデルのチャネルにバインドしたコンポーネントは自分の見た目だけを描き、値を読みません。そういうバインドについて、編集ツールのアドレスの行は、ポイントが見つからないと言う代わりに「このモデルのユニットごとに 1 つのポイント」と読みます。ステーションのポイント（タグ、変数）にバインドしたコンポーネントは、いつもどおりそれを読みます。

空のダッシュボードは、白い帯として立つ代わりに、そう言います。「この画面にはまだ何もありません。編集してコンポーネントを置いてください。アドレスの欄はこのモデルのチャネルを示し、各ユニットは自分のチャネルを読みます。」

選んだダッシュボードについて、詳細のバーは 3 つのものを持ちます。**ダッシュボードを編集**、**View に表示**のスイッチ、そして危険のまとまりの**ダッシュボードを削除**です。

## ダッシュボードを編集 {#edit-dashboard}

**ダッシュボードを編集**は、Process のページの本体を、アプリのただ 1 つのダッシュボードの編集ツールに渡し、この定義の上に載せます。作業台と、その細い線と、作業のバーが内容のパネルの場所を取り、編集ツールの帯が**編集を終える**（「編集を終えて、このダッシュボードの表示に戻ります」）を持ちます。それを押すと、本体は、今の姿でダッシュボードを走らせる内容のパネルに戻ります。出るときに確定するものは何もありません。どの編集も、行われたその場で保存されます。ダッシュボード自身のアドレス（`/d/<id>`）は、それを持って来る人のために、編集ツールへの深い入り口であり続けます。

| 状況 | 何が見えるか |
| --- | --- |
| ロールにダッシュボードの編集がない | 動詞はそもそも描かれません。そのロールが決して押せないものは、灰色にするのではなく置きません。 |
| ユニットが実行に占められている | 動詞は「ユニットが実行中の間は構成がロックされます。」と言って灰色になります。編集の最中に掛かったロックは、編集の状態を終わらせます。ステーションが空いてから戻るのは、自分で押す操作です。 |
| 選択がダッシュボードから外れるか、ロールがその権限を失う | 編集の状態は、同じように終わります。 |

編集ツールの中からダッシュボードを削除すると、編集ツールが閉じ、選択はモデルのダッシュボードのフォルダーに降ります。

### バインドの中のユニットの差し込み {#the-unit-placeholder-in-bindings}

モデルのダッシュボードでは、編集ツールのどのアドレスの欄も、先頭にモデルのチャネルを並べます。チャネル 1 つにつき 1 行を、モデルのチャネルの順に、それぞれ「このチャネルを、この画面を開くユニットの上で」というアドレスとして、`Process.<Model>.{unit}.Channels.<Channel>` の形で書きます。1 つ選ぶとそのチャネルがバインドされ、ユニットはあとで答えられるように残されます。ステーション自身のポイントは、その行の後ろに続きます（モデルのダッシュボードが、周囲のタグや共有の変数を読むのは、正しい使い方です）。一覧は候補 50 件までで、欄は自由に打てるままです。書き込む欄（ボタン、入力）は、書き込める役目のチャネルだけを並べます。ユニットに何を書き込めるかは、チャネルの役目が決めることだからです。

その行は、ステーション自身のポイントとまったく同じように、欄が受け付ける値の分類で絞り込まれます。ですから、チャネルが隠れるのは、それを運べるものが何もないときだけです。

ユニットがダッシュボードを開くとき、3 つの差し込みが答えられます。

| 差し込み | どこに書くか | 何になるか |
| --- | --- | --- |
| `{unit}` | アドレスの中と、ユニットをバインドするコンポーネントの性質の値の全体として（たとえばコメントの時系列や発生記録の一覧のユニット）。 | アドレスの中ではユニットのアドレスの区切り、ユニットをバインドする性質の中ではユニットの識別情報になります。ふつうの文の中に書かれたとき（名札、説明文）は、そのまま残ります。 |
| `{unit.name}` | どの文にも書けます。ダッシュボードの名前と説明、コンポーネントの名前や説明文、グラフの表題や系列の名札、どの文の性質でもです。 | ユニットの表示名になります。 |
| `{channel.name:<segment>}` | どの文にも書けます。区切りはチャネルの整えられたアドレスの区切りで、その横のアドレスが使うのと同じ鍵です。 | そのユニットでそのチャネルが持つ名前になります。モデルが許していてユニットが決めているならユニットごとの別名、そうでなければチャネル自身の名前です。モデルのどのチャネルも名指さない区切りは、そのまま残ります。 |

モデルの上でダッシュボードを編集している間、アドレスにまだ `{unit}` を持つコンポーネントは、バインドされていないものとして扱われます。何も描かず、何の印も付けません。沈黙が本当に意味を持つのは、解決された控えの上だけだからです。

## 各ユニットが解決されたダッシュボードをどう得るか {#how-each-unit-gets-its-resolved-dashboard}

**運転**の下では、モデルのすべてのユニットが、自分の操作パネルの行の後ろに、モデルのダッシュボード 1 つにつき 1 行を持ちます。その行を選ぶと、定義がこのユニット自身のものとして走ります。

- 定義が複製され、識別情報が付け直されます（ダッシュボード、そのコンポーネント、その接続網に、新しい識別情報が与えられます）。ですから、2 台のユニットの控えがコンポーネントの識別情報を共有することは決してありません。
- すべての `{unit}` がこのユニットになるので、どのアドレスもふつうの `Process.<Model>.<Unit>.Channels.<Channel>` のポイントとして出てきて、ユニットをバインドする性質はどれもこのユニットを持ちます。その先にいるものが、定義が抽象的だったことを知ることはありません。コンポーネントは実時間の値を読み、ボタンと入力のコンポーネントは書き込み、このユニットを読む系列を持つ折れ線グラフは、そのユニットで進行中の実行の判定の帯を、ユニットにバインドされたどのダッシュボードともまったく同じように描きます。
- `{unit.name}` と `{channel.name:...}` は、ユニットの名前と、そのユニットで効いているチャネルの名前になります。

その行は、View のページが使う作業台のバーをまといます。項目の名前 `モデル · ユニット · ダッシュボード`、ダッシュボードの記号、**拡大表示**（「ウィンドウ全体を使います」）、**全画面**（「全画面（F11）」）です。その上に複製も編集もありません。ユニットの行はダッシュボードを見せるだけで、決して編集しません。空のダッシュボードは、ユニットの行でこう言います。「この画面にはまだ何もありません。この画面はモデルの「可視化」にあるダッシュボードの行で描き、そこに置いたものが、すべてのユニットのここに出ます。」

モデルの上で保存した編集は、すべてのユニットの行に届きます。その行はモデルの定義を持ち、新しい実体が来るたびに、それをまた解決します。

## View に表示 {#show-on-view}

**View に表示**は、詳細のバーの、ダッシュボードを編集の横にあるスイッチです。効いている状態を読み、そのツールチップが、その状態が何をするかを言います。

| 状態 | ツールチップ |
| --- | --- |
| 入 | 「このモデルのすべてのユニットが、「表示画面」の欄にこのダッシュボードの項目を持ちます。」 |
| 切 | 「このダッシュボードは、ユニットの「運転」から開きます。View のページには何も出ません。」 |

入にすると、View のページの表示画面の欄に、モデルのユニット 1 台につき 1 つの項目が置かれます。名前は `モデル · ユニット · ダッシュボード` で、そのダッシュボードの記号をまといます。どの項目も、そのユニットのために解決された定義で、運転の下のそのユニットの行が走らせるのと同じ画面です。項目はその一覧の行であって、ステーションのダッシュボードではありません。そこで並べ替えられることも、編集されることも、複製されることも決してありません（複製はその上では拒まれます）。ただし、各ユニットの項目を、View のページのフォルダーへ 1 つずつ入れることはできます。ユニットのないモデルは、View のページに何も置きません。ダッシュボードが View のページに自分の資格で立ちながら、そこに立つ操作パネルのカードでもあることはできます。両方であるのは、ふつうの並べ方です。項目がどう見えるかは[View のユニットの操作パネル](view-unit-panels)にあります。

このスイッチは、Process の管理のないロールには描かれません。エンジニアリングロックの下とランタイムの停止中は、描かれたまま灰色になり、どちらであるかを言います。この決めごとはダッシュボードそのものと一緒に保存されるので（その名前と同じ自動保存です）、拒まれた書き込みはスイッチを元に戻します。

## 操作パネルのカードとしてのダッシュボード {#a-dashboard-as-a-card-of-a-panel}

モデルの操作パネルは、モデルのどのダッシュボードでも、自分のカードの 1 つとして、操作パネルの上で選んだ高さ（120 から 1200 px、既定は 320）で描けます。ダッシュボードが操作パネルに入るのは、そこで入にしたときだけで、初めは切です。[操作パネル](process-panels#the-card-catalogue)を参照してください。

## ダッシュボードを削除 {#remove-dashboard}

**ダッシュボードを削除**は、ダッシュボードを選んだときの詳細のバーの危険のまとまり、ツリーの右クリックのメニュー、そしてフォルダーのページのカードの X にあります。先に尋ねます（「ダッシュボードを削除」、その名前、そして「ダッシュボードと、その上にあるものをすべて削除します。読んでいたアドレスは Logic に残ります。」）。削除のあと、選択はモデルのダッシュボードのフォルダーに降り、そのダッシュボードを開いていた編集ツールは閉じ、それを描いていたすべての操作パネルの行はそのカードを落とし、その項目は View のページから消えます。Process の管理が要り、エンジニアリングロックの下とランタイムの停止中は灰色になります。

## このページがしないこと {#what-this-page-does-not-do}

- ダッシュボードの中身も、名前も、設定も編集しません。それは編集ツールのもので、ダッシュボードを編集で開きます。
- ユニットごとの控えを作りません。ユニットが見せるものは、1 つの定義から毎回解決されるので、ユニットごとに編集するものはありません。1 台のステーションのためだけに変えたいダッシュボードは、モデルの 2 枚目のダッシュボードです。
- ダッシュボードを View のページ自身のフォルダーに入れることもしません。モデルのダッシュボードが、ステーションのダッシュボードの一覧に入ることは決してありません。View のページに届くのは、View に表示を通して、ユニット 1 台につき 1 項目としてだけです。
- 実行を開始することも、動かすこともしません。それをするのは、解決されたダッシュボードの上で指令のポイントにバインドされたボタンで、手順の実行の権限のもと、ほかのどのダッシュボードとも同じようにです。[実行記録とコメント](process-runs)を参照してください。
