sjaakp/yii2-timeline

为 Yii2 的相似时间轴小部件。

安装次数1,097

依赖项: 0

建议者: 0

安全: 0

星级: 17

关注者: 6

分支: 6

开放问题: 1

类型:yii2-extension

v1.01 2017-07-27 12:16 UTC

This package is auto-updated.

Last update: 2024-08-29 03:26:18 UTC


README

将 Simile 时间轴集成到 Yii 2.0 PHP 框架的 Widget。

时间轴 Widget 渲染一个版本为 2.3.1 的 JavaScript Simile 时间轴。时间轴的事件数据由 Yii DataProvider 提供(任何实现 yii\data\DataProviderInterface 的对象)。

时间轴 Widget 的演示请访问:这里

关于 Simile 时间轴的更多信息以及一些演示可以在以下链接找到: http://www.simile-widgets.org/timeline/注意:信息非常简略,经常是相互矛盾或明显错误的。Simile 时间轴的代码已经超过十二年,似乎已经废弃很长时间。它甚至没有完成:许多或多或少有文档记录的功能根本没有实现。尽管如此,Simile 时间轴是一个很好的概念,核心代码看起来运行相当稳定。《时间轴》Widget 只使用了经过良好证明的 Simile 时间轴部分,并没有触及许多未完成的环节。

安装

安装 时间轴 的首选方式是通过 Composer。将以下内容添加到您的 composer.json 文件的 require 部分中

"sjaakp/yii2-timeline": "*"

或者运行

composer require sjaakp/yii2-timeline "*"

您可以通过下载 ZIP 格式的源代码来手动安装 时间轴

使用时间轴

在视图中使用 时间轴 的代码如下

... other View code ...
<?php
	// define Timeline
	$t = Timeline::begin([
		'dataProvider' => $provider,
		'attributes' => [
			'start' => 'startDate',
			... more attributes ...
		]
		... more Timeline options ...
	]);

	// define main Band
	$t->band([
		'width' => '60%',
		'intervalUnit' => Timeline::MONTH,
		'intervalPixels' => 100
		// layout not set, use default
	]);

	// define secundary Band
	$t->band([
		'width' => '40%',
		'intervalUnit' => Timeline::YEAR,
		'intervalPixels' => 120,
		'layout' => 'overview'
	]);

	// complete definition
	Timeline::end();
?>
... more View code ...

band() 方法是可链式的,所以也可以这样写

<?php
	Timeline::begin([
		'dataProvider' => $provider,
		'attributes' => [
			'start' => 'startDate',
			... more attributes ...
		]
		... more Timeline options ...
	])->band([
		'width' => '60%',
		'intervalUnit' => Timeline::MONTH,
		'intervalPixels' => 100
	])->band([
		'width' => '40%',
		'intervalUnit' => Timeline::YEAR,
		'intervalPixels' => 120,
		'layout' => 'overview'
	])->end();
?>

选项

时间轴有以下选项

  • dataProvider:时间轴的数据提供者。必须设置。
  • attributes:一个数组,包含 key => value 对,即 {时间轴属性名} => {模型属性名}。这用于将模型属性名转换为时间轴属性名。必需。
  • height:时间轴的高度。默认:200。可以有以下值
  • 以像素为单位的 integer 高度
  • 有效的 CSS 高度(例如以 ems 为单位)
  • false 高度未设置;注意:高度必须通过其他方式(CSS)设置,否则时间轴将不会显示。
  • start(可选):开始日期
  • end(可选):结束日期
  • center(可选):时间轴的初始位置
  • htmlOptions(可选):时间轴容器的 HTML 选项数组。如果需要显式设置 ID,请使用此选项。

波段

时间轴 由一个或多个波段组成。它们以不同的时间分辨率显示事件。

波段通过时间轴方法 band() 定义。

public function band( $options, $zones = null )

选项

$options 是一个数组,具有以下键

  • width:此波段占用时间轴的部分,以百分比或 CSS3 维度表示(是的,您说得对:“height” 会是一个更恰当的名称,但 Simile 时间轴就是这样定义的),
  • layout:唯一合理的值是 'overview';'detailed' 也会工作,但似乎有很多问题;所有其他值(包括无)默认为 'compact',这是主波段的布局
  • intervalUnit:将 Band 水平刻度分割的时间单位。该值应该是以下单位常量之一(是的,时间线有令人惊叹的范围!)
    • Timeline::MILLISECOND
    • Timeline::SECOND
    • Timeline::MINUTE
    • Timeline::HOUR
    • Timeline::DAY
    • Timeline::WEEK
    • Timeline::MONTH
    • Timeline::YEAR
    • Timeline::DECADE
    • Timeline::CENTURY
    • Timeline::MILLENNIUM
  • intervalPixels:水平刻度上每个分割的宽度(以像素为单位)
  • multiple(可选):将水平刻度分割修改为单位倍数

zones

可选,每个时间线 Band 可以有一个或多个区域,这些区域中的水平分辨率与其他 Band 不同。

$zonesnull,或者是一个具有以下键的数组

  • start:区域开始日期
  • end:结束
  • magnify:分辨率的乘数因子
  • unit:区域的单位;应该是以下单位常量之一
  • multiple(可选):将水平刻度分割修改为单位倍数

事件

Timeline 显示事件:具有特定时间点的模型或 ActiveRecords。

Timeline::attributes 属性持有从模型属性名称到时间线属性名称的转换。

对于 Timeline,有一些属性是必需的。时间线的名称是

  • start:事件所在的时间点
  • text:在主时间线上显示的文本

事件有两种类型

瞬时事件

这些是基本事件,只有一个时间点。《时间线》将它们显示为小针图标。只需要上述属性。

持续时间事件

这些事件有一定的时间长度。《时间线》将它们显示为一块蓝色“胶带”。除了上述属性外,还需要以下内容

  • end:事件结束的时间点。

持续时间事件还有一些可选属性,使事件 不精确

  • latestStart
  • earliestEnd

持续时间事件的模糊部分以淡化蓝色胶带的形式显示。

可选事件属性

其他一些事件属性包括

  • caption:工具提示的文本
  • description:在弹出“气泡”中出现的文本。
  • icon:针图标(仅限瞬时事件)的 URL。
  • 颜色
  • textColor
  • link:将弹出气泡的标题修改为具有此 href 的链接。

对于大胆的人来说,还有 更多 事件属性。

日期

Timeline 理解许多日期格式(在选项和事件数据中)。每个日期都可以以下列格式之一提供

  • 一个 string,通过 JavaScript 日期 识别,格式为 RFC2822 或 ISO-8601;其中包含 MySQL datedatetime 字段
  • 一个 PHP DateTime 对象
  • 一个 array,通过 JavaScript 日期识别:[ year, month, day?, hour?, minute?, second?, millisecond? ]。注意:月份为零索引,因此一月 == 0,五月 == 4
  • 一个 integer:Unix 时间戳(自 Unix 纪元以来的秒数,1970 年 1 月 1 日,PHP time() 的返回值)