fix(f5.1): make finding applicability filter explicit
This commit is contained in:
@@ -121,9 +121,9 @@ export function FindingCatalogTypeApplicabilityPanel() {
|
||||
<div>
|
||||
<span className="eyebrow">APLICABILIDAD POR INSTALACIÓN / SUBINSTALACIÓN</span>
|
||||
<h2>Qué Hallazgos verá el inspector</h2>
|
||||
<p className="section-copy">Al elegir una clasificación se muestran primero sólo sus Hallazgos asociados. Usá “Todos para vincular” únicamente cuando quieras agregar o quitar asociaciones.</p>
|
||||
<p className="section-copy">Al elegir una clasificación se filtra inmediatamente a sus Hallazgos asociados. Para modificar la relación, abrí “Todos para vincular”.</p>
|
||||
</div>
|
||||
<span className="count-pill">{savedIds.size} asociados</span>
|
||||
<span className="count-pill">{savedIds.size} vinculados</span>
|
||||
</div>
|
||||
{error && <Alert>{error}</Alert>}{success && <Alert type="success">{success}</Alert>}
|
||||
<div className="form-grid finding-applicability-toolbar">
|
||||
@@ -135,7 +135,7 @@ export function FindingCatalogTypeApplicabilityPanel() {
|
||||
</option>)}
|
||||
</SearchableSelect>
|
||||
</label>
|
||||
<label className="field"><span>Buscar Hallazgo</span><input value={search} onChange={(event) => setSearch(event.target.value)} placeholder="Título, código o categoría…" /></label>
|
||||
<label className="field"><span>Buscar dentro de {viewMode === 'ASSOCIATED' ? 'los asociados' : 'todo el Catálogo'}</span><input value={search} onChange={(event) => setSearch(event.target.value)} placeholder="Título, código o categoría…" /></label>
|
||||
</div>
|
||||
{selectedFamily && <div className="temporal-notice">
|
||||
<Icon name="layers" />
|
||||
@@ -143,21 +143,26 @@ export function FindingCatalogTypeApplicabilityPanel() {
|
||||
</div>}
|
||||
|
||||
<div className="quick-view-row" style={{ marginBottom: 12 }}>
|
||||
<button type="button" className={viewMode === 'ASSOCIATED' ? 'active' : ''} onClick={() => setViewMode('ASSOCIATED')}>Asociados ({savedIds.size})</button>
|
||||
<button type="button" className={viewMode === 'ALL' ? 'active' : ''} onClick={() => setViewMode('ALL')}>Todos para vincular ({available.length})</button>
|
||||
<button type="button" className={viewMode === 'ASSOCIATED' ? 'active' : ''} onClick={() => { setViewMode('ASSOCIATED'); setSearch(''); }}>Asociados ({savedIds.size})</button>
|
||||
<button type="button" className={viewMode === 'ALL' ? 'active' : ''} onClick={() => { setViewMode('ALL'); setSearch(''); }}>Todos para vincular ({catalog.items.filter((item) => item.isActive && activeCategoryIds.has(item.categoryId)).length})</button>
|
||||
</div>
|
||||
|
||||
{viewMode === 'ASSOCIATED' && visible.length === 0
|
||||
? <div className="inline-empty"><strong>Esta clasificación todavía no tiene Hallazgos asociados.</strong><br />Abrí “Todos para vincular” para elegirlos.</div>
|
||||
? <div className="inline-empty"><strong>{search.trim() ? 'Ningún Hallazgo asociado coincide con la búsqueda.' : 'Esta clasificación todavía no tiene Hallazgos asociados.'}</strong><br />{!search.trim() && 'Abrí “Todos para vincular” para elegirlos.'}</div>
|
||||
: <>
|
||||
{viewMode === 'ALL' && <div className="catalog-selection-actions">
|
||||
<button type="button" className="button secondary" onClick={selectVisible}>Seleccionar visibles</button>
|
||||
<button type="button" className="button secondary" onClick={() => setEnabled(new Set())}>Quitar todos</button>
|
||||
</div>}
|
||||
<div className="finding-selection-list">{visible.map((item) => <label className="finding-selection-row" key={item.id}>
|
||||
<input type="checkbox" checked={enabled.has(item.id)} onChange={() => toggle(item.id)} />
|
||||
<span><strong>{item.title}</strong><small>{categoryName.get(item.categoryId) ?? 'Catálogo'} · {item.code}{item.suggestedSeverity ? ` · gravedad sugerida ${item.suggestedSeverity}/10` : ''}</small></span>
|
||||
</label>)}</div>
|
||||
<div className="finding-selection-list">{visible.map((item) => viewMode === 'ALL'
|
||||
? <label className="finding-selection-row" key={item.id}>
|
||||
<input type="checkbox" checked={enabled.has(item.id)} onChange={() => toggle(item.id)} />
|
||||
<span><strong>{item.title}</strong><small>{categoryName.get(item.categoryId) ?? 'Catálogo'} · {item.code}{item.suggestedSeverity ? ` · gravedad sugerida ${item.suggestedSeverity}/10` : ''}</small></span>
|
||||
</label>
|
||||
: <div className="finding-selection-row" key={item.id}>
|
||||
<span className="asset-symbol"><Icon name="check" size={14} /></span>
|
||||
<span><strong>{item.title}</strong><small>{categoryName.get(item.categoryId) ?? 'Catálogo'} · {item.code}{item.suggestedSeverity ? ` · gravedad sugerida ${item.suggestedSeverity}/10` : ''}</small></span>
|
||||
</div>)}</div>
|
||||
</>}
|
||||
|
||||
{viewMode === 'ALL' && <>
|
||||
|
||||
Reference in New Issue
Block a user