Skip to content

Commit

Permalink
feat: korjaa ja ota kansalaisen suunnitelmahaku käyttöön (#395)
Browse files Browse the repository at this point in the history
  • Loading branch information
haapamakim authored Sep 19, 2022
1 parent f42d485 commit d941348
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 27 deletions.
2 changes: 1 addition & 1 deletion backend/src/projektiSearch/openSearchClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export abstract class OpenSearchClient {

async query(query: SearchOpts): Promise<any> {
const body = JSON.stringify(query);
log.info("query " + this.index);
log.info("query " + this.index, { query });
const request = new HttpRequest({
body,
headers: {
Expand Down
21 changes: 10 additions & 11 deletions src/components/kansalaisenEtusivu/Hakulomake.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import React, { useState, useCallback, useEffect, useMemo } from "react";
import React, { useCallback, useEffect, useMemo, useState } from "react";
import SearchSection from "@components/layout/SearchSection";
import { HakulomakeOtsikko, HakuehtoNappi, VinkkiTeksti, VinkkiLinkki, MobiiliBlokki, HakutulosInfo } from "./TyylitellytKomponentit";
import { UseFormProps, useForm, FormProvider } from "react-hook-form";
import { HakuehtoNappi, HakulomakeOtsikko, HakutulosInfo, MobiiliBlokki, VinkkiLinkki, VinkkiTeksti } from "./TyylitellytKomponentit";
import { FormProvider, useForm, UseFormProps } from "react-hook-form";
import TextInput from "@components/form/TextInput";
import Select, { SelectOption } from "@components/form/Select";
import Button from "@components/button/Button";
import { ProjektiTyyppi } from "../../../common/graphql/apiModel";
import { HookReturnType } from "@pages/index";
import HassuGrid from "@components/HassuGrid";
import HassuGridItem from "@components/HassuGridItem";
Expand Down Expand Up @@ -159,15 +158,14 @@ function Hakulomake({ hakutulostenMaara, kuntaOptions, maakuntaOptions, query }:
<HassuGrid cols={{ xs: 1, md: 1, lg: 3, xl: 3 }}>
{" "}
<HassuGridItem colSpan={{ xs: 1, lg: 2 }}>
<TextInput disabled label={t("vapaasanahaku")} {...register("vapaasanahaku")} error={errors?.vapaasanahaku} />
<TextInput label={t("vapaasanahaku")} {...register("vapaasanahaku")} error={errors?.vapaasanahaku} />
{desktop && (
<VinkkiTeksti>
<Trans i18nKey="etusivu:hakuvinkki" components={{ a: <VinkkiLinkki className="skaalaa" href="TODO" /> }} />
</VinkkiTeksti>
)}
</HassuGridItem>
<Select
disabled
className="w-100"
id="kunta"
label={t("kunta")}
Expand Down Expand Up @@ -200,7 +198,6 @@ function Hakulomake({ hakutulostenMaara, kuntaOptions, maakuntaOptions, query }:
<HassuGridItem colSpan={{ xs: 1, lg: 1 }}>
<Select
id="maakunta"
disabled
label={t("maakunta")}
options={maakuntaOptions ? maakuntaOptions : [{ label: "", value: "" }]}
error={errors?.maakunta}
Expand All @@ -209,11 +206,13 @@ function Hakulomake({ hakutulostenMaara, kuntaOptions, maakuntaOptions, query }:
</HassuGridItem>
<HassuGridItem colSpan={{ xs: 1, lg: 1 }}>
<Select
disabled
addEmptyOption
id="vaylamuoto"
label={t("vaylamuoto")}
options={Object.keys(ProjektiTyyppi).map((tyyppi) => ({ label: t(`vaylamuodot.${tyyppi}`), value: tyyppi }))}
options={["tie", "rata"].map((muoto) => ({
label: t(`projekti:projekti-vayla-muoto.${muoto}`),
value: muoto,
}))}
error={errors?.vaylamuoto}
{...register("vaylamuoto", { shouldUnregister: false })}
/>
Expand Down Expand Up @@ -242,14 +241,14 @@ function Hakulomake({ hakutulostenMaara, kuntaOptions, maakuntaOptions, query }:
</FormProvider>
</SearchSection>
)}
{hakutulostenMaara && (
{hakutulostenMaara != undefined && (
<HakutulosInfo className={desktop ? "" : "mobiili"}>
<h2>
<Trans i18nKey="etusivu:loytyi-n-suunnitelmaa" values={{ lkm: hakutulostenMaara }} />
</h2>
<button onClick={nollaaHakuehdot}>{t("nollaa-hakuehdot")}</button>
</HakutulosInfo>
)}
</div>
</div>
);
}
4 changes: 2 additions & 2 deletions src/pages/api/maakuntalista.json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ export default async function handler(_req: NextApiRequest, res: NextApiResponse
async () => {
log.info("Updating maakuntalista, it has been expired");
const list = await fetchMaakuntaLista();
s3Cache.put("kuntalista", list);
s3Cache.put("maakuntalista", list);
},
async () => {
log.info("Updating maakuntalista, it is missing");
const list = await fetchMaakuntaLista();
s3Cache.put("kuntalista", list);
s3Cache.put("maakuntalista", list);
return list;
}
);
Expand Down
33 changes: 20 additions & 13 deletions src/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect, useMemo, useCallback } from "react";
import React, { useCallback, useEffect, useMemo, useState } from "react";
import { api, Kieli, ProjektiHakutulosJulkinen } from "@services/api";
import useTranslation from "next-translate/useTranslation";
import Hakulomake from "@components/kansalaisenEtusivu/Hakulomake";
Expand All @@ -9,7 +9,6 @@ import OikeaLaita from "@components/kansalaisenEtusivu/OikeaLaita";
import Sivutus from "@components/kansalaisenEtusivu/Sivutus";
import { useRouter } from "next/router";
import { SelectOption } from "@components/form/Select";
import { ProjektiTyyppi } from "../../common/graphql/apiModel";
import { MaakuntaListaOption } from "./api/maakuntalista.json";
import { KuntaListaOption } from "./api/kuntalista.json";

Expand Down Expand Up @@ -59,7 +58,7 @@ const App = () => {
getMaakuntaLista(lang);
}, [getKuntaLista, getMaakuntaLista, lang]);

const query = useHaunQueryparametrit({ kuntaOptions });
const query = useHaunQueryparametrit({ kuntaOptions, maakuntaOptions });

if (!query) {
return null;
Expand Down Expand Up @@ -91,10 +90,10 @@ function Etusivu({ query, maakuntaOptions, kuntaOptions }: Props) {
const result = await api.listProjektitJulkinen({
kieli: Kieli.SUOMI,
sivunumero: Math.max(0, sivu - 1),
//hakusana: vapaasanahaku,
//kunta,
//maakunta,
//vaylamuoto: [vaylamuoto],
nimi: vapaasanahaku,
kunta: keywordToKey(kunta, kuntaOptions),
maakunta: keywordToKey(maakunta, maakuntaOptions),
vaylamuoto: vaylamuoto ? [vaylamuoto] : undefined,
});
log.info("listProjektit:", result);
setHakutulos(result);
Expand All @@ -114,7 +113,7 @@ function Etusivu({ query, maakuntaOptions, kuntaOptions }: Props) {
}

fetchProjektit();
}, [setLadataan, setHakutulos, sivu, vapaasanahaku, kunta, maakunta, vaylamuoto]);
}, [setLadataan, setHakutulos, sivu, vapaasanahaku, kunta, maakunta, vaylamuoto, maakuntaOptions, kuntaOptions]);

return (
<Grid container rowSpacing={4} columnSpacing={4}>
Expand All @@ -140,7 +139,7 @@ function Etusivu({ query, maakuntaOptions, kuntaOptions }: Props) {

export default App;

type HookProps = { kuntaOptions: SelectOption[] };
type HookProps = { kuntaOptions: SelectOption[]; maakuntaOptions: SelectOption[] };
export type HookReturnType = {
vapaasanahaku: string;
kunta: string;
Expand All @@ -150,11 +149,12 @@ export type HookReturnType = {
pienennaHaku: boolean;
lisaaHakuehtoja: boolean;
};
export function useHaunQueryparametrit({ kuntaOptions }: HookProps): HookReturnType | null {

export function useHaunQueryparametrit({ kuntaOptions, maakuntaOptions }: HookProps): HookReturnType | null {
const router = useRouter();

return useMemo(() => {
if (!router.isReady) {
if (!router.isReady || kuntaOptions.length == 0 || maakuntaOptions.length == 0) {
return null;
}
const vapaasanahaku = typeof router.query?.vapaasanahaku === "string" ? router.query.vapaasanahaku : "";
Expand All @@ -163,11 +163,11 @@ export function useHaunQueryparametrit({ kuntaOptions }: HookProps): HookReturnT
? router.query.kunta
: "";
const maakunta =
([] as SelectOption[]).find((option) => router.query?.maakunta === option.value) && typeof router.query?.maakunta === "string"
maakuntaOptions.find((option) => router.query?.maakunta === option.value) && typeof router.query?.maakunta === "string"
? router.query.maakunta
: "";
const vaylamuoto =
Object.keys(ProjektiTyyppi).find((option) => router.query?.vaylamuoto === option) && typeof router.query?.vaylamuoto === "string"
["tie", "rata"].find((option) => router.query?.vaylamuoto === option) && typeof router.query?.vaylamuoto === "string"
? router.query.vaylamuoto
: "";
const sivu = typeof router.query.sivu === "string" ? parseInt(router.query.sivu) : 1;
Expand All @@ -184,6 +184,7 @@ export function useHaunQueryparametrit({ kuntaOptions }: HookProps): HookReturnT
};
}, [
kuntaOptions,
maakuntaOptions,
router.isReady,
router.query?.kunta,
router.query?.lisaahakuehtoja,
Expand All @@ -194,3 +195,9 @@ export function useHaunQueryparametrit({ kuntaOptions }: HookProps): HookReturnT
router.query?.vaylamuoto,
]);
}

function keywordToKey(keyword: string, options: SelectOption[]) : string[] | undefined{
if (! keyword) return undefined;
const label = options.find((option) => keyword === option.value)?.label;
return label ? [label] : undefined;
}

0 comments on commit d941348

Please sign in to comment.