ITADN
OpenRailAssociation/netzgrafik-editor-frontend
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

网络图编辑器

网络图编辑器 – 旨在做出更优决策。
产品愿景是通过创建一个直观且强大的平台,利用智能预测和分析,来加速交通系统的规划与规模确定。这将使得时刻表变体或服务选项能够被轻松创建、比较和优化,并在规划人员的创造性过程中提供最大程度的支持。目标是确保决策能够基于数据驱动的洞察,从而保证未来快速、高效且目标导向的顺畅出行。

灵活的细节程度 - 从粗略草图开始,持续添加更多细节。

适用于不同行业 - 公交、火车、飞机。

随用例扩展 - 从爱好者时刻表编制到专业规划。

以人为本 - 时刻表规划是一个非常复杂且富有创造性的过程。Netzgrafik-Editor 通过数字化此前基于纸质的流程来支持用户,同时提供即时 分析能力。

卓越且直观的 UX - 使用 Netzgrafik-Editor 应像在白板上绘图一样简单自然。 无需培训。分析实时进行。

简介

Netzgrafik-Editor 是一款功能强大的软件,可用于创建、修改和分析 等间隔时刻表。

等间隔时刻表

固定间隔时刻表最早于20世纪初在德国开发, 用于协调柏林等大城市中的城市交通。

固定时刻表旨在提高公共交通的吸引力,因为它们 更容易被乘客记住,并且其模式使资源规划更加容易。

这种恒定时刻表也可能改善非高峰时段的服务。

荷兰人在1970年因首创枢纽系统而受到赞誉,该系统随后成为 1982年瑞士固定间隔时刻表的基础。

历史 - 固定间隔时刻表

钟面时刻表

来源

Netzgrafik-Editor

它提供了多种功能,以提升物流网络的效率和优化水平。 部分关键功能包括:

  • 用于编辑 Netzgrafik 的交互式绘图工具: 一个用户友好且交互式的图形 编辑器,用于创建和编辑等间隔时刻表。它提供了一个 可视化界面,以便轻松可视化和调整物流网络。

  • 图形时刻表 (Streckengrafik): 在 Netzgrafik 中定义的所有线路(列车运行)都可以转移到图形时刻表 表示中 (Streckengrafik)。

  • Perlenkette 列车运行编辑: 规划人员可以手动绘制和编辑作为链状的列车运行, 从而 定义物流网络的关键方面,并根据 特定要求和约束进行定制。

  • 物流信息提取: 该软件从 等间隔时刻表中提取重要的物流信息, 例如出发站和目的站、出发和到达时间以及列车频率。

  • 物流网络分析: 规划人员可以基于时刻表 表示来分析物流网络。 该软件提供关于换乘协调、换乘时间和物流 连接的信息,促进优化和效率提升。

  • 基础设施需求估算: 可以基于 输入的时刻表表示来估算基础设施需求, 辅助基础设施规划和决策。

起源与开源协作

Netzgrafik-Editor 最初是作为 瑞士联邦铁路 (SBB CFF FFS) 的内部创新项目开发的。 该项目始于一个可点击的原型。从项目的早期阶段起, 仍有一些尚未实现的想法和概念,因此始终值得查看 此文档。 整个项目现已达到成熟阶段,并演变为一个强大的工具,其应用 范围已超越铁路领域。它现在可用于任何需要以固定间隔时刻表作为 规划基础的领域。

编辑器的多功能性使其适用于各种物流规划场景,能够 高效地创建和分析时刻表。该软件的关键功能可在更广泛的 背景下加以利用,例如:

  • 公共交通系统: 其他公共交通网络可以利用该编辑器的 灵活性和功能,有效地可视化和规划其交通系统, 从而提高效率并改善服务。

  • 教育: 该编辑器的功能可用于教育机构,以展示 如何创建集成时刻表,以及在规划过程中需要考虑哪些属性, 从而实现高效的调度

更多……

通过将应用范围扩展到铁路之外,Netzgrafik-Editor 有潜力 成为众多行业中宝贵的工具, 提供对基于时间的规划进行全面控制、优化和同步。

由于 Netzgrafik-Editor 的这些多样化应用及其在各个 领域日益增长的价值, 决定将其作为开源软件发布。 这旨在促进规划层面的广泛使用与合作, 并积极支持来自不同行业的新想法的进一步发展,以便 编辑器不断改进, 并在最佳情况下,确立其作为不同公共交通 行业标准工具的地位。

社区参与和协作 在开发过程中至关重要且备受期待,以确保编辑器获得 多样性 和功能,并满足不同应用领域的 需求和挑战。 项目的开放性鼓励创新、来自不同领域的专业知识以及持续 改进,以优化 规划流程。

如果您想与其他 Netzgrafik-Editor 开发者交流,请随时加入我们的 Matrix 房间

路线图

了解计划和未来的 ROADMAP.md

用户手册

用户手册可在此处找到 USERMANUAL.md

在线演示

外部链接: nge.flatland.cloud - 由 Flatland Association 提供支持

( 示例 Netzgrafik - 如何导入 JSON )

软件包

Netzgrafik-Editor 已发布为:

使用 Docker Compose 设置本地演示环境

使用 外部链接: netzgrafik-editor-docker-compose 进行基于 Docker Compose 的一行设置 - 由 Flatland Association 提供支持。

入门指南

开发环境设置

为了拥有一个可用的本地开发环境,您还需要启动 后端

# clone project from https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-frontend
git clone https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-frontend.git

# switch into folder
cd netzgrafik-editor-frontend
# install all npm dependencies
npm install

# start ng server (connects to local backend, make sure it is set up and running)
npm run start

容器化变体

# install
apt install docker
apt install docker-compose-plugin

# build
docker compose build

# run
docker compose up

访问 Netzgrafik-Editor 前端

在浏览器中打开地址 http://localhost:4200/

使用用户名 user 和密码 user 登录

面向 Nix 包管理器用户

Nix 用户可以使用 flake.nix 文件来设置开发环境。

要使用 flake,需要启用 Nix 实验性功能 nix-commandflakes

请参阅 官方 Nix 文档 以获取更多信息。

结合 direnv 工具,每次进入项目文件夹时,可以使用以下命令来设置开发环境:

# allow direnv to use the flake
echo "use flake" >> .envrc && direnv allow

有关更多信息,请参阅 官方 direnv 文档

Linting

# to fix the eventual lint issues
npm run lint

# to check that the code is correctly linted
npm run lint:fix

格式化

由于我们使用 Prettier 作为格式化器,你可以自由地配置你喜欢的 IDE 来支持你。例如,如果你使用 VSCode,请遵循以下步骤:

  • 安装 Prettier 扩展
  • (可选:通过 npm 安装 Prettier npm install --global prettier
  • 现在,如果你尝试左键单击并选择“格式化文档”,你就可以使用 Prettier 手动进行格式化

锦上添花:保存时格式化

  • 你可以通过打开 VSCode 的“设置”并启用“编辑器:保存时格式化”来启用此功能(这样,每次保存文件时,你的代码都会被格式化)
  • 或者,你可以直接在 settings.json 中添加这些行(使用 Cmd + shift + p 打开,并搜索“打开用户设置 (JSON)”)
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}
# to check that the code is correctly formatted
npm run format:check

# to format the code according to Prettier rules
npm run format

测试

# just run all tests once
npm run test

# re-run tests when a file changes
npm run test -- --watch

# run tests in a Chrome browser window
npm run test -- --browsers Chrome

# run tests with Chromium instead of Chrome
npm run test -- --browsers ChromiumHeadless

后端 API 代码生成

后端 API 使用 OpenAPI ( 参见 api-docs.json) 进行定义。 用于与后端 API 通信的 Angular Services 基于此 规范使用 openapi-generator 生成并 添加到仓库中(参见 src/app/api/generated)。

更新 API 版本

要更新 API 版本,请启动本地后端服务器。 然后可以在 http://localhost:8080/v3/api-docs/ 下载新的规范。

可以使用以下命令生成新的 API Service 文件:

npm run generate:api

文档

请考虑以下信息:

并检查 开放的 issuespull requests

许可证

本项目采用 Apache 2.0 许可证。

贡献

开源项目依靠社区的协作和贡献而蓬勃发展。所有 贡献者都被要求阅读 CONTRIBUTING.md 文件,该文件概述了如何 向项目做出贡献,包括如何提交 bug 报告、功能请求和 pull requests。

编码标准

所有贡献者都被要求阅读 CODING_STANDARDS.md 文件,该文件 概述了您在向项目做出贡献时应遵循的编码标准。

行为准则

为了确保项目对所有贡献者来说都是一个欢迎和包容的环境,您,它 已制定了一份良好的 CODE_OF_CONDUCT.md

致谢

感谢所有贡献者的参与和贡献,没有他们,本项目 将不可能实现。感谢您目前和未来的贡献!

CREDITS.md

持续集成

本仓库使用 release-please 进行 CHANGELOG 生成、创建 GitHub releases 以及为项目进行版本升级。 详见 CI.md