264 lines
9.2 KiB
PHP
264 lines
9.2 KiB
PHP
<?
|
||
namespace ms;
|
||
|
||
use core\db\structure\Column as C;
|
||
use core\db\structure\eColumnType;
|
||
use ms\widget\structure\eWidget;
|
||
use ms\widget\structure\eWidgetType;
|
||
use ui\form\structure\eInputType;
|
||
use ui\Form;
|
||
use ui\input\Input;
|
||
use core\lang\structure\LangVariable as V;
|
||
use ms\ms\structure\msModuleTable;
|
||
use ms\widget\structure\msWidgetLang as Vars;
|
||
|
||
class Widget extends msModuleTable {
|
||
static $self;
|
||
static $table_name = 'msWidget';
|
||
static $controller = 'ms.widget';
|
||
|
||
static $ID = 'id';
|
||
static $NAME = 'name';
|
||
|
||
static $DASHBOARD = 'dashboard';
|
||
static $X = 'x';
|
||
static $Y = 'y';
|
||
static $COLS = 'cols';
|
||
static $ROWS = 'rows';
|
||
static $ENTITY = 'entity';
|
||
static $TYPE = 'type';
|
||
static $POS = 'pos';
|
||
static $ACTION = 'action';
|
||
|
||
static $ACCOUNT = 'account';
|
||
static $CREATED = 'created';
|
||
static $UPDATED = 'updated';
|
||
|
||
|
||
static function getTitle(){return V::get(Vars::$MODULE_NAME);}
|
||
static function getSystemLangValues():array{ return Vars::getArray(); }
|
||
public function _update(\Where $w, array $values) {
|
||
$values[self::$UPDATED] = time();
|
||
return parent::_update($w, $values);
|
||
}
|
||
|
||
static function getMyByDashboardID($id,$isAssocArray = false){
|
||
$id = intval($id);
|
||
return self::select([
|
||
\Query::WHERE => $w = new \Where(\Where::_and([
|
||
\Where::_operator(self::$ACCOUNT,'=',UID),
|
||
\Where::_operator(self::$DASHBOARD,'=',$id),
|
||
])),
|
||
\Query::SORT=>self::$POS
|
||
],$isAssocArray);
|
||
}
|
||
|
||
|
||
static function renderWidgetTools(){
|
||
return '<div class="widget_tools"><button class="widget_delete">x</button></div>';
|
||
}
|
||
|
||
static function renderIcon($l,$options=[]){
|
||
$options['class'] = ($c = $options['class'])?$c:'';
|
||
$type = ($c = $l[self::$TYPE])?$c:$options['type'];
|
||
$id = ($c = $l[self::$ID])?$c:0;
|
||
$widget = eWidget::$array[$type];
|
||
return '<div class="icon_td drag_handle '.$widget[eWidget::BG].' '.$options['class'].'" data-type="'.$type.'" data-id="'.$id.'">
|
||
<div class="img '.$widget[eWidget::ICON].'"></div>
|
||
<div class="title">'.$widget[eWidget::TITLE].'</div>
|
||
</div>';
|
||
}
|
||
|
||
static function getWidgetTableID($v){
|
||
$id = 0;
|
||
if(is_array($v)) $id = $v[self::$ID];
|
||
if(is_numeric($v)) $id = $v;
|
||
return 'widget_'.$id;
|
||
}
|
||
|
||
|
||
static function renderWidget($l){
|
||
$res = '';
|
||
$id = $l[self::$ID];
|
||
|
||
$x = $l[self::$X];
|
||
$y = $l[self::$Y];
|
||
$cols = $l[self::$COLS];
|
||
$rows = $l[self::$ROWS];
|
||
|
||
$widget = eWidget::$array[$l[self::$TYPE]];
|
||
|
||
switch ($widget[eWidget::TYPE]){
|
||
case eWidgetType::TABLE:
|
||
$table_id = self::getWidgetTableID($l);
|
||
$settings = Table::getSettings($table_id,$widget[eWidget::CONTROLLER]);
|
||
$settings += $settings['class']::getWindowTableRules();
|
||
|
||
$res .= '<div class="drag_handle"><span>'.$widget[eWidget::TITLE].'</span></div>'.$settings['class']::drawTable($settings);
|
||
$cols = 12;
|
||
$rows = 6;
|
||
break;
|
||
default : $res .= self::renderIcon($l);
|
||
}
|
||
|
||
$style = '';
|
||
// если у нас заданы точные координаты
|
||
if($x and $y and $cols and $rows){
|
||
$style .= 'grid-area:'.$y .' / '.$x.' / '.($y + $rows).' / '.($x + $cols).';';
|
||
// если заданы только ширина и длина
|
||
} else if (!($x and $y) and $rows and $cols) {
|
||
$style .= 'grid-column:span '.$cols.';';
|
||
$style .= 'grid-row:span '.$rows.';';
|
||
}
|
||
|
||
return '<div class="dash_cell"
|
||
'.($style?'style="'.$style.'"':'').'
|
||
data-type="'.$l[self::$TYPE].'"
|
||
data-id="'.$id.'">'.self::renderWidgetTools().$res.'</div>';
|
||
}
|
||
static function getMyListByDashboardID($dashboard_id = 0){
|
||
if(!($dashboard_id = intval($dashboard_id))) return '';
|
||
$res = '';
|
||
$r = self::getMyByDashboardID($dashboard_id);
|
||
while($l = \DB::fetch($r)){
|
||
$res .= self::renderWidget($l);
|
||
}
|
||
return $res;
|
||
}
|
||
|
||
|
||
static function getForm($values = [], $options = []) :array {
|
||
return [
|
||
self::getCommonFormInputs(),
|
||
[
|
||
Form::VIEW=>Form::ROW,
|
||
Form::COLS => [
|
||
[
|
||
Form::VIEW =>Form::INPUT,
|
||
Form::COL_CLASSES =>'col-12',
|
||
Form::KEY_VALUE =>self::$NAME,
|
||
Form::TYPE =>eInputType::TEXT,
|
||
Form::INPUT_OPT => [
|
||
Input::PLACEHOLDER => $c = V::get(Vars::$NAME),
|
||
Input::LABEL => $c,
|
||
],
|
||
],
|
||
]
|
||
],
|
||
];
|
||
}
|
||
|
||
static function columnInfo() : array {
|
||
return [
|
||
new C([
|
||
C::VAR_NAME =>&self::$ID,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::AUTO_INCREMENT =>true,
|
||
C::PRIMARY =>true,
|
||
C::DEFAULT =>0,
|
||
C::HIDDEN =>true,
|
||
C::TH =>V::get(Vars::$ID),
|
||
]),
|
||
|
||
new C([
|
||
C::VAR_NAME =>&self::$DASHBOARD,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$DASHBOARD),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$X,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$X),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$Y,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$Y),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$COLS,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$COLS),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$ROWS,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$ROWS),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$ENTITY,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$ENTITY),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$TYPE,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$TYPE),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$POS,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>time(),
|
||
C::TH =>V::get(Vars::$POS),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME =>&self::$ACTION,
|
||
C::TYPE =>eColumnType::INT,
|
||
C::DEFAULT =>0,
|
||
C::TH =>V::get(Vars::$ACTION),
|
||
]),
|
||
|
||
|
||
|
||
new C([
|
||
C::VAR_NAME => &self::$NAME,
|
||
C::TYPE => eColumnType::VARCHAR,
|
||
C::LENGTH => 1023,
|
||
C::TH => V::get(Vars::$NAME),
|
||
]),
|
||
new C([
|
||
C::VAR_NAME => &self::$ACCOUNT,
|
||
C::TYPE => eColumnType::INT,
|
||
C::LENGTH => 11,
|
||
C::TH => V::get(Vars::$ACCOUNT),
|
||
C::DEFAULT => intval(UID),
|
||
//c::HIDDEN=>true,
|
||
|
||
c::FUNC_VALUE => function($v){
|
||
if($id = $v[self::$ACCOUNT]) {
|
||
return \Account::getName( \Account::getByID($id) );
|
||
} else return '-';
|
||
},
|
||
]),
|
||
new C([
|
||
C::VAR_NAME => &self::$CREATED,
|
||
C::TYPE => eColumnType::INT,
|
||
C::LENGTH => 11,
|
||
C::TH => V::get(Vars::$CREATED),
|
||
C::DEFAULT => time(),
|
||
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$CREATED]);},
|
||
c::HIDDEN=>true,
|
||
]),
|
||
new C([
|
||
C::VAR_NAME => &self::$UPDATED,
|
||
C::TYPE => eColumnType::INT,
|
||
C::DEFAULT => time(),
|
||
C::TH => V::get(Vars::$UPDATED),
|
||
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$UPDATED]);},
|
||
c::HIDDEN=>true,
|
||
]),
|
||
];
|
||
}
|
||
|
||
}
|
||
new Widget();
|
||
|
||
|