简体中文
English 简体中文 繁體中文
Methodox 首页

概念

笔记本就是文档

笔记本是一个 Divooka 文档,它的入口图是一个实现 Notebook Application 的 Events 图。它的 Build 回调负责笔记本的布局;它的其他图(通常是 Function 图)负责响应单元格。文档能拥有的其他一切,它都可以拥有:数据成员、其他图、包、嵌入的资源。

站点、页面、单元格

  • 站点就是整个笔记本:一个名称、一个可选图标,以及它的各个页面。
  • 页面是笔记本的一项功能,列在侧边栏中。Page 之后添加的所有内容都放在该页面上,直到下一个 Page。
  • 单元格是一个输入与一个输出的组合:一个滑块和它显示的内容,一个文本框和它的回应。没有输入的单元格——Markdown、Html、Heading、Image——是静态的;Show 单元格没有输入,但会在页面加载时计算它要显示的内容。

布局是固定的:Build 只布局页面一次,之后变化的只有值、输出,以及哪些输入处于启用状态。如果 Build 为不同访问者布局出不同的内容,就会被拒绝,因为一半是一种布局、一半是另一种布局的页面根本不成其为页面。

布局笔记本的两种方式

逐条语句。 在 Build 之后串联 Notebook Application 自己的节点——Page、Markdown、Slider、Text Box——就像编写 Streamlit 脚本一样。这是通常的做法。

作为值。 Notebook Cells 中的每个节点都把一个单元格作为值生成——Slider、Text Box、Group 等等——你可以对它们连线、把它们保存在数组中,并用 Add Page 或 Add Cell 放置它们。两种方式布局出的是同样的笔记本。

函数响应单元格

每个输入都有一个函数引脚——On Change,按钮则是 On Click——每当输入的值发生变化时,就会用该值调用这个引脚所指定的函数:

输入 函数接收
Number、Slider 一个数字
Text Box、Text Area、Choice、Date 文本(日期格式为 yyyy-MM-dd)
Checkbox、Toggle 一个真值
Upload 上传的文件,或空值
输入组 它的所有字段,一次全部传入,类型为 Notebook Inputs
Button 无

在引脚上使用 Edit Function,会生成一个签名完全匹配的 Function 图。函数返回单元格要显示的内容。如果函数失败,单元格会显示错误,页面其余部分照常工作。

输入的函数在输入第一次变化时才运行,因此页面打开时各输入的输出都是空的。在 Build 中使用 Answer On Load,可以让每个输入在页面打开时就响应其初始值——由滑块驱动的图表通常需要这样。按钮和上传仍然会等待,因为它们没有初始值。

每位访问者独享一份文档

每次加载页面就是一个会话,每个会话都是文档的一个新实例:笔记本创建并构建这个实例,从而把该访问者的单元格绑定到它上面。因此:

  • 同一访问者的单元格共享实例的数据成员。 一个单元格的函数可以设置另一个单元格的函数所读取的成员。
  • 访问者之间从不共享成员。 使用同一个笔记本的两位同事各自拥有自己的值、输出和成员。
  • Input 按标签读取本会话中另一个单元格的当前值;Set Enabled 按标签启用或禁用另一个输入。Get Session Id 提供一个名称,可用于访问者的函数所写入的文件。

共享值

有些东西应该只加载一次并提供给所有人:一张大表格、一个训练好的模型。Site Started 回调在第一位访问者到来之前、在站点自己的实例上运行一次;Set Shared 把一个值保存在那里,Shared 则可以从任何访问者的函数中读取它。这是访问者之间唯一共有的状态,而且是显式的。

Session Started 和 Session Ended 在每位访问者到来和离开时运行。

只读与启用

  • Page Read Only 使当前页面变为只读:输入显示其初始值且不能更改,每个单元格显示其函数针对这些值给出的结果。dvn --read-only 对整个站点执行同样的操作。
  • Last Read Only 和 Last Disabled 修改最后添加的单元格;Set Enabled 从函数中调用,可在笔记本运行时修改另一个输入。
  • Hide Run All 从当前页面去掉 Run All。

只读页面:输入显示其值,单元格显示其结果

输出

函数的返回值决定访问者看到什么,而数据如何绘制由页面决定,而不是由计算决定:

Crop Yield Notebook:一个滑块,其函数返回 Plot With Parameter

函数返回 页面显示
无 无——输出保持折叠
文本、数字、真值 文本
Notebook Outputs 中的 Markdown、Html、Code Markdown、HTML 片段(两者都会清除脚本),或带语法高亮的代码块
Html Page 一个完整页面,位于独立的框架中
Divooka 图像,或 Picture 图片,按原样显示
来自 Plotting 工具箱的图形或图表 以交互方式绘制的图表,Image 视图显示 Divooka 自己的渲染结果
Notebook Outputs 中的 Chart、Line Chart、Scatter Chart、Plot Function、Plot With Parameter 由页面绘制的图表
表格 表格,带有视图选择器——Table、Line、Scatter、Bar、Histogram——以及整张表格的 CSV 下载
数字列表 这些数字,以表格或图表形式显示
Download 下载文件的链接
单元格数组 这些单元格的输出,嵌套显示

在 Image 视图中显示的 Plotting 图形,与 Divooka 绘制的一样

表格只把前一千行发送到页面;CSV 包含所有行。Last Prefer View 设置表格或图表输出打开时使用的视图。