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://,支持 opennew-recordedit-record 三个 action。官方列出的 mobile 参数包括打开时使用的 form_id,新建记录使用的 form_idproject_idstatuslatitudelongitude 和 data-name attributes,以及编辑记录使用的 record_idproject_idstatuslatitudelongitude 和 data-name attributes。

Fulcrum 也记录了 web links:https://web.fulcrumapp.com/dash/{form_id}https://web.fulcrumapp.com/records/newhttps://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-xyzhttps://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 值是 mapsplittable

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'

官方文档