Add filters on audit

Step one : add filters to the screen - WIP
This commit is contained in:
Anne-Cath
2024-11-21 14:56:07 +01:00
parent d3e3a416cd
commit 11775d9aa4
3 changed files with 93 additions and 11 deletions

View File

@@ -780,6 +780,8 @@ Dict::Add('EN US', 'English', 'English', array(
'UI:Audit:Dashboard:ObjectsInError' => 'Objects in errors',
'UI:Audit:Dashboard:ObjectsValidated' => 'Objects validated',
'UI:Audit:AuditCategory:Subtitle' => '%1$s errors ouf of %2$s - %3$s%% of the object are valid',
'UI:Audit:Interactive:Selection:SubTitleParams' => 'Please select the following parameters: ',
'UI:Audit:Interactive:FilterList' => 'With following parameters: ',
'UI:RunQuery:Title' => ITOP_APPLICATION_SHORT.' - OQL Query Evaluation',

View File

@@ -412,6 +412,80 @@ Nous espérons que vous aimerez cette version autant que nous avons eu du plaisi
'UI:WelcomeMenu:AllConfigItems' => 'Actifs: %1$d',
'UI:WelcomeMenu:MyIncidents' => 'Mes incidents',
'UI:AllOrganizations' => ' Toutes les Organisations ',
'UI:ApplicationEnvironment' => 'Environnement applicatif: %1$s',
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => '%1$s pour %2$s de l\'état %3$s vers l\'état %4$s.',
'UI:ArchiveMode:Banner' => 'Mode Archive',
'UI:ArchiveMode:Banner+' => 'Les objets archivés sont visibles, et aucune modification n\'est possible',
'UI:ArchiveModeOff' => 'Désactiver le mode Archive',
'UI:ArchiveModeOn' => 'Activer le mode Archive',
'UI:Archive_User_OnBehalfOf_User' => '%1$s pour %2$s',
'UI:AttemptingToChangeASlaveAttribute_Name' => 'Le champ %1$s ne peut pas être modifié car il est géré par une synchronisation avec une source de données. Valeur inchangée.',
'UI:AttemptingToSetAReadOnlyAttribute_Name' => 'Tentative de modification du champ en lecture seule: %1$s',
'UI:AttemptingToSetASlaveAttribute_Name' => 'Le champ %1$s (%2$s) ne peut pas être modifié car il est géré par une synchronisation avec une source de données. Valeur ignorée.',
'UI:Audit:AuditCategory:Subtitle' => '%1$s en erreur sur %2$s - %3$s%% des objets sont valides',
'UI:Audit:Interactive:Selection:SubTitleParams' => 'Veuillez sélectionner les paramètres suivant : ',
'UI:Audit:Interactive:FilterList' => 'Avec les paramètres suivants : ',
'UI:Audit:AuditErrors' => 'Audit Errors~~',
'UI:Audit:Dashboard:ObjectsAudited' => 'Objets audités',
'UI:Audit:Dashboard:ObjectsInError' => 'Objets en erreur',
'UI:Audit:Dashboard:ObjectsValidated' => 'Objets valides',
'UI:Audit:Error:ValueNA' => 'n/a',
'UI:Audit:ErrorIn_Category' => 'Erreur dans la catégorie',
'UI:Audit:ErrorIn_Category_Reason' => 'Erreur OQL dans la catégorie %1$s: %2$s.',
'UI:Audit:ErrorIn_Rule' => 'Erreur dans le régle',
'UI:Audit:ErrorIn_Rule_Reason' => 'Erreur OQL dans la règle %1$s: %2$s.',
'UI:Audit:HeaderAuditRule' => 'Règle d\'audit',
'UI:Audit:HeaderNbErrors' => 'Nb d\'Erreurs',
'UI:Audit:HeaderNbObjects' => 'Nb d\'Objets',
'UI:Audit:Interactive:All:BreadCrumb' => 'Audit complet',
'UI:Audit:Interactive:All:BreadCrumb+' => 'Audit de toutes les régles',
'UI:Audit:Interactive:All:SubTitle' => 'Audit complet, incluant toutes les régles, sans limitation de domaine ni de catégorie',
'UI:Audit:Interactive:All:Title' => 'Résultats de tous les audits',
'UI:Audit:Interactive:Button:Back' => 'Retour à l\'audit',
'UI:Audit:Interactive:Button:Configuration' => 'Configurer l\'audit',
'UI:Audit:Interactive:Categories:BreadCrumb' => 'Catégories',
'UI:Audit:Interactive:Categories:BreadCrumb+' => 'Audit des catégories : %1$s',
'UI:Audit:Interactive:Categories:SubTitle' => 'Audit de toutes les régles appartenant à ces %1$s catégories',
'UI:Audit:Interactive:Categories:Title' => 'Résultats d\'audit des catégories : %1$s',
'UI:Audit:Interactive:Domain:BreadCrumb' => '%1$s',
'UI:Audit:Interactive:Domain:BreadCrumb+' => 'Audit du domaine : %1$s',
'UI:Audit:Interactive:Domain:SubTitle' => 'Audit de toutes les régles dont la catégorie est reliée au domaine : %1$s',
'UI:Audit:Interactive:Domain:Title' => 'Résultats d\'audit du domaine : %1$s',
'UI:Audit:Interactive:Selection:BadgeAll' => 'Toutes les catégories',
'UI:Audit:Interactive:Selection:BreadCrumb' => 'Sélection',
'UI:Audit:Interactive:Selection:BreadCrumb+' => 'Choix d\'un Audit à exécuter',
'UI:Audit:Interactive:Selection:SubTitle' => 'Choisir un domaine pour obtenir les résultats d\'audit limités à ce domaine ou "Toutes les catégories" (Peut prendre du temps, voir échouer s\'il y a trop d\'objets à auditer)',
'UI:Audit:Interactive:Selection:Title' => 'Sélection d\'un audit',
'UI:Audit:OqlError' => 'Erreur OQL',
'UI:Audit:PercentageOk' => '% Ok',
'UI:Audit:Title' => ITOP_APPLICATION_SHORT.' - Audit de la CMDB',
'UI:Audit:ViewRules' => 'Vérifier les régles d\'audit',
'UI:AutoApplyConfirmationMessage' => 'Des modifications n\'ont pas encore été prises en compte. Voulez-vous qu\'elles soient prises en compte automatiquement ?',
'UI:AvailableInlineImagesLegend' => 'Images disponibles',
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => 'Enregistrez l\'objet courant avant de créer de nouveaux éléments de type %1$s.',
'UI:BrowseInlineImages' => 'Parcourir les images...',
'UI:BulkAction:NoObjectSelected' => 'Veuillez s\électionner au moins un objet pour cette opération.',
'UI:BulkDeletePageTitle' => ITOP_APPLICATION_SHORT.' - Suppression massive',
'UI:BulkDeleteTitle' => 'Sélectionnez les objets à supprimer:',
'UI:BulkModify:N_MoreValues' => '%1$d valeurs supplémentaires...',
'UI:BulkModify:Value_Exists_N_Times' => '%1$s, %2$d fois',
'UI:BulkModifyErrors' => 'Erreur',
'UI:BulkModifyErrors+' => '',
'UI:BulkModifyStatus' => 'Opération',
'UI:BulkModifyStatus+' => '',
'UI:BulkModifyStatusError' => 'Erreur',
'UI:BulkModifyStatusModified' => 'Modifié',
'UI:BulkModifyStatusOk' => 'Ok',
'UI:BulkModifyStatusSkipped' => 'Ignoré',
'UI:BulkModify_Count_DistinctValues' => '%1$d valeurs distinctes:',
'UI:Button:Add' => ' Ajouter ',
'UI:Button:AddObject' => ' Ajouter... ',
'UI:Button:AddToList' => ' << Ajouter ',
'UI:Button:Apply' => 'Appliquer',
'UI:Button:Back' => ' << Retour ',
'UI:Button:BrowseObjects' => ' Naviguer... ',
'UI:Button:Cancel' => 'Annuler',
'UI:Button:ChangePassword' => ' Changer ! ',
'UI:YourSearch' => 'Votre recherche',
'UI:LoggedAsMessage' => 'Connecté(e) comme: %1$s (%2$s)',
'UI:LoggedAsMessage+Admin' => 'Connecté(e) comme: %1$s (%2$s, Administrateur)',

View File

@@ -15,6 +15,7 @@ use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Panel\Panel;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Text\Text;
use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardColumn;
@@ -414,7 +415,9 @@ JS
}).on('blur', function () {
hasFocus = 0;
if ($('#label_$sFieldName').val().length == 0) {
eval('oACWidget_$sFieldName').Clear();
$('#$sFieldName').val('');
$('#label_$sFieldName').val('');
$('#label_$sFieldName').data('selected_value', '');
} else {
$('#label_$sFieldName').val($('#label_$sFieldName').data('selected_value'));
}
@@ -598,8 +601,8 @@ try
$oP->AddUiBlock(TitleUIBlockFactory::MakeForPage(Dict::S('UI:Audit:Interactive:Selection:Title')));
if($aAuditFilter !=[] ){
$oP->AddUiBlock(new Text(Dict::S('UI:Audit:Interactive:Selection:SubTitleParams')));
$oPanel = PanelUIBlockFactory::MakeNeutral('',Dict::S('UI:Audit:Interactive:Selection:SubTitleParams'));
$oP->AddUiBlock($oPanel);
foreach ($aAuditFilter as $sFieldName => $aFieldParam) {
$oBlock = FieldUIBlockFactory::MakeStandard($aFieldParam['label']);
@@ -624,10 +627,11 @@ try
$oValue->AddSubBlock($oSelect);
}
$oBlock->AddSubBlock($oValue);
$oP->AddUiBlock($oBlock);
$oPanel->AddSubBlock($oBlock);
}
}
$oP->AddUiBlock(new Text(Dict::S('UI:Audit:Interactive:Selection:SubTitle')));
$oP->AddUiBlock(TitleUIBlockFactory::MakeNeutral(Dict::S('UI:Audit:Interactive:Selection:SubTitle'),2));
// Header block to select all audit categories
$oCategoriesSet = new DBObjectSet(new DBObjectSearch('AuditCategory'));
@@ -689,7 +693,7 @@ try
$sGetParams = '';
foreach ($aAuditFilter as $sFieldName => $aFieldParam) {
$sGetParams .= $sFieldName."=$('[name=$sFieldName]').val();";
$sDomainUrl .= "&".$sFieldName."=$sFieldName'+'";
$sDomainUrl .= "&".$sFieldName."='+$sFieldName+'";
}
$sDomainUrl = 'javascript:'.$sGetParams.' window.location = \''.$sDomainUrl.'\'';
}
@@ -699,9 +703,10 @@ try
$oDomainDashlet->AddSubBlock($oDomainBlock)->AddCSSClasses(['ibo-dashlet--is-inline', 'ibo-dashlet-badge']);
$oDashboardRow->GetSubBlocks()[$iDomainCnt % 3]->AddUIBlock($oDomainDashlet); // ;
$iDomainCnt++;
IssueLog::Error('domaine numero'.$iDomainCnt);
}
$oP->AddUiBlock($oDashboardRow);
$oP->AddUiBlock($oDashboardRow);
break;
case 'audit':
@@ -742,7 +747,8 @@ try
$aFilterParams = [];
if($aAuditFilter !=[] ){
$sFilterText = Dict::S('UI:Audit:Interactive:FilterList') .'<dd/><ul>';
$oPanel = PanelUIBlockFactory::MakeNeutral('',Dict::S('UI:Audit:Interactive:FilterList'));
$oP->AddUiBlock($oPanel);
foreach ($aAuditFilter as $sFieldName => $aFieldParam) {
$sCurrentValue = utils::ReadParam($sFieldName, '');
@@ -758,11 +764,11 @@ try
$sName = $aFieldParam['values'][$sCurrentValue];
}
$sFilterText .= '<li> <div class="fas fa-minus"></div> '.$aFieldParam['label'].': '.$sName.'</li>';
$sFilterText .= '<li>'.$aFieldParam['label'].': '.$sName.'</li>';
}
$oP->AddUiBlock(new Html($sFilterText.'</ul></br>'));
$oPanel->AddSubBlock(new Html($sFilterText.'</ul>'));
}
$oP->AddUiBlock(new Html('<br>'));
$oP->AddUiBlock(new Text($sSubTitle));