Skip to content

refactor: standardize event patterns in entity edit dialogs #67

@Flo0806

Description

@Flo0806

Description

The entity tab components in edit dialogs use two different event patterns inconsistently. This should be standardized for better maintainability.

Current State

Pattern A: @changed event (component manages everything internally)

Used by: EntityLocationsTab, EntityPlayersTab, EntityFactionsTab

  • Component handles add/update/remove internally
  • Emits single @changed event
  • Parent just calls loadCounts() or refresh*()

Pattern B: @add/@remove/@update events (parent manages logic)

Used by: NpcRelationsTab, NpcMembershipsTab, EntityItemsTab, EntityLoreTab, EntityNpcsTab

  • Component emits granular events
  • Parent handles API calls and state updates
  • Parent calls loadCounts() after each operation

Recommendation

Standardize on Pattern A (@changed) because:

  1. Better encapsulation - component is self-contained
  2. Less boilerplate in parent dialogs
  3. Easier to maintain and test
  4. Parent doesn't need to know internal implementation details

Affected Components

Components to refactor to Pattern A:

  • EntityItemsTab.vue
  • EntityLoreTab.vue
  • EntityNpcsTab.vue
  • NpcRelationsTab.vue
  • NpcMembershipsTab.vue

Implementation

For each component:

  1. Move API calls from parent into component
  2. Add internal state management
  3. Replace @add/@remove/@update with single @changed emit
  4. Update all parent dialogs to use @changed

Metadata

Metadata

Assignees

No one assigned

    Labels

    chorePackage updates, refactoring e.g.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions