sjaakp / yii2-dateline
处理日期的小部件
Requires
- yiisoft/yii2: *
README
为 Yii 2.0 PHP 框架中的日期相关数据提供小部件。
日期线小部件渲染我的 JavaScript 日期线。日期线的数据由 Yii DataProvider 提供(任何实现 yii\data\DataProviderInterface 的对象)。
日期线小部件的演示 在这里。
在 Moordatlas.nl(荷兰语)上查看其效果。在 Weltliteratur 中是底层 JavaScript 小部件的一个 很好的例子。
安装
使用 Composer 安装 Dateline。可以将以下内容添加到您的 composer.json
文件的 require 部分
"sjaakp/yii2-dateline": "*"
或者运行
composer require sjaakp/yii2-dateline "*"
您可以手动通过 下载 ZIP 格式的源代码 来安装 Dateline。
使用 Dateline
Yii2-dateline 实现了一个 Dateline
类的小部件。它从 ActiveDataProvider
、ArrayDataProvider
或其他从 BaseDataProvider
派生的类中获取数据。使用它的方式与使用 GridView 类似。例如,在控制器中,您可能会有以下内容
<?php
// ...
public function actionFoo() {
$dataProvider = new ActiveDataProvider([
'query' => InterestingEvent::find(),
'pagination' => false
]);
return $this->render('foo', [
'dataProvider' => $dataProvider
]);
}
// ...
?>
在 View
中渲染 Dateline
的示例
use sjaakp\dateline\Dateline;
/* ... */
<?php $dl = Dateline::begin([
'dataProvider' => $dataProvider,
'attributes' => [
'id' => 'id',
'start' => 'date1',
'text' => 'name'
],
'options' => [
/* ... */
]
]);
$dl->band([
'size' => '75%',
'scale' => Dateline::WEEK,
'interval'=> 90,
])
->band([
'size' => '25%',
'layout' => 'overview',
'scale' => Dateline::YEAR,
'interval'=> 80
]);
Dateline::end();
?>
选项
Dateline 有以下选项
- dataProvider: Dateline 的 DataProvider。必须设置。
- attributes: 用于将模型属性 '翻译' 为 Dateline 属性。它是一个键值对的数组
- {dateline 属性名} => {模型属性名}。
- {dateline 属性名} => 返回 {模型属性值} 的
function($model)
。
- options: 底层 Dateline jQuery 小部件的选项数组。更多信息 这里。
- htmlOptions(可选): Dateline 容器的 HTML 选项数组。如果您想显式设置 ID,请使用此选项。
乐队
Dateline 由一个或多个乐队组成。它们以不同的时间分辨率显示事件。
乐队由 Dateline 方法 band()
定义。
public function band( $options )
选项
$options
是一个具有以下键的数组
- size: 此乐队占用的 Dateline 的部分,以百分比或 CSS3 维度表示
- layout: 唯一合理的值是
'overview'
;所有其他值(包括无)默认为'normal'
,这是主乐队的布局 - scale: 将乐队水平刻度分割的时间单位。值应该是以下单位常量之一(是的,Dateline 的范围惊人!)
Dateline::MILLISECOND
Dateline::SECOND
Dateline::MINUTE
Dateline::HOUR
Dateline::DAY
Dateline::WEEK
Dateline::MONTH
Dateline::YEAR
Dateline::DECADE
Dateline::CENTURY
Dateline::MILLENNIUM
- interval: 横向刻度上一个分割的像素宽度
- multiple(可选): 将水平刻度分割修改为单位倍数
事件
请注意,这里所说的不是 PHP 或 JavaScript 事件!
时间线显示事件。这些是具有某个时刻特征的模型或ActiveRecords。
时间线的Dateline::attributes属性持有模型属性到时间线属性的转换。
一些属性对时间线是必不可少的。时间线的名称包括
- start:事件所在的时间点
- text:在主时间线上显示的文本(或HTML)
事件有两种类型
瞬时事件
这些是基本事件,只有一个时间点。时间线将它们显示为点图标。只需要上述属性。
持续时间事件
这些事件有一定的持续时间。时间线将它们显示为一段“胶带”。除了上述属性外,还需要
- stop:事件结束的时间点。
持续时间事件还有一些可选属性,使事件不精确
-
post_start:可选。表示对
start
的不确定程度。 -
pre_stop:可选。表示对
stop
的不确定程度。
持续时间事件的不精确部分以模糊的胶带形式显示。
可选事件属性
- class:设置正常布局中事件的HTML类。可用于图标化或着色事件。更多信息请见https://github.com/sjaakp/dateline#iconizing-events
日期
时间线理解很多日期格式(在选项和事件数据中)。每个日期都可以以下列格式之一提供
- 一个
string
,由JavaScript Date识别,且为RFC2822或ISO-8601格式;其中包括MySQL的date
和datetime
字段 - 一个
integer
:Unix时间戳(自Unix纪元(1970年1月1日)以来的秒数,PHP的time()
返回值)