Browse Source

grid修复70%

wechat_public_accounts
blobt 5 years ago
parent
commit
4108ca1530
  1. 3
      kcadmin/web/js/common.js
  2. 17
      vendor/blobt/grid/Column.php
  3. 126
      vendor/blobt/grid/DataColumn.php
  4. 55
      vendor/blobt/web/GridViewAsset.php

3
kcadmin/web/js/common.js

@ -1,3 +0,0 @@
$(function(){
$("[data-toggle='tooltip']").tooltip();
});

17
vendor/blobt/grid/Column.php

@ -34,7 +34,24 @@ use yii\grid\Column as YiiColumn;
class Column extends YiiColumn { class Column extends YiiColumn {
/**
* @var string 列宽
*/
public $width; public $width;
/**
* @var string 对齐
*/
public $align; public $align;
public function init() {
if (!empty($this->width)) {
$this->headerOptions["width"] = $this->width;
}
if (!empty($this->align)) {
$this->contentOptions["align"] = $this->align;
}
parent::init();
}
} }

126
vendor/blobt/grid/DataColumn.php

@ -26,6 +26,15 @@
namespace blobt\grid; namespace blobt\grid;
use Closure;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use yii\data\ArrayDataProvider;
use yii\db\ActiveQueryInterface;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Inflector;
/** /**
* *
* *
@ -51,6 +60,11 @@ class DataColumn extends Column {
*/ */
public $encodeLabel = true; public $encodeLabel = true;
/**
* @var string|Closure 字符串或匿名函数.
*/
public $value;
/** /**
* @var string|array|Closure 每个数据模型的值应以哪种格式显示(例如“raw”`、“text”`、“html”`,`[date','php:y-m-d']`)。 * @var string|array|Closure 每个数据模型的值应以哪种格式显示(例如“raw”`、“text”`、“html”`,`[date','php:y-m-d']`)。
* 默认格式为“文本” * 默认格式为“文本”
@ -66,6 +80,116 @@ class DataColumn extends Column {
/** /**
* @var bool 是否开始排序 * @var bool 是否开始排序
*/ */
public $enableSorting = false;
public $enableSorting = true;
/**
* @var bool 排序a标签的html属性
*/
public $sortLinkOptions = [];
/**
* @var bool 筛选表单单
*/
public $filter;
/**
* 初始化参数
*/
public function init() {
parent::init();
}
/**
* 渲染头单元.
*/
public function renderHeaderCell() {
return Html::tag('th', $this->renderHeaderCellContent(), $this->headerOptions);
}
/**
* {@inheritdoc}
*/
protected function renderHeaderCellContent() {
if ($this->header !== null || $this->label === null && $this->attribute === null) {
return parent::renderHeaderCellContent();
}
$label = $this->getHeaderCellLabel();
if ($this->encodeLabel) {
$label = Html::encode($label);
}
if ($this->attribute !== null && $this->enableSorting &&
($sort = $this->grid->dataProvider->getSort()) !== false && $sort->hasAttribute($this->attribute)) {
return $sort->link($this->attribute, array_merge($this->sortLinkOptions, ['label' => $label]));
}
return $label;
}
/**
* {@inheritdoc]
*/
protected function getHeaderCellLabel() {
$provider = $this->grid->dataProvider;
if ($this->label === null) {
if ($provider instanceof ActiveDataProvider && $provider->query instanceof ActiveQueryInterface) {
/* @var $modelClass Model */
$modelClass = $provider->query->modelClass;
$model = $modelClass::instance();
$label = $model->getAttributeLabel($this->attribute);
} elseif ($provider instanceof ArrayDataProvider && $provider->modelClass !== null) {
/* @var $modelClass Model */
$modelClass = $provider->modelClass;
$model = $modelClass::instance();
$label = $model->getAttributeLabel($this->attribute);
} else {
$models = $provider->getModels();
if (($model = reset($models)) instanceof Model) {
/* @var $model Model */
$label = $model->getAttributeLabel($this->attribute);
} else {
$label = Inflector::camel2words($this->attribute);
}
}
} else {
$label = $this->label;
}
return $label;
}
/**
* 返回单元格值
* @param mixed $model
* @param mixed $key 模型ID
* @param int $index 行号
* @return string
*/
public function getDataCellValue($model, $key, $index) {
if ($this->value !== null) {
if (is_string($this->value)) {
return ArrayHelper::getValue($model, $this->value);
}
return call_user_func($this->value, $model, $key, $index, $this);
} elseif ($this->attribute !== null) {
return ArrayHelper::getValue($model, $this->attribute);
}
return null;
}
/**
* {@inheritdoc}
*/
protected function renderDataCellContent($model, $key, $index) {
if ($this->content === null) {
return $this->grid->formatter->format($this->getDataCellValue($model, $key, $index), $this->format);
}
return parent::renderDataCellContent($model, $key, $index);
}
} }

55
vendor/blobt/web/GridViewAsset.php

@ -0,0 +1,55 @@
<?php
/*
* The MIT License
*
* Copyright 2019 Blobt.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
namespace blobt\web;
use yii\web\AssetBundle;
/**
* Description of AdminlteAsset
*
* @author Blobt
* @email 380255922@qq.com
* @created Aug 27, 2019
*/
class GridViewAsset extends AssetBundle {
public $sourcePath = "@blobt/assets/grid";
public $css = [
'css/grid.css'
];
public $js = [
];
public $depends = [
'yii\bootstrap\BootstrapAsset',
'yii\grid\GridViewAsset',
'blobt\web\FontAwesomeAsset',
'blobt\web\AdminlteAsset',
'blobt\web\DataTablesAsset',
'blobt\web\IoniconsAsset'
];
}
Loading…
Cancel
Save