miklcct / journey_recorder
将您的公共交通出行记录到数据库中
Requires
- php: ^8.1
- ext-mysqli: *
- civicrm/composer-compile-plugin: ^0.20.0
- http-interop/http-factory-guzzle: ^1.0
- miklcct/thin_php_app: ^0.6
- thecodingmachine/safe: ^1.3
- yiisoft/session: ^1.0
Requires (Dev)
- roave/security-advisories: dev-latest
Suggests
- byjg/migration-cli: Enable versioning on your database
This package is auto-updated.
Last update: 2024-08-31 00:14:40 UTC
README
此应用程序可以帮助您在途中记录您的公共交通出行。
系统要求
- PHP: ^8.1 (带有 mysqli 扩展)
- Composer
- Yarn
安装
作为独立应用程序
- 运行
composer create-project miklcct/journey_recorder
- 将
resource/base.sql
中提供的模式和resource/migrations/up
中的所有迁移加载到 MariaDB 数据库中。 - 配置您的 web 服务器以将
public
作为文档根,或将文档根下的子文件夹链接到public
文件夹。
作为 PHP 应用程序中使用的库
- 在您的 PHP 应用程序中运行
composer require miklcct/journey_recorder
。 - 将
resource/base.sql
中提供的模式和resource/migrations/up
中的所有迁移加载到 MariaDB 数据库中。 - 提供您的
JourneyResponseFactoryInterface
实现,以便 UI 适合您的网站。JourneyView
类和journey_main.xhtml.php
模板是一个好的起点。如果您正在使用它们,将scripts/journey.js
和stylesheets/journey.css
链接到您的公共文件夹,并将 Web 路径传递给JourneyView
构造函数。 - 如果需要离线功能,请将
journey_service_worker.js
也链接到您的公共文件夹,并在脚本中注册它。提供的scripts/journey.js
就是这样做的,在这种情况下,它必须放在公共文件夹的根目录下。 - 在您的网站上添加一个路由,使
JourneyApplication
作为控制器,该控制器符合 PSR-15。
用法
此应用程序仅用于记录行程。它不提供任何后续检索(除了最新的一个)或分析工具的接口。
它允许您输入公共交通行程的信息,包括距离、票价和车票。它支持多张车票和分割车票。如果没有提供距离,它将尝试从先前的相同行程中填充它。
车票列表是从先前的提交中填充的。如果没有显示车票,请使用“获取最后一个插入的行程”按钮来加载它们。
提供了“推入队列”和“从队列中弹出”按钮,以保存表单并在以后提交前加载它,或在您暂时缺少互联网访问(如在地铁中)的情况下。
如果浏览器支持服务工作者并且使用默认脚本,脚本将注册一个服务工作者来缓存应用程序所需的资源,以便在离线时可用。此外,离线时禁用提交按钮。
数据库迁移
迁移文件组织在 byjg/migration
包所需的结构中。但是,无需使用库。如果您想为您的数据库(s)使用它,请通过运行 composer global require byjg/migration-cli
安装 CLI 接口。
缺陷
一些数据库列名可能具有误导性。但是,为了避免兼容性问题,它们将在下一个主要版本中修复。
-
数据库应该对距离具有单元无关性,但某些列假设使用公里作为距离的单位
tickets view
。每公里价格
journeys fare
。每公里票价
这些都应表示每距离而不是每公里,以便使用替代的距离单位。
-
车票查看
。其中distance travelled
表示个人行驶的距离,而segments travelled
则表示不管使用该车票的人数,所行驶的段数。 -
提前购买
选项不能充分覆盖所有预先购买的需求。- 配额控制车票是根据配额销售的。它们不能保证有货。
- 如果车票必须针对特定服务购买且不能在其他服务上使用(即使价格不变,因为即兴旅行没有保证),则该车票是配额控制的。
- 非配额控制的提前购买车票在指定的最后期限前总是有货,但不是在旅行前的即时。
- 即兴购票在旅行时间保证有货。
- 配额控制车票是根据配额销售的。它们不能保证有货。
-
登机时间戳
和下机时间戳
代表UTC时区的时刻。由于在尝试计算存储列中的本地时间时存在时区问题,这些不再是自1.6.0版本以来的时间戳
列。
演示
以下演示可用于测试,但由于隐私问题(数据将通过作者控制的服务器传输),不建议在生产环境中使用。