Skip to content

Develop#397

Open
antonin77 wants to merge 97 commits into
mainfrom
develop
Open

Develop#397
antonin77 wants to merge 97 commits into
mainfrom
develop

Conversation

@antonin77

Copy link
Copy Markdown
Contributor

No description provided.

@antonin77 antonin77 requested a review from a team February 23, 2026 14:25
Thomas Bernard and others added 10 commits February 27, 2026 10:41
* commit save test-implementation

* refactor(navbar): extract navbar into dedicated NavbarComponent

- Move all toolbar/env/navigation logic from AppComponent into new NavbarComponent
- AppComponent becomes a minimal shell (<app-navbar> + router outlet)
- NavbarComponent: fixed navbar with SVG logo (reveal animation), color-coded env selector, deploy/KPI/GitHub action buttons, hierarchical menu
- Remove search-main mock data (delete search-main.mock.ts, restore real API calls)
- Simplify search-main layout: direct flex-table on jquery-table, remove .table-container wrapper
- Add column icons, enable slices and allowColumnRemoval in search-main table config
- Replace DatePipe with Intl.DateTimeFormat in search-main
- Redesign header-page title-container with gradient background and styled icon
- Add global styles: mat-mini-fab primary theme, mat-form-field outline focus color
- Add Material Icons Outlined font link in index.html

* feat(search-rest): migrate mat-table → jquery-table

- Replace MatTableDataSource + mat-table + MatPaginator + MatSort with <jquery-table>
- Add SearchRestTableRow interface (start/end as raw timestamps, value providers for formatting)
- Add value provider on 'start' col: Intl.DateTimeFormat (no DatePipe)
- Add value provider on 'end' col: formatDuration() pure arithmetic (no toLocaleString)
- Add rowClass: row-ok / row-warning / row-ko / row-in-progress with pulse animation
- Add slices: Status + Hôte; enableSearchBar, enablePagination, enableViewButton
- Remove mat-select filters (Hôte / Status) from toolbar — replaced by slices panel
- Replace table-container/table-wrapper layout with :host flex-column + flex-table
- Add performance.mark() instrumentation (temporary) to measure BACK vs FRONT timing
- Clean up unused imports: MatTableModule, MatPaginatorModule, MatSortModule, DatePipe, INFINITY

* feat(deploiment): migrate from mat-table to jquery-table and refactor related components

* feat(table-config): update table configuration for deploiment and search-rest views with new columns and sorting options

* feat(search-main): refactor table configuration to use new column structure with sorting options

* feat(table-config): ajuster la configuration des colonnes pour les vues de déploiement et de recherche avec des largeurs proportionnelles

* component table integration

* component table integration

* component table integration

* component table integration

* component table integration

* - suppression des menus groupby et slice de view s'ils n'y en a pas
- modification event sur ligne pour laisser la main au dev meme avec utilisation de ng-template (voir page request/rest)
- ajout de la prop "hidden" dans u slice pour permettre de modif la value tout en n'affichant pas par défaut le slice (voir page deploiement)

* merge et modif pour appliquer onRowSelected

* component table integration

* component table integration

* refactor: simplification des imports et amélioration de la gestion des événements dans les composants de table

* feat: ajout de la gestion des KPI dans le menu de navigation et mise à jour de la configuration des tables à la suite de la maj sur les models

* component table integration

* fix: mise à jour des classes de ligne pour le tableau de session

* component table integration

* component table integration

* fix: désactiver les logs de débogage dans le pipe de durée

* fix: mise à jour de l'importation de TableProvider pour le tableau

* component table integration

---------

Co-authored-by: Dorian <dorianpernot2@gmail.com>
antonin77 and others added 9 commits March 23, 2026 14:22
# Conflicts:
#	src/app/app.module.ts
…i-global-bu

# Conflicts:
#	src/app/views/statistic/request/http/constant.ts
#	src/app/views/statistic/request/http/statistic-request-http.component.html
#	src/app/views/statistic/request/http/statistic-request-http.component.ts
# Conflicts:
#	src/app/views/views.module.ts
antonin77 and others added 9 commits May 21, 2026 17:44
* feat(dashboard): optimisation réseau, refonte UI sidebar et nettoyage

## Dépendances
- package.json: jquery-echarts 0.0.1→^0.0.3, jquery-table ^0.0.3→^0.0.5, jquery-core override ^0.0.30→^0.0.32

## Nouveau composant About
- about-dialog.component (html/scss/ts): dialog "Stack Technique" accessible depuis la navbar
- navbar: ajout bouton icône info_outline + openAbout(), séparateur visuel
- app.module.ts: déclaration AboutDialogComponent

## Optimisation réseau (-2 requêtes HTTP)
- dashboard.component.ts: suppression de getCountByType (req 15+16)
  calcul client-side de sessionCountByType depuis countok (window function)
  via _rebuildSingleTabErrors par tab au lieu d'un rebuild global

## Corrections dashboard
- isBlockLoading STARTUP: aligné sur startupExceptionTable.isLoading (et non sessionCountLoading)
- isNoIncidents STARTUP: suppression de la condition divergentBranches (jamais rendu)
- Cache santé serveur par env (_lastHealthEnv): évite de recharger à chaque changement de période

## Refonte sidebar
- Grid 3 colonnes (suppression colonne icône 52px)
- Skeletons alignés sur la nouvelle grille (sbd-skel-dot/main/top)
- Cases toujours cliquables (suppression condition rate > 0)
- Compteur déplacé dans sbd-top (en ligne avec le label)
- Point indicateur de sélection (::before, bleu)
- Icône info sur "Instances actives" + tooltip
- Stats instances: 3 cases (Total en premier, suppression En ligne)

## Graphes flux (noData)
- constants.ts: noDataStyle + tooltip _noData sur les 5 configs REST/JDBC/FTP/SMTP/LDAP
- _fillFluxGaps: remplissage des trous de données avec _noData: true

## Suppression code mort
- Carousel (carousel.component.*): supprimé (non utilisé dans aucun template)
- views.module.ts: déréférencement DashboardCarouselComponent
- Champs: divergentBranches, insightsAllClear, hasRequestErrors,
          quietProtocols, stoppedServers, unstableServers, onlineServerStat
- Méthodes: trackByVersion, trackByBranch, trackByAppName (dashboard + detail-view)
- detail-view.model.ts: serverHealthLoading, insightsAllClear, divergentBranches
- instance.service.ts: getRecentStartCount (non utilisée)

## Labels
- Renommage en français: Service→Services exposés, Job→Tâches planifiées,
  Startup→Initialisation, UI→Parcours client (dashboard + detail-view)
- tech-stack.config.ts: désactivation kafka, docker, apachetomcat, linux, git, github

* fix(dashboard): corrections warnings Angular/Sonar, a11y, UX detail-view

Corrections qualité (Sonar)
- dashboard.component.ts : champs injectés → `private readonly` (16 champs) ;
  `Date.now()` au lieu de `new Date().getTime()` ; guard clauses positives dans
  les callbacks `finalize` ; template literals imbriqués → concaténation simple ;
  ternaire imbriqué `appname` → if/else ; `Object.assign` → spread ; if/else if
  inversé dans `groupBypropertyRest` ; extraction de `_aggregateTabData()` et
  `_patchSessionCountData()` pour réduire la complexité cognitive de
  `_rebuildSingleTabErrors` ; variable `plural` pour le ternaire subtitle
- protocol-exception-modal.component.ts : `_router` → `private readonly`

Corrections warnings Angular
- detail-ftp.view.ts, detail-ldap.view.ts, ftp.component.ts, ldap.component.ts,
  smtp.component.ts, request-kpi.view.ts, session-kpi.view.ts : ajout de
  `host: { 'data-view': '…' }` pour résoudre les collisions d'ID NG0912
- environment.remote.json : fichier vide → `{}` pour corriger l'erreur de
  chargement de config au démarrage
- main.ts : warning `bad value` n'est émis que si la valeur n'est pas `undefined`

Accessibilité (a11y / Sonar HTML)
- dashboard.component.html : `div.dov-stat-sb` (total/pending/offline) convertis
  en `<button type="button">` ; `div.sbd-row` (session/flux) enrichis de
  `tabindex="0"` + `(keydown.enter)`
- detail-view.component.html : tous les `div.dbi-row-link` convertis en
  `<button type="button">` ; `mat-icon` VIEW enrichi de `tabindex` + `keydown.enter`

Contraste SCSS (Sonar)
- dashboard.component.scss : `rgba(0,0,0,.5)` → `.65` ; `#4285f4` → `#1967d2` ;
  couleurs des statuts sb-online/sb-pending/sb-total renforcées ; reset button
  sur `.dov-stat-sb` (`border: none; font: inherit`)
- detail-view.component.scss : reset button sur `.dbi-row[type="button"]`

Bug visuel — flash "Aucun incident" (flux à 100%)
- detail-view.component.ts : `isBlockLoading` et `isNoIncidents` utilisent
  désormais l'état de chargement propre au protocole sélectionné
  (`chartRequests[reqKey]`) plutôt que le `kpiLoading` global, éliminant l'état
  intermédiaire pour les flux sans erreur tout en maintenant l'attente correcte
  pour les flux avec erreurs

UX — état "Aucun incident"
- detail-view.component.scss : `db-clear-state` avec `min-height: calc(100dvh - 255px)`
  pour occuper toute la hauteur disponible indépendamment de la sidebar ; tailles
  de l'icône, du titre, du label et du sous-titre augmentées ; media query à
  1600px pour les grands écrans
- navbar.component.ts : blur de l'élément actif avant ouverture du dialog "About"
* refactor: remplacer header-page par page-panel + PageTitleService

BREAKING: suppression du composant HeaderPage, remplacé par deux nouveaux
services et un composant bandeau horizontal de filtres.

Nouveaux fichiers :
- page-title.service.ts : service centralisant le titre/icône affiché dans la
  navbar via un BehaviorSubject ; chaque vue appelle .set() dans ngOnInit et
  .clear() dans ngOnDestroy
- page-panel.service.ts : service gérant l'état ouvert/fermé du bandeau de
  filtres (hover timer, annulation si overlay CDK ouvert, grace period de 400ms
  pour éviter la fermeture au clic réflexe après hover)
- shared/_component/page-panel/ : composant bandeau horizontal fixe sous la
  navbar (position fixed top:56px), slide-down animé, fermeture à l'Échap et
  au mouseleave de la navbar

Supprimés :
- shared/_component/header-page/ : composant header-page supprimé (html/scss/ts)

navbar.component (html/scss/ts) :
- affichage dynamique du titre via PageTitleService
- bouton trigger "pill" avec hover (open) et clic (closeIfNotJustOpened) pour
  le bandeau de filtres ; mouseleave sur la <nav> entière pour scheduleClose

shared.module.ts :
- HeaderPageComponent retiré des declarations/exports, PagePanelComponent ajouté

12 vues (html + ts) — analytic, architecture, dashboard, deploiment, kpi/request,
kpi/session, search/main, search/request, search/rest, supervision/client,
supervision/server, tree :
- migration de <header-page> vers <page-panel> + classes .pp-actions/.pp-filters
- PageTitleService.set() dans ngOnInit, .clear() dans ngOnDestroy

detail-view.component.scss :
- hauteurs adaptatives via clamp()/calc(100vh) pour db-insights et clt-loading
  (petit et grand écran), proto-row, sess-chart-row, db-clear-state

instances-table.component.scss :
- .dov-table : hauteur corrigée après suppression du header-page

dashboard.component.scss :
- ajustements de hauteurs suite à la suppression du header-page

_form-field.scss :
- ajout du scope page-panel .pp-body pour appliquer les styles MDC personnalisés
  (coins arrondis, fond grisé, hauteur 46px) aux form fields du bandeau

* feat(ui): amélioration de la navigation, du panel de filtres et du layout des pages de détail

## Titres & nommage des pages
- Remplace le séparateur `>` par `•` dans tous les titres de routes
- Corrige le doublon "Flux Flux JDBC/HTTP/..." : les titres de routes utilisent directement `REQUEST_MAPPING_TYPE` au lieu de concaténer `MAPPING_TYPE['request']`
- Renomme "Page d'accueil" → "Tableau de bord" (route, constants, composant)
- Ajoute les suffixes `• Suivi`, `• Détail`, `• KPI` dans les titres PageTitleService des vues search, détail et KPI
- Retire le préfixe "Flux" dans les labels du sous-menu navbar (HTTP, JDBC, FTP, SMTP, LDAP)
- Intègre `PageTitleService` dans toutes les vues de détail (request et session)

## Panel de filtres
- Supprime `panelIcon$` / `icon$` du service et du composant (icône désormais fixe : `filter_list` dans la navbar)
- Supprime `@Input() panelIcon` de `PagePanelComponent`
- Ferme automatiquement le panel au clic sur le bouton `search` (mini-fab primary) via `onBodyClick()`

## Champ Période
- Ajoute la classe `period-wide` (310px) sur le champ Période dans les 3 vues search avec heures (request, main, rest)
- Ajoute la règle CSS `::ng-deep mat-form-field.period-wide` dans `page-panel.component.scss`

## Layout pages de détail (flex column)
- Remplace les hauteurs codées en dur `calc(100vh - ...)` par un layout flex column sur toutes les vues de détail
- Applique `:host { display: flex; flex-direction: column; height: 100% }` + `.tabs-container { flex: 1 1 0 }` sur les 5 vues request (REST, JDBC, FTP, SMTP, LDAP)
- Applique le même pattern sur les 2 vues session (rest, main) avec `detail-session { flex: 1 1 0 }`
- Met à jour `detail-session.component.scss` en cohérence

* style(dashboard): supprime la pastille de sélection dans les blocs sb-distribution

- Retire la colonne dédiée de 6px dans grid-template-columns de .sb-distribution-block et .sb-distribution
- Supprime le pseudo-élément ::before de .sbd-row (pastille bleue + animation scale)
- Conserve les effets visuels de sélection sur le label, le taux et le compteur

* fix(dashboard): corriger le graphique "Services Exposés" et harmoniser l'UI

**Dashboard - Graphique d'exceptions REST**
- Suppression du filtre serveur `status.ge(500).or(status.lt(400))` qui excluait
  les erreurs 4xx de la requête, rendant le graphique vide ou incorrect
- Ajout du filtre JS côté client pour inclure les 4xx dans la liste d'incidents
  (`r.errorType != null && (r.status >= 400 || r.status < 100)`)
- Fix service `getSessionExceptions` : `others` n'appliquait que la première clé
  du map (Object.keys()[0]) → itération sur toutes les entrées avec Object.entries()

**Dashboard - Skeleton UI**
- Suppression des points squelettes (`.sbd-skel-dot`) dans les sections
  Session, Protocol et Flux lors du chargement

**Navbar**
- Suppression de 2 séparateurs superflus (avant le titre de page et avant le bouton GitHub)
- Unification du style `.nav-divider` : hauteur 20px, gradient transparent,
  `flex-shrink: 0` et `align-self: center` pour un rendu cohérent

**Supervision**
- Déplacement du bloc nom/version/branche hors du `page-panel` vers un
  bandeau `.page-instance-header` entre les filtres et le contenu KPI
- Correction du layout des filtres : suppression du `style` inline
  `display: flex; flex-direction: column` qui écrasait le CSS existant
- Titres navbar en français et hiérarchiques :
  "Server Supervision" → "Supervision • Serveur"
  "Client Supervision" → "Supervision • Client"
  `instance > uuid` → "Supervision • Instance • uuid"
- Ajout du `subtitle` dans `pageTitleService` pour les vues Serveur et Client

* fix(kpi): hide no-data symbols on exception line charts and clean up redundant pie label overrides

- constants: replace noDataStyle.color with symbolSize:0 on exception line
  charts (REST, JDBC, FTP, SMTP, LDAP) to hide markers when no data
- jdbc: remove explicit label/labelLine overrides now handled by jquery-echarts default

* bump version jquery-echarts - fix donuts labels

* supp comments
* fix affichage des 4**

* fix format de "sb-block" sur grand ecran

* error front interceptor

* stop propagation

* update filter

* update position and style "about-btn" and "github-btn"

* fix navbar
* remove-duplicate-resource

* add-thread

* config table

---------

Co-authored-by: mohamedamine-tarhouni <tarhounimedamine21@gmail.com>
@sonarqubecloud

sonarqubecloud Bot commented Jun 3, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
2 Security Hotspots
0.0% Coverage on New Code (required ≥ 80%)
30.2% Duplication on New Code (required ≤ 3%)
B Security Rating on New Code (required ≥ A)
D Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@sonarqubecloud

sonarqubecloud Bot commented Jun 5, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
2 Security Hotspots
0.0% Coverage on New Code (required ≥ 80%)
30.1% Duplication on New Code (required ≤ 3%)
D Reliability Rating on New Code (required ≥ A)
B Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Comment thread src/environments/environment.ts Fixed
Comment thread src/index.html
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css" />
mohamedamine-tarhouni and others added 12 commits June 8, 2026 15:51
* remove-client-credentials

* remove-auth-logs

* generic_auth
* maj

* Améliore la gestion des exceptions dans le tableau de bord et ajuste les paramètres de navigation

* Ajoute la normalisation de la période minimale et améliore la gestion des plages de dates dans les composants de tableau de bord et de recherche

* Modifie les titres des sections pour refléter le pourcentage d'incidents et ajuste le style des composants de tableau de bord

* fonction "gotoHome" modifiée pour qu'elle prenne le merge egalement et qu'elle garde les params, notamment la période

* Ajoute des sous-titres pour les graphiques d'incidents
* ui(supervision,dashboard): refonte de l'interface et du filtrage temporel

- Modifications de l'usage et de la sélection de période dans le dashboard et la supervision
- Refonte du header de la page de supervision (intégration Navbar)
- Amélioration de l'affichage des graphiques : forçage du min/max sur l'axe temps pour respecter la période demandée même sans données
- Nettoyage des paramètres URL : conservation uniquement de la période (retrait de rangeStatus et host)
- Logo : réduction de la mention 'JARVIS'
- Optimisation de la taille des mat-form-field dans le panel de filtres, avec largeur dynamique pour la période

* feat(navbar): amélioration de la barre de navigation avec contexte d'instance et infos utilisateur

- Mise à jour du logo SVG dans la barre de navigation pour un meilleur rendu visuel.
- Ajout des informations de contexte de l'instance dans la barre de navigation (indicateur de statut, badge de version et puce de branche).
- Refonte du bouton utilisateur pour afficher le nom et amélioration du style.
- Simplification de la structure du menu utilisateur et ajout d'effets au survol.
- Introduction d'une méthode de construction des paramètres de requête pour une meilleure gestion des URL de navigation.

fix(environment): ajout de commentaires pour clarifier les paramètres d'authentification

* fix supervision client
* remove-client-credentials

* remove-auth-logs

* generic_auth

* add-logout-uri-check

* remove-logout-uri-check

* logout + login redirect
* Ajout de tooltips pour les boutons de la barre de navigation et amélioration des styles des boutons

* modif nav style
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
2 Security Hotspots
0.0% Coverage on New Code (required ≥ 80%)
30.5% Duplication on New Code (required ≤ 3%)
D Reliability Rating on New Code (required ≥ A)
B Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants