ObsiViewer/docs/PROFESSIONAL_COLUMNS_GUIDE.md
Bruno Charest ee3085ce38 feat: add Nimbus Editor with Unsplash integration
- Integrated Unsplash API for image search functionality with environment configuration
- Added new Nimbus Editor page component with navigation from sidebar and mobile drawer
- Enhanced TOC with highlight animation for editor heading navigation
- Improved CDK overlay z-index hierarchy for proper menu layering
- Removed obsolete logging validation script
2025-11-11 11:38:27 -05:00

12 KiB

Guide Professionnel - Système de Colonnes et Commentaires

📋 Vue d'Ensemble

Le système de colonnes et commentaires offre une solution professionnelle complète pour organiser le contenu en colonnes multiples avec gestion intégrée des commentaires par bloc.

🎯 Fonctionnalités Principales

1. Colonnes Multiples Flexibles

Créer des colonnes:

  • Drag un bloc vers le bord gauche d'un autre → Nouvelle colonne à gauche
  • Drag un bloc vers le bord droit d'un autre → Nouvelle colonne à droite
  • Drag vers un bloc columns existant → Ajoute une nouvelle colonne
  • Support illimité: 2, 3, 4, 5, 6, 7+ colonnes possibles
  • Redistribution automatique: Les largeurs s'ajustent automatiquement

Indicateurs visuels:

  • Ligne horizontale (─) avec flèches → Changement de position normale
  • Ligne verticale (│) avec flèches → Création/ajout de colonne

2. Gestion des Commentaires par Bloc

Chaque bloc dispose de:

  • Bouton de commentaires indépendant
  • Badge avec compteur de commentaires
  • Interface complète de gestion

Actions disponibles:

  • Ajouter des commentaires
  • Voir tous les commentaires d'un bloc
  • Résoudre un commentaire
  • Supprimer un commentaire
  • Identifier les auteurs

3. Menu Contextuel par Bloc

Chaque bloc dans les colonnes a:

  • Menu contextuel complet (3 points)
  • Options de formatage
  • Actions de bloc (copier, supprimer, etc.)

💡 Guide d'Utilisation

Créer Votre Premier Layout en Colonnes

Étape 1: Créer les Blocs

1. Créer 3 blocs H2:
   - "Colonne 1"
   - "Colonne 2"
   - "Colonne 3"

Étape 2: Organiser en Colonnes

1. Drag "Colonne 1" → Bord gauche de "Colonne 2"
   → Crée 2 colonnes

2. Drag "Colonne 3" → Bord droit du bloc columns
   → Ajoute une 3ème colonne

Résultat:
┌───────────┬───────────┬───────────┐
│ Colonne 1 │ Colonne 2 │ Colonne 3 │
└───────────┴───────────┴───────────┘

Ajouter des Commentaires

Via l'Interface

Méthode 1: Clic sur le Badge

1. Hover sur un bloc dans une colonne
2. Cliquer sur le bouton de commentaires (icône bulle 💬)
3. Taper votre commentaire dans le champ
4. Cliquer "Add" ou appuyer sur Enter

Actions disponibles dans le panneau:

  • Marquer comme résolu - Icône checkmark vert
  • Supprimer - Icône poubelle rouge
  • Voir l'historique - Date et auteur de chaque commentaire

Via la Console (Pour Tester)

Ajouter des commentaires de test:

// Ouvrir la console (F12)
function addTestComments() {
  const appRoot = document.querySelector('app-root');
  const ngContext = appRoot?.__ngContext__;
  
  let commentService = null;
  let documentService = null;
  
  // Trouver les services
  for (let i = 0; i < 20; i++) {
    if (ngContext[i]?.commentService) commentService = ngContext[i].commentService;
    if (ngContext[i]?.documentService) documentService = ngContext[i].documentService;
  }
  
  if (!commentService || !documentService) {
    console.error('Services not found');
    return;
  }
  
  // Ajouter des commentaires
  const blocks = documentService.blocks();
  blocks.slice(0, 5).forEach((block, i) => {
    const count = Math.floor(Math.random() * 3);
    for (let j = 0; j < count; j++) {
      commentService.addComment(
        block.id,
        `Test comment ${j + 1}`,
        `User${i + 1}`
      );
    }
  });
  
  console.log('✅ Comments added!');
}

addTestComments();

Utiliser le Menu Contextuel

1. Hover sur un bloc dans une colonne
2. Cliquer sur le bouton menu (⋯)
3. Sélectionner une option:
   - Changer le type de bloc
   - Modifier le style
   - Copier/Dupliquer
   - Supprimer
   - etc.

🎨 Apparence et UI

Bloc Normal

┌─────────────────┐
│   H2 Content    │
└─────────────────┘

Bloc au Hover

┌─────────────────┐
│ ⋯           💬  │  ← Boutons visibles
│   H2 Content    │
└─────────────────┘

Bloc avec Commentaires

┌─────────────────┐
│ ⋯          💬 3 │  ← Badge avec compteur
│   H2 Content    │
└─────────────────┘

Layout 3 Colonnes

┌─────────┬─────────┬─────────┐
│⋯     💬1│⋯        │⋯     💬2│
│  H2     │  Para   │  H1     │
│         │         │         │
└─────────┴─────────┴─────────┘
    33%       33%       33%

Layout 4 Colonnes

┌──────┬──────┬──────┬──────┐
│⋯  💬1│⋯     │⋯     │⋯  💬3│
│ H2   │ Para │ H1   │ H2   │
└──────┴──────┴──────┴──────┘
  25%    25%    25%    25%

🔧 Fonctionnalités Avancées

Redistribution Automatique des Largeurs

2 Colonnes → 50% / 50% 3 Colonnes → 33.33% / 33.33% / 33.33% 4 Colonnes → 25% / 25% / 25% / 25% 5 Colonnes → 20% / 20% / 20% / 20% / 20%

La redistribution se fait automatiquement lors de l'ajout/suppression de colonnes.

Types de Blocs Supportés

Dans les colonnes, vous pouvez utiliser:

  • Headings (H1, H2, H3)
  • Paragraphs
  • List Items (checkboxes, bullets, numbered)
  • Code Blocks
  • Tous les autres types de blocs

Édition en Temps Réel

Les blocs restent complètement éditables dans les colonnes:

  • Modifier le texte
  • Changer le formatage
  • Ajouter/supprimer du contenu
  • Les changements persistent automatiquement

Commentaires Résolus

Les commentaires résolus:

  • Apparaissent en semi-transparent
  • Affichent un badge vert "Resolved"
  • Ne comptent plus dans le compteur du badge
  • Restent visibles dans l'historique

📊 Cas d'Usage Professionnels

1. Documentation Multi-Sections

┌─────────────┬─────────────┬─────────────┐
│ Features    │ API Docs    │ Examples    │
│             │             │             │
│ • Feature 1 │ get()       │ Code sample │
│ • Feature 2 │ post()      │ Demo        │
│ • Feature 3 │ delete()    │ Tutorial    │
└─────────────┴─────────────┴─────────────┘

2. Revue de Code avec Commentaires

┌──────────────┬──────────────┐
│ Code Block   │ Comments 💬3 │
│              │              │
│ function(){  │ "Optimize"   │
│   // logic   │ "Add tests"  │
│ }            │ "Good work!" │
└──────────────┴──────────────┘

3. Comparaisons

┌──────────┬──────────┬──────────┐
│ Option A │ Option B │ Option C │
│          │          │          │
│ Pros:    │ Pros:    │ Pros:    │
│ • Fast   │ • Cheap  │ • Simple │
│ Cons:    │ Cons:    │ Cons:    │
│ • $$$    │ • Slow   │ • Basic  │
└──────────┴──────────┴──────────┘

4. Planning et Roadmap

┌────────┬────────┬────────┬────────┐
│ Q1     │ Q2     │ Q3     │ Q4     │
│ 💬2    │        │ 💬1    │        │
│ MVP    │ Beta   │ Launch │ Scale  │
│ Tests  │ UX     │ Market │ Global │
└────────┴────────┴────────┴────────┘

🛠️ Raccourcis et Astuces

Raccourcis Clavier

Dans un bloc:

  • Tab → Augmente l'indentation
  • Shift+Tab → Diminue l'indentation
  • Enter → Nouveau bloc
  • / → Ouvre le menu de blocs

Dans le panneau de commentaires:

  • Enter → Ajouter le commentaire
  • Esc → Fermer le panneau

Astuces Productivité

  1. Dupliquer une structure:

    • Créer un layout en colonnes
    • Utiliser le menu contextuel pour dupliquer
    • Modifier le contenu
  2. Organisation rapide:

    • Créer tous vos blocs d'abord
    • Organiser en colonnes ensuite
    • Ajuster au besoin
  3. Commentaires collaboratifs:

    • Ajouter des commentaires avec votre nom
    • Marquer comme résolu après traitement
    • Garder l'historique pour référence

🔍 Dépannage

Les boutons n'apparaissent pas

Solution:

  1. Vérifier que vous êtes bien en mode hover
  2. Rafraîchir la page (F5)
  3. Vérifier dans les DevTools console

Les commentaires ne s'affichent pas

Solution:

  1. Vérifier que des commentaires existent:

    const commentService = /* récupérer */;
    console.log(commentService.getAllComments());
    
  2. Rafraîchir la page

Le menu ne s'ouvre pas

Solution:

  1. Vérifier la console pour erreurs
  2. Essayer sur un autre bloc
  3. Rafraîchir la page

📚 API Complète

CommentService

// Ajouter un commentaire
commentService.addComment(
  blockId: string, 
  text: string, 
  author: string
): void

// Obtenir le nombre de commentaires
commentService.getCommentCount(blockId: string): number

// Obtenir tous les commentaires d'un bloc
commentService.getCommentsForBlock(blockId: string): Comment[]

// Supprimer un commentaire
commentService.deleteComment(commentId: string): void

// Résoudre un commentaire
commentService.resolveComment(commentId: string): void

// Obtenir tous les commentaires
commentService.getAllComments(): Comment[]

Interface Comment

interface Comment {
  id: string;           // ID unique
  blockId: string;      // ID du bloc lié
  author: string;       // Nom de l'auteur
  text: string;         // Contenu du commentaire
  createdAt: Date;      // Date de création
  resolved?: boolean;   // Statut résolu
}

Checklist de Fonctionnalités

Colonnes

  • Créer 2 colonnes par drag & drop
  • Ajouter des colonnes supplémentaires
  • Redistribution automatique des largeurs
  • Support de tous les types de blocs
  • Indicateurs visuels (vertical/horizontal)

Commentaires

  • Badge avec compteur
  • Panneau de gestion
  • Ajouter des commentaires
  • Supprimer des commentaires
  • Résoudre des commentaires
  • Affichage de l'auteur et date
  • Commentaires indépendants par bloc

Interface

  • Bouton menu (3 points)
  • Bouton commentaires
  • Hover effects
  • Menu contextuel
  • Animations fluides
  • Design responsive

🚀 Prochaines Évolutions Possibles

  1. Drag & Drop dans les colonnes

    • Déplacer des blocs entre colonnes
    • Réorganiser au sein d'une colonne
  2. Redimensionnement manuel

    • Drag sur la bordure entre colonnes
    • Ajuster les largeurs manuellement
  3. Colonnes imbriquées

    • Blocs columns dans des blocs columns
    • Layouts complexes multi-niveaux
  4. Export de layouts

    • Sauvegarder des templates
    • Réutiliser des structures
  5. Notifications

    • Nouveaux commentaires
    • Mentions d'utilisateurs
    • Commentaires résolus

💼 Conclusion

Le système de colonnes et commentaires offre une solution professionnelle complète pour:

  • Organisation visuelle du contenu
  • Collaboration via commentaires
  • Productivité accrue
  • Flexibilité maximale
  • Interface intuitive

Rafraîchissez votre navigateur et commencez à créer des layouts professionnels!