openmct:NASA开源下一代任务控制框架,支持桌面与移动设备数据可视化

A web based mission control framework.

分支1051Tags235
文件最后提交记录最后更新时间
2 个月前
2 年前
2 个月前
1 年前
9 天前
1 个月前
9 天前
1 个月前
15 天前
2 年前
2 个月前
2 年前
2 个月前
2 个月前
3 年前
2 年前
2 个月前
10 个月前
2 年前
2 个月前
10 个月前
1 年前
2 年前
1 年前
2 年前
2 年前
2 年前
11 个月前
2 个月前
1 年前
15 天前
2 个月前
1 年前

Open MCT license codecov This project is using Percy.io for visual regression testing. npm version

CodeQL

Open MCT(开放式任务控制技术)是下一代任务控制框架,用于在桌面和移动设备上进行数据可视化。它由美国国家航空航天局(NASA)艾姆斯研究中心开发,目前被NASA用于航天器任务的数据分析,以及实验性漫游车系统的规划和操作。作为一个可推广的开源框架,Open MCT可用作构建任何产生遥测数据系统的规划、操作和分析应用程序的基础。

Note

请访问我们的官方网站入门指南

当您使用Open MCT创建出令人惊叹的成果后,请在我们GitHub Discussions的展示与分享板块展示您的作品。我们非常期待看到Open MCT各种独特而精彩的应用实例!

Screen Shot 2022-11-23 at 9 51 36 AM

在本地构建和运行Open MCT

在您的本地开发环境中构建和运行Open MCT非常简单。请确保您已安装GitNode.js,然后按照以下说明操作。需要更多信息?请查看我们网站上的入门指南页面。 (这些说明假设您是以非root用户身份进行安装;开发人员报告了以root权限运行这些步骤时出现的问题。)

  1. 克隆源代码:
git clone https://github.com/nasa/openmct.git

2.(可选)使用 nvm 安装正确的 node 版本:

nvm install
  1. 安装开发依赖项(注意:请查看 package.json 引擎部分,了解我们已测试并支持的 node 版本):
npm install
  1. 运行本地开发服务器:
npm start

Important

Open MCT 现已运行,可通过将 Web 浏览器指向 http://localhost:8080/ 进行访问

Open MCT 是使用 npmwebpack 构建的。

文档

文档可在 Open MCT 网站 上获取。

示例

开发 Open MCT 插件最清晰的示例位于我们文档中提供的 教程 里。

Note

我们希望 Open MCT 尽可能易于使用、安装、运行和开发,您的反馈将帮助我们实现这一目标! 您可以通过 GitHub issues发起 GitHub 讨论 或发送电子邮件至 arc-dl-openmct@mail.nasa.gov 提供反馈。

使用 Open MCT 开发应用程序

有关使用 Open MCT 进行开发的更多信息,请参阅我们文档中关于 使用 Open MCT 开发应用程序 的指南。

兼容性

这是一个快速发展的项目,我们尽最大努力测试并支持尽可能广泛的浏览器、操作系统和 NodeJS API。我们在 package.json 的 browserslist 键中发布了支持列表。

该项目利用 nvm 来维持所有项目中一致的 node 和 npm 版本。对于 UNIX、MacOS、Windows WSL 和其他 POSIX 兼容的 shell 环境,请点击 此处。对于 Windows,请查看 nvm-windows

如果您在特定浏览器、操作系统或 NodeJS API 上遇到问题,请 提交 issue

Note

如果您将 Open MCT 作为 git 依赖而非 npm 依赖来构建项目,现在需要额外步骤来构建源代码。由于供应链攻击带来的威胁,此仓库现已启用 ignore-scripts。将 Open MCT 作为 git 依赖进行构建的开发人员现在需要手动执行 npm run build。我们始终鼓励开发人员使用预构建的 npm 仓库中的 Open MCT,而不是从 github 构建。

插件

Open MCT 可通过调用 Open MCT API 的插件进行扩展。插件是一组软件组件(包括源代码和资源,如图像及 HTML 模板),旨在作为一个整体添加或移除。

除了提供扩展机制外,Open MCT 的大部分核心代码库也以插件形式编写。

有关编写插件的信息,请参阅我们的 API 文档

测试

我们的自动化测试覆盖包括单元测试、端到端测试、视觉测试、性能测试和安全测试。

单元测试

单元测试使用 Jasmine 编写,并通过 Karma 运行。运行命令如下:

npm test

测试套件配置为加载 src 目录下所有以 Spec.js 结尾的脚本。完整配置详情见 karma.conf.js。按照惯例,单元测试脚本应与被测试单元放在同一目录;例如,src/foo/Bar.js 的测试脚本为 src/foo/BarSpec.js

端到端、视觉和性能测试

我们的端到端(e2e)、视觉和性能测试利用 Playwright 框架,并通过 Playwright 的测试运行器 @playwright/test 执行。

如何运行测试

  • 端到端测试:这些测试在每次提交时运行。要在本地运行测试,请使用:

    npm run test:e2e:ci
    
  • 视觉测试:要运行视觉测试套件,请使用:

    npm run test:e2e:visual
    
  • 性能测试:要启动性能测试,请输入:

    npm run test:perf
    

所有测试均位于 e2e/tests/ 目录中,并通过 *.e2e.spec.js 文件名模式进行标识。有关端到端测试套件的更多信息,请参阅 README

安全测试

每次提交都会使用 CodeQL 分析已知安全漏洞。CWE 覆盖项列表可在 CodeQL 文档 中找到。CodeQL 工作流在 CodeQL 分析文件 和自定义 CodeQL 配置 中指定。

测试报告与代码覆盖率

每个测试套件都会在 CircleCI 中生成报告。若需全面了解测试功能,请查看我们的 Circle CI 测试洞察仪表板

我们的代码覆盖率在单元测试、端到端测试和视觉测试运行期间生成。这些报告的组合会发布到 codecov.io

有关代码覆盖率设置的更多具体信息,请参阅 TESTING.md#code-coverage

术语表

Open MCT 中使用的某些术语具有一致的含义或约定。任何与以下内容的偏离都属于问题,应予以解决(要么更新本术语表,要么修改代码以反映正确用法)。其他开发者文档,特别是内联文档,可能会假定读者已理解这些术语。

术语 定义
plugin(插件) 一种可移除、可重用的软件元素组合。应用程序由插件构成。
composition(组合) 在领域对象的上下文中,此术语指的是构成该对象或包含于该对象的其他领域对象的集合。领域对象的组合是应直接显示在其树形层级下方的领域对象集合。它在其模型中描述为一个 ID 数组,提供了一种异步检索与这些标识符关联的实际领域对象实例的方式。
description(描述) 用作对象属性时,此术语指事物的人类可读描述,通常为单个句子或简短段落。它最常用于扩展、领域对象模型或其他类似的特定应用程序对象的上下文中。
domain object(领域对象) 对用户而言有意义的对象,是 Open MCT 所支持工作中的一个独特事物。左侧树中出现的任何事物都是领域对象。
identifier(标识符) 由命名空间和键组成的元组,两者共同唯一标识一个领域对象。
model(模型) 与领域对象关联的持久状态。领域对象的模型是一个可转换为 JSON 而不丢失信息的 JavaScript 对象,这意味着它不包含方法。
name(名称) 用作对象属性时,此术语指事物的人类可读名称。它最常用于扩展、领域对象模型或其他类似的特定应用程序对象的上下文中。
navigation(导航) 此术语指应用程序相对于用户对特定领域对象表达的兴趣的当前状态。例如,当用户点击树中的某个领域对象时,他们正在导航到该对象,此后该对象被视为已导航对象,直到用户做出另一个此类选择。
namespace(命名空间) 用于标识持久化存储的名称。运行中的 Open MCT 应用程序可能会使用多个持久化存储。

Open MCT v2.0.0

本代码库现已完全移除对旧版基于bundle的API及其所依赖的库(如Angular 1.x)的支持。

如果您的Open MCT应用程序目前仍在使用旧版API,我们提供了一个插件,用于引导旧版的bundle机制和API。但请注意,此插件不会长期维护,并且也不会针对Open MCT的未来版本进行兼容性测试。提供该插件仅为方便用户过渡。

如何判断是否在使用旧版API?

如果您的源代码中存在以下情况,则可能仍在使用旧版API:

  • 包含名为bundle.js或bundle.json的文件,
  • 调用了openmct.$injector()openmct.$angular
  • 调用了openmct.legacyRegistryopenmct.legacyExtensionopenmct.legacyBundle

如果正在使用旧版API,应该怎么做?

请参考现代Open MCT API。如有任何问题,请发布至Open MCT GitHub仓库的讨论区

相关代码库

Note

尽管Open MCT可作为独立项目运行,但它主要是一个可扩展框架,旨在作为依赖项与用户自己的插件和打包一起使用。此外,Open MCT需要配合Apache或Nginx等HTTP服务器使用。openmct-quickstart是一个使用Apache托管Open MCT的绝佳示例,您可以在下表中找到它。

代码库 描述
openmct-tutorial 初学者学习如何使用和扩展Open MCT的理想起点。
openmct-quickstart Open MCT与Apache HTTP服务器、YAMCS遥测以及Couch DB持久化集成的实用示例。
Open MCT YAMCS Plugin 用于将YAMCS遥测和命令服务器与Open MCT集成的插件。
openmct-performance 用于Open MCT性能测试的资源。
openmct-as-a-dependency 一份高级指南,指导用户在将Open MCT作为依赖项时如何进行构建、开发和测试。

项目介绍

基于网络的任务控制框架。【此简介由AI生成】

定制我的领域
27313.02 K1.46 K访问 GitHub