N°3571 Handle errors in Audit Category and Audit Rule in audit page

This commit is contained in:
Stephen Abello
2021-03-04 11:42:12 +01:00
parent 4d660cc3c8
commit 45981c1941
3 changed files with 35 additions and 25 deletions

View File

@@ -7,6 +7,8 @@ $ibo-audit--audit-category--panel--body--padding-x: $ibo-panel--body--padding-x
$ibo-audit--dashboard--padding-y: 18px !default;
$ibo-audit--dashboard--padding-x: 0 !default;
$ibo-audit--first-error-alert--margin-top: 24px !default;
$ibo-audit--audit-line--csv-download--height: 2.5em !default;
$ibo-audit--audit-line--status-indicator--diameter: 12px !default;
@@ -58,6 +60,9 @@ $ibo-audit--status--color: (
.ibo-audit--dashboard{
padding: $ibo-audit--dashboard--padding-y $ibo-audit--dashboard--padding-x;
}
.ibo-dashboard--grid-row + .ibo-audit--error-alert{
margin-top: $ibo-audit--first-error-alert--margin-top;
}
.ibo-audit--audit-line--csv-download{
height: $ibo-audit--audit-line--csv-download--height;
vertical-align: middle;

View File

@@ -696,7 +696,11 @@ Dict::Add('EN US', 'English', 'English', array(
'UI:Audit:HeaderNbObjects' => '# Objects',
'UI:Audit:HeaderNbErrors' => '# Errors',
'UI:Audit:PercentageOk' => '% Ok',
'UI:Audit:OqlError' => 'OQL Error',
'UI:Audit:Error:ValueNA' => 'n/a',
'UI:Audit:ErrorIn_Rule' => 'Error in Rule',
'UI:Audit:ErrorIn_Rule_Reason' => 'OQL Error in the Rule %1$s: %2$s.',
'UI:Audit:ErrorIn_Category' => 'Error in Category',
'UI:Audit:ErrorIn_Category_Reason' => 'OQL Error in the Category %1$s: %2$s.',
'UI:Audit:AuditErrors' => 'Audit Errors',
'UI:Audit:Dashboard:ObjectsAudited' => 'Objects audited',

View File

@@ -17,6 +17,7 @@
* You should have received a copy of the GNU Affero General Public License
*/
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletContainer;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletFactory;
@@ -321,9 +322,13 @@ try
$oAuditFilter = new DBObjectSearch('AuditCategory');
$oCategoriesSet = new DBObjectSet($oAuditFilter);
$aAuditCategoryPanels = [];
while($oAuditCategory = $oCategoriesSet->fetch())
{
$oAuditCategoryPanelBlock = new Panel($oAuditCategory->GetName());
$oAuditCategoryPanelBlock->SetIsCollapsible(true);
$aResults = array();
try
{
$iCount = 0;
@@ -339,7 +344,6 @@ try
$oDefinitionFilter->AddCondition('org_id', $currentOrganization, '=');
}
}
$aResults = array();
$oDefinitionSet = new CMDBObjectSet($oDefinitionFilter);
$iCount = $oDefinitionSet->Count();
$oRulesFilter = new DBObjectSearch('AuditRule');
@@ -373,11 +377,14 @@ try
}
catch(Exception $e)
{
$aRow['nb_errors'] = "OQL Error";
$aRow['percent_ok'] = 'n/a';
$aRow['nb_errors'] = Dict::S('UI:Audit:OqlError');
$aRow['percent_ok'] = Dict::S('UI:Audit:Error:ValueNA');
$aRow['class'] = 'red';
$sMessage = Dict::Format('UI:Audit:ErrorIn_Rule_Reason', $oAuditRule->GetHyperlink(), $e->getMessage());
$oP->p("<img style=\"vertical-align:middle\" src=\"../images/stop-mid.png\"/>&nbsp;".$sMessage);
$oErrorAlert = AlertUIBlockFactory::MakeForFailure(Dict::S('UI:Audit:ErrorIn_Rule'), $sMessage);
$oErrorAlert->AddCSSClass('ibo-audit--error-alert');
$oP->AddUiBlock($oErrorAlert);
}
}
$aResults[] = $aRow;
@@ -385,30 +392,22 @@ try
$iTotalErrors = count($aObjectsWithErrors);
$sOverallPercentOk = ($iCount == 0) ? '100.00' : sprintf('%.2f', 100.0 * (($iCount - $iTotalErrors) / $iCount));
$sClass = GetReportColor($iCount, $iTotalErrors);
$oTotalBlock->SetCount((int)$oTotalBlock->GetCount() + ($iCount));
$oErrorBlock->SetCount((int)$oErrorBlock->GetCount() + $iTotalErrors);
$oWorkingBlock->SetCount((int)$oWorkingBlock->GetCount() + ($iCount - $iTotalErrors));
$oAuditCategoryPanelBlock->SetSubTitle(Dict::Format('UI:Audit:AuditCategory:Subtitle', $iTotalErrors, $iCount, $sOverallPercentOk));
}
catch(Exception $e)
{
$aRow = array();
$aRow['description'] = "OQL error";
$aRow['nb_errors'] = "n/a";
$aRow['percent_ok'] = '';
$aRow['class'] = 'red';
$sMessage = Dict::Format('UI:Audit:ErrorIn_Category_Reason', $oAuditCategory->GetHyperlink(), utils::HtmlEntities($e->getMessage()));
$oP->p("<img src=\"../images/stop-mid.png\"/>&nbsp;".$sMessage);
$aResults[] = $aRow;
$sClass = 'red';
$iTotalErrors = 'n/a';
$sOverallPercentOk = '';
$oErrorAlert = AlertUIBlockFactory::MakeForFailure(Dict::S('UI:Audit:ErrorIn_Category'), $sMessage);
$oErrorAlert->AddCSSClass('ibo-audit--error-alert');
$oP->AddUiBlock($oErrorAlert);
continue;
}
$oTotalBlock->SetCount((int)$oTotalBlock->GetCount() + ($iCount));
$oErrorBlock->SetCount((int)$oErrorBlock->GetCount() + $iTotalErrors);
$oWorkingBlock->SetCount((int)$oWorkingBlock->GetCount() + ($iCount - $iTotalErrors));
$oAuditCategoryPanelBlock = new Panel($oAuditCategory->GetName());
$oAuditCategoryPanelBlock->SetIsCollapsible(true);
$oAuditCategoryPanelBlock->SetSubTitle(Dict::Format('UI:Audit:AuditCategory:Subtitle', $iTotalErrors, $iCount, $sOverallPercentOk));
$oAuditCategoryPanelBlock->SetColor($sClass);
$oAuditCategoryPanelBlock->AddCSSClass('ibo-audit--audit-category--panel');
$aData = [];
@@ -430,9 +429,11 @@ try
$oAttachmentTableBlock = DataTableUIBlockFactory::MakeForStaticData('', $aAttribs, $aData);
$oAuditCategoryPanelBlock->AddSubBlock($oAttachmentTableBlock);
$oP->AddUiBlock($oAuditCategoryPanelBlock);
$aAuditCategoryPanels[] = $oAuditCategoryPanelBlock;
}
foreach ($aAuditCategoryPanels as $oAuditCategoryPanel) {
$oP->AddUiBlock($oAuditCategoryPanel);
}
}
$oP->output();
}