{"version":3,"file":"CompetitionResultList-e718731a.js","sources":["../../src/pages/request/workbookRequest/item/detail/WorkbookDialog.tsx","../../src/pages/request/workbookRequest/item/detail/TransientWorkbookList.tsx","../../src/pages/request/dysplasiaRequest/item/DysplasiaRequestValueResult.tsx","../../src/pages/request/broodRequest/item/BroodRequestPotentialFatherSelector.tsx","../../src/drupal/common/DurpalFieldSet.tsx","../../src/pages/dog/dog/item/health/DogDysplasiaPanel.tsx","../../src/pages/dog/dog/item/competition/results/DogResultPanel.tsx","../../src/pages/dog/dog/item/competition/results/DogResultsList.tsx","../../src/pages/dog/dog/item/competition/titles/DogTitlesSelector.tsx","../../src/pages/request/request/item/RequestBreedTransientSelection.tsx","../../src/pages/request/competitionRequest/item/CompetitionJudgeSelection.tsx","../../src/pages/request/healthTestRequest/item/HealthCharacteristicsList.tsx","../../src/pages/request/healthTestRequest/item/HealthPacksList.tsx","../../src/pages/request/healthTestRequest/item/HealthTestList.tsx","../../src/pages/sport/competition/item/CompetitionResultPanel.tsx","../../src/pages/sport/competition/item/CompetitionResultList.tsx"],"sourcesContent":["import { FGNumberInput, FGSelectInput, FGListen } from \"nsitools-react\";\nimport * as React from \"react\";\nimport * as Yup from \"yup\";\n\nimport {\n DogWorkbookApi,\n TransientWorkbookApi,\n TransientWorkbookGridDto,\n} from \"../../../../../api\";\nimport { SmallFormGenerator } from \"../../../../../components\";\nimport { useGlobalData } from \"../../../../../contexts\";\nimport { useApiService, useTl } from \"../../../../../hooks\";\nimport { useReferential } from \"../../../../../hooks/useReferential\";\nimport { ETLCodes } from \"../../../../../locales\";\n\nexport interface IWorkbookDialogProps {\n dogId: number;\n initialWorkbooks: TransientWorkbookGridDto[];\n onSaved: (data: TransientWorkbookGridDto) => void;\n}\n\nexport const WorkbookDialog: React.FunctionComponent = ({\n dogId,\n onSaved,\n initialWorkbooks,\n}) => {\n const { t } = useTl();\n const { currentLanguage } = useGlobalData();\n const api = useApiService(TransientWorkbookApi);\n const dogApi = useApiService(DogWorkbookApi);\n const [counterExists, setCounterExists] = React.useState(false);\n const [identifierExists, setIdentifierExists] = React.useState(\n false\n );\n const [saving, setSaving] = React.useState(false);\n\n const FormSchema = React.useMemo(() => {\n return Yup.object().shape({\n counter: Yup.number().required(t(ETLCodes.Required)),\n workbookTypeId: Yup.number().nullable().required(t(ETLCodes.Required)),\n });\n }, [t]);\n\n const [workbooks, wloading] = useReferential(\n (a) => a.getWorkbookTypes(currentLanguage.languageId, dogId),\n false,\n []\n );\n\n const removedWorkbookIds = React.useMemo(\n () => initialWorkbooks.map((e) => +e.workbookTypeId),\n [initialWorkbooks]\n );\n\n React.useEffect(() => {\n console.log(\"workbooks:\", initialWorkbooks);\n console.log(\"removed:\", removedWorkbookIds);\n }, [initialWorkbooks, removedWorkbookIds]);\n\n const saveItem = React.useCallback(\n async (data: TransientWorkbookGridDto) => {\n setSaving(true);\n await api\n .getWorkbookDescription(data.workbookTypeId, currentLanguage.languageId)\n .then((result) => (data.workbookType = result));\n onSaved(data);\n setSaving(false);\n },\n [api, currentLanguage.languageId, onSaved]\n );\n\n return (\n \n {\n const info = await dogApi.getWorkbookInformation(value, dogId, true);\n console.log(info);\n if (info !== null) {\n info.counter !== null\n ? setCounterExists(true)\n : setCounterExists(false);\n info.identifier > 0\n ? setIdentifierExists(true)\n : setIdentifierExists(false);\n }\n formik.setFieldValue(\n \"identifier\",\n info.identifier === 0 ? null : info.identifier\n );\n formik.setFieldValue(\n \"counter\",\n info.counter === 0 ? 1 : info.counter\n );\n }}\n />\n !removedWorkbookIds.includes(+e.value))}\n loading={wloading}\n label={t(ETLCodes.WorkbookType)}\n />\n {identifierExists && (\n \n )}\n {counterExists && (\n \n )}\n \n );\n};\n","import { Classes, Colors, Dialog, Intent } from \"@blueprintjs/core\";\nimport { FieldSet, IDataTableColumn, useGridState, ButtonContainer } from \"nsitools-react\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { TransientWorkbookGridDto } from \"../../../../../api\";\nimport { ERoutes } from \"../../../../../ERoutes\";\nimport { AddButton, CustomDataTable, DeleteButton, WorkbookTypeIcon } from \"../../../../../components\";\nimport { useTl } from \"../../../../../hooks\";\nimport { ETLCodes } from \"../../../../../locales\";\nimport { WorkbookDialog } from \"./WorkbookDialog\";\nimport styled from \"styled-components\";\n\nexport interface ITransientWorkbookListProps {\n dogId: number;\n onWorkbookChanged: (data: TransientWorkbookGridDto[]) => void;\n initialWorkbooks: TransientWorkbookGridDto[];\n editMode: boolean;\n loading: boolean;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const TransientWorkbookList: React.FunctionComponent = ({\n dogId,\n onWorkbookChanged,\n initialWorkbooks,\n editMode,\n loading,\n}) => {\n const { t } = useTl();\n\n const [dialogOpened, setDialogOpened] = React.useState(false);\n const [workbooks, setWorkbooks] = React.useState(initialWorkbooks);\n\n const tableState = useGridState({\n serverMode: false,\n enablePagination: false,\n enableFilter: true,\n availablePageSizes: [5],\n pageSize: 5,\n sortKeys: { identifier: \"DESC\" },\n });\n\n const { setData } = tableState;\n\n React.useEffect(() => {\n setData(workbooks);\n }, [setData, workbooks]);\n\n const columns = React.useMemo(\n () => [\n {\n computed: true,\n disableSorting: true,\n fieldName: \"actions\",\n autoFitContent: true,\n hidden: !editMode,\n render: (row: TransientWorkbookGridDto) => (\n \n {\n const newWorkbooks = workbooks.filter((e) => e !== row);\n setWorkbooks(newWorkbooks);\n onWorkbookChanged(newWorkbooks);\n }}\n />\n \n ),\n },\n {\n header: () => t(ETLCodes.Identifier),\n fieldName: \"identifier\",\n },\n {\n header: () => t(ETLCodes.Counter),\n fieldName: \"counter\",\n },\n {\n header: () => t(ETLCodes.WorkbookType),\n fieldName: \"workbookType\",\n render: (row: TransientWorkbookGridDto) => (\n \n {row.workbookType}\n \n ),\n },\n {\n header: () => t(ETLCodes.WithPedigree),\n fieldName: \"withPedigree\",\n alignment: \"center\",\n autoFitContent: true,\n render: (row: TransientWorkbookGridDto) => ,\n },\n ],\n [editMode, onWorkbookChanged, t, workbooks]\n );\n\n const addItemFunction = React.useCallback(() => {\n setDialogOpened(true);\n }, []);\n\n return (\n <>\n \n
{t(ETLCodes.Workbooks)}
\n {editMode && (\n
\n {\n e.stopPropagation();\n addItemFunction();\n }}\n text={t(ETLCodes.General_Add)}\n intent={Intent.PRIMARY}\n />\n
\n )}\n \n }\n >\n \n \n\n setDialogOpened(false)}\n canEscapeKeyClose={true}\n canOutsideClickClose={true}\n isCloseButtonShown={true}\n style={{ width: 1000, height: 250, zIndex: 20, background: Colors.WHITE }}\n >\n
\n {\n setDialogOpened(false);\n const newWorkbooks = [...workbooks, newItem];\n setWorkbooks(newWorkbooks);\n onWorkbookChanged(newWorkbooks);\n }}\n />\n
\n \n \n );\n};\n","import * as React from \"react\";\nimport { FGSelectInput, FGNumberInput, FGTextInput } from \"nsitools-react\";\nimport { ETLCodes } from \"../../../../locales\";\nimport { useTl } from \"../../../../hooks\";\nimport { useReferential } from \"../../../../hooks/useReferential\";\nimport { EHealthValueType } from \"../../../../api\";\n\nexport interface IDysplasiaRequestValueResultProps {\n index: number;\n dysplasiaIndex: number;\n characteristicType?: EHealthValueType;\n characteristicId?: number;\n}\n\nexport const DysplasiaRequestValueResult: React.FunctionComponent = ({\n index,\n dysplasiaIndex,\n characteristicType,\n characteristicId,\n}) => {\n const { t } = useTl();\n\n const [characValues, cvloading] = useReferential((a) => a.getHealthValues(characteristicId));\n\n return characteristicType === EHealthValueType.ValueList ? (\n \n ) : characteristicType === EHealthValueType.Numeric ? (\n \n ) : (\n \n );\n};\n","import * as React from \"react\";\nimport { ICustomSelectorProps, SRSHCustomSelector } from \"../../../../components\";\nimport { useApiService, useTl } from \"../../../../hooks\";\nimport { DogApi, DogSearch, DogGridDto } from \"../../../../api\";\nimport { useGlobalData } from \"../../../../contexts\";\nimport { IDataTableColumn, Loading } from \"nsitools-react\";\nimport { ETLCodes } from \"../../../../locales\";\nimport { Link } from \"react-router-dom\";\nimport { ERoutes } from \"../../../../ERoutes\";\n\nexport interface IBroodRequestPotentialFatherSelectorProps\n extends Pick, \"linkedIds\" | \"onLinkedIdsChanged\"> {\n editMode: boolean;\n loading: boolean;\n clickableDogs?: boolean;\n motherId: number;\n showAllButtons?: boolean;\n formWidth: number;\n}\n\nexport const BroodRequestPotentialFatherSelector: React.FunctionComponent<\n IBroodRequestPotentialFatherSelectorProps\n> = ({\n editMode,\n linkedIds,\n onLinkedIdsChanged,\n loading,\n motherId,\n clickableDogs = true,\n showAllButtons = true,\n formWidth,\n}) => {\n const api = useApiService(DogApi);\n const { currentLanguage } = useGlobalData();\n const { t } = useTl();\n\n const tooSmall = React.useMemo(() => formWidth < 1700, [formWidth]);\n\n const columns = React.useMemo(\n () => [\n {\n computed: true,\n disableSorting: true,\n header: () => t(ETLCodes.Name),\n fieldName: \"computedName\",\n autoFitContent: tooSmall,\n render: (row: DogGridDto) =>\n clickableDogs ? (\n \n {row.computedName}\n \n ) : (\n
{row.computedName}
\n ),\n },\n !tooSmall && {\n header: () => t(ETLCodes.Pedigree),\n fieldName: \"pedigree\",\n },\n !tooSmall && {\n computed: true,\n disableSorting: true,\n header: () => t(ETLCodes.DogChips),\n fieldName: \"dogChips\",\n render: (row: DogGridDto) => (row.dogChip ?? \"\") + (row.secondDogChip ? ` / ${row.secondDogChip}` : \"\"),\n },\n ],\n [clickableDogs, t, tooSmall]\n );\n\n const searchIdsFunction = React.useCallback(\n (sObj: any) =>\n api.searchAllIds(\n DogSearch.fromJS({\n ...sObj,\n compatibleDogId: motherId,\n languageId: currentLanguage.languageId,\n selectOnlyMales: true,\n excludeExpoDogs: true,\n })\n ),\n [api, currentLanguage.languageId, motherId]\n );\n const searchFunction = React.useCallback(\n (sObj: any) =>\n api.baseSearch(\n DogSearch.fromJS({\n ...sObj,\n compatibleDogId: motherId,\n languageId: currentLanguage.languageId,\n selectOnlyMales: true,\n excludeExpoDogs: true,\n checkbreedAuthorized: true,\n })\n ),\n [api, currentLanguage.languageId, motherId]\n );\n\n return (\n \n \n api.exportXlsFile(\n DogSearch.fromJS({\n ...sObj,\n languageId: currentLanguage.languageId,\n excludeSelectedIds: false,\n })\n )\n }\n />\n \n );\n};\n","import { FieldSet, IFieldSetProps } from \"nsitools-react\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nexport const StyledFieldSet = styled(FieldSet)``;\n\nexport interface IDrupalFieldSetProps extends IFieldSetProps {\n divid?: boolean;\n}\n\nexport const DrupalFieldSet: React.FC = (props) => {\n return ;\n};\n","import { Spinner } from \"@blueprintjs/core\";\nimport { FGDateMaskInput, FGListen, FGSelectInput, FieldSet, useApiEffect } from \"nsitools-react\";\nimport * as React from \"react\";\nimport * as Yup from \"yup\";\n\nimport { CharacteristicApi, DogDysplasiaApi, DogDysplasiaDto, EHealthValueType } from \"../../../../../api\";\nimport { FGSRSHDateMaskInput, SmallFormGenerator } from \"../../../../../components\";\nimport { FGNumberMaskInput } from \"../../../../../components/formGenerator/FGNumberMaskInput\";\nimport { useGlobalData } from \"../../../../../contexts\";\nimport { ERoutes } from \"../../../../../ERoutes\";\nimport { useApiService, useCrudApi, useTl, useWindow } from \"../../../../../hooks\";\nimport { useReferential } from \"../../../../../hooks/useReferential\";\nimport { ETLCodes } from \"../../../../../locales\";\n\nexport interface IDogDysplasiaPanelProps {\n dogId: number;\n dogDysplasiaId: number;\n postSave: () => void;\n}\n\nexport const DogDysplasiaPanel: React.FunctionComponent = ({\n dogId,\n dogDysplasiaId,\n postSave,\n}) => {\n const { t } = useTl();\n const { currentLanguage } = useGlobalData();\n const api = useApiService(DogDysplasiaApi);\n const characteristicApi = useApiService(CharacteristicApi);\n const [characteristicId, setcharacteristicId] = React.useState();\n const { openNewTab } = useWindow();\n\n const saveCallback = React.useCallback(\n async (toSave: DogDysplasiaDto) => {\n await api.save(toSave);\n postSave();\n },\n [api, postSave]\n );\n const { data, loading, saving, saveItem } = useCrudApi(\n React.useMemo(\n () => ({\n getApiFn: (id = dogDysplasiaId) => (id > 0 ? api.get(id) : new DogDysplasiaDto({ dogId: dogId }).toJSON()),\n saveApiFn: (d: DogDysplasiaDto) => saveCallback(d),\n }),\n [api, dogDysplasiaId, dogId, saveCallback]\n ),\n [dogId]\n );\n\n const [healthValueType, htvLoading] = useApiEffect(() => {\n if (\n !!characteristicId &&\n (!data?.healthValueType || (!loading && data && data.characteristicId !== characteristicId && !!characteristicId))\n ) {\n return characteristicApi.getHealthValueTypeCode(characteristicId);\n } else {\n return data?.healthValueType;\n }\n }, [characteristicApi, characteristicId, data, loading]);\n\n const [characteristic, cloading] = useReferential(\n (a) => a.getCharacteristics(true, currentLanguage.languageId),\n true,\n []\n );\n\n const [healthValues, hvloading] = useReferential(\n (a) => characteristicId && a.getHealthValues(characteristicId),\n true,\n [characteristicId]\n );\n\n const ComputeResultType = React.useCallback(() => {\n if (htvLoading) {\n return ;\n } else {\n switch (healthValueType) {\n case EHealthValueType.Numeric:\n return ;\n case EHealthValueType.ValueList:\n return (\n \n );\n default:\n return null;\n }\n }\n }, [healthValueType, healthValues, htvLoading, hvloading, t]);\n const FormSchema = React.useMemo(() => {\n return Yup.object().shape({\n characteristicId: Yup.number().required(t(ETLCodes.Required)),\n });\n }, [t]);\n return (\n \n setcharacteristicId(d)} />\n
\n \n \n openNewTab(`${ERoutes.characteristics}/${item}/detail/view`)}\n />\n\n \n
\n \n );\n};\n","import {\n FGCheckboxInput,\n FGListen,\n FGNumberInput,\n FGSelectInput,\n FGTextAreaInput,\n FieldGroup,\n FieldSet,\n} from \"nsitools-react\";\nimport * as React from \"react\";\nimport * as Yup from \"yup\";\n\nimport { DogResultsApi, SaveNewResultDto } from \"../../../../../../api\";\nimport { SmallFormGenerator } from \"../../../../../../components\";\nimport { useApiService, useCrudApi, useTl } from \"../../../../../../hooks\";\nimport { useReferential } from \"../../../../../../hooks/useReferential\";\nimport { ETLCodes } from \"../../../../../../locales\";\n\nexport interface IDogResultPanelProps {\n dogId: number;\n selectedResultId: number;\n onSaved: () => void;\n}\n\nexport const DogResultPanel: React.FunctionComponent = ({ dogId, onSaved, selectedResultId }) => {\n const { t } = useTl();\n const api = useApiService(DogResultsApi);\n\n const [competitionId, setCompetitionId] = React.useState(null);\n\n const FormSchema = React.useMemo(() => {\n return Yup.object().shape({\n result: Yup.number().nullable().required(t(ETLCodes.Required)),\n qualificationId: Yup.number().nullable().required(t(ETLCodes.Required)),\n showClass: Yup.string().nullable().required(t(ETLCodes.Required)),\n catalogNumber: Yup.number().required(t(ETLCodes.Required)),\n });\n }, [t]);\n\n const [competitions, cloading] = useReferential((a) => a.getCompetitions(), false, []);\n const [judges, jloading] = useReferential((a) => a.getJudges(competitionId), true, [competitionId]);\n const [results, rloading] = useReferential((a) => a.getResults(), true, []);\n const [classes, clloading] = useReferential((a) => a.getShowClasses(), false, []);\n const [qualifs, qloading] = useReferential((a) => a.getQualifications(), true, []);\n\n const { data, loading, saveItem, saving, refresh } = useCrudApi(\n React.useMemo(\n () => ({\n getApiFn: async (id = selectedResultId) =>\n id > 0 ? await api.getDogCompetitionResult(id) : new SaveNewResultDto({ dogId: dogId }).toJSON(),\n saveApiFn: (d) => api.saveNewResult(d),\n }),\n [api, dogId, selectedResultId]\n ),\n [dogId]\n );\n const save = React.useCallback(\n async (data: any) => {\n await saveItem(data);\n //when done\n onSaved();\n },\n [onSaved, saveItem]\n );\n\n return (\n \n setCompetitionId(value)} />\n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n};\n","import { Classes, Dialog, Intent, Colors, ButtonGroup, Checkbox } from \"@blueprintjs/core\";\nimport { FieldSet, IDataTableColumn, useGridState, ButtonContainer, useSearchApi } from \"nsitools-react\";\n\n// import { useSearchApi } from \"../../../../../../hooks/useLocalSearchApi\";\n\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { DogCompetitionResultGridDto, DogCompetitionResultSearch, DogResultsApi } from \"../../../../../../api\";\nimport { AddButton, DeleteButton, CustomDataTable, ExportButton, EditButton } from \"../../../../../../components\";\nimport { useApiService, useTl } from \"../../../../../../hooks\";\nimport { ETLCodes } from \"../../../../../../locales\";\nimport { DogResultPanel } from \"./DogResultPanel\";\nimport { useDialog, useGlobalData, useEventsContext } from \"../../../../../../contexts\";\nimport { Row } from \"react-flexbox-grid\";\n\nexport interface IDogResultsListProps {\n dogId: number;\n editMode: boolean;\n}\n\nconst Container = styled.div`\n flex: 1;\n height: 100%;\n & > .${Classes.PANEL_STACK} {\n height: 100%;\n }\n`;\n\nexport const DogResultsList: React.FunctionComponent = ({ dogId, editMode }) => {\n const api = useApiService(DogResultsApi);\n const { showDialog } = useDialog();\n const { t } = useTl();\n const [selectedResultId, setSelectedResultId] = React.useState(null);\n const [sobjState, setsobjState] = React.useState();\n\n const tableState = useGridState({\n serverMode: true,\n enablePagination: true,\n enableFilter: false,\n availablePageSizes: [5, 10, 15],\n pageSize: 10,\n sortKeys: { dateFrom: \"DESC\" },\n });\n const { currentLanguage } = useGlobalData();\n const searchFunction = React.useCallback(\n (sObj?: DogCompetitionResultSearch) => {\n setsobjState(DogCompetitionResultSearch.fromJS({ ...sObj, dogId: dogId }));\n return api.baseSearch(DogCompetitionResultSearch.fromJS({ ...sObj, dogId: dogId }));\n },\n [api, dogId]\n );\n\n const { search, loading } = useSearchApi({\n searchFunction,\n tableState,\n initialSearch: true,\n trimSearchObjectStringValues: true,\n });\n const deleteItemFunction = React.useCallback(\n (breedColorId) => {\n showDialog({\n message: t(ETLCodes.DeleteConfirmationMessage),\n title: t(ETLCodes.DeleteDialogTitle),\n onConfirmed: async () => {\n api.deleteResult(breedColorId).then(() => search());\n },\n });\n },\n [api, search, showDialog, t]\n );\n\n const onRequestRefreshEvent = React.useCallback(() => {\n search();\n }, [search]);\n\n const { subscribeToEvent, unsubscribeEvent } = useEventsContext();\n React.useEffect(() => {\n subscribeToEvent(\"ReloadTitlesTable\", onRequestRefreshEvent);\n return () => unsubscribeEvent(\"ReloadTitlesTable\", onRequestRefreshEvent);\n }, [onRequestRefreshEvent, subscribeToEvent, unsubscribeEvent]);\n\n const columns = React.useMemo(\n () => [\n {\n computed: true,\n disableSorting: true,\n fieldName: \"actions\",\n autoFitContent: true,\n hidden: !editMode,\n render: (row: DogCompetitionResultGridDto) => (\n \n setSelectedResultId(row.competitionResultId)} />\n deleteItemFunction(row.competitionResultId)} />\n \n ),\n },\n {\n computed: true,\n disableSorting: true,\n fieldName: \"isLinkedToTitle\",\n autoFitContent: true,\n render: (row: DogCompetitionResultGridDto) => row.isLinkedToTitle && ,\n },\n {\n header: () => t(ETLCodes.Competition),\n fieldName: \"competition\",\n computed: true,\n disableSorting: true,\n },\n {\n header: () => t(ETLCodes.Expo),\n fieldName: \"expo\",\n },\n {\n header: () => t(ETLCodes.Judge),\n fieldName: \"judge\",\n },\n {\n header: () => t(ETLCodes.Type),\n fieldName: \"showClass\",\n render: (row: DogCompetitionResultGridDto) =>
{row?.showClass === \"\\u0000\" ? \"\" : row.showClass}
,\n },\n {\n header: () => t(ETLCodes.Qualification),\n fieldName: \"qualification\",\n },\n {\n header: () => t(ETLCodes.Result),\n fieldName: \"result\",\n },\n {\n header: () => t(ETLCodes.Cac),\n fieldName: \"cac\",\n alignment: \"center\",\n render: (row: DogCompetitionResultGridDto) => ,\n },\n {\n header: () => t(ETLCodes.CacReserve),\n fieldName: \"cacReserve\",\n alignment: \"center\",\n render: (row: DogCompetitionResultGridDto) => ,\n },\n {\n header: () => t(ETLCodes.Cacib),\n fieldName: \"cacib\",\n alignment: \"center\",\n render: (row: DogCompetitionResultGridDto) => ,\n },\n {\n header: () => t(ETLCodes.CacibReserve),\n fieldName: \"cacibReserve\",\n alignment: \"center\",\n render: (row: DogCompetitionResultGridDto) => ,\n },\n ],\n [deleteItemFunction, editMode, t]\n );\n React.useEffect(() => {\n search();\n }, [currentLanguage, search]);\n\n return (\n <>\n \n api.exportXlsFile(sObj)} sObj={sobjState} />\n {editMode && (\n {\n e.stopPropagation();\n setSelectedResultId(0);\n }}\n text={t(ETLCodes.General_Add)}\n intent={Intent.PRIMARY}\n />\n )}\n \n }\n >\n \n \n setSelectedResultId(null)}\n canEscapeKeyClose={true}\n canOutsideClickClose={true}\n isCloseButtonShown={true}\n style={{ width: 1500, height: 700, background: Colors.WHITE }}\n className={Classes.DIALOG}\n >\n \n {\n setSelectedResultId(null);\n search();\n }}\n />\n \n \n \n );\n};\n","import * as React from \"react\";\nimport { DogCompetitionResultSearch, DogResultsApi, DogTitlesApi, SaveNewDogTitleDto } from \"../../../../../../api\";\nimport { FGCustomPanel, IDataTableColumn } from \"nsitools-react\";\nimport { ETLCodes } from \"../../../../../../locales\";\nimport { useApiService, useTl } from \"../../../../../../hooks\";\nimport { SmallFormGenerator, SRSHCustomSelector } from \"../../../../../../components\";\n\nexport interface IDogTitlesSelectorProps {\n onSaved: () => void;\n title: SaveNewDogTitleDto;\n dogId: number;\n}\n\nexport const DogTitlesSelector: React.FunctionComponent = ({ onSaved, title, dogId }) => {\n const { t } = useTl();\n const resultApi = useApiService(DogResultsApi);\n const titleApi = useApiService(DogTitlesApi);\n\n const columns = React.useMemo(\n () => [\n {\n header: () => t(ETLCodes.Competition),\n fieldName: \"competition\",\n },\n {\n header: () => t(ETLCodes.Result),\n fieldName: \"result\",\n },\n ],\n [t]\n );\n\n const initialData = React.useMemo(() => title, [title]);\n\n const getResults = React.useCallback(\n (sObj: any) => resultApi.baseSearch(DogCompetitionResultSearch.fromJS({ ...sObj, dogId: dogId })),\n [dogId, resultApi]\n );\n const getResultIds = React.useCallback(\n (sObj: any) => resultApi.getIds(DogCompetitionResultSearch.fromJS({ ...sObj, dogId: dogId })),\n [dogId, resultApi]\n );\n\n const saveItem = React.useCallback(\n async (res) => {\n initialData.resultIds = res.resultIds;\n await titleApi.saveNewDogTitle(initialData).then(() => onSaved());\n },\n [initialData, onSaved, titleApi]\n );\n\n return (\n \n \n {(ctx) => (\n ctx.formik.setFieldValue(\"resultIds\", newIds)}\n idField=\"competitionResultId\"\n searchFunction={getResults}\n searchIdsFunc={getResultIds}\n editMode={true}\n />\n )}\n \n \n\n // resultApi.getSearchCriterias(true)}\n // searchFunction={getResults}\n // dialogContext={dialogContext}\n // sortKeys={{ competition: \"ASC\" }}\n // onSave={async (newIds) => {\n // initialData.resultIds = newIds;\n // await titleApi.saveNewDogTitle(initialData).then(() => onSaved());\n // }}\n // onCancel={() => onSaved()}\n // editMode={true}\n // />\n );\n};\n","import { IDataTableColumn, Loading } from \"nsitools-react\";\nimport * as React from \"react\";\n\nimport { BreedApi, BreedSearch, BreedGridDto } from \"../../../../api\";\nimport { ICustomSelectorProps, SRSHCustomSelector } from \"../../../../components\";\nimport { useGlobalData } from \"../../../../contexts\";\nimport { useApiService, useTl } from \"../../../../hooks\";\nimport { ETLCodes } from \"../../../../locales\";\nimport { ERoutes } from \"../../../../ERoutes\";\nimport { Link } from \"react-router-dom\";\n\nexport interface IRequestBreedTransientSelectionProps\n extends Pick, \"linkedIds\" | \"onLinkedIdsChanged\"> {\n editMode: boolean;\n loading: boolean;\n}\n\nexport const RequestBreedTransientSelection: React.FunctionComponent = ({\n editMode,\n linkedIds,\n onLinkedIdsChanged,\n loading,\n}) => {\n const api = useApiService(BreedApi);\n const { currentLanguage } = useGlobalData();\n const { t } = useTl();\n\n const columns = React.useMemo(\n () => [\n {\n header: () => t(ETLCodes.BreedName),\n fieldName: \"name\",\n render: (row: BreedGridDto) => (\n {`${row.name}`}\n ),\n },\n {\n header: () => t(ETLCodes.BreedGroupLabel),\n fieldName: \"breedGroupLabel\",\n },\n ],\n [t]\n );\n\n const searchIdsFunction = React.useCallback(\n (sObj: any) => api.getIds(BreedSearch.fromJS({ ...sObj, languageId: currentLanguage.languageId })),\n [api, currentLanguage.languageId]\n );\n const searchFunction = React.useCallback(\n (sObj: any) => api.baseSearch(BreedSearch.fromJS({ ...sObj, languageId: currentLanguage.languageId })),\n [api, currentLanguage.languageId]\n );\n\n return (\n \n \n \n );\n};\n","import { IDataTableColumn, Loading } from \"nsitools-react\";\nimport * as React from \"react\";\n\nimport { JudgeApi, JudgeSearch, JudgeGridDto } from \"../../../../api\";\nimport { ICustomSelectorProps, SRSHCustomSelector } from \"../../../../components\";\nimport { useGlobalData } from \"../../../../contexts\";\nimport { useApiService, useTl } from \"../../../../hooks\";\nimport { ETLCodes } from \"../../../../locales\";\n\nexport interface ICompetitionJudgeSelectionProps\n extends Pick, \"linkedIds\" | \"onLinkedIdsChanged\"> {\n editMode: boolean;\n loading: boolean;\n}\n\nexport const CompetitionJudgeSelection: React.FunctionComponent = ({\n editMode,\n linkedIds,\n onLinkedIdsChanged,\n loading,\n}) => {\n const api = useApiService(JudgeApi);\n const { currentLanguage } = useGlobalData();\n const { t } = useTl();\n\n const columns = React.useMemo(\n () => [\n {\n header: () => t(ETLCodes.CompleteName),\n fieldName: \"name\",\n render: (row: JudgeGridDto) =>
{row.name}
,\n },\n {\n header: () => t(ETLCodes.MailAddress),\n fieldName: \"email\",\n },\n ],\n [t]\n );\n\n const searchIdsFunction = React.useCallback(\n (sObj: any) => api.searchAllIds(JudgeSearch.fromJS({ ...sObj, languageId: currentLanguage.languageId })),\n [api, currentLanguage.languageId]\n );\n const searchFunction = React.useCallback(\n (sObj: any) => api.baseSearch(JudgeSearch.fromJS({ ...sObj, languageId: currentLanguage.languageId })),\n [api, currentLanguage.languageId]\n );\n\n return (\n \n \n api.exportXlsFile(\n JudgeSearch.fromJS({ ...sObj, languageId: currentLanguage.languageId, excludeSelectedIds: false })\n )\n }\n />\n \n );\n};\n","import { IDataTableColumn, useGridState } from \"nsitools-react\";\nimport * as React from \"react\";\n\nimport { HealthTestRequestCharacteristicGridDto } from \"../../../../api\";\nimport { useTl } from \"../../../../hooks\";\nimport { ETLCodes } from \"../../../../locales\";\nimport { CustomDataTable } from \"../../../../components\";\n\nexport interface IHealthCharacteristicListProps {\n data: HealthTestRequestCharacteristicGridDto[];\n}\n\nexport const HealthCharacteristicList: React.FunctionComponent = ({ data }) => {\n const { t } = useTl();\n\n const tableState = useGridState({\n serverMode: false,\n enablePagination: true,\n enableFilter: false,\n availablePageSizes: [50],\n pageSize: 50,\n data: data,\n });\n\n const columns = React.useMemo(\n () => [\n {\n header: () => t(ETLCodes.Characteristic),\n fieldName: \"characteristic\",\n render: (row: HealthTestRequestCharacteristicGridDto) =>\n `[${row.characteristicCode}] ${row.characteristicName}`,\n },\n ],\n [t]\n );\n\n return } />;\n};\n","import { Button, Checkbox } from \"@blueprintjs/core\";\nimport { IDataTableColumn, useGridState, useSearchApi } from \"nsitools-react\";\nimport * as React from \"react\";\n\nimport {\n ELab,\n HealthRequestPacksSearch,\n HealthTestRequestHealthPacksApi,\n HealthTestRequestPackGridDto,\n} from \"../../../../api\";\nimport { CustomDataTable } from \"../../../../components\";\nimport { useGlobalData } from \"../../../../contexts\";\nimport { useApiService, useTl } from \"../../../../hooks\";\nimport { ETLCodes } from \"../../../../locales\";\nimport { HealthCharacteristicList } from \"./HealthCharacteristicsList\";\n\nexport interface IHealthPacksListProps {\n selectedIds: number[];\n blockedIds: number[];\n lab: ELab;\n dogId?: number;\n onSelectionUpdated: (selected: any) => void;\n disabled: boolean;\n healthTestRequestId: number;\n}\n\nexport const HealthPacksList: React.FunctionComponent = ({\n selectedIds,\n lab,\n dogId = null,\n onSelectionUpdated,\n disabled,\n healthTestRequestId = null,\n blockedIds,\n}) => {\n const api = useApiService(HealthTestRequestHealthPacksApi);\n const { t } = useTl();\n const { currentLanguage } = useGlobalData();\n\n const [selectAll, setselectAll] = React.useState(false);\n const selectionList = React.useMemo(() => selectedIds ?? [], [selectedIds]);\n const closableIdsList = React.useMemo(() => [], []);\n\n const toggleSelectAll = React.useCallback(() => {\n const value = !selectAll;\n if (value) {\n selectionList.splice(0, selectionList?.length, ...closableIdsList);\n } else {\n selectionList.length = 0;\n }\n setselectAll(value);\n onSelectionUpdated(selectionList);\n }, [closableIdsList, onSelectionUpdated, selectAll, selectionList]);\n\n const columnCheckBox = React.useCallback(\n (row: HealthTestRequestPackGridDto) => {\n if (!disabled) {\n closableIdsList.push(row.healthPackId);\n }\n return (\n {\n if (selectionList.includes(row.healthPackId)) {\n const index = selectionList.findIndex((e) => e === row.healthPackId);\n selectionList.splice(index, 1);\n } else {\n selectionList.push(row.healthPackId);\n }\n onSelectionUpdated(selectionList);\n }}\n disabled={disabled || (blockedIds && blockedIds.includes(row.healthPackId))}\n />\n );\n },\n [blockedIds, closableIdsList, disabled, onSelectionUpdated, selectionList]\n );\n\n const columns = React.useMemo(\n () => [\n healthTestRequestId == null && {\n header: () => ,\n computed: true,\n disableSorting: true,\n fieldName: \"selector\",\n autoFitContent: true,\n render: columnCheckBox,\n },\n {\n computed: true,\n disableSorting: true,\n fieldName: \"_toggle\",\n autoFitContent: true,\n render: (item: HealthTestRequestPackGridDto, _, { subPanelOpened, toggleSubPanel }) => (\n