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

Draft: Create stop version init #960

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

villepynttari
Copy link
Contributor

@villepynttari villepynttari commented Dec 5, 2024

Initial version of copying stop to new version.


This change is Reviewable

@villepynttari villepynttari force-pushed the feature/create_stop_version branch from 23264f5 to 1f262bc Compare December 5, 2024 15:00
Copy link
Contributor

@Huulivoide Huulivoide left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 10 of 14 files at r1.
Reviewable status: 10 of 14 files reviewed, 26 unresolved discussions (waiting on @villepynttari)


ui/src/components/stop-registry/stops/stop-details/StopDetailsPage.tsx line 49 at r1 (raw file):

  const { label } = useRequiredParams<{ label: string }>();

  // TODO: Use appDispatch or simple useState?

Korvää koko tää redux hässäkkä vaan const [isCreateVersionModalOpen, setCreateVersionModalOpen] = useState(false) Ku siellä on vaan yks ainut muuttuja.


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 26 at r1 (raw file):

};

interface Props {

type ja reaonly


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 33 at r1 (raw file):

}

export const CreateStopVersionForm = ({

Komponentti: FC<PropsiTyyppi> = ({ ... }) => {


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 41 at r1 (raw file):

  const { t } = useTranslation();

  const formRef = useRef<ExplicitAny>(null);

Käytetään oikeita tyyppejä Any:n sijaan.


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 54 at r1 (raw file):

        onSubmit={handleSubmit(onFormSubmit)}
        ref={formRef}
        className={`space-y-4 ${className}`}

twMerge('space-y-4', className)


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 75 at r1 (raw file):

          <PriorityForm />
        </FormRow>
        <FormRow mdColumns={2}>

Eiks tälle oo olemassa jo jotain <PriorityForm />:ia vastaavaa toteutusta? 🤔


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionForm.tsx line 98 at r1 (raw file):

            {t('cancel')}
          </SimpleButton>
          <SimpleButton onClick={onSaved} testId={testIds.submitButton}>

onClick:in sijaan pitäs olla type="submit" ja antaa formin itse hoitaa submit eventti.


ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionCommon.ts line 1 at r1 (raw file):

import { gql } from '@apollo/client';

Tää tiedosto vois olla selkeemmin nimetty ja ehkä jakaa useempaan eri tiedostoon types alikansioon.


ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionCommon.ts line 30 at r1 (raw file):

>;

export const GQL_UPSERT_STOP_PLACE_VERSION = gql`

Väittäsin että tää on väärässä tiedostossa. Samaan paikkaan ku missää tota kyselyä oikeesti käytetään.


ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionCommon.ts line 42 at r1 (raw file):

export type StopPlaceKeyValues = {
  validityStart: DateTime;
  validityEnd: DateTime<true> | undefined;

<true> on turha tossa end kentän tyypissä


ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionCommon.ts line 55 at r1 (raw file):

};

export type StopPointVersionInputFull = ScheduledStopPointSetInput & {

Miks tässä on käytännössä ylikirjotettu jokanen kenttä tosta tyypistä?


ui/src/components/stop-registry/stops/stop-details/CalendarButton.tsx line 2 at r1 (raw file):

export type CalendarButtonProps = {
  name: string;

readonly


ui/src/components/stop-registry/stops/stop-details/CalendarButton.tsx line 6 at r1 (raw file):

};

export const CalendarButton = (props: CalendarButtonProps) => {

CalendarButton: FC<CalendarButtonProps> = ({ name, onClick }) => {...


ui/src/components/stop-registry/stops/stop-details/CalendarButton.tsx line 10 at r1 (raw file):

  return (
    <div className="ml-3 rounded-[3px] border border-light-grey bg-white p-2">
      <div

Käytä ihan vaan oikeeta nappula elementtiä


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionModal.tsx line 18 at r1 (raw file):

  loading: 'CreateTimingPlaceModal::loading',
};
export type CreateStopVersionModalProps = {

Onks tää tarkotuksella exportattu?


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionModal.tsx line 21 at r1 (raw file):

  originalStop: StopWithDetails | null;
};
export const CreateStopVersionModal = (

Ei keksitä React komponentin tyypityksiä joka kerta uudelleen FC<Props>


ui/src/components/stop-registry/stops/stop-details/stop-version/CreateStopVersionModal.tsx line 22 at r1 (raw file):

};
export const CreateStopVersionModal = (
  props: CreateStopVersionModalProps,

Propsien destrukturointi täällä , eikä funktio bodyssä


ui/src/components/stop-registry/stops/stop-details/stop-version/useCreateStopVersion.ts line 43 at r1 (raw file):

        values: [validityEnd?.toISODate() ?? null],
      },
      { key: 'priority', values: [state.priority.valueOf().toString()] },

tarpeeton valueOf() kutsu välissä


ui/src/components/stop-registry/stops/stop-details/stop-version/useCreateStopVersion.ts line 61 at r1 (raw file):

    validity_start: validityStart,
    validity_end: validityEnd,
    priority: state.priority.valueOf(),

tarpeeton valiueOf


ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionState.ts line 1 at r1 (raw file):

import { PayloadAction, configureStore, createSlice } from '@reduxjs/toolkit';

Ja tää tosiaan kokonaan hiiteen ja korvaus const isOpen = useState(false):lla


ui/src/components/stop-registry/stops/stop-details/stop-version/stopPlaceToInputMapperUtils.ts line 27 at r1 (raw file):

  StopRegistryStopPlace['accessibilityAssessment'];

export function toStopRegistryGeoJsonInput(

Tarviiks näitä yksittäisiä apufunktioita exportata erikseen? Kutsutaanko näitä erikseen tiedoston ulkopuolelta?


ui/src/components/stop-registry/stops/stop-details/stop-version/stopPlaceToInputMapperUtils.ts line 32 at r1 (raw file):

  return {
    coordinates: geoJson?.coordinates ?? null,
    legacyCoordinates: geoJson?.legacyCoordinates ?? null,

Legacy koordinaatteja ei pitäs lähettää enään sisään, koska legacy. coordinates on kenttä jota käytetään, noi mäppäytyy kannassa samaan tietokanta kenttään.


ui/src/components/stop-registry/stops/stop-details/stop-version/stopPlaceToInputMapperUtils.ts line 112 at r1 (raw file):

}

export function updateKeyValues(

Parametrit on vähän hassussa järjestyksessä, ja oli kiva jos funktio ottaa aina oletuksena readonlyna datan sisään.

ja voisko tän korvata kokonaan jo olemassa olevalla vastaavalla toteutuksella. En muista tarkalleen etät missä se on määritelty ja millä nimellä, mutta sitä on muissa pysäkin tallennuksissa käytetty.


ui/src/locales/en-US/common.json line 119 at r1 (raw file):

    "timingPlaceRequired": "The stop is used as timing place on the following routes: {{ routeLabels }}. Attach timing place or stop using as timing point on the routes.",
    "tiamatUpdateFailed": "The stop's details have been saved into the routes and lines database, but saving them into the Stop Registry failed! You ought to retry the saving!: Reason: {{ errorMessage }}",
    "version": {

Täälät puuttuu "edit"


ui/src/components/forms/common/customZodSchemas.ts line 69 at r1 (raw file):

export const requiredDate = requiredString.regex(/[0-9]{4}-[0-9]{2}-[0-9]{2}/);
export const optionaldDate = requiredString.regex(/[0-9]{4}-[0-9]{2}-[0-9]{2}/).optional();

optionalDate = requiredDate.optional()


ui/src/components/forms/common/customZodSchemas.ts line 98 at r1 (raw file):

export const instanceOfDateTime = z.custom<DateTime>(DateTime.isDateTime);

export function getStringEnumValues<T extends Record<string, string>>(enumObj: T): readonly [string, ...string[] ]{

Nyt on jännää koodia. En keksi pelkästään tätä lukemalla, että mitä tässä oln varsinaisesti yritetty saavuttaa 🤔

@villepynttari villepynttari force-pushed the feature/create_stop_version branch from 1f262bc to 8ab1bb9 Compare December 12, 2024 06:17
@villepynttari
Copy link
Contributor Author

ui/src/components/stop-registry/stops/stop-details/stop-version/createStopVersionCommon.ts line 55 at r1 (raw file):

Previously, Huulivoide (Jesse Jaara) wrote…

Miks tässä on käytännössä ylikirjotettu jokanen kenttä tosta tyypistä?

Nää on vähän kuin muistilappuna sille mitä ollaan varsinaisesti tallentamassa, että pysyin jotenkin kärryillä, kun vertailin olemassaolevia kilkkeitä. Lisäksi ylikirjoittaa joitain nullableja pakollisiksi. Ei ole välttämättä tarpeellisia lopullisessa versiossa.

@villepynttari
Copy link
Contributor Author

ui/src/components/forms/common/customZodSchemas.ts line 98 at r1 (raw file):

Previously, Huulivoide (Jesse Jaara) wrote…

Nyt on jännää koodia. En keksi pelkästään tätä lukemalla, että mitä tässä oln varsinaisesti yritetty saavuttaa 🤔

Liittyi jotenkin priorityyn, mutta löysinkin sille valmiin toteutuksen. Ei ole tosiaan käytössä ja vaan unohtui tänne.

@villepynttari
Copy link
Contributor Author

ui/src/components/stop-registry/stops/stop-details/stop-version/stopPlaceToInputMapperUtils.ts line 27 at r1 (raw file):

Previously, Huulivoide (Jesse Jaara) wrote…

Tarviiks näitä yksittäisiä apufunktioita exportata erikseen? Kutsutaanko näitä erikseen tiedoston ulkopuolelta?

Ei kutsuta. Pidin vaan näitä vielä ns. liikuteltavassa muodossa, kun on toteutus vähän kokeilun asteella.

@villepynttari
Copy link
Contributor Author

ui/src/components/stop-registry/stops/stop-details/stop-version/stopPlaceToInputMapperUtils.ts line 112 at r1 (raw file):

Previously, Huulivoide (Jesse Jaara) wrote…

Parametrit on vähän hassussa järjestyksessä, ja oli kiva jos funktio ottaa aina oletuksena readonlyna datan sisään.

ja voisko tän korvata kokonaan jo olemassa olevalla vastaavalla toteutuksella. En muista tarkalleen etät missä se on määritelty ja millä nimellä, mutta sitä on muissa pysäkin tallennuksissa käytetty.

Varmaan voi. En vaan löytänyt valmista toteutusta äkkiseltään.

Copy link
Contributor

@Huulivoide Huulivoide left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 14 files at r1, 4 of 11 files at r2, all commit messages.
Reviewable status: 8 of 17 files reviewed, 26 unresolved discussions (waiting on @villepynttari)


cypress/e2e/stop-registry/stopDetails.cy.ts line 2292 at r2 (raw file):

  describe('Stop version', () => {
    function initForm() {
      return new CreateStopVersionFormWrapper();

Tää on vähän tarpeeton luoda jokasessa testissä uudelleen. Vois olla vaan yks initialisointi, ku ei tuossa luokassa kuitenkaan mitään tilaa ole.

@Huulivoide Huulivoide force-pushed the feature/create_stop_version branch 3 times, most recently from b8f4646 to 93f1c39 Compare December 16, 2024 18:48
@Huulivoide Huulivoide force-pushed the feature/create_stop_version branch from 93f1c39 to eefc98d Compare December 18, 2024 14:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants