From 23236fa078e7ab94a862c6133aa5efbe77f1b3c7 Mon Sep 17 00:00:00 2001 From: Stian Sulebak <69514522+stianjsu@users.noreply.github.com> Date: Tue, 4 Jul 2023 10:56:18 +0200 Subject: [PATCH] feat(board): adds via destination column for departures (#1093) * feat(graphql): adds via destination to queried data * feat(board): adds via column to table view and edit * fix(via): better coverage for diff arrays fetched from api * refactor(via): simplifies stringify via destinations * chore(via): removes redundant styles --- next-tavla/codegen.ts | 4 ++-- .../scenarios/Table/components/Via/index.tsx | 15 +++++++++++++++ next-tavla/src/Board/scenarios/Table/index.tsx | 2 ++ .../Shared/graphql/fragments/departure.graphql | 1 + next-tavla/src/Shared/graphql/index.ts | 6 ++++++ next-tavla/src/Shared/types/tile.ts | 1 + 6 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 next-tavla/src/Board/scenarios/Table/components/Via/index.tsx diff --git a/next-tavla/codegen.ts b/next-tavla/codegen.ts index e89d12dc5..72f148ea7 100644 --- a/next-tavla/codegen.ts +++ b/next-tavla/codegen.ts @@ -28,10 +28,10 @@ const config: CodegenConfig = { }, }, generates: { - 'src/types/graphql-schema.ts': { + 'src/Shared/types/graphql-schema.ts': { plugins: ['typescript'], }, - 'src/graphql/index.ts': { + 'src/Shared/graphql/index.ts': { preset: 'import-types', presetConfig: { typesPath: 'types/graphql-schema', diff --git a/next-tavla/src/Board/scenarios/Table/components/Via/index.tsx b/next-tavla/src/Board/scenarios/Table/components/Via/index.tsx new file mode 100644 index 000000000..08fd1c3c1 --- /dev/null +++ b/next-tavla/src/Board/scenarios/Table/components/Via/index.tsx @@ -0,0 +1,15 @@ +import { useNonNullContext } from 'hooks/useNonNullContext' +import { DepartureContext } from 'Board/scenarios/Table/contexts' +import { isNotNullOrUndefined } from 'utils/typeguards' + +function Via() { + const departure = useNonNullContext(DepartureContext) + + const viaDestinations = departure.destinationDisplay?.via + ?.filter(isNotNullOrUndefined) + .join(', ') + + return {viaDestinations} +} + +export { Via } diff --git a/next-tavla/src/Board/scenarios/Table/index.tsx b/next-tavla/src/Board/scenarios/Table/index.tsx index e2ff40ee5..347e87d55 100644 --- a/next-tavla/src/Board/scenarios/Table/index.tsx +++ b/next-tavla/src/Board/scenarios/Table/index.tsx @@ -8,12 +8,14 @@ import { Destination } from './components/Destination' import { Line } from './components/Line' import { Platform } from './components/Platform' import { Situations } from './components/Situations' +import { Via } from './components/Via' const columnComponents: Record JSX.Element> = { destination: Destination, line: Line, time: Time, platform: Platform, + via: Via, situations: Situations, } diff --git a/next-tavla/src/Shared/graphql/fragments/departure.graphql b/next-tavla/src/Shared/graphql/fragments/departure.graphql index 3f655e5ca..ff6d36098 100644 --- a/next-tavla/src/Shared/graphql/fragments/departure.graphql +++ b/next-tavla/src/Shared/graphql/fragments/departure.graphql @@ -4,6 +4,7 @@ fragment departure on EstimatedCall { } destinationDisplay { frontText + via } aimedDepartureTime expectedDepartureTime diff --git a/next-tavla/src/Shared/graphql/index.ts b/next-tavla/src/Shared/graphql/index.ts index 31f4d3bcf..c4991c172 100644 --- a/next-tavla/src/Shared/graphql/index.ts +++ b/next-tavla/src/Shared/graphql/index.ts @@ -11,6 +11,7 @@ export type TDepartureFragment = { destinationDisplay: { __typename?: 'DestinationDisplay' frontText: string | null + via: Array | null } | null serviceJourney: { __typename?: 'ServiceJourney' @@ -96,6 +97,7 @@ export type TGetQuayQuery = { destinationDisplay: { __typename?: 'DestinationDisplay' frontText: string | null + via: Array | null } | null serviceJourney: { __typename?: 'ServiceJourney' @@ -179,6 +181,7 @@ export type TStopPlaceQuery = { destinationDisplay: { __typename?: 'DestinationDisplay' frontText: string | null + via: Array | null } | null serviceJourney: { __typename?: 'ServiceJourney' @@ -273,6 +276,7 @@ export const DepartureFragment = new TypedDocumentString( } destinationDisplay { frontText + via } aimedDepartureTime expectedDepartureTime @@ -341,6 +345,7 @@ export const GetQuayQuery = new TypedDocumentString(` } destinationDisplay { frontText + via } aimedDepartureTime expectedDepartureTime @@ -413,6 +418,7 @@ export const StopPlaceQuery = new TypedDocumentString(` } destinationDisplay { frontText + via } aimedDepartureTime expectedDepartureTime diff --git a/next-tavla/src/Shared/types/tile.ts b/next-tavla/src/Shared/types/tile.ts index fb7674981..15e27830b 100644 --- a/next-tavla/src/Shared/types/tile.ts +++ b/next-tavla/src/Shared/types/tile.ts @@ -6,6 +6,7 @@ export const Columns = { platform: 'Plattform', time: 'Avgangstid', situations: 'Avvik', + via: 'Via', } as const export type TColumn = keyof typeof Columns