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 $icon = '';
|
||||||
private $defaultOptions = [
|
private $defaultOptions = [
|
||||||
'class' => [],
|
'class' => [],
|
||||||
|
'title' => '',
|
||||||
|
'params' => [],
|
||||||
];
|
];
|
||||||
|
|
||||||
function __construct($icon, $options=[]) {
|
function __construct($icon, $options=[]) {
|
||||||
|
@ -1019,12 +1021,13 @@ class BoostrapIcon extends BootstrapGeneric {
|
||||||
|
|
||||||
private function genIcon()
|
private function genIcon()
|
||||||
{
|
{
|
||||||
$html = $this->genNode('span', [
|
$html = $this->genNode('span', array_merge([
|
||||||
'class' => array_merge(
|
'class' => array_merge(
|
||||||
is_array($this->options['class']) ? $this->options['class'] : [$this->options['class']],
|
is_array($this->options['class']) ? $this->options['class'] : [$this->options['class']],
|
||||||
["fa fa-{$this->icon}"]
|
["fa fa-{$this->icon}"]
|
||||||
),
|
),
|
||||||
]);
|
'title' => h($this->options['title'])
|
||||||
|
], $this->options['params']));
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Cake\Utility\Text;
|
||||||
/*
|
/*
|
||||||
* echo $this->element('/genericElements/IndexTable/index_table', [
|
* echo $this->element('/genericElements/IndexTable/index_table', [
|
||||||
* 'top_bar' => (
|
* 'top_bar' => (
|
||||||
|
@ -17,8 +19,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$newMetaFields = [];
|
$newMetaFields = [];
|
||||||
if (!empty($requestedMetaFields)) { // Create mapping for new index table fields on the fly
|
if (!empty($requestedMetaFields)) { // Create mapping for new index table fields on the fly
|
||||||
foreach ($requestedMetaFields as $requestedMetaField) {
|
foreach ($requestedMetaFields as $requestedMetaField) {
|
||||||
$template_id = $requestedMetaField['template_id'];
|
$template_id = $requestedMetaField['template_id'];
|
||||||
$meta_template_field_id = $requestedMetaField['meta_template_field_id'];
|
$meta_template_field_id = $requestedMetaField['meta_template_field_id'];
|
||||||
|
@ -30,26 +32,32 @@
|
||||||
'_automatic_field' => true,
|
'_automatic_field' => true,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$data['fields'] = array_merge($data['fields'], $newMetaFields);
|
$data['fields'] = array_merge($data['fields'], $newMetaFields);
|
||||||
|
|
||||||
$tableRandomValue = Cake\Utility\Security::randomString(8);
|
$tableRandomValue = Cake\Utility\Security::randomString(8);
|
||||||
echo '<div id="table-container-' . h($tableRandomValue) . '">';
|
echo '<div id="table-container-' . h($tableRandomValue) . '">';
|
||||||
if (!empty($data['title'])) {
|
if (!empty($data['title'])) {
|
||||||
echo sprintf('<h2 class="fw-light">%s</h2>', h($data['title']));
|
echo Text::insert(
|
||||||
}
|
'<h2 class="fw-light">:title :help</h2>',
|
||||||
if (!empty($data['description'])) {
|
[
|
||||||
echo sprintf(
|
'title' => h($data['title']),
|
||||||
'<div class="fw-light">%s</div>',
|
'help' => $this->Bootstrap->icon('info', [
|
||||||
empty($data['description']) ? '' : h($data['description'])
|
'class' => ['fs-6', 'align-text-top',],
|
||||||
|
'title' => empty($data['description']) ? '' : h($data['description']),
|
||||||
|
'params' => [
|
||||||
|
'data-bs-toggle' => 'tooltip',
|
||||||
|
]
|
||||||
|
]),
|
||||||
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
echo '<div class="panel">';
|
echo '<div class="panel">';
|
||||||
if (!empty($data['html'])) {
|
if (!empty($data['html'])) {
|
||||||
echo sprintf('<div>%s</div>', $data['html']);
|
echo sprintf('<div>%s</div>', $data['html']);
|
||||||
}
|
}
|
||||||
$skipPagination = isset($data['skip_pagination']) ? $data['skip_pagination'] : 0;
|
$skipPagination = isset($data['skip_pagination']) ? $data['skip_pagination'] : 0;
|
||||||
if (!$skipPagination) {
|
if (!$skipPagination) {
|
||||||
$paginationData = !empty($data['paginatorOptions']) ? $data['paginatorOptions'] : [];
|
$paginationData = !empty($data['paginatorOptions']) ? $data['paginatorOptions'] : [];
|
||||||
echo $this->element(
|
echo $this->element(
|
||||||
'/genericElements/IndexTable/pagination',
|
'/genericElements/IndexTable/pagination',
|
||||||
|
@ -61,17 +69,17 @@
|
||||||
echo $this->element(
|
echo $this->element(
|
||||||
'/genericElements/IndexTable/pagination_links'
|
'/genericElements/IndexTable/pagination_links'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$multiSelectData = getMultiSelectData($data['top_bar']);
|
$multiSelectData = getMultiSelectData($data['top_bar']);
|
||||||
if (!empty($multiSelectData)) {
|
if (!empty($multiSelectData)) {
|
||||||
$multiSelectField = [
|
$multiSelectField = [
|
||||||
'element' => 'selector',
|
'element' => 'selector',
|
||||||
'class' => 'short',
|
'class' => 'short',
|
||||||
'data' => $multiSelectData['data']
|
'data' => $multiSelectData['data']
|
||||||
];
|
];
|
||||||
array_unshift($data['fields'], $multiSelectField);
|
array_unshift($data['fields'], $multiSelectField);
|
||||||
}
|
}
|
||||||
if (!empty($data['top_bar'])) {
|
if (!empty($data['top_bar'])) {
|
||||||
echo $this->element(
|
echo $this->element(
|
||||||
'/genericElements/ListTopBar/scaffold',
|
'/genericElements/ListTopBar/scaffold',
|
||||||
[
|
[
|
||||||
|
@ -80,17 +88,17 @@
|
||||||
'tableRandomValue' => $tableRandomValue
|
'tableRandomValue' => $tableRandomValue
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$rows = '';
|
$rows = '';
|
||||||
$row_element = isset($data['row_element']) ? $data['row_element'] : 'row';
|
$row_element = isset($data['row_element']) ? $data['row_element'] : 'row';
|
||||||
$options = isset($data['options']) ? $data['options'] : [];
|
$options = isset($data['options']) ? $data['options'] : [];
|
||||||
$actions = isset($data['actions']) ? $data['actions'] : [];
|
$actions = isset($data['actions']) ? $data['actions'] : [];
|
||||||
if ($this->request->getParam('prefix') === 'Open') {
|
if ($this->request->getParam('prefix') === 'Open') {
|
||||||
$actions = [];
|
$actions = [];
|
||||||
}
|
}
|
||||||
$dblclickActionArray = !empty($actions) ? $this->Hash->extract($actions, '{n}[dbclickAction]') : [];
|
$dblclickActionArray = !empty($actions) ? $this->Hash->extract($actions, '{n}[dbclickAction]') : [];
|
||||||
$dbclickAction = '';
|
$dbclickAction = '';
|
||||||
foreach ($data['data'] as $k => $data_row) {
|
foreach ($data['data'] as $k => $data_row) {
|
||||||
$primary = null;
|
$primary = null;
|
||||||
if (!empty($data['primary_id_path'])) {
|
if (!empty($data['primary_id_path'])) {
|
||||||
$primary = $this->Hash->extract($data_row, $data['primary_id_path'])[0];
|
$primary = $this->Hash->extract($data_row, $data['primary_id_path'])[0];
|
||||||
|
@ -118,9 +126,9 @@
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$tbody = '<tbody>' . $rows . '</tbody>';
|
$tbody = '<tbody>' . $rows . '</tbody>';
|
||||||
echo sprintf(
|
echo sprintf(
|
||||||
'<table class="table table-hover" id="index-table-%s" data-table-random-value="%s" data-reload-url="%s">%s%s</table>',
|
'<table class="table table-hover" id="index-table-%s" data-table-random-value="%s" data-reload-url="%s">%s%s</table>',
|
||||||
$tableRandomValue,
|
$tableRandomValue,
|
||||||
$tableRandomValue,
|
$tableRandomValue,
|
||||||
|
@ -135,13 +143,13 @@
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
$tbody
|
$tbody
|
||||||
);
|
);
|
||||||
if (!$skipPagination) {
|
if (!$skipPagination) {
|
||||||
echo $this->element('/genericElements/IndexTable/pagination_counter', $paginationData);
|
echo $this->element('/genericElements/IndexTable/pagination_counter', $paginationData);
|
||||||
echo $this->element('/genericElements/IndexTable/pagination_links');
|
echo $this->element('/genericElements/IndexTable/pagination_links');
|
||||||
}
|
}
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
@ -158,11 +166,18 @@
|
||||||
$(this).addClass('fa-eye');
|
$(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>
|
</script>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
function getMultiSelectData($topbar) {
|
function getMultiSelectData($topbar)
|
||||||
|
{
|
||||||
foreach ($topbar['children'] as $child) {
|
foreach ($topbar['children'] as $child) {
|
||||||
if (!empty($child['type']) && $child['type'] == 'multi_select_actions') {
|
if (!empty($child['type']) && $child['type'] == 'multi_select_actions') {
|
||||||
return $child;
|
return $child;
|
||||||
|
|
Loading…
Reference in New Issue