# ページの共通の作法

> 2 つのページの型、編集しながら保存されるパネル、コマンドバーと 2 種類の拒否、右クリックのメニュー、エンジニアリングロック、ランタイムの停止、確認のダイアログ、そして結果が届く場所です。

Ganter Lab のページは、少数の共通の作法を分け合っています。1 つ設定できれば次も設定できるようにするためで、その中身は 2 つのページの型、編集しながら保存されるパネル、コマンドの置き方 1 通りと拒否の仕方 2 通り、バーと同じものを繰り返す右クリックのメニュー、そして結果が届く 1 か所です。このページではそれを一度だけ述べます。各領域のページは、そこだけに特有のことしか書きません。

## 2 つのページの型 {#two-page-templates}

### 一覧と詳細のページ {#master-detail-pages}

Connector、Logic、Process、ユーザーは一覧と詳細のページで、View も同じ並びを手で組んでいます。ページ見出し（表題、1 行の説明、細い罫）の下で、画面は左の列と右の詳細カードに分かれます。

| 部分 | 何か | できること |
|---|---|---|
| 列の見出し | 列の名前（通信、アドレス空間、ワークスペース、ステーションのアクセス、表示画面）と折りたたみの矢印 | 矢印を押すと、列は名前を縦書きにした細い帯になります。その帯を押すと列が戻ります。 |
| 検索または絞り込み | ツリーの上にある、そのページ自身のもの。Connector には検索の欄（「ドライバー、回線、機器、タグを検索」）と状態のチップ「すべて」「正常」「問題あり」「オフ」があり、Logic には「絞り込み…」があります | 一致しない行は隠れます。根をまとめる見出し（「ここで定義したもの」「ほかのページから来たもの」）は、その行と一緒に動きます。 |
| ツリー | そのページのノード。子を持つ行には展開の矢印が付き、選んだ行は強調されます | クリックすると選択され、右にそのノードのパネルが開きます。上下で選択が動き、右で展開、左で折りたたみ、Enter で選択します。ダブルクリックは、それを使う選択画面で確定に当たります。名前を変えている行はそのまま名前の欄になり、Enter か欄を離れると確定、Esc で取り消します。 |
| フッター | 列のコマンドで、どのページでも同じ隅にあります。**+**（ツールチップは「新規…」）、必要に応じて並べ替えの組、そして **すべて展開** と **すべて折りたたむ** | **+** はボタンに寄せたメニューを開き、何を作れて、それがどこに置かれるかを示します。開ける行がないときは、すべて展開とすべて折りたたむが灰色になります。その身元がフッターのコマンドを 1 つも使えないときは、フッターごと描かれません。 |
| 仕切り | 列とカードの間の細い罫 | 260 から 600 ピクセルの間でドラッグできます。Tab で移ってキーボードから動かすこともでき、矢印キーは 16 ピクセル、Page Up と Page Down は 96 ピクセル動かし、Home と End は両端まで運びます。ページを開いている間は、動かした幅が保たれます。 |
| 詳細カード | 選んだノードの見出し（単色のアイコン、表題、必要ならピル、1 行の副題、ときに右寄せの操作）を留めた頭部と、その下のコマンドバー。本体はその下で巻き取られます | 何も選んでいないときは、頭部は空のままで、本体には案内が出ます。画面によっては、本体を独自の面に明け渡すこともあります（Process のモデルの定義の画面）。そこには独自の列と、独自のドラッグできる仕切りがあります。 |

### 巻き取るページ {#scrolling-pages}

設定、アカウント、エージェント、検証は 1 本の巻き取る列です。見出しの下で、左の索引が、上位の組（全般、データなど）ごとにすべての節を並べます。クリックするとその節まで巻き取られ、巻き取りに合わせて有効な項目が移り、リンクから節を直接開くこともできます（`/settings#sec-updates`）。どの節も自分の表題を持ち、組の最初の節はその組の見出しも掲げます。検証は行が文になるので、幅いっぱいを使います。タブを持つページはイベントだけで、警報、発生記録、インターロック、コンソールがそれぞれ自分のアドレスを持ちます（`/events?view=…`）。

## 編集しながら保存されるパネル {#inline-panels-with-autosave}

パネルには OK も、保存も、適用もありません。選んだものはその場で編集し、変更するそばから保存されます。パネルが受け付けられない値は、入力したその場で、欄の下の注記として拒否され、保存されることはありません。

| 操作部 | 保存される時 | 備考 |
|---|---|---|
| スイッチ | 切り替えた時 | 灰色のスイッチは状態をそのまま保ち、変えられない理由をツールチップで伝えます。 |
| チェックボックス | チェックした時 | |
| テキストの欄 | 1 文字ごと | 名前、アドレス、接続の欄は例外で、欄を離れるか Enter を押した時に確定し、Enter は一度だけ確定します。名前の欄は確定の前に、その確定が一緒に連れていくもの（書き換える参照）を自分の下に示します。 |
| 数値の欄 | 欄を離れた時 | 数値でない値や、欄の範囲の外にある値は注記とともに拒否され（「「abc」は数値ではありません。」「1 から 65535 までの数値を入力してください。」）、欄は有効な値に戻ります。書き方の違う値（「007」「7.0」）は受け付けられ、正規の形に書き直されます。 |
| コンボボックス | 選んだ時 | 編集できるコンボボックスは、一覧に載っていたかどうかにかかわらず、今持っているものを確定します（たとえば Logic のアドレス）。 |
| 表のセル | セルを編集した時 | 先に行をチェックしておくと、その編集はチェックしたすべての行に適用されます（タグの表）。 |
| コードエディター | そのエディター自身の確定の仕方に従います | 式、スクリプト、条件です。[式](logic-expressions) を参照してください。 |

欄が持つものが、ほかに 2 つあります。

- 欄の下には、決して変わらない **説明文** があり、その欄が何を決めるのかを述べます。それとは別に **効果** の行が（独自の字下げと独自の印で）、今の値が何を生むのかを述べます。説明として信頼できる説明文とは、選んでも自分を書き換えない説明文のことです。
- 選択肢によってアプリの描くものが変わるところでは（メーターの型、グラフの形、判定の範囲、グラフのツール）、選択部品が選択肢の名前の隣に結果の **見本** を示します。見本は、実物を描くのと同じコードから作られます。その大きさでは 2 つの選択肢を描き分けられないときは、どちらにも見本を付けません。

保存の結果はパネルではなく、ステータスバーの操作ログ帯に届きます（[結果が届く場所](app-conventions#where-results-land) を参照）。

## コマンドバー {#the-command-bar}

操作は、それが働きかける相手のものであり、どこに置かれるかはその相手で決まります。危険さでは決まりません。相手は 3 つ、置き場所も 3 つです。

| 相手 | 置き場所 | 並び |
|---|---|---|
| 列が選んでいるノード | カードの留めた頭部の下のバー | 先頭の組（左）は、作る、複製する、編集する、分岐させる、開始する、です。末尾の組（右）は終わらせるもので、削除や除去が、危険を表す色で並びます。そうすることで、危険の組は警告として読めます。終わらせるものがないバーは、その隅を空けたままにしません。相手がウィンドウである操作、**拡大表示** と **全画面** を受け取るので、開いている面がどれだけの広さを得るかは、どの場面でも同じ隅で探せます。 |
| カードが持つ表全体 | そのカード自身の頭部、働きかける行の上 | まず一覧を増やすもの、次に読み直すもの、最後に、危険を表す色で、ページが選んでいる行を終わらせるものです。終わらせる操作は何に働きかけるかを名乗り、何も選ばれていないときは消えるのではなく、なぜ拒否されるのかを述べます。 |
| 1 つの行だけ | その行の末尾の操作の組。記号のボタンで、終わらせるものは危険を表す色です | 押しても選択は変わりません。1 つのカードが自分の行を終わらせるのは、頭部か行のどちらか一方であり、同じ表について両方を持つことはありません。 |

分割した画面の囲まれた区画は、1 つのカードです。共通のパネル見出しはアイコン、表題、副題、ピルを保ち、操作は決して載せません。ページの中の案内に付いた操作は、その案内自身の返事であって、見出しの操作ではありません。

バーの上で操作ではないものが 1 つあります。**状態のスイッチ** です。相手が開いている面そのもので、それに答えるどの面にも共通するカードや欄がない決定のためのものです（Process のモデルのダッシュボードにある「View に表示」）。これはラベルの付いたアプリ自身のスイッチなので、状態は押されたように見える操作ではなく、その操作部から読み取れます。ツールチップは、今の状態が何を意味するかを述べます。方式を表す操作（編集、編集を終える、グラフのツール）は、入になっている間、押された姿で表されます。

## 2 種類の拒否 {#two-kinds-of-refusal}

どのバーも、メニューも、スイッチも、2 つの拒否を同じやり方で区別します。

| 拒否 | 見え方 | 理由 |
|---|---|---|
| サインイン中のロールに **決して** 許されないもの | そのコマンドはまったく描かれません | 押しても権限は得られませんし、そのロールが決して届かない灰色の操作が並んでいても、場所を取り、製品が壊れているように見せるだけです。閲覧するロールは、自分にできることの大きさのバーを読みます。 |
| **今は** 拒否されるもの | コマンドは描かれたまま灰色になり、何が足りないかをツールチップが述べます。何も選んでいない、ユニットの実行中でステーションがロックされている、実行が進行中、「ランタイム停止中」など | それは変わるものであり、そのコマンドがあることと、何をすれば戻るのかを知っておく必要があるからです。 |

終わらせる操作も、理由が状況であるときは例外ではありません。その場に灰色で残り、何を終わらせるのかを名乗り続けます。メニューはマウスを載せたときに同じ理由を述べ、状態のスイッチは、状態の意味を述べる文の前にその理由を置きます。フッターの **+** と、そのすべて展開・すべて折りたたむも、同じように灰色になります。

## 右クリックはツールバーを映します {#right-click-mirrors-the-toolbar}

ツリーの行を右クリックすると、まずその行が選ばれ、次にカーソルの位置でメニューが開きます。メニューにはバーと同じ操作が、同じ危険の色で、同じ拒否のもとに並ぶので、メニューはいつでもカーソルの下の行に働きかけます。バーの操作のほかに、メニューにはその行の下に作るもの、つまり欄の **+** のメニューがその行についてたどれるのと同じ項目も並びます。行き先の一覧を開く行（フォルダーへ移動、機器を追加できるドライバーの一覧）は、その隣に 1 階層だけ開きます。マウスを載せるか押すかで開き、末端を押すと実行してメニューが閉じます。外側のクリック、大きさの変更、行が巻き取られて見えなくなったときは、何も実行せずにメニューが閉じます。列の **+** は、同じ種類のメニューをボタンに対して開きます。マウスからでもキーボードからでも同じです。

## エンジニアリングロック {#the-engineering-lock}

設定と実際の実行は、1 台のステーションを分け合っています。少なくとも 1 台のユニットが手順を実行している間、設定は読み取り専用になります。ページには **エンジニアリングロック中** の通知バーが出て、「ユニットの操作が進行中です。すべてのユニットが終わるまで構成は読み取り専用のままですが、実行の操作やその他の運転操作は引き続き行えます。」と述べ、詳細カードは留めた頭部も含めて反応しなくなります。バーの操作はそれぞれ自分の可否を述べ続けます。ロックの下でも開いたままのものがいくつもあるからです。実行を始める、一時停止する、再開する、停止する、中止する、警報を確認する、値を書き込む、といったものは働き続けます。最後のユニットが終わると、編集はひとりでに再開できるようになります。[実行記録](process-runs) を参照してください。

## ランタイムの停止 {#the-stopped-runtime}

無償モードの時間が尽きたライセンスのないステーションは、ランタイムを止めます。アカウント以外のすべてのページは 1 つの一時停止の案内に置き換わり、ステーションを変えるコマンドは、実行中なら開いたままのものも含めて、すべて「ランタイム停止中」として拒否されます。帯、一時停止したページ、再起動については [ウィンドウ](app-window#the-stopped-runtime-band-and-the-paused-page) に、動作時間そのものについては [無償モードとライセンス](app-free-mode) に書いてあります。

## 確認とダイアログ {#confirmations-and-dialogs}

編集でウィンドウが開くことはありません。ダイアログは、その場限りのものか、取り返しのつかないもののためにあります。

| ダイアログ | いつ | どう振る舞うか |
|---|---|---|
| 確認 | 削除や復元の前に。「「*名前*」を削除しますか？ *何が消えるか。* この操作は元に戻せません。」 | ボタンは 2 つで、拒否する方に焦点があります。Enter、Esc、外側のクリックはどれも「いいえ」と答え、承認するには意図した Tab かクリックが要ります。取り返しのつかないことは、はっきりした「はい」なしには進みません。 |
| メッセージ | 主管理者の、1 回だけ表示される復旧キー。その PIN を設定または変更したときに出ます。ステーションがこのダイアログを開くのはこれだけのためです。キーは一度しか画面に出ず、ほかのどこにも残らないので、書き留めるまではそこに留まる必要があります。 | **OK** が 1 つ。ダイアログは開くと同時に焦点を取るので、述べていることがそのまま読み上げられます。Esc か外側のクリックで閉じ、Tab はダイアログの中にとどまります。結果を伝えるものではありません。実行されたコマンドは、操作ログ帯でそう述べます。 |
| その場限りの編集 | サインインのダイアログ、クラッシュレポートの同意のダイアログ、OPC UA サーバーに追加するクライアント | Esc か外側のクリックで取り消し、既定の操作があるダイアログでは Enter で確定します。Tab はダイアログの中にとどまります。 |

ページの上に重ならず、ページの中に出る案内は通知バーです。表題、本文、ときに 1 つの操作を持ち、重大さの色合い（情報、注意、重大、成功）の細い罫が付きます。通知バーが色の面をすべて使うのは、結果がすでに起きている状況、たとえば外部からの停止が実際に働いているときだけです。それ以外はすべて、状態の観察です。

## 結果が届く場所 {#where-results-land}

今おこなったことの結果は、ステータスバーの操作ログ帯に届き、ほかのどこにも届きません。保存、削除、名前の変更、インポート、印刷、再スキャン、サインインのいずれもそうです。成功も失敗も報告され、失敗は約 10 秒でひとりでに消え、その前に閉じるか次の結果に置き換わったときはそこで消えます。Connector の機器、シリアル回線、MQTT ブローカーについての拒否は、その機器、回線、ブローカーが保存された時点でも消えます。唯一の例外は、ダッシュボードのコンポーネントの中から出したコマンドで、これはそのコンポーネントの下で答えます。通知（スナックバー）は割り込むもののためにあり、押したことへの返事のためではありません。[操作ログ帯](app-window#the-action-feed) を参照してください。

## テーマと色 {#theme-and-colour}

色は意味のために取ってあります。状態の点は、中立なら灰色、健全なら緑、低下中か起動中なら黄、故障かオフラインなら赤、そして低下ではないが注目に値するとき（たとえば優先度が中の警報）はアクセントの色になります。危険を表す色は何かを終わらせるものに、注意の色合いは拒否されているものや保留されているものに付きます。明るい外観と暗い外観は、タイトルバーのテーマのキーか [設定の「外観」](settings-appearance) で選びます。ステーションのウィンドウでは、この選択はステーションのものです。どのブラウザーも、誰かがそのブラウザーでテーマを選ぶまではそれに従い、選んだあとは自分の選択を持ちます。

## どのページもしないこと {#what-no-page-does}

- 機器、タグ、変数、モデル、ユーザー、ロールのために、モーダルの編集ウィンドウを開くページはありません。どれもそのパネルの中で編集します。
- 「保存しました」の点滅や、独自の状態の行やトーストを出すページはありません。
- そのロールが決して実行できない操作を灰色で並べるページはなく、今だけ拒否されている操作を隠すページもありません。
- ランタイムが止まっている間、操作部を 1 つずつ凍らせるページはありません。ページごと、シェルが置き換えます。
- パネルの見出しに操作が載ることはなく、バーの組の並びを入れ替えるページもありません。
- 列に収まらない値を読めないままにする表はありません。省略記号で切られ、全文はツールチップで読めます。
