舰队基地 Ember Core
车队基地控制台背后的服务、合同、装饰和公用事业 舰队基地的扩建工程已经建成.
文档 • 妇女 快速启动 • 妇女 Ember 用户界面 • 妇女 捐款
概览
@fleetbase/ember-core 是舰队基地控制台和舰队基地扩展的安伯号
共享 。 它规定:
- 宇宙间 扩展层,用于插入控制台:菜单, 登记册、仪表板部件、生命周期钩、引擎加载和资源视图.
- 合同 ——描述扩展贡献的小,可连锁分类
(单位:千美元)
MenuItem, (中文(简体) ),Widget, (中文(简体) ),Hook, (中文(简体) ),TableColumn, (中文(简体) ),ResourceAction(见a/cn.9/wg.iii/wp.iii/wp.48,第2段). - 应用程序服务 ——认证,API客户端,当前用户,CRUD工作流程, 过滤器,通知,套接字,主题等等.
- 装饰和公用事业 ——存储和API后置属性,引擎服务注入,以及 帮助控制台全程依赖.
有部分人,住在伴侣的外甥中, @fleetbase/ember-ui (英语)。 。 。 .
文档
这些文件住在 舰队基地.io/docs/扩展-发展。 。 。 .
| 专题 | 指南 |
|---|---|
| 建设您的第一个扩展 | 快速启动 • 妇女 扩展解剖学 |
| 如何装入扩展名 | 建筑 • 妇女 延期登记 |
| 宇宙及其子服务 | 宇宙概览 • 妇女 菜单 • 妇女 书记官处 • 妇女 部件 • 妇女 钩子 • 妇女 扩展管理器 |
| 扩展另一个引擎的表格和详细视图 | 资源视图 |
| API 参考 | 合同 • 妇女 琥珀服务 • 妇女 装饰者 |
安装
pnpm add @fleetbase/ember-core
或者,与Ember CLI: :
ember install @fleetbase/ember-core
需要节点 18 或更新。 附加物由Ember 5.4建造并测试.
使用量
注册扩展名
扩展帮助控制台从 setupExtension 钩上它 addon/extension.js。 。 。 .
这个 universe 它得到的是其他一切的切入点:
// addon/extension.js
import { ResourceAction, TableColumn } from '@fleetbase/ember-core/contracts';
export default {
setupExtension(app, universe) {
// Add an item to the console header
universe.getService('menu').registerHeaderMenuItem('Acme', 'console.acme', {
icon: 'rocket',
priority: 5,
});
// Add a column and a row action to Fleet-Ops' drivers table
const views = universe.getService('resource-view');
views.register(
'fleet-ops:driver:table:columns',
new TableColumn({ id: 'safety-score', label: 'Safety Score', valuePath: 'meta.safety_score' }).after('status')
);
views.register(
'fleet-ops:driver:table:row-actions',
new ResourceAction({ id: 'acme-sync', label: 'Sync to Acme', icon: 'sync', permission: 'acme sync driver' })
.withHandler((driver, ctx) => ctx.owner.lookup('service:acme').sync(driver))
);
},
};
使用服务
每个服务都以通常的方式注入:
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class OrdersController extends Controller {
@service fetch;
@service currentUser;
@service notifications;
@action async dispatch(order) {
await this.fetch.post(`orders/${order.id}/dispatch`);
this.notifications.success(`Dispatched by ${this.currentUser.name}`);
}
}
包括什么
宇宙 ——可扩展层
universe 是6个子服务的外观,每个子服务与 universe.getService(name)数字 :
| 名称 | 负责 |
|---|---|
menu | 页眉项目、管理员和设置菜单、账户下放和自定义菜单注册 |
registry | 已命名的登记册,并登记各引擎的部件、服务和助手 |
widget | 盘子部件和仪表板 |
hook | 应用生命周期和自定义钩 |
resource-view | 其他引擎表格上的列、动作和菜单项及详细视图 |
extension-manager | 装入引擎并共享服务 |
合同 进口自 @fleetbase/ember-core/contracts
| 合同 | 说明 |
|---|---|
MenuItem, (中文(简体) ), MenuPanel | 菜单条目和将其分组的管理员面板 |
ExtensionComponent | 住在引擎内、按需装入的组件 |
Widget | 一个仪表板部件 |
Hook | 一个生命周期或自定义钩柄处理器 |
Registry | 名称登记 |
TableColumn | 添加到资源表的一列 |
ResourceAction | 一行、批量或细节菜单动作 |
ActionButton | 工具栏或细节标题按钮 |
服务
| 服务 | 负责 |
|---|---|
session | 认证和会话周期 |
current-user | 注册用户、他们的组织、权限和偏好 |
fetch | Fleetbase API客户端:请求、上传、下载和缓存 |
crud | 删除、批量操作、进出口工作流程 |
resource-action | 模式具体行动服务的基础 |
filters | 资源表格查询-参数过滤器 |
table-context | 活动表格的选择状态 |
abilities | 权限检查 |
notifications | 托拉斯通知 |
socket | 用会话套接字符认证的实时频道 |
chat | 聊天频道和信息 |
events | 应用程序事件跟踪 |
theme | 浅而暗的主题和路线体类 |
language | 区域选择 |
loader | 正在装入覆盖 |
app-cache | 持续的客户端缓存 |
url-search-params | 读取和写入 URL 的查询字符串 |
custom-fields-registry | 自定义附于任何模型的字段 |
装饰者
| 装饰 | 对 |
|---|---|
@engineService | 从另一个引擎注入服务 |
@fromStore | 用商店查询备份属性 |
@fetchFrom | 用 API 请求支持一个属性 |
发展
pnpm install --frozen-lockfile
pnpm start # serve the dummy app
pnpm test # lint + the full suite
pnpm run test:ember # the suite on its own
pnpm run lint # eslint, ember-template-lint, stylelint
pnpm run build # production build
在一个区域工作时运行子集 :
pnpm exec ember test --filter="Unit | Service | fetch"
测试和覆盖范围
套房以无头Chrome通过Testem运行. 覆盖范围设于 100%(百分比) addon/
来源 - 陈述、分支、功能和行,每个文件检查,并在CI中执行
报告结果 代码。 。 。 .
pnpm run coverage # run the suite with coverage
pnpm run coverage:check # enforce the gate
捐款
见 捐款 向导。 欢迎提出问题和意见 GitHub 讨论 继续 解析器。 。 。 .
许可证
凭 GNU 阿费罗通用公共许可证 v3.0 或以后。 。 。 .