Browse Source

feat(EntityGrid): sort search results alphabetically

Sort search results alphabetically while preserving original order for
default list when no search term is present.
pull/216/head
Jose Olarte III 3 days ago
parent
commit
9c3002f9c7
  1. 24
      src/components/EntityGrid.vue

24
src/components/EntityGrid.vue

@ -377,21 +377,29 @@ export default class EntityGrid extends Vue {
const searchLower = this.searchTerm.toLowerCase().trim();
if (this.entityType === "people") {
this.filteredEntities = (this.entities as Contact[]).filter(
(contact: Contact) => {
this.filteredEntities = (this.entities as Contact[])
.filter((contact: Contact) => {
const name = contact.name?.toLowerCase() || "";
const did = contact.did.toLowerCase();
return name.includes(searchLower) || did.includes(searchLower);
},
);
})
.sort((a: Contact, b: Contact) => {
// Sort alphabetically by name, falling back to DID if name is missing
const nameA = (a.name || a.did).toLowerCase();
const nameB = (b.name || b.did).toLowerCase();
return nameA.localeCompare(nameB);
});
} else {
this.filteredEntities = (this.entities as PlanData[]).filter(
(project: PlanData) => {
this.filteredEntities = (this.entities as PlanData[])
.filter((project: PlanData) => {
const name = project.name?.toLowerCase() || "";
const handleId = project.handleId.toLowerCase();
return name.includes(searchLower) || handleId.includes(searchLower);
},
);
})
.sort((a: PlanData, b: PlanData) => {
// Sort alphabetically by name
return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
});
}
} finally {
this.isSearching = false;

Loading…
Cancel
Save