N°3294 - WIP: Introduce counter in OQL menu entries

This commit is contained in:
Eric
2020-10-26 12:07:09 +01:00
parent f31f991365
commit 664d3251cc
2 changed files with 30 additions and 12 deletions

View File

@@ -277,6 +277,7 @@ class ApplicationMenu
$aSubMenuNodes[] = [ $aSubMenuNodes[] = [
'sId' => $oSubMenuNode->GetMenuId(), 'sId' => $oSubMenuNode->GetMenuId(),
'sTitle' => $oSubMenuNode->GetTitle(), 'sTitle' => $oSubMenuNode->GetTitle(),
'sEntriesCount' => $oSubMenuNode->GetEntriesCount(),
'sUrl' => $oSubMenuNode->GetHyperlink($aExtraParams), 'sUrl' => $oSubMenuNode->GetHyperlink($aExtraParams),
'bOpenInNewWindow' => $oSubMenuNode->IsHyperLinkInNewWindow(), 'bOpenInNewWindow' => $oSubMenuNode->IsHyperLinkInNewWindow(),
'aSubMenuNodes' => static::GetSubMenuNodes($sSubMenuItemIdx, $aExtraParams), 'aSubMenuNodes' => static::GetSubMenuNodes($sSubMenuItemIdx, $aExtraParams),
@@ -666,21 +667,22 @@ abstract class MenuNode
return Dict::S("Menu:$this->sMenuId", str_replace('_', ' ', $this->sMenuId)); return Dict::S("Menu:$this->sMenuId", str_replace('_', ' ', $this->sMenuId));
} }
public function GetEntriesCount()
{
return -1;
}
/** /**
* @return string * @return string
*/ */
public function GetLabel() public function GetLabel()
{ {
$sRet = Dict::S("Menu:$this->sMenuId+", ""); $sRet = Dict::S("Menu:$this->sMenuId+", "");
if ($sRet === '') if ($sRet === '') {
{ if ($this->iParentIndex != -1) {
if ($this->iParentIndex != -1)
{
$oParentMenu = ApplicationMenu::GetMenuNode($this->iParentIndex); $oParentMenu = ApplicationMenu::GetMenuNode($this->iParentIndex);
$sRet = $oParentMenu->GetTitle().' / '.$this->GetTitle(); $sRet = $oParentMenu->GetTitle().' / '.$this->GetTitle();
} } else {
else
{
$sRet = $this->GetTitle(); $sRet = $this->GetTitle();
} }
//$sRet = $this->GetTitle(); //$sRet = $this->GetTitle();
@@ -1065,15 +1067,14 @@ class OQLMenuNode extends MenuNode
$oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams); $oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, 0); $oBlock->Display($oPage, 0);
} }
$oPage->add("<p class=\"page-header\">$sIcon ".utils::HtmlEntities(Dict::S($sTitle))."</p>"); $oPage->add("<p class=\"page-header\">$sIcon ".utils::HtmlEntities(Dict::S($sTitle))."</p>");
$aParams = array_merge(array('table_id' => $sUsageId), $aExtraParams); $aParams = array_merge(array('table_id' => $sUsageId), $aExtraParams);
$oBlock = new DisplayBlock($oSearch, 'list', false /* Asynchronous */, $aParams); $oBlock = new DisplayBlock($oSearch, 'list', false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, $sUsageId); $oBlock->Display($oPage, $sUsageId);
if ($bEnableBreadcrumb && ($oPage instanceof iTopWebPage)) if ($bEnableBreadcrumb && ($oPage instanceof iTopWebPage)) {
{
// Breadcrumb // Breadcrumb
//$iCount = $oBlock->GetDisplayedCount(); //$iCount = $oBlock->GetDisplayedCount();
$sPageId = "ui-search-".$oSearch->GetClass(); $sPageId = "ui-search-".$oSearch->GetClass();
@@ -1081,6 +1082,19 @@ class OQLMenuNode extends MenuNode
$oPage->SetBreadCrumbEntry($sPageId, $sLabel, $sTitle, '', 'fas fa-list', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES); $oPage->SetBreadCrumbEntry($sPageId, $sLabel, $sTitle, '', 'fas fa-list', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
} }
} }
public function GetEntriesCount()
{
// Count the entries up to 99
$oSet = new DBObjectSet(DBSearch::FromOQL($this->sOQL));
$iCount = $oSet->CountWithLimit(99);
if ($iCount > 99) {
$iCount = "99+";
}
return $iCount;
}
} }
/** /**

View File

@@ -1,7 +1,11 @@
<li class="ibo-navigation-menu--menu-node" data-role="ibo-navigation-menu--menu-node" data-menu-node-id="{{ aMenuNode.sId }}"> <li class="ibo-navigation-menu--menu-node" data-role="ibo-navigation-menu--menu-node" data-menu-node-id="{{ aMenuNode.sId }}">
{% if aMenuNode.sUrl is not empty %} {% if aMenuNode.sUrl is not empty %}
{% set sTarget = (aMenuNode.bOpenInNewWindow == true) ? 'target="_blank"' : '' %} {% set sTarget = (aMenuNode.bOpenInNewWindow == true) ? 'target="_blank"' : '' %}
<a class="ibo-navigation-menu--menu-node-title" data-role="ibo-navigation-menu--menu-node-title" href="{{ aMenuNode.sUrl }}" {{ sTarget|raw }}>{{ aMenuNode.sTitle }}</a> {% if aMenuNode.sEntriesCount != "-1" %}
<a class="ibo-navigation-menu--menu-node-title" data-role="ibo-navigation-menu--menu-node-title" href="{{ aMenuNode.sUrl }}" {{ sTarget|raw }}>{{ aMenuNode.sTitle }} ({{ aMenuNode.sEntriesCount }})</a>
{% else %}
<a class="ibo-navigation-menu--menu-node-title" data-role="ibo-navigation-menu--menu-node-title" href="{{ aMenuNode.sUrl }}" {{ sTarget|raw }}>{{ aMenuNode.sTitle }}</a>
{% endif %}
{% else %} {% else %}
<span class="ibo-navigation-menu--menu-node-title" data-role="ibo-navigation-menu--menu-node-title">{{ aMenuNode.sTitle }}</span> <span class="ibo-navigation-menu--menu-node-title" data-role="ibo-navigation-menu--menu-node-title">{{ aMenuNode.sTitle }}</span>
{% endif %} {% endif %}