# 画面与文件夹

> 可视化栏列出什么、又是怎么组织的：新建、复制、归档、重命名、重排和移除画面与文件夹，混在其中的单元面板，启动画面，以及谁看得到哪一幅画面。

[View](home) 页面的**可视化**栏列出这台工作站所显示的每一幅画面：你搭出来的仪表画面、你把它们归进去的文件夹，以及 Process 各单元放在那里的操作面板。选中一行就在舞台上打开它。组织这份列表需要角色的**编辑仪表画面**权限；没有这项权限的角色只读这份列表、打开它可以看到的东西，下面这些动词一个也不会给它画出来。工程锁定期间（有单元正在运行）和运行时停止期间，这里的每一次写入都会被拒绝，理由写在变灰动词的提示里。

## 画面 {#screens}

你自己的一幅画面是一行，带着在它的[设置](view-settings)里挑的图标、它的名称，以及作为提示的说明。没有说明的一行，包括 Process 模型放到这里的每一个条目，都以它自己的名称作为提示，所以列里被截断的名称也能完整读到。

| 命令 | 在哪里 | 作用 | 什么时候变灰 |
|---|---|---|---|
| 新建仪表画面 | 底部的**新建…**菜单，或者某个文件夹行的右键菜单 | 在列表末尾建一幅“新建仪表画面”（24 × 12，没有组件），位置在顶层，或者在你右击的那个文件夹里面，但不会打开它：舞台显示它归入的那个文件夹的卡片墙，新画面的卡片突出显示并滚动到可见处，列表也展开到那个文件夹（顶层见下文）。用它的卡片，或者列表里它那一行，以查看模式打开这幅画面；要开始搭画面，请按命令栏上的**编辑**。空舞台上的**新建仪表画面**按钮做的是同一件事。 | 工程已锁定、运行时已停止。 |
| 复制 | 舞台上方的命令栏 | 为打开的画面做一个可编辑的副本：它的各个组件和它们之间的每一条连线都以全新的身份克隆一份，副本落在同一个文件夹里，取原来的名字加上“(2)”“(3)”这样一直排到有一个名字空着为止，但不会打开它：舞台显示那个文件夹的卡片墙（顶层的画面则是**顶层**卡片墙），副本的卡片突出显示并滚动到可见处。副本绝不会是启动画面。 | 什么也没打开、工程已锁定、运行时已停止。 |
| 上移仪表画面 / 下移仪表画面 | 底部，编辑器打开期间 | 在打开画面自己所在的文件夹里面（或者在顶层的那些画面之间），把它和相邻的那一个对调。一个文件夹坐在它最靠上那幅画面的位置上，所以把一个文件夹的第一幅画面推到上一幅之上，会把整个文件夹一起带走。 | 这幅画面在同级里已经是第一个或者最后一个；打开的这一项是一块单元面板（它的顺序跟着模型走）。 |
| 删除 | 编辑器的**仪表画面**区 | 删掉这幅画面和上面的一切。它和别的[仪表画面设置](view-settings)写在一起。 | |

两幅画面可以同名；没有任何东西按名称或者按文件夹来寻址一幅画面。一幅画面在列表里的位置，就是那两个重排动词写下的顺序；新建的画面和副本总是落在最后。

新建从不打开新建出来的东西，复制也是一种新建。舞台显示新画面所归入的文件夹的卡片墙（里面的文件夹是小行，然后是它的画面卡片），新画面的卡片突出显示并滚动到可见处，列表也展开到那个文件夹。顶层的画面没有文件夹可显示，所以舞台改为打开**顶层**卡片墙：顶层的文件夹，以及没人归档的画面。列表里没有哪一行代表它，它的命令栏只带着它的名称而没有动词，因为没有什么可重命名或移除的。突出显示一直保留到你打开某幅画面或某个文件夹；按卡片，或者列表里那幅画面的行，就打开这幅画面。

## 文件夹 {#folders}

一个文件夹装着画面，以及再一层文件夹：最多两层。它的存在有两种理由：要么是你声明了它（在你归档任何东西之前它一直空着立在那里），要么是某幅画面在自己的路径里指名了它。文件夹名称比较时不分大小写，所以“Furnace”和“furnace”是同一个文件夹，而列表显示的是第一次见到的那种写法。归档纯粹是导航层面的：没有任何东西通过文件夹来寻址一幅仪表画面，所以重命名或者移动一个文件夹，不会改写任何地方的任何引用。

| 命令 | 在哪里 | 作用 | 什么时候被拒绝 |
|---|---|---|---|
| 新建文件夹 | 底部的**新建…**菜单（顶层），或者某个文件夹行的菜单（在它里面建一个子文件夹） | 把这个文件夹声明为“新建文件夹”（然后是“新建文件夹 2”这样，取同级里第一个空着的名字），并且立刻在这一行上打开它的名称字段。键入名称后按回车或者离开这个字段；按 Esc 就让它叫“新建文件夹”。 | 这一行已经是第二层文件夹（它的菜单里不提供新建文件夹）、工程已锁定、运行时已停止。 |
| 重命名文件夹 | 某个文件夹行的菜单，或者这个文件夹打开时的命令栏 | 把这一行变成一个名称字段。新名字会带着这个文件夹的子文件夹和里面的每一幅画面一起走；你原先展开着的文件夹，在新名字底下仍然展开着。 | 名字是空白的，或者里面带着“/”（“文件夹必须有名称，而且名称里不能包含‘/’。”）；名字在同级里已经被占用（“这里已经有一个名为‘…’的文件夹。”），因为把两个文件夹并成一个是一次移动，必须作为移动来提出。只改一个文件夹名字的大小写是允许的。 |
| 移除文件夹 | 某个文件夹行的菜单，或者这个文件夹打开时的命令栏（危险色） | 先问一遍，并数出有什么要挪动：“要移除文件夹‘X’吗？它的 N 个画面会移回列表顶层。不会删除任何仪表画面。”如果里面有文件夹，对话框还会补上：“里面的 1 个文件夹会跟着一起移除，它们原来的排列方式不会保留。”（多个时为“里面的 N 个文件夹会跟着一起移除，它们原来的排列方式不会保留。”）它装着的每一幅画面，包括子文件夹里的，都回到顶层，这个文件夹不再存在。 | 工程已锁定、运行时已停止。 |
| 移动到 | 某个画面行的菜单 | 一个列出每一个目的地的子菜单：**一个新文件夹**（围着这幅画面新建）、**这里的一个新子文件夹**（只有画面正待在某个顶层文件夹里时才提供）、**顶层**（已经在那里时变灰），然后是列表画出来的每一个文件夹，空的也在内（当前那个变灰）。目的地会展开，好让被移动的画面出现在屏幕上。 | 工程已锁定、运行时已停止。 |

文件夹行上的那个箭头把这一组折起来；按下名称则在舞台上打开这个文件夹，这一行也取得和被选中画面同样的强调色。页面打开时每个文件夹都是折起来的；你展开了哪些只属于你这一次会话，绝不保存。底部的**全部展开**和**全部收起**一下子扫过每一个文件夹，没有文件夹可开时它们变灰。

文件夹按它最靠上那幅画面的位置排序；底下哪里都没有画面的文件夹排在有画面的那些后面，并在自己这一类里按名称排序，所以一个刚建的文件夹总是在它那一层的最下面找得到。有组织权限的角色看得到每一个已声明的文件夹，不管空不空；别的角色拿到的只有至少装着一幅它可以看到的画面的那些文件夹，于是一个角色被隐藏掉的画面，绝不会给它留下一堆打开来什么也没有的空壳。

## 文件夹概览 {#the-folder-overview}

在舞台上打开的文件夹画出它装着什么。一行说明这里直接归了什么（“这里归入了 1 张画面。打开它的卡片即可运行。”“这里归入了 N 张画面。打开一张卡片即可运行。”“这里没有直接归入的画面。请打开下面的某个文件夹，看看它里面有什么。”，或者“这里还没有归入任何东西。”）。它的子文件夹排在最前面，是一些小行，带着名称和各自负责多少（“没有画面”“1 张画面”“N 张画面”）；按一下就打开那个文件夹。再往下是直接归在这里的每一幅画面各一张卡片：画面的图标（它没挑图标时是那个通用的画面标记）、它的名称，以及说明的一行文字。整张卡片都是可以按的。什么也没装的文件夹写着：“这个文件夹里还没有画面。在列表里右击它可以就地新建一张，也可以从某张画面自己的菜单把它移进来。”

## 混在画面里的单元面板 {#unit-panels-among-the-screens}

一个 Process 模型放到这里的那些条目代表的是一个单元，不是一份布局：模型上每一块在 Process 工作区里标了**在 View 上显示**的操作面板或者画面，每个单元各得一项（[操作面板](process-panels)、[模型的仪表画面](process-dashboards)）。每一项命名为 `模型 · 单元 · 界面`，带着在那块操作面板或者那幅画面上挑的图标；没挑图标的那一项，取 Process 树为那一类节点所画的固定标记，于是两份列表保持一致。没有归档过的那些立在树后面**单元操作面板**这个抬头底下；你可以像对待自己的画面一样，从它那一行的菜单把它归进任何文件夹，而在一个名字就是模型名或者单元名的文件夹里面，这一行会去掉那一段，读起来就像 `2 号单元 · 总览`。舞台上的命令栏从不缩短它：它写的始终是完整的名称。

一个单元条目在这里绝不会被复制、编辑或者重排：命令栏上的**在 Process 里编辑**为可以管理模型的角色打开这个模型自己的那一行。看到一个单元条目需要**查看模型**权限，并且不理会画面可见性清单；操作它需要**运行流程**。这样一个条目画出什么，写在 [View 上的单元面板](view-unit-panels)。

## 启动画面 {#the-startup-screen}

一幅仪表画面可以在它的[设置](view-settings)里带上**启动时显示**；打开它会把其他每一幅画面上的这一项清掉。每一条连接都打开在那幅画面上，没有哪一幅带这个标记时则打开列表顺序里的第一幅；一个 `/d/{id}` 地址只在这一次访问里盖过它。单元条目绝不会是启动画面，副本也绝不继承这个标记。

## 谁看得到哪一幅画面 {#who-sees-which-screen}

[仪表画面设置](view-settings)里的**可见角色**清单决定哪些角色列得出、打得开一幅画面，无论通过列表还是通过 `/d/{id}`。一个也不勾选表示所有人都行；勾了一份清单就表示只有这些角色，而 Admin 无论如何都看得到每一幅画面；“未登录”这个角色和别的角色一样参与其中，所以一台自助终端平板只勾它自己那几幅画面。一个勾选过、后来被删掉的角色算作没有勾选，于是一幅画面绝不会变得谁也够不着。单元条目不理会这份清单：看到它，跟的是上面那条 Process 权限。

## 缩略图 {#thumbnails}

可视化栏和文件夹概览都不画一幅画面的图：一行是它的图标和名称，一张卡片是它的图标、名称和说明。只有 Process 工作区在排一块操作面板、并在里面预览一张画面卡片的时候，一幅画面才会以它自己的样子被画小（[操作面板](process-panels)）。那份预览是真正的画面，在它自己的网格上，摆成读数为空的样子（指示器上是短横，图表没有系列），各类图表画成它们形状的剪影而不是一个活的绘图引擎，不带它的连线，而且是静止的：一幅现场的画，从来不会去操作一个现场。一幅没有组件的画面写着“上面还什么都没有”。

## 这一栏不做什么 {#what-the-column-does-not-do}

它绝不把文件夹嵌到三层深：存得更深的路径会被读到两层为止，而不是藏起来。它绝不删除一幅画面；移除一个文件夹只是把它腾空。它绝不归档一个模型自己的画面定义（那属于 Process 树），只归档按单元生成的那些条目。而且它不保留你浏览时的任何东西：折叠状态、打开着的文件夹和选中项都按连接保存，随连接一起消失。
