Skip to content

Commit

Permalink
add showObsolete transform to tooling page
Browse files Browse the repository at this point in the history
  • Loading branch information
DarhkVoyd committed Nov 7, 2024
1 parent d3ff65d commit a95dce9
Showing 1 changed file with 44 additions and 43 deletions.
87 changes: 44 additions & 43 deletions pages/tools/hooks/useToolsTransform.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface Transform {
drafts: JSONSchemaDraft[];
toolingTypes: string[];
environments: string[];
showObsolete: 'true' | 'false';
}

export type TransformUpdate =
Expand All @@ -36,6 +37,7 @@ const buildQueryString = (transform: Transform) => {
drafts: transform.drafts.join(','),
toolingTypes: transform.toolingTypes.join(','),
environments: transform.environments.join(','),
showObsolete: transform.showObsolete,
}).toString();
};

Expand All @@ -53,6 +55,7 @@ export default function useToolsTransform(tools: JSONSchemaTool[]) {
drafts: [],
toolingTypes: [],
environments: [],
showObsolete: 'false',
});

useEffect(() => {
Expand Down Expand Up @@ -84,7 +87,9 @@ export default function useToolsTransform(tools: JSONSchemaTool[]) {
environments: parseArrayParam(
query.environments,
) as Transform['environments'],
};
showObsolete:
(query.showObsolete as Transform['showObsolete']) || 'false',
} satisfies Transform;

const queryString = buildQueryString(updatedTransform);
const hash = window.location.hash;
Expand Down Expand Up @@ -131,6 +136,7 @@ export default function useToolsTransform(tools: JSONSchemaTool[]) {
drafts: [],
toolingTypes: [],
environments: [],
showObsolete: 'false',
};

const queryString = buildQueryString(initialTransform);
Expand Down Expand Up @@ -186,52 +192,47 @@ const filterTools = (
tools: JSONSchemaTool[],
transform: Transform,
): JSONSchemaTool[] => {
const lowerCaseTransform = {
languages: lowerCaseArray(transform.languages),
licenses: lowerCaseArray(transform.licenses),
toolingTypes: lowerCaseArray(transform.toolingTypes),
environments: lowerCaseArray(transform.environments),
drafts: transform.drafts,
};

return tools.filter((tool) => {
const matchesLanguage =
!lowerCaseTransform.languages.length ||
(tool.languages || []).some((lang) =>
lowerCaseTransform.languages.includes(lang.toLowerCase()),
);

const matchesLicense =
!lowerCaseTransform.licenses.length ||
(tool.license &&
lowerCaseTransform.licenses.includes(tool.license.toLowerCase()));

const matchesToolingType =
!lowerCaseTransform.toolingTypes.length ||
(tool.toolingTypes || []).some((type) =>
lowerCaseTransform.toolingTypes.includes(type.toLowerCase()),
);

const matchesEnvironment =
!lowerCaseTransform.environments.length ||
(tool.environments || []).some((environment) =>
lowerCaseTransform.environments.includes(environment.toLowerCase()),
);

const matchesDraft =
!lowerCaseTransform.drafts.length ||
(tool.supportedDialects?.draft || []).some((draft) =>
lowerCaseTransform.drafts.includes(draft),
);
const filteredTools = tools.filter((tool) => {
if (transform.showObsolete === 'false' && tool.status === 'obsolete')
return false;

const lowerCaseTransform = {
languages: lowerCaseArray(transform.languages),
licenses: lowerCaseArray(transform.licenses),
toolingTypes: lowerCaseArray(transform.toolingTypes),
environments: lowerCaseArray(transform.environments),
drafts: transform.drafts,
};

return (
matchesLanguage &&
matchesLicense &&
matchesToolingType &&
matchesEnvironment &&
matchesDraft
// Matches Languages
(!lowerCaseTransform.languages.length ||
(tool.languages || []).some((lang) =>
lowerCaseTransform.languages.includes(lang.toLowerCase()),
)) &&
// Matches Tooling Types
(!lowerCaseTransform.toolingTypes.length ||
(tool.toolingTypes || []).some((type) =>
lowerCaseTransform.toolingTypes.includes(type.toLowerCase()),
)) &&
// Matches Environment
(!lowerCaseTransform.environments.length ||
(tool.environments || []).some((environment) =>
lowerCaseTransform.environments.includes(environment.toLowerCase()),
)) &&
// Matches Dialect
(!lowerCaseTransform.drafts.length ||
(tool.supportedDialects?.draft || []).some((draft) =>
lowerCaseTransform.drafts.includes(draft),
)) &&
// Matches License
(!lowerCaseTransform.licenses.length ||
(tool.license &&
lowerCaseTransform.licenses.includes(tool.license.toLowerCase())))
);
});

return filteredTools;
};

const sortTools = (
Expand Down

0 comments on commit a95dce9

Please sign in to comment.