Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mijn-9575-feature varen service + thema pagina #1736

Merged
merged 53 commits into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
4686c15
Remove unnecessary options parameter from transform function
TerryvanWalen Jan 21, 2025
e558356
Refactor decisionTranslations to function applied in transformFields
TerryvanWalen Jan 21, 2025
c3241ba
Fix return type of fetchDecosWorkflowDates. Record value can be undef…
TerryvanWalen Jan 21, 2025
9a75e58
Force consistent caseType from the calling service instead of definin…
TerryvanWalen Jan 21, 2025
1c784f0
Lintfix
TerryvanWalen Jan 22, 2025
eab4203
Remove non KVK Varenmock data
TerryvanWalen Jan 27, 2025
448789a
Type DecosZaakTransformer.title to force consistent title
TerryvanWalen Jan 27, 2025
288a936
Set default decision transformfield value
TerryvanWalen Jan 27, 2025
7d7f93d
Varen initial thema service and thema page
TerryvanWalen Jan 27, 2025
2e5f882
Fix mailaddress in decosZaakTransformer varenRegistratieReder
TerryvanWalen Jan 28, 2025
f3fe042
Reorder varen frontend order
TerryvanWalen Jan 28, 2025
d82fb42
Surround decos filter query param in single quotes
TerryvanWalen Jan 28, 2025
7debf46
fix show varen thema when reder is not available
TerryvanWalen Jan 28, 2025
325f63d
Select all transform keys in decosZaakTransformer for decos call
TerryvanWalen Jan 28, 2025
0d73366
fix type issues frontend
TerryvanWalen Jan 28, 2025
234e25c
Merge branch 'main' into MIJN-9575-varen-service
TerryvanWalen Jan 28, 2025
2889126
Surround decos filter in single quotes in test
TerryvanWalen Jan 28, 2025
a9345d6
Use newer fetchDocumentsUrl in VarenVergunningFrontend over fetchUrl
TerryvanWalen Jan 28, 2025
a214fbc
Rename varen boat to vessel
TerryvanWalen Jan 29, 2025
36edbe2
Remove todo about featureToggle from Varen
TerryvanWalen Jan 29, 2025
57aadc4
Extract GridDetails for gegevens aanvrager to own component
TerryvanWalen Jan 29, 2025
c3a7f0f
findings from FAT (#1734)
Anouk91 Jan 28, 2025
f801310
Merge branch 'main' into MIJN-9575-varen-service
TerryvanWalen Jan 29, 2025
e464673
Move GridDetails component to own component file
TerryvanWalen Jan 30, 2025
2447c33
Improve grid finetuning for Datalist (#1742)
timvanoostrom Jan 31, 2025
c6c66a8
Type, naming and lint changes
TerryvanWalen Jan 31, 2025
c86b552
Rename varen files and move config config from thema to config file
TerryvanWalen Jan 31, 2025
4618596
Extract transformVergunningFrontendV2 to abstract decos transformDeco…
TerryvanWalen Jan 31, 2025
1888caa
MIJN-9980-BUG/geblokkeerde-passen-worden-eruit-gefiltert (#1724)
RoanPaulus Jan 30, 2025
75a821d
MIJN-9980-BUG/geblokkeerde-passen-worden-eruit-gefiltert (#1739)
RoanPaulus Jan 30, 2025
ade3244
MIJN-9745-BUG/onder-thema-parkeren-worden-de-decos-vergunningen-en-on…
RoanPaulus Jan 30, 2025
55e1dcb
update wrong status code cache clear condition (#1743)
RoanPaulus Jan 30, 2025
fbf4bc1
Mijn-10017-Bug-MIJN-10018-Bug - better release pipeline and prod bug …
timvanoostrom Jan 30, 2025
8984200
Mijn-10018-bug pipeline release trigger (#1747)
timvanoostrom Jan 30, 2025
eb6bd17
MIJN-10018-Bug - Output the SourceBranch (#1748)
timvanoostrom Jan 30, 2025
6fbad03
Mijn-10018-bug pipeline trigger (#1749)
timvanoostrom Jan 30, 2025
32c6c53
Change notation (#1750)
timvanoostrom Jan 30, 2025
30dcb12
Simplify decos parameter types
TerryvanWalen Jan 31, 2025
e774963
Merge branch 'main' into MIJN-9575-varen-service
TerryvanWalen Jan 31, 2025
8ec1f66
Delete GridDetails component
TerryvanWalen Jan 31, 2025
9b1a20b
Revert accidental change in incorrect file
TerryvanWalen Jan 31, 2025
6d42012
Revert "Simplify decos parameter types"
TerryvanWalen Jan 31, 2025
2138742
Replace ThemaPagina buttonItems with pageContentSecondary
TerryvanWalen Feb 3, 2025
9abac67
Set thema configs as const and remove export from non-exported types/…
TerryvanWalen Feb 3, 2025
be1e62c
Filter gegevensAanvrager on content
TerryvanWalen Feb 3, 2025
72568d9
Improve naming in Varen
TerryvanWalen Feb 3, 2025
216c922
Rename vergunning in transformDecosZaakFrontend to zaak
TerryvanWalen Feb 3, 2025
d6aff49
Refactor VergunningenV2 documents endpoint to decos endpoint
TerryvanWalen Feb 3, 2025
c196dae
Merge branch 'main' into MIJN-9575-varen-service
TerryvanWalen Feb 3, 2025
cd8411e
Merge branch 'main' into MIJN-9575-varen-service
timvanoostrom Feb 3, 2025
6ad7631
Remove unnecessary todos
TerryvanWalen Feb 3, 2025
e445fbe
Revert Afis fix from commit 0d733669bedf95f5e2cb5f35f33dc7a475c71488
TerryvanWalen Feb 3, 2025
849d5f2
Remove unnecessary field and unnecessary empty check in varen
TerryvanWalen Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/client/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ import Search from './pages/Search/Search';
import { ToeristscheVerhuurThema } from './pages/ToeristischeVerhuur/ToeristischeVerhuur';
import { ToeristischeVerhuurDetail } from './pages/ToeristischeVerhuur/ToeristischeVerhuurDetail';
import { ToeristischeVerhuurVergunningen } from './pages/ToeristischeVerhuur/ToeristischeVerhuurVergunningenList';
import Varen from './pages/Varen/Varen';
import { Varen } from './pages/Varen/Varen';
import VergunningDetail from './pages/VergunningDetail/VergunningDetail';
import Vergunningen from './pages/Vergunningen/Vergunningen';
import VergunningV2Detail from './pages/VergunningenV2/VergunningDetail';
Expand Down
4 changes: 0 additions & 4 deletions src/client/components/Datalist/Datalist.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
margin: 0;
font-size: var(--ams-paragraph-medium-font-size);

&__row-wrapper {
grid-auto-flow: column;
}

// TODO: Find a way to use the h4 style without re-declaring
&__title {
font-family: var(--ams-heading-font-family);
Expand Down
21 changes: 18 additions & 3 deletions src/client/components/Datalist/Datalist.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { ReactNode } from 'react';

import {
Grid,
GridColumnNumber,
GridColumnNumbers,
} from '@amsterdam/design-system-react';
import classNames from 'classnames';

import styles from './Datalist.module.scss';
Expand Down Expand Up @@ -37,14 +42,22 @@ interface WrappedRow {
content: ReactNode;
className?: string;
isVisible?: boolean;
span?: GridColumnNumber | GridColumnNumbers;
start?: GridColumnNumber | GridColumnNumbers;
}

function DatalistRowWrapped({ label, content, className }: WrappedRow) {
function DatalistRowWrapped({
label,
content,
className,
span,
start,
}: WrappedRow) {
return (
<div className={className}>
<Grid.Cell span={span} start={start} className={className}>
<dt className={styles.Datalist__title}>{label}</dt>
<dd className={styles.Datalist__description}>{content}</dd>
</div>
</Grid.Cell>
);
}

Expand Down Expand Up @@ -74,6 +87,8 @@ function DatalistRowsWithWrapper({ rows, className }: RowSet) {
content={row.content}
className={row.className}
isVisible={row.isVisible}
span={row.span}
start={row.start}
/>
))}
</div>
Expand Down
1 change: 0 additions & 1 deletion src/client/config/thema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,6 @@ export const myThemasMenuItems: ThemaMenuItem[] = [
to: AppRoutes.VAREN,
profileTypes: ['commercial'],
},

{
title: ThemaTitles.BEZWAREN,
id: Themas.BEZWAREN,
Expand Down
2 changes: 0 additions & 2 deletions src/client/pages/Afis/Afis.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ export function AfisThemaPagina() {
isThemaPaginaLoading,
listPageTitle,
routes,
linkListItems,
} = useAfisThemaData();

const isPartialError = entries(dependencyErrors).some(
Expand Down Expand Up @@ -164,7 +163,6 @@ export function AfisThemaPagina() {
isPartialError={isPartialError}
errorAlertContent={pageContentErrorAlert}
isLoading={!isThemaPaginaError && isThemaPaginaLoading}
linkListItems={linkListItems}
pageContentTop={pageContentTop}
pageContentMain={
<>
Expand Down
19 changes: 17 additions & 2 deletions src/client/pages/ThemaPagina/ThemaPagina.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ReactElement, ReactNode } from 'react';

import { Grid, LinkList, Screen } from '@amsterdam/design-system-react';
import { Grid, Icon, LinkList, Screen } from '@amsterdam/design-system-react';

import { AppRoutes } from '../../../universal/config/routes';
import { LinkProps } from '../../../universal/types';
Expand All @@ -12,6 +12,8 @@ import {
ThemaIcon,
} from '../../components';
import { BarConfig } from '../../components/LoadingContent/LoadingContent';
import { ExternalLinkIcon } from '@amsterdam/design-system-react-icons';
import { MaButtonLink } from '../../components/MaLink/MaLink';

const LOADING_BAR_CONFIG_DEFAULT: BarConfig = [
['20rem', '4rem', '4rem'],
Expand All @@ -30,7 +32,8 @@ interface ThemaPaginaProps {
icon?: ReactElement;
pageContentTop: ReactNode;
pageContentMain: ReactNode;
linkListItems: LinkProps[];
linkListItems?: LinkProps[];
buttonItems?: LinkProps[];
pageContentBottom?: ReactNode;
errorAlertContent?: ReactNode;
loadingBarConfig?: BarConfig;
Expand All @@ -48,6 +51,7 @@ export default function ThemaPagina({
icon = <ThemaIcon />,
pageContentTop,
linkListItems = [],
buttonItems = [],
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved
pageContentMain,
pageContentBottom,
errorAlertContent,
Expand Down Expand Up @@ -77,6 +81,17 @@ export default function ThemaPagina({
</Grid.Cell>
)}

{!!buttonItems.length && (
<Grid.Cell span="all">
{buttonItems.map(({ to, title }) => (
<MaButtonLink key={to} href={to}>
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved
{title}
<Icon svg={ExternalLinkIcon} size="level-5" />
</MaButtonLink>
))}
</Grid.Cell>
)}

{showError && (
<Grid.Cell span="all">
<ErrorAlert>
Expand Down
62 changes: 62 additions & 0 deletions src/client/pages/Varen/Varen-thema-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { generatePath } from 'react-router-dom';

import { VarenFrontend } from '../../../server/services/varen/config-and-types';
import { AppRoutes } from '../../../universal/config/routes';
import { dateSort } from '../../../universal/helpers/date';
import { LinkProps } from '../../../universal/types';
import {
DisplayProps,
WithDetailLinkComponent,
} from '../../components/Table/TableV2';

export const displayPropsAanvragen: DisplayProps<
WithDetailLinkComponent<VarenFrontend>
> = {
detailLinkComponent: '',
title: 'Omschrijving',
dateRequestFormatted: 'Aangevraagd',
status: 'Status',
};

export const listPageParamKind = {
inProgress: 'lopende-aanvragen',
completed: 'afgehandelde-aanvragen',
};

const tableConfigBase = {
sort: dateSort('dateRequest', 'desc'),
displayProps: displayPropsAanvragen,
};

export const tableConfig = {
[listPageParamKind.inProgress]: {
title: 'Lopende aanvragen',
filter: (vergunning: VarenFrontend) => !vergunning.dateEnd,
listPageRoute: generatePath(AppRoutes['VAREN/LIST'], {
kind: listPageParamKind.inProgress,
}),
...tableConfigBase,
},
[listPageParamKind.completed]: {
title: 'Afgehandelde aanvragen',
filter: (vergunning: VarenFrontend) => vergunning.dateEnd,
listPageRoute: generatePath(AppRoutes['VAREN/LIST'], {
kind: listPageParamKind.completed,
}),
...tableConfigBase,
},
};
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved

export const linkListItems: LinkProps[] = [
{
to: 'https://www.amsterdam.nl/verkeer-vervoer/varen-amsterdam/varen-beroepsvaart/#:~:text=De%20passagiersvaart%20in%20Amsterdam%20is,stad%20willen%20we%20graag%20behouden.',
title: 'Meer informatie over passagiers- en beroepsvaart',
},
];

export const buttonItems: LinkProps[] = [
{
to: 'https://formulieren.acc.amsterdam.nl/TriplEforms/DirectRegelen/formulier/nl-NL/evAmsterdam/VARExploitatievergunningAanvragen.aspx',
title: 'Exploitatievergunning aanvragen',
},
];
63 changes: 58 additions & 5 deletions src/client/pages/Varen/Varen.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,60 @@
import { useAppStateGetter } from '../../hooks/useAppState';
import { Grid, Paragraph } from '@amsterdam/design-system-react';

export default function Varen() {
const { VAREN } = useAppStateGetter();
console.log(VAREN);
return 'FAKE';
import { useVarenThemaData } from './useVarenThemaData.hook';
import { buttonItems, linkListItems } from './Varen-thema-config';
import { VarenVergunningFrontend } from '../../../server/services/varen/config-and-types';
import { Datalist } from '../../components/Datalist/Datalist';
import { ThemaTitles } from '../../config/thema';
import ThemaPagina from '../ThemaPagina/ThemaPagina';
import ThemaPaginaTable from '../ThemaPagina/ThemaPaginaTable';

const pageContentTop = (
<Paragraph>
De passagiersvaart in Amsterdam is erg populair bij bezoekers.
Rondvaartboten en salonboten zijn een vorm van passagiersvaart. Ook gehuurde
boten, met of zonder schipper, vallen onder de passagiersvaart.
</Paragraph>
);

export function Varen() {
const { gegevensAanvrager, tableItems, tableConfig, isLoading, isError } =
useVarenThemaData();

const gegevens = gegevensAanvrager ? (
<Grid.Cell span="all">
<Datalist rows={[gegevensAanvrager]} />
</Grid.Cell>
) : null;

const tables = Object.entries(tableConfig).map(
([kind, { title, displayProps, filter, sort }]) => {
return (
<ThemaPaginaTable<VarenVergunningFrontend>
key={kind}
title={title}
zaken={tableItems.filter(filter).sort(sort)}
displayProps={displayProps}
textNoContent={`U heeft geen ${title.toLowerCase()}`}
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved
/>
);
}
);

return (
<ThemaPagina
title={ThemaTitles.VAREN}
isLoading={isLoading}
isError={isError}
pageContentTop={pageContentTop}
pageContentMain={
<>
{gegevens}
{tables}
</>
}
isPartialError={false}
linkListItems={linkListItems}
buttonItems={buttonItems}
/>
);
}
57 changes: 57 additions & 0 deletions src/client/pages/Varen/useVarenThemaData.hook.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { tableConfig } from './Varen-thema-config';
import {
caseTypeVaren,
VarenVergunningFrontend,
} from '../../../server/services/varen/config-and-types';
import { isError, isLoading } from '../../../universal/helpers/api';
import { entries } from '../../../universal/helpers/utils';
import { RowSet } from '../../components/Datalist/Datalist';
import { addLinkElementToProperty } from '../../components/Table/TableV2';
import { useAppStateGetter } from '../../hooks/useAppState';
import { linkListItems } from '../Afis/Afis-thema-config';

export function useVarenThemaData() {
const { VAREN } = useAppStateGetter();

const varenRederRegistratie = VAREN.content?.find(
(item) => item.caseType === caseTypeVaren.VarenRederRegistratie
);

const labelMap = {
company: 'Bedrijfsnaam',
email: 'E-mailadres',
phone: 'Telefoonnummer',
bsnkvk: 'KVK nummer',
address: 'Adres',
};

const gegevensAanvrager: RowSet | null = varenRederRegistratie
? {
rows: entries(labelMap).map(([key, label]) => ({
label,
content: varenRederRegistratie[key],
span: 4,
})),
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved
}
: null;

const vergunningen = VAREN.content?.filter(
(item) => item.caseType !== caseTypeVaren.VarenRederRegistratie
);

const tableItems = addLinkElementToProperty<VarenVergunningFrontend>(
TerryvanWalen marked this conversation as resolved.
Show resolved Hide resolved
vergunningen ?? [],
'vesselName',
true
);

return {
gegevensAanvrager,
varenRederRegistratie,
tableConfig,
isLoading: isLoading(VAREN),
isError: isError(VAREN),
tableItems,
linkListItems,
};
}
Loading