Skip to content

Fulcrum ​

Fulcrum 是一款用于移动表单和记录采集的现场数据应用。Protocol Launcher 可以生成 Fulcrum URL action 链接。

使用方式 ​

这个库有两种使用方式:

  • On-Demand 从子路径导入,支持 tree-shaking,能让产物更小。
  • Full Import 从根包导入,适合快速脚本或演示,但会包含全部 app 模块。

生产构建建议选择 On-Demand;快速脚本或 demo 可以选择 Full Import。

选择安装方式

按需加载
推荐使用。生产环境优化。
全量导入
使用便捷。适合快速脚本。

URL Scheme ​

Fulcrum 官方文档列出了 mobile custom scheme fulcrumapp://,支持 open、new-record 和 edit-record 三个 action。官方列出的 mobile 参数包括打开时使用的 form_id,新建记录使用的 form_id、project_id、status、latitude、longitude 和 data-name attributes,以及编辑记录使用的 record_id、project_id、status、latitude、longitude 和 data-name attributes。

Fulcrum 也记录了 web links:https://web.fulcrumapp.com/dash/{form_id}、https://web.fulcrumapp.com/records/new、https://web.fulcrumapp.com/records/{record_id} 和 https://web.fulcrumapp.com/records/{record_id}?mode=edit。官方用于 Android/iOS 兼容跳转的示例是 https://web.fulcrumapp.com/action/#new-record?form_id=123-xyz 和 https://web.fulcrumapp.com/action/#edit-record?record_id=xyz-123。

Open ​

启动 Fulcrum mobile,并可选择打开指定 form。

On-Demand
ts
import { open } from 'protocol-launcher/fulcrum'

const url = open({
  formId: 'c55adab9-916d-46e9-98aa-7a2388a77b24',
})

New Record ​

创建一条 mobile record。自定义字段值会作为 Fulcrum data-name attributes 传入。

On-Demand
ts
import { newRecord } from 'protocol-launcher/fulcrum'

const url = newRecord({
  formId: 'c55adab9-916d-46e9-98aa-7a2388a77b24',
  status: 'incomplete',
  attributes: {
    sq_footage: 2300,
    name: 'My Awesome Building',
    number_of_floors: 3,
  },
  latitude: 28.038046,
  longitude: -81.952514,
})

Edit Record ​

通过 record ID 编辑已有 mobile record。

On-Demand
ts
import { editRecord } from 'protocol-launcher/fulcrum'

const url = editRecord({
  recordId: '11fb2a54-5158-4848-8695-c405c54525e4',
  status: 'incomplete',
  attributes: {
    sq_footage: 2300,
    name: 'SNI',
    number_of_floors: 3,
  },
  latitude: 28.038046,
  longitude: -81.952514,
})

Open Web Form ​

在 Fulcrum web app 中打开 form。官方列出的 mode 值是 map、split 和 table。

On-Demand
ts
import { openWebForm } from 'protocol-launcher/fulcrum'

const url = openWebForm({
  formId: 'c55adab9-916d-46e9-98aa-7a2388a77b24',
  mode: 'split',
})

Create Web Record ​

打开 Fulcrum web app 的新建记录页面。

On-Demand
ts
import { createWebRecord } from 'protocol-launcher/fulcrum'

const url = createWebRecord()

Open Web Record ​

在 Fulcrum web app 中打开已有 record。

On-Demand
ts
import { openWebRecord } from 'protocol-launcher/fulcrum'

const url = openWebRecord({
  recordId: '11fb2a54-5158-4848-8695-c405c54525e4',
})

Edit Web Record ​

以 web edit mode 打开已有 record。

On-Demand
ts
import { editWebRecord } from 'protocol-launcher/fulcrum'

const url = editWebRecord({
  recordId: '11fb2a54-5158-4848-8695-c405c54525e4',
})

New Record Action ​

生成 Fulcrum 官方文档中的新建 mobile record web action redirect URL。官方 redirect 示例只指定了 form_id。

On-Demand
ts
import { newRecordAction } from 'protocol-launcher/fulcrum'

const url = newRecordAction({
  formId: '123-xyz',
})

Edit Record Action ​

生成 Fulcrum 官方文档中的编辑 mobile record web action redirect URL。官方 redirect 示例只指定了 record_id。

On-Demand
ts
import { editRecordAction } from 'protocol-launcher/fulcrum'

const url = editRecordAction({
  recordId: 'xyz-123',
})

生成的 URL ​

ts
open({ formId: 'c55adab9-916d-46e9-98aa-7a2388a77b24' })
// => 'fulcrumapp://open?form_id=c55adab9-916d-46e9-98aa-7a2388a77b24'

newRecord({
  formId: 'c55adab9-916d-46e9-98aa-7a2388a77b24',
  attributes: { number_of_floors: 3, sq_footage: 2300 },
})
// => 'fulcrumapp://new-record?form_id=c55adab9-916d-46e9-98aa-7a2388a77b24&number_of_floors=3&sq_footage=2300'

editWebRecord({ recordId: '11fb2a54-5158-4848-8695-c405c54525e4' })
// => 'https://web.fulcrumapp.com/records/11fb2a54-5158-4848-8695-c405c54525e4?mode=edit'

newRecordAction({ formId: '123-xyz' })
// => 'https://web.fulcrumapp.com/action/#new-record?form_id=123-xyz'

官方文档 ​