mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 07:12:26 +02:00
N°1000 - Portal: filter BrowseBrick result varies if in list or tree (#673)
* N°1000 - Portal: filter BrowseBrick result varies if in list or tree * N°1000 - Portal: filter BrowseBrick result varies if in list or tree - replace html separators by css class * N°1000 - Portal: filter BrowseBrick result varies if in list or tree - replace html separators by css class * N°1000 - Portal: filter BrowseBrick result varies if in list or tree - add alteration comment to Tree List Filter jQuery plugin 1.0 - remove display none to tree-item-filter-data
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -821,6 +821,23 @@ table .group-actions .item-action-wrapper .panel-body > p:last-child{
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* tree list filter data */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data{
|
||||
padding-top: 8px;
|
||||
color: $gray;
|
||||
font-size: .9em;
|
||||
}
|
||||
/* tree list filter data span items */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data span:not(:last-child):after{
|
||||
content: '●';
|
||||
margin: 0 5px;
|
||||
}
|
||||
/* tree list filter data label span items */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data .tree-item-filter-data-label{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
/* - Mosaic mode */
|
||||
/* */
|
||||
|
||||
@@ -6,6 +6,11 @@
|
||||
* Project Website: http://wiki.aiwsolutions.net/dOQKO
|
||||
**/
|
||||
|
||||
/**
|
||||
* Altered to allow filtering tree list with extra data.
|
||||
* Add an attribute data-tree-additional-search to tree-item-wrapper element with extra data you want the search to include.
|
||||
*/
|
||||
|
||||
jQuery.fn.treeListFilter = function(list, timeout, callback) {
|
||||
var list = jQuery(list);
|
||||
var input = this;
|
||||
@@ -41,6 +46,7 @@ jQuery.fn.treeListFilter = function(list, timeout, callback) {
|
||||
// Modified the search so it looks for each parts of the search and not the entire sentance
|
||||
// Modified the text to remove accents (latinise())
|
||||
var text = liObject.find('.tree-item-wrapper').text();
|
||||
text+= liObject.find('.tree-item-wrapper').attr('data-tree-additional-search');
|
||||
var textLC = text.toLowerCase().latinise();
|
||||
var filterValues = filterValue.split(' ');
|
||||
var display = true;
|
||||
|
||||
@@ -26,11 +26,13 @@ use AttributeImage;
|
||||
use AttributeSet;
|
||||
use AttributeTagSet;
|
||||
use Combodo\iTop\Portal\Brick\BrowseBrick;
|
||||
use DBObject;
|
||||
use DBSearch;
|
||||
use Dict;
|
||||
use MetaModel;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use UserRights;
|
||||
use utils;
|
||||
|
||||
/**
|
||||
* Class BrowseBrickHelper
|
||||
@@ -514,6 +516,7 @@ class BrowseBrickHelper
|
||||
'name' => $aCurrentRowValues[0]->Get($aLevelsProperties[$aCurrentRowKeys[0]]['name_att']),
|
||||
'class' => get_class($aCurrentRowValues[0]),
|
||||
'subitems' => array(),
|
||||
'filter_data' => $this->GetFilterData($aLevelsProperties[$aCurrentRowKeys[0]], $aCurrentRowKeys[0], $aCurrentRowValues[0]),
|
||||
'action_rules_token' => $this->PrepareActionRulesForItems($aCurrentRowObjects, $aCurrentRowKeys[0], $aLevelsProperties),
|
||||
);
|
||||
|
||||
@@ -564,4 +567,49 @@ class BrowseBrickHelper
|
||||
$this->AddToTreeItems($aItems[$sCurrentIndex]['subitems'], $aCurrentRowSliced, $aLevelsProperties, $aCurrentRowObjects);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data to allow filtering tree with invisible fields.
|
||||
*
|
||||
* @param array $aLevelProperties tree level properties
|
||||
* @param string $sRowKey row key
|
||||
* @param \DBObject $oRowValue row value
|
||||
*
|
||||
* @return string[]
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function GetFilterData(array $aLevelProperties, string $sRowKey, DBObject $oRowValue) : array
|
||||
{
|
||||
// result
|
||||
$sValues = "";
|
||||
$sValuesAndCodes = "";
|
||||
|
||||
// iterate throw level properties fields...
|
||||
foreach ($aLevelProperties['fields'] as $aField) {
|
||||
|
||||
// retrieve the object class
|
||||
$sFieldObjectClass = get_class($oRowValue);
|
||||
|
||||
// retrieve the field object attribute definition
|
||||
$oAttDef = MetaModel::GetAttributeDef($sFieldObjectClass, $aField['code']);
|
||||
|
||||
// get field value (HTML representation)
|
||||
$sValue = $oAttDef->GetAsHTML($oRowValue->Get($aField['code']));
|
||||
|
||||
// do not print empty fields
|
||||
if(!utils::IsNullOrEmptyString($sValue)){
|
||||
|
||||
// append to result
|
||||
$sValues .= $sValue;
|
||||
$sValuesAndCodes .= '<span><span class="tree-item-filter-data-label">' . $aField['label'] . ':</span> ' . $sValue . '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'values' => $sValues,
|
||||
'values_and_codes' => $sValuesAndCodes
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +149,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
// hide/show tree items filter data when search input is empty/notEmpty
|
||||
$('.tree-item-filter-data').toggle($('#brick_search_field').val() !== '');
|
||||
|
||||
expandAll();
|
||||
};
|
||||
// Load current node childnodes throught AJAX
|
||||
@@ -197,10 +200,12 @@
|
||||
|
||||
var liElem = $('<li></li>').addClass('list-group-item');
|
||||
var spanElem = $('<span></span>').addClass('tree-item-wrapper').attr('data-item-id', item.id).attr('data-level-alias', item.level_alias);
|
||||
spanElem.attr('data-tree-additional-search', item['filter_data']['values']);
|
||||
var nameElem = $('<a></a>').addClass('tree-item').text(item.name);
|
||||
// Building node
|
||||
$('ul[data-level-id="'+nodeId+'"]').append(liElem);
|
||||
spanElem.append(nameElem);
|
||||
spanElem.append('<div class="tree-item-filter-data">' + item['filter_data']['values_and_codes'] + '</div>');
|
||||
liElem.append(spanElem);
|
||||
|
||||
// Delegating a click on <span> to its child <a> element
|
||||
|
||||
Reference in New Issue
Block a user