sjaakp/yii2-dateline

处理日期的小部件

安装: 658

依赖项: 1

建议者: 0

安全性: 0

星标: 3

关注者: 2

分支: 1

开放问题: 1

类型:yii2-extension

2.0.3 2024-06-29 12:28 UTC

This package is auto-updated.

Last update: 2024-08-29 12:51:46 UTC


README

为 Yii 2.0 PHP 框架中的日期相关数据提供小部件。

Latest Stable Version Total Downloads License

日期线小部件渲染我的 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 类的小部件。它从 ActiveDataProviderArrayDataProvider 或其他从 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的不确定程度。

持续时间事件的不精确部分以模糊的胶带形式显示。

可选事件属性

日期

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

  • 一个string,由JavaScript Date识别,且为RFC2822或ISO-8601格式;其中包括MySQL的datedatetime字段
  • 一个integer:Unix时间戳(自Unix纪元(1970年1月1日)以来的秒数,PHP的time()返回值)