add mirrors/mirroredBy key-value support for multi-transport-mode stops#1401
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
f352189 to
2075d27
Compare
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide reviewed 4 files and all commit messages, and made 8 comments.
Reviewable status: 4 of 25 files reviewed, 8 unresolved discussions (waiting on PasiVuohijoki).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 57 at r2 (raw file):
}; export const MakeHybridStopModal: FC<MakeHybridStopModalProps> = ({
Aivan liian pitkä funktio. Setuppi koodia saa varmana pätkittyy funktioihin ja komponenttin return osiota myös kaiketikin pilkotuu pienempiin alikomponentteihin.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 85 at r2 (raw file):
const [selectedMode, setSelectedMode] = useState< StopRegistryTransportModeType | undefined
Käytätään mielummin nullia undefinedin sijaa. Null on paljon selkeempi ei-valittu arvo entä ku undefined joka on aina semmonen 🤷 evvk arvo
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 88 at r2 (raw file):
>(undefined); const vehicleMode = selectedMode ? parseVehicleMode(selectedMode) : undefined;
Kans null
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 90 at r2 (raw file):
const vehicleMode = selectedMode ? parseVehicleMode(selectedMode) : undefined; const [query, setQuery] = useState('');
State muuttujat olis kiva pitää komponetti bodyn yläosassa. Tyyliseikka, mutta itse koen että se helpottaa lukemista ku eka on määritelty ne muuttujat, ja kaikki niitten jälkeen tuleva on datan refinaiusta/mäppäystä/suodatusta ja funktio määrittelyjä, jotka sit mutatoi sitä tilaa.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 195 at r2 (raw file):
{t(($) => $.stopDetails.hybrid.stopArea)} </label> <Combobox
Mikäs täs on sen verran erikoista että geneerinen JoreCombobox ei riitä?
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 31 at r2 (raw file):
let keyValues = setMirrorParent([], quay?.id ?? ''); const keysToInherit = [
Const määrittely funktion ulkopuolelle
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 38 at r2 (raw file):
] as const; for (const key of keysToInherit) {
Tän vois ehkä korvata yksinkertasemamlla filtteröinnillä vaan
const keyValues = parent.keyValues.filter(it => ikeysToInherit.includes(it.key)ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useGetAllMirroredQuays.ts line 15 at r2 (raw file):
}; export function useGetAllMirroredQuays(
Tätä kokonaisuutta voi yksinkertaistaa huomattavasti. Meidän perus useGetStopDetails hookki/kysely noutaa jo nykysellään kaikki peilatut pysäkit, koska se noutaa kaikki StopPlace<>Quay combot, joissa on sen tietun PublicCoden mukanen Quay.
Eli sitä ku lähtee muokkaan, niin että se palauttaa sieltä myös ne ali pysäkit mukana, niin sit voi poistaa tän ja useGetMirroredQuay hookin ja välttää tän ylymääräsen/tupla data noudon.
4f0220d to
afffc7a
Compare
PasiVuohijoki
left a comment
There was a problem hiding this comment.
@PasiVuohijoki made 8 comments.
Reviewable status: 3 of 26 files reviewed, 8 unresolved discussions (waiting on Huulivoide).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 57 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Aivan liian pitkä funktio. Setuppi koodia saa varmana pätkittyy funktioihin ja komponenttin return osiota myös kaiketikin pilkotuu pienempiin alikomponentteihin.
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 85 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Käytätään mielummin nullia undefinedin sijaa. Null on paljon selkeempi ei-valittu arvo entä ku undefined joka on aina semmonen 🤷 evvk arvo
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 88 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Kans null
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 90 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
State muuttujat olis kiva pitää komponetti bodyn yläosassa. Tyyliseikka, mutta itse koen että se helpottaa lukemista ku eka on määritelty ne muuttujat, ja kaikki niitten jälkeen tuleva on datan refinaiusta/mäppäystä/suodatusta ja funktio määrittelyjä, jotka sit mutatoi sitä tilaa.
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 195 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Mikäs täs on sen verran erikoista että geneerinen JoreCombobox ei riitä?
Hyvä kysymys. Tähän on otettu itseasiassa mallia tuosta FindStopArea.tsx -filusta. Sanoisin, että JoreCombobox ei taivu tuohon designiin ja olet 4kk itsekin päätynyt tekemään tuon komponentin pitkästä tavarasta. Tuo FindStopArea on kuitenkin aikalailla sidoksissa tuohon pysäkkialueen luonnin/muokkauksen react-hook-formiin, niin olen varmaan siksi tehnyt kokonaan oman komponentin. Nyt kun tuota silmäilin, niin tuon mun luoman StopAreaSearchComboboxin vois saada käyttöön tuolla FindStopAreassa aika pienellä vaivalla, niin olisi yhdenmukainen. Mutta tämä(kin) user story on jo niin pahasti myöhässä, että tuon voisi lisätä kesätekemiseksi.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 31 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Const määrittely funktion ulkopuolelle
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 38 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tän vois ehkä korvata yksinkertasemamlla filtteröinnillä vaan
const keyValues = parent.keyValues.filter(it => ikeysToInherit.includes(it.key)
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useGetAllMirroredQuays.ts line 15 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tätä kokonaisuutta voi yksinkertaistaa huomattavasti. Meidän perus
useGetStopDetailshookki/kysely noutaa jo nykysellään kaikki peilatut pysäkit, koska se noutaa kaikki StopPlace<>Quay combot, joissa on sen tietun PublicCoden mukanen Quay.Eli sitä ku lähtee muokkaan, niin että se palauttaa sieltä myös ne ali pysäkit mukana, niin sit voi poistaa tän ja
useGetMirroredQuayhookin ja välttää tän ylymääräsen/tupla data noudon.
Done.
9777d46 to
bd0e50f
Compare
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide partially reviewed 19 files, made 13 comments, and resolved 6 discussions.
Reviewable status: 15 of 26 files reviewed, 14 unresolved discussions (waiting on PasiVuohijoki).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 31 at r2 (raw file):
Previously, PasiVuohijoki (Pasi Vuohijoki) wrote…
Done.
Ja kuten aiemmin jo tuolla sanoin, niin vakioiden EI_OLE_PAKKO_OLLA_C_TYYLIIN_ISOLLA_ALAVIIVALLA
ui/src/components/stop-registry/stops/stop-details/useGetStopDetails.ts line 480 at r4 (raw file):
return compact( mirroredByIds.map((childId) => {
Tätä vois kääntää ehkä mielummin muotoon, niin on ehkä enemmän linjassa tyyllillisesti aiempien koodien kanssa, ja vähän ehkä suora viivasempi,
compact(
stopPlaceResults.flatMap(stopPlace =>
compact(stopPlace.quays)
.filter(quay => mirrorredByIds.includes(quay.id)
.map(quay => enrich(stopPlace, quay)
)
)ui/src/components/stop-registry/stops/stop-details/basic-details/BasicDetailsSection.tsx line 65 at r4 (raw file):
const defaultValues = mapStopBasicDetailsDataToFormState(stop); const isHybrid = isMirrorParent(stop.quay ?? { keyValues: [] });
Tätä vois yksinkertaistaa ja laskee ton isHybrid tilan jo tuolla StopDetailsPage tasolla isHybrid=mirroredQuays.length > 0
ui/src/components/stop-registry/stops/stop-details/basic-details/basic-details-form/StopOtherDetailsFormRow.tsx line 51 at r4 (raw file):
} disabled={ isRailReplacement || isTrunkLine || isTransportModeLocked
Miljoona vuotta tästä jo huudellut että tää pitäs siirtää koko paska tonne PysäkkialueenTietojen puoellle, ku niitä tietoja tää kopeloi ja voi vaikuttaa moneen eri pysäkkiin.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 33 at r4 (raw file):
}; const SUPPORTED_TRANSPORT_MODES = [
Tässä taitaa pikkusen olla hajontaa siellä täällä, mutta ylätason vakiot voi ihan hyvin nimetä tavalliseeTapaanNiinkuMuutkinConstMuuttujat
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 34 at r4 (raw file):
function buildQuayInput(parentStop: StopWithDetails): StopRegistryQuayInput { const { quay } = parentStop;
Tässä vois olla joku if (quay === null) throw niin ei tarvi tuolla alempana joka ikisessä välissä testata että onko quay null ? operaattorilla.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 53 at r4 (raw file):
: undefined, publicCode: quay?.publicCode, description: quay?.description
Eiks quay.description itsessään riitä? Miks pitää rakentaa sama muoto uudelleen eri objektiks? 🤔
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 63 at r4 (raw file):
})), keyValues: keyValues as StopRegistryKeyValuesInput[], versionComment: 'Yhteiskäyttöpysäkin luonti',
Näistä pursuaa jo muualla testaus korjaus tikettejä ku on kovakoodattuja version kommentteja jotka ei kunnioita kieliasetuksia. Näihin ei pitäs automaagisesti mitään laittaa sisään.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 68 at r4 (raw file):
function findNewChildQuayId( quays: ReadonlyArray<{
Tämmöset funktio määrittelyn argumienttien monimutkaset tyyppi määrittelyt vois olla ihan aiheellista nostaa omaks type FooBar määrittelykseen
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 163 at r4 (raw file):
// Update parent's mirroredBy list last const updatedParentKeyValues = addMirroredBy(
Mää mietin että onko meillä ihan okeesti tarvetta pitää yllä kaks suuntasta linkitystä? Tää vaan monimutkastaa koodia mun mielestä + sitten meillä on kaikkialla muuaalla ollut hän asti oletus että meillä on Key-Value pareja ei Key-Values pareja. Kaikkialla muualla on siis oletettu että avaimissa on vaan yks arvo, ja niitä käsitellään silleen. Voi olla että joku tallennus / kopiointi saattaa hajottaa tämmösen hybridi pysäkin.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 173 at r4 (raw file):
quayId: parentQuayId, keyValues: stripKeyValueTypenames(updatedParentKeyValues), versionComment: 'Yhteiskäyttöpysäkin luonti',
Ei kovakoodattuja versi kommentteja.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useRemoveMirrorRelation.ts line 74 at r4 (raw file):
quayId: parentQuayId, keyValues: stripKeyValueTypenames(updatedParentKeyValues), versionComment: 'Yhteiskäyttöpysäkin poisto',
Ei kovakoodattuja versio kommentteja
ui/src/utils/stop-registry/index.ts line 3 at r4 (raw file):
export * from './alternativeNames'; export * from './buildSearchStopByLabelOrNameFilter'; export * from './mirrorRelation';
Tän ui/src/utils kansion sisältö ku tullaan siirtää ainakin osittain tonne components/ kansion alle koodibasen uudelleen järjestelyssä, niin nää vois nakata sitten stop-registry:n alle saman tien
bd0e50f to
dc2c0d9
Compare
PasiVuohijoki
left a comment
There was a problem hiding this comment.
@PasiVuohijoki made 12 comments.
Reviewable status: 9 of 29 files reviewed, 14 unresolved discussions (waiting on Huulivoide).
ui/src/components/stop-registry/stops/stop-details/useGetStopDetails.ts line 480 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tätä vois kääntää ehkä mielummin muotoon, niin on ehkä enemmän linjassa tyyllillisesti aiempien koodien kanssa, ja vähän ehkä suora viivasempi,
compact( stopPlaceResults.flatMap(stopPlace => compact(stopPlace.quays) .filter(quay => mirrorredByIds.includes(quay.id) .map(quay => enrich(stopPlace, quay) ) )
Done.
ui/src/components/stop-registry/stops/stop-details/basic-details/BasicDetailsSection.tsx line 65 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tätä vois yksinkertaistaa ja laskee ton isHybrid tilan jo tuolla StopDetailsPage tasolla
isHybrid=mirroredQuays.length > 0
Done.
ui/src/components/stop-registry/stops/stop-details/basic-details/basic-details-form/StopOtherDetailsFormRow.tsx line 51 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Miljoona vuotta tästä jo huudellut että tää pitäs siirtää koko paska tonne PysäkkialueenTietojen puoellle, ku niitä tietoja tää kopeloi ja voi vaikuttaa moneen eri pysäkkiin.
Tästä tehhään tiketti
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MakeHybridStopModal.tsx line 33 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tässä taitaa pikkusen olla hajontaa siellä täällä, mutta ylätason vakiot voi ihan hyvin nimetä tavalliseeTapaanNiinkuMuutkinConstMuuttujat
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 31 at r2 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Ja kuten aiemmin jo tuolla sanoin, niin vakioiden EI_OLE_PAKKO_OLLA_C_TYYLIIN_ISOLLA_ALAVIIVALLA
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 34 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tässä vois olla joku
if (quay === null) throwniin ei tarvi tuolla alempana joka ikisessä välissä testata että onko quay null ? operaattorilla.
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 53 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Eiks
quay.descriptionitsessään riitä? Miks pitää rakentaa sama muoto uudelleen eri objektiks? 🤔
sieltä pittää karsia tuo __typename veke.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 63 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Näistä pursuaa jo muualla testaus korjaus tikettejä ku on kovakoodattuja version kommentteja jotka ei kunnioita kieliasetuksia. Näihin ei pitäs automaagisesti mitään laittaa sisään.
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 68 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Tämmöset funktio määrittelyn argumienttien monimutkaset tyyppi määrittelyt vois olla ihan aiheellista nostaa omaks
type FooBarmäärittelykseen
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 163 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Mää mietin että onko meillä ihan okeesti tarvetta pitää yllä kaks suuntasta linkitystä? Tää vaan monimutkastaa koodia mun mielestä + sitten meillä on kaikkialla muuaalla ollut hän asti oletus että meillä on
Key-Valuepareja eiKey-Valuespareja. Kaikkialla muualla on siis oletettu että avaimissa on vaan yks arvo, ja niitä käsitellään silleen. Voi olla että joku tallennus / kopiointi saattaa hajottaa tämmösen hybridi pysäkin.
Kokeillaan riisua tuo mirroredBy veke. Katotaan tuleeko jotain ongelmia tulevaisuudessa. 👍
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 173 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Ei kovakoodattuja versi kommentteja.
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useRemoveMirrorRelation.ts line 74 at r4 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Ei kovakoodattuja versio kommentteja
Done.
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide reviewed 20 files and all commit messages, made 2 comments, and resolved 13 discussions.
Reviewable status: all files reviewed, 3 unresolved discussions (waiting on PasiVuohijoki).
cypress/e2e/stop-registry/hybridStop.cy.ts line 97 at r6 (raw file):
// Step 3: Open "Make hybrid" modal via extra actions menu cy.getByTestId('StopTitleRow::extraActions::menu').click();
Nää vielä PageObjektiin
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 87 at r6 (raw file):
export function useCreateMirrorQuay() { const [loading, setLoading] = useState(false);
Oman harkinnan mukaan vois vielä harkita useLoader:in käyttöä, jos tää tallennus on hidas (Tiamat tuppaa oleen )
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide resolved 1 discussion.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on PasiVuohijoki).
dc2c0d9 to
bcbc1bf
Compare
PasiVuohijoki
left a comment
There was a problem hiding this comment.
@PasiVuohijoki made 2 comments.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on Huulivoide).
cypress/e2e/stop-registry/hybridStop.cy.ts line 97 at r6 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Nää vielä PageObjektiin
Done.
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/useCreateMirrorQuay.ts line 87 at r6 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Oman harkinnan mukaan vois vielä harkita
useLoader:in käyttöä, jos tää tallennus on hidas (Tiamat tuppaa oleen )
Done.
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide reviewed 7 files and all commit messages, made 1 comment, and resolved 2 discussions.
Reviewable status: 34 of 35 files reviewed, 1 unresolved discussion (waiting on PasiVuohijoki).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MirroredQuayDetailsCard.tsx line 97 at r7 (raw file):
inverted onClick={() => setShowRemoveDialog(true)} testId={`MirroredQuayDetails::${details.quay.id}::remove`}
Täältä quay id pois välistä, niin saa sit tuoll page objektissa tän nappulan suoraaan haettua:
getContainer(indeksi).within(() => getRemoveNappula().click())
|
2b75414 to
01d17f0
Compare
01d17f0 to
77ab7c7
Compare
PasiVuohijoki
left a comment
There was a problem hiding this comment.
@PasiVuohijoki made 1 comment.
Reviewable status: 32 of 36 files reviewed, 1 unresolved discussion (waiting on Huulivoide).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MirroredQuayDetailsCard.tsx line 97 at r7 (raw file):
Previously, Huulivoide (Jesse Jaara) wrote…
Täältä quay id pois välistä, niin saa sit tuoll page objektissa tän nappulan suoraaan haettua:
getContainer(indeksi).within(() => getRemoveNappula().click())
Done.
Huulivoide
left a comment
There was a problem hiding this comment.
@Huulivoide reviewed 7 files and all commit messages, and resolved 1 discussion.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on PasiVuohijoki).
77ab7c7 to
4f5147b
Compare
PasiVuohijoki
left a comment
There was a problem hiding this comment.
@PasiVuohijoki made 1 comment.
Reviewable status: 29 of 36 files reviewed, 1 unresolved discussion (waiting on Huulivoide).
ui/src/components/stop-registry/stops/stop-details/hybrid-stop/MirroredQuayDetailsCard.tsx line 97 at r7 (raw file):
Previously, PasiVuohijoki (Pasi Vuohijoki) wrote…
Done.
Itseasiassa käytetääs tota sun esimerkkiä tässä, vaikka onkin vain yksi poistettava asia vain..
This change is