clqms-fe1/.serena/memories/plans/testmap-dropdown-change.md
mahdahar 695ee3de91 feat(tests): implement proper group member sequencing and cleanup deprecated skills
**Test Group Member Management:**
- Refactor member data structure from simple ID array to object array with sequence numbers
- Update member objects to include both TestSiteID and Member (sequence) fields
- Fix addMember() to assign sequential Member numbers automatically
- Fix removeMember() to re-sequence remaining members after removal
- Fix moveMember() to properly swap and re-sequence members
- Add sorting by sequence number in members list display
- Update payload builder in tests.js to use proper object structure for API
- Update TestFormModal.svelte member mapping for edit mode

**Documentation:**
- Add TypeScript Types section to AGENTS.md with TestType and TestSummary examples
- Reorganize TODO.md with new test type categories and backend notes

**Cleanup:**
- Remove deprecated OpenSpec skills from .opencode/ directory:
  - opsx-apply.md, opsx-archive.md, opsx-explore.md, opsx-propose.md
  - openspec-apply-change/SKILL.md, openspec-archive-change/SKILL.md
  - openspec-explore/SKILL.md, openspec-propose/SKILL.md

**New Files:**
- Add .serena/memories/ for code style conventions and task tracking
2026-03-09 16:50:35 +07:00

1.4 KiB

Plan: Change ID Text Inputs to Dropdowns

Current State

In src\routes\(app)\master-data\testmap\+page.svelte, the filter section has:

  • Host ID filter (lines 239-244): text input
  • Client ID filter (lines 260-265): text input

Changes Required

1. Add Derived State for Dropdown Options

Add after line 41 (after filter states):

// Derived unique values for dropdowns
let uniqueHostIDs = $derived([...new Set(testMaps.map(m => m.HostID).filter(Boolean))].sort());
let uniqueClientIDs = $derived([...new Set(testMaps.map(m => m.ClientID).filter(Boolean))].sort());

2. Replace Host ID Input with Dropdown

Replace lines 239-244 with:

<select
  class="select select-sm select-bordered w-full"
  bind:value={filterHostID}
>
  <option value="">All IDs</option>
  {#each uniqueHostIDs as id}
    <option value={id}>{id}</option>
  {/each}
</select>

3. Replace Client ID Input with Dropdown

Replace lines 260-265 with:

<select
  class="select select-sm select-bordered w-full"
  bind:value={filterClientID}
>
  <option value="">All IDs</option>
  {#each uniqueClientIDs as id}
    <option value={id}>{id}</option>
  {/each}
</select>

Benefits

  • Users can select from existing IDs rather than typing
  • Prevents typos in filter values
  • Shows all available options at a glance
  • Maintains exact matching instead of substring matching for IDs

Ready to implement?