* block: display the project overview block with overviewBlock widget.

This commit is contained in:
liugang
2023-07-04 15:21:33 +08:00
parent 7dcd6e58e0
commit 62cb018b5d
2 changed files with 33 additions and 111 deletions
+2 -106
View File
@@ -11,113 +11,9 @@ declare(strict_types=1);
namespace zin;
panel
overviewBlock
(
setClass('projectoverview-block'),
set::title($block->title),
set::bodyClass('flex block-base p-0'),
div
(
setClass('flex w-1/2'),
col
(
setClass('justify-center w-1/2'),
a
(
setClass('text-2xl text-center text-primary font-bold leading-relaxed border-r'),
hasPriv('project', 'browse') ? set::href($this->createLink('project', 'browse', 'programID=0&browseType=all')) : null,
$projectStats['total']
),
span
(
setClass('text-center'),
$lang->block->projectoverview->totalProject
)
),
col
(
setClass('justify-center w-1/2'),
span
(
setClass('text-2xl text-center font-bold leading-relaxed'),
$projectStats['thisYear']['count']
),
span
(
setClass('text-center'),
$lang->block->projectoverview->thisYear
)
)
),
div
(
setClass('flex justify-center w-1/2'),
col
(
span
(
setClass('text-center mb-2'),
$lang->block->projectoverview->lastThreeYear
),
div
(
setClass('border-b'),
h::ul
(
setClass('flex justify-around items-end w-full h-16'),
h::li
(
setStyle(array('display' => 'contents')),
span
(
setClass('block w-2 primary'),
set::title($projectStats['lastTwoYear']['count']),
setStyle(array('height' => $projectStats['lastTwoYear']['rate'])),
)
),
h::li
(
setStyle(array('display' => 'contents')),
span
(
setClass('block w-2 primary'),
set::title($projectStats['lastYear']['count']),
setStyle(array('height' => $projectStats['lastYear']['rate'])),
)
),
h::li
(
setStyle(array('display' => 'contents')),
span
(
setClass('block w-2 primary'),
set::title($projectStats['thisYear']['count']),
setStyle(array('height' => $projectStats['thisYear']['rate'])),
)
)
)
),
div
(
setClass('flex justify-around mt-1.5'),
span
(
setClass('text-center'),
$projectStats['lastTwoYear']['year']
),
span
(
setClass('text-center'),
$projectStats['lastYear']['year']
),
span
(
setClass('text-center'),
$projectStats['thisYear']['year']
)
)
)
)
set(array('block' => $block, 'groups' => $groups))
);
render();
+31 -5
View File
@@ -694,12 +694,38 @@ class blockZen extends block
if($lastYearCount > $maxCount) $maxCount = $lastYearCount;
if($lastTwoYearCount > $maxCount) $maxCount = $lastTwoYearCount;
$projectStats['total'] = array_sum($stats);
$projectStats['thisYear'] = array('year' => $thisYear, 'count' => $thisYearCount, 'rate' => $maxCount ? round($thisYearCount / $maxCount * 100) . '%' : '0%');
$projectStats['lastYear'] = array('year' => $lastYear, 'count' => $lastYearCount, 'rate' => $maxCount ? round($lastYearCount / $maxCount * 100) . '%' : '0%');
$projectStats['lastTwoYear'] = array('year' => $lastTwoYear, 'count' => $lastTwoYearCount, 'rate' => $maxCount ? round($lastTwoYearCount / $maxCount * 100) . '%' : '0%');
$cards = array();
$cards[0] = new stdclass();
$cards[0]->value = array_sum($stats);
$cards[0]->class = 'text-primary';
$cards[0]->label = $this->lang->block->projectoverview->totalProject;
$cards[0]->url = common::hasPriv('project', 'browse') ? helper::createLink('project', 'browse', 'programID=0&browseType=all') : null;
$this->view->projectStats = $projectStats;
$cards[1] = new stdclass();
$cards[1]->value = $thisYearCount;
$cards[1]->label = $this->lang->block->projectoverview->thisYear;
$cardGroup = new stdclass();
$cardGroup->type = 'cards';
$cardGroup->cards = $cards;
$bars = array();
foreach(array('thisYear', 'lastYear', 'lastTwoYear') as $year)
{
$bar = new stdclass();
$bar->label = $$year;
$bar->value = ${$year . 'Count'};
$bar->rate = $maxCount ? round(${$year . 'Count'} / $maxCount * 100) . '%' : '0%';
$bars[] = $bar;
}
$barGroup = new stdclass();
$barGroup->type = 'barChart';
$barGroup->title = $this->lang->block->projectoverview->lastThreeYear;
$barGroup->bars = $bars;
$this->view->groups = array($cardGroup, $barGroup);
}
/**