chg: [genericElements:index_table] Moved description to a tooltip
Description describing indexes are great when discovering an app for the first time but start taking important place and become useless when users gets to know the app better. Moving it to a tooltip makes sense in that regard.pull/93/head
parent
509b203591
commit
7cf7363009
|
@ -999,6 +999,8 @@ class BoostrapIcon extends BootstrapGeneric {
|
|||
private $icon = '';
|
||||
private $defaultOptions = [
|
||||
'class' => [],
|
||||
'title' => '',
|
||||
'params' => [],
|
||||
];
|
||||
|
||||
function __construct($icon, $options=[]) {
|
||||
|
@ -1019,12 +1021,13 @@ class BoostrapIcon extends BootstrapGeneric {
|
|||
|
||||
private function genIcon()
|
||||
{
|
||||
$html = $this->genNode('span', [
|
||||
$html = $this->genNode('span', array_merge([
|
||||
'class' => array_merge(
|
||||
is_array($this->options['class']) ? $this->options['class'] : [$this->options['class']],
|
||||
["fa fa-{$this->icon}"]
|
||||
),
|
||||
]);
|
||||
'title' => h($this->options['title'])
|
||||
], $this->options['params']));
|
||||
return $html;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Cake\Utility\Text;
|
||||
/*
|
||||
* echo $this->element('/genericElements/IndexTable/index_table', [
|
||||
* 'top_bar' => (
|
||||
|
@ -17,8 +19,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
$newMetaFields = [];
|
||||
if (!empty($requestedMetaFields)) { // Create mapping for new index table fields on the fly
|
||||
$newMetaFields = [];
|
||||
if (!empty($requestedMetaFields)) { // Create mapping for new index table fields on the fly
|
||||
foreach ($requestedMetaFields as $requestedMetaField) {
|
||||
$template_id = $requestedMetaField['template_id'];
|
||||
$meta_template_field_id = $requestedMetaField['meta_template_field_id'];
|
||||
|
@ -30,26 +32,32 @@
|
|||
'_automatic_field' => true,
|
||||
];
|
||||
}
|
||||
}
|
||||
$data['fields'] = array_merge($data['fields'], $newMetaFields);
|
||||
}
|
||||
$data['fields'] = array_merge($data['fields'], $newMetaFields);
|
||||
|
||||
$tableRandomValue = Cake\Utility\Security::randomString(8);
|
||||
echo '<div id="table-container-' . h($tableRandomValue) . '">';
|
||||
if (!empty($data['title'])) {
|
||||
echo sprintf('<h2 class="fw-light">%s</h2>', h($data['title']));
|
||||
}
|
||||
if (!empty($data['description'])) {
|
||||
echo sprintf(
|
||||
'<div class="fw-light">%s</div>',
|
||||
empty($data['description']) ? '' : h($data['description'])
|
||||
$tableRandomValue = Cake\Utility\Security::randomString(8);
|
||||
echo '<div id="table-container-' . h($tableRandomValue) . '">';
|
||||
if (!empty($data['title'])) {
|
||||
echo Text::insert(
|
||||
'<h2 class="fw-light">:title :help</h2>',
|
||||
[
|
||||
'title' => h($data['title']),
|
||||
'help' => $this->Bootstrap->icon('info', [
|
||||
'class' => ['fs-6', 'align-text-top',],
|
||||
'title' => empty($data['description']) ? '' : h($data['description']),
|
||||
'params' => [
|
||||
'data-bs-toggle' => 'tooltip',
|
||||
]
|
||||
]),
|
||||
]
|
||||
);
|
||||
}
|
||||
echo '<div class="panel">';
|
||||
if (!empty($data['html'])) {
|
||||
}
|
||||
echo '<div class="panel">';
|
||||
if (!empty($data['html'])) {
|
||||
echo sprintf('<div>%s</div>', $data['html']);
|
||||
}
|
||||
$skipPagination = isset($data['skip_pagination']) ? $data['skip_pagination'] : 0;
|
||||
if (!$skipPagination) {
|
||||
}
|
||||
$skipPagination = isset($data['skip_pagination']) ? $data['skip_pagination'] : 0;
|
||||
if (!$skipPagination) {
|
||||
$paginationData = !empty($data['paginatorOptions']) ? $data['paginatorOptions'] : [];
|
||||
echo $this->element(
|
||||
'/genericElements/IndexTable/pagination',
|
||||
|
@ -61,17 +69,17 @@
|
|||
echo $this->element(
|
||||
'/genericElements/IndexTable/pagination_links'
|
||||
);
|
||||
}
|
||||
$multiSelectData = getMultiSelectData($data['top_bar']);
|
||||
if (!empty($multiSelectData)) {
|
||||
}
|
||||
$multiSelectData = getMultiSelectData($data['top_bar']);
|
||||
if (!empty($multiSelectData)) {
|
||||
$multiSelectField = [
|
||||
'element' => 'selector',
|
||||
'class' => 'short',
|
||||
'data' => $multiSelectData['data']
|
||||
];
|
||||
array_unshift($data['fields'], $multiSelectField);
|
||||
}
|
||||
if (!empty($data['top_bar'])) {
|
||||
}
|
||||
if (!empty($data['top_bar'])) {
|
||||
echo $this->element(
|
||||
'/genericElements/ListTopBar/scaffold',
|
||||
[
|
||||
|
@ -80,17 +88,17 @@
|
|||
'tableRandomValue' => $tableRandomValue
|
||||
]
|
||||
);
|
||||
}
|
||||
$rows = '';
|
||||
$row_element = isset($data['row_element']) ? $data['row_element'] : 'row';
|
||||
$options = isset($data['options']) ? $data['options'] : [];
|
||||
$actions = isset($data['actions']) ? $data['actions'] : [];
|
||||
if ($this->request->getParam('prefix') === 'Open') {
|
||||
}
|
||||
$rows = '';
|
||||
$row_element = isset($data['row_element']) ? $data['row_element'] : 'row';
|
||||
$options = isset($data['options']) ? $data['options'] : [];
|
||||
$actions = isset($data['actions']) ? $data['actions'] : [];
|
||||
if ($this->request->getParam('prefix') === 'Open') {
|
||||
$actions = [];
|
||||
}
|
||||
$dblclickActionArray = !empty($actions) ? $this->Hash->extract($actions, '{n}[dbclickAction]') : [];
|
||||
$dbclickAction = '';
|
||||
foreach ($data['data'] as $k => $data_row) {
|
||||
}
|
||||
$dblclickActionArray = !empty($actions) ? $this->Hash->extract($actions, '{n}[dbclickAction]') : [];
|
||||
$dbclickAction = '';
|
||||
foreach ($data['data'] as $k => $data_row) {
|
||||
$primary = null;
|
||||
if (!empty($data['primary_id_path'])) {
|
||||
$primary = $this->Hash->extract($data_row, $data['primary_id_path'])[0];
|
||||
|
@ -118,9 +126,9 @@
|
|||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
$tbody = '<tbody>' . $rows . '</tbody>';
|
||||
echo sprintf(
|
||||
}
|
||||
$tbody = '<tbody>' . $rows . '</tbody>';
|
||||
echo sprintf(
|
||||
'<table class="table table-hover" id="index-table-%s" data-table-random-value="%s" data-reload-url="%s">%s%s</table>',
|
||||
$tableRandomValue,
|
||||
$tableRandomValue,
|
||||
|
@ -135,13 +143,13 @@
|
|||
]
|
||||
),
|
||||
$tbody
|
||||
);
|
||||
if (!$skipPagination) {
|
||||
);
|
||||
if (!$skipPagination) {
|
||||
echo $this->element('/genericElements/IndexTable/pagination_counter', $paginationData);
|
||||
echo $this->element('/genericElements/IndexTable/pagination_links');
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
@ -158,11 +166,18 @@
|
|||
$(this).addClass('fa-eye');
|
||||
}
|
||||
});
|
||||
|
||||
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
|
||||
var tooltipList = tooltipTriggerList.map(function(tooltipTriggerEl) {
|
||||
return new bootstrap.Tooltip(tooltipTriggerEl)
|
||||
})
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
function getMultiSelectData($topbar) {
|
||||
function getMultiSelectData($topbar)
|
||||
{
|
||||
foreach ($topbar['children'] as $child) {
|
||||
if (!empty($child['type']) && $child['type'] == 'multi_select_actions') {
|
||||
return $child;
|
||||
|
|
Loading…
Reference in New Issue