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-y: 18px !default;
$ibo-audit--dashboard--padding-x: 0 !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--csv-download--height: 2.5em !default;
$ibo-audit--audit-line--status-indicator--diameter: 12px !default; $ibo-audit--audit-line--status-indicator--diameter: 12px !default;
@@ -58,6 +60,9 @@ $ibo-audit--status--color: (
.ibo-audit--dashboard{ .ibo-audit--dashboard{
padding: $ibo-audit--dashboard--padding-y $ibo-audit--dashboard--padding-x; 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{ .ibo-audit--audit-line--csv-download{
height: $ibo-audit--audit-line--csv-download--height; height: $ibo-audit--audit-line--csv-download--height;
vertical-align: middle; vertical-align: middle;

View File

@@ -696,7 +696,11 @@ Dict::Add('EN US', 'English', 'English', array(
'UI:Audit:HeaderNbObjects' => '# Objects', 'UI:Audit:HeaderNbObjects' => '# Objects',
'UI:Audit:HeaderNbErrors' => '# Errors', 'UI:Audit:HeaderNbErrors' => '# Errors',
'UI:Audit:PercentageOk' => '% Ok', '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_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:ErrorIn_Category_Reason' => 'OQL Error in the Category %1$s: %2$s.',
'UI:Audit:AuditErrors' => 'Audit Errors', 'UI:Audit:AuditErrors' => 'Audit Errors',
'UI:Audit:Dashboard:ObjectsAudited' => 'Objects audited', '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 * 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\Button\ButtonUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletContainer; use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletContainer;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletFactory; use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletFactory;
@@ -321,9 +322,13 @@ try
$oAuditFilter = new DBObjectSearch('AuditCategory'); $oAuditFilter = new DBObjectSearch('AuditCategory');
$oCategoriesSet = new DBObjectSet($oAuditFilter); $oCategoriesSet = new DBObjectSet($oAuditFilter);
$aAuditCategoryPanels = [];
while($oAuditCategory = $oCategoriesSet->fetch()) while($oAuditCategory = $oCategoriesSet->fetch())
{ {
$oAuditCategoryPanelBlock = new Panel($oAuditCategory->GetName());
$oAuditCategoryPanelBlock->SetIsCollapsible(true);
$aResults = array();
try try
{ {
$iCount = 0; $iCount = 0;
@@ -339,7 +344,6 @@ try
$oDefinitionFilter->AddCondition('org_id', $currentOrganization, '='); $oDefinitionFilter->AddCondition('org_id', $currentOrganization, '=');
} }
} }
$aResults = array();
$oDefinitionSet = new CMDBObjectSet($oDefinitionFilter); $oDefinitionSet = new CMDBObjectSet($oDefinitionFilter);
$iCount = $oDefinitionSet->Count(); $iCount = $oDefinitionSet->Count();
$oRulesFilter = new DBObjectSearch('AuditRule'); $oRulesFilter = new DBObjectSearch('AuditRule');
@@ -373,11 +377,14 @@ try
} }
catch(Exception $e) catch(Exception $e)
{ {
$aRow['nb_errors'] = "OQL Error"; $aRow['nb_errors'] = Dict::S('UI:Audit:OqlError');
$aRow['percent_ok'] = 'n/a'; $aRow['percent_ok'] = Dict::S('UI:Audit:Error:ValueNA');
$aRow['class'] = 'red'; $aRow['class'] = 'red';
$sMessage = Dict::Format('UI:Audit:ErrorIn_Rule_Reason', $oAuditRule->GetHyperlink(), $e->getMessage()); $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; $aResults[] = $aRow;
@@ -385,30 +392,22 @@ try
$iTotalErrors = count($aObjectsWithErrors); $iTotalErrors = count($aObjectsWithErrors);
$sOverallPercentOk = ($iCount == 0) ? '100.00' : sprintf('%.2f', 100.0 * (($iCount - $iTotalErrors) / $iCount)); $sOverallPercentOk = ($iCount == 0) ? '100.00' : sprintf('%.2f', 100.0 * (($iCount - $iTotalErrors) / $iCount));
$sClass = GetReportColor($iCount, $iTotalErrors); $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) 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())); $sMessage = Dict::Format('UI:Audit:ErrorIn_Category_Reason', $oAuditCategory->GetHyperlink(), utils::HtmlEntities($e->getMessage()));
$oP->p("<img src=\"../images/stop-mid.png\"/>&nbsp;".$sMessage); $oErrorAlert = AlertUIBlockFactory::MakeForFailure(Dict::S('UI:Audit:ErrorIn_Category'), $sMessage);
$aResults[] = $aRow; $oErrorAlert->AddCSSClass('ibo-audit--error-alert');
$oP->AddUiBlock($oErrorAlert);
$sClass = 'red'; continue;
$iTotalErrors = 'n/a';
$sOverallPercentOk = '';
} }
$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->SetColor($sClass);
$oAuditCategoryPanelBlock->AddCSSClass('ibo-audit--audit-category--panel'); $oAuditCategoryPanelBlock->AddCSSClass('ibo-audit--audit-category--panel');
$aData = []; $aData = [];
@@ -430,9 +429,11 @@ try
$oAttachmentTableBlock = DataTableUIBlockFactory::MakeForStaticData('', $aAttribs, $aData); $oAttachmentTableBlock = DataTableUIBlockFactory::MakeForStaticData('', $aAttribs, $aData);
$oAuditCategoryPanelBlock->AddSubBlock($oAttachmentTableBlock); $oAuditCategoryPanelBlock->AddSubBlock($oAttachmentTableBlock);
$oP->AddUiBlock($oAuditCategoryPanelBlock); $aAuditCategoryPanels[] = $oAuditCategoryPanelBlock;
}
foreach ($aAuditCategoryPanels as $oAuditCategoryPanel) {
$oP->AddUiBlock($oAuditCategoryPanel);
} }
} }
$oP->output(); $oP->output();
} }