diff --git a/src/FilterLists.Web/ClientApp/modules/home/components/listsTable/columns/Languages.tsx b/src/FilterLists.Web/ClientApp/modules/home/components/listsTable/columns/Languages.tsx index f1e6e7950..769dfe6e4 100644 --- a/src/FilterLists.Web/ClientApp/modules/home/components/listsTable/columns/Languages.tsx +++ b/src/FilterLists.Web/ClientApp/modules/home/components/listsTable/columns/Languages.tsx @@ -2,19 +2,21 @@ import * as React from "react"; import { Column, Filter } from "react-table"; import { IColumnVisibility, ILanguage } from "../../../interfaces"; -export const Languages = (columnVisibility: IColumnVisibility[], languages: ILanguage[]) => -({ - Header: "Languages", - accessor: "languageIds", - filterable: true, - filterMethod: (f: Filter, r: any[]) => filterMethod(f, r), - Filter: ({ onChange, filter }: any) => Filter({ onChange, filter }, languages), - sortMethod: (a: number[], b: number[]) => sortMethod(a, b, languages), - Cell: (c: any) => Cell(c.value, languages), - style: { whiteSpace: "inherit" }, - width: 95, - show: columnVisibility.filter((c: IColumnVisibility) => c.column === "Languages")[0].visible -} as Column); +export const Languages = (columnVisibility: IColumnVisibility[], languages: ILanguage[]) => { + const languagesSorted = languages.sort((a, b) => a.name.localeCompare(b.name)); + return ({ + Header: "Languages", + accessor: "languageIds", + filterable: true, + filterMethod: (f: Filter, r: any[]) => filterMethod(f, r), + Filter: ({ onChange, filter }: any) => Filter({ onChange, filter }, languagesSorted), + sortMethod: (a: number[], b: number[]) => sortMethod(a, b, languagesSorted), + Cell: (c: any) => Cell(c.value, languagesSorted), + style: { whiteSpace: "inherit" }, + width: 95, + show: columnVisibility.filter((c: IColumnVisibility) => c.column === "Languages")[0].visible + } as Column); +}; const filterMethod = (f: Filter, r: any[]): boolean => { const listLanguageIds = r[f.id as any]; @@ -30,8 +32,7 @@ const Filter = (props: any, languages: ILanguage[]) => value={props.filter ? props.filter.value : "any"}> {languages.length > 0 - ? languages.sort((a, b) => a.name.localeCompare(b.name)) - .map((l: ILanguage, i: number) => + ? languages.map((l: ILanguage, i: number) => ) @@ -41,9 +42,11 @@ const Filter = (props: any, languages: ILanguage[]) => const sortMethod = (a: number[], b: number[], languages: ILanguage[]) => { if (a && a.length > 0) { if (b && b.length > 0) { - const aFirstLanguageName = languages.filter((l: ILanguage) => l.id === a[0])[0].name; - const bFirstLanguageName = languages.filter((l: ILanguage) => l.id === b[0])[0].name; - return aFirstLanguageName.toLowerCase() > bFirstLanguageName.toLowerCase() ? 1 : -1; + const aLanguageNames = + languages.filter((l: ILanguage) => l.id === a[0]).map((l: ILanguage) => l.name).join(); + const bLanguageNames = + languages.filter((l: ILanguage) => l.id === b[0]).map((l: ILanguage) => l.name).join(); + return aLanguageNames.toLowerCase() > bLanguageNames.toLowerCase() ? 1 : -1; } else { return -1; }