{"version":3,"sources":["utils/node-utils.ts","external/design-system/src/js/utils/dom.js","components/Skeleton/SkeletonPrimaryTheme.tsx","components/Skeleton/SkeletonPrimary.tsx","services/ServiceBase.ts","utils/CaseInsensitiveMap.ts","utils/CookiesUtils.ts","utils/CancellationTokenSource.ts","utils/PromiseUtils.ts","utils/Queue.ts","utils/AsyncLock.ts","utils/Events.ts","utils/PromisesStacker.ts","utils/ArrayHelper.ts","services/LocalizationService.ts","store/errorStore.ts","utils/ApplicationInsights.ts","store/userCookieSettingsStore.ts","store/localizationStore.tsx","utils/LanguageUtils.ts","store/nodeContextStore.ts","utils/StringUtils.ts","utils/FilterCondition.ts","utils/BemUtils.ts","components/Pagination/PaginationArrow.tsx","components/Pagination/PaginationPage.tsx","components/Pagination/PaginationSeparator.tsx","components/Pagination/Pagination.tsx","constants/urlConstants.ts","utils/QueryHook.ts","utils/RenderUtils.tsx","components/FlexBox/FlexBox.tsx","components/Button/ButtonBase.tsx","components/Button/ButtonLink.tsx","components/Icon/Icon.tsx","components/Pagination/PaginatorLoadMore.tsx","components/Pagination/Paginator.tsx","utils/OrderByUtils.ts","store/collectionStore.ts","store/detailObjectStore.ts","store/breadcrumbStore.ts","utils/AttrMapping.ts","models/IDNSystemModel.ts","models/IProfilZadavateleModel.ts","models/ISubjektModel.ts","models/ISystemKvalifikaceModel.ts","models/IZpModelHist.ts","components/ContentBlock/ContentBlock.tsx","pages/error/Page404.tsx","components/DetailFrame/DetailFrame.tsx","components/Tabs/Tabs.tsx","styles/offsets.ts","components/Grid/Grid.tsx","components/GroupBox/GroupBox.tsx","components/GovLink/GovLinkBase.tsx","components/GovLink/GovLink.tsx","components/GovLink/GovNavLink.tsx","components/Text/Text.tsx","components/Note/Note.tsx","components/DataLabel/DataLabelComponent.tsx","store/enumDescriptionsStore.tsx","components/Button/Button.tsx","components/Modal/Modal.tsx","utils/ReactUtils.ts","crypto/interface/ISignatureInfo.ts","crypto/SignatureUtils.tsx","crypto/CertificateDetail/CertificateDetail.tsx","utils/UseId.tsx","components/Accordion/AccordionPage.tsx","components/Accordion/Accordion.tsx","crypto/CryptoPart/CryptoPart.tsx","crypto/EncryptionInfo/EncryptionInfo.tsx","crypto/CryptoUtils.tsx","utils/DateUtils.ts","components/CompatibilityTest/CompatibilityTests.ts","components/CompatibilityTest/Components/ResultBadge/ResultBadge.tsx","crypto/SignatureInfo/SignatureInfo.tsx","crypto/CryptoDetailSummaryBadge/CryptoDetailSummaryBadge.tsx","crypto/CryptoDetail/CryptoDetail.tsx","components/Loader/LoaderOverlay.tsx","components/Loader/Loader.tsx","components/DocumentSignatureModal/DocumentSignatureModal.tsx","utils/StateUtils.ts","components/DocumentSignatureButton/DocumentSignatureButton.tsx","utils/AttrConverter.tsx","components/DataLabel/DataLabel.tsx","components/Table/TableCell.tsx","components/Table/TableDetailCell.tsx","styles/responsibility.ts","components/Table/TableRow.tsx","components/Table/TableRows.tsx","utils/CombineRefs.ts","components/Table/TableEmptyMessage/TableEmptyMessage.tsx","components/Table/TableHeadCell.tsx","components/Table/Table.tsx","components/ListFrame/DependentListFrame.tsx","components/ListFrame/ListFrameUtils.ts","components/ListFrame/Types.ts","components/ListFrame/ListFrame.tsx","constants/detailLinks.ts","models/IPolozkyDNSModel.ts","models/IDodavateleDNSModel.ts","utils/DescriptionHook.ts","models/IInfoUVerejneniModel.ts","models/IUverejnenyDokumModel.ts","components/Table/Buttons/DownloadAllToolbarButton.tsx","pages/detailDNSystem/DetailDNSystem.tsx","models/IJinaInformaceSubjektuHist.ts","models/ITrzisteModelHist.ts","models/IProfZadavModel.ts","pages/detailProfilZadavatele/page/ZakladniInformace.tsx","utils/EventUtils.ts","components/FilterManager/FilterManagerGroup/FilterManagerGroup.tsx","components/FilterManager/FilterApplyButton/FilterApplyButton.tsx","components/FormControl/FormControl.tsx","components/FilterInput/FilterInput.tsx","components/FilterManager/FilterManagerInput/FilterManagerInput.tsx","utils/ResponsibilityUtils.ts","components/CheckBox/CheckBox.tsx","components/Checks/Checks.tsx","components/EnumChecks/EnumChecks.tsx","components/FilterManager/FilterHeader/FilterHeader.tsx","components/FilterManager/FilterManagerEnum/FilterManagerEnum.tsx","components/BoolChecks/BoolChecks.tsx","components/FilterManager/FilterManagerBool/FilterManagerBool.tsx","components/FilterManager/FilterManagerDate/FilterManagerDate.tsx","components/FilterManager/FilterManagerNumber/FilterManagerNumber.tsx","utils/ScrollUtils.ts","components/WhispererInput/WhispererInput.tsx","components/SelectInput/SelectInput.tsx","utils/LovUtils.ts","components/LOV/LovBase.tsx","components/LOV/LovInput.tsx","components/Multiselect/MultiselectTags/MultiselectTags.tsx","components/Multiselect/Multiselect.tsx","components/LOV/LovMultiselect.tsx","components/FilterManager/FilterManagerLov/FilterManagerLov.tsx","components/FilterManager/FilterManagerRow/FilterManagerRow.tsx","components/InputWithButton/InputWithButton.tsx","components/Search/Search.tsx","components/FilterManager/FilterManager.tsx","models/enumerators/IEnumeratorModel.ts","models/enumerators/IDruhZadavacihoRizeni.ts","models/enumerators/INUTSModel.ts","models/enumerators/INIPEZModel.ts","models/enumerators/ICPVModel.ts","models/enumerators/IHlavniPredmetCinnostiModel.ts","models/enumerators/IPravniFormaModel.ts","models/filters/NipezFilters.ts","pages/verejneZakazky/verejneZakazky/VerejneZakazkyFilter.tsx","pages/detailProfilZadavatele/page/PUTINZakazky.tsx","models/ICinnostSubjektuHist.ts","models/IJinaAdresaSubjektuHist.ts","models/IOsobaModelHist.ts","models/IRelevantniCinnostSubjektuHist.ts","pages/detailProfilZadavatele/page/DalsiInformace.tsx","utils/PageTitleHook.ts","pages/verejneZakazky/registrDns/RegistrDns.tsx","pages/detailProfilZadavatele/DetailProfilZadavatele.tsx","pages/detailSystemKvalifikace/DetailSystemKvalifikace.tsx","models/IEvidUverVVZModel.ts","models/IDetailUverejneniModel.ts","models/IPolozkaPredmetuHistModel.ts","models/IMistoNUTSModelHist.ts","components/InfoText/InfoText.tsx","utils/FormatTextUtils.tsx","components/FormatedText/FormatedText.tsx","components/MultiwebLink/MultiwebLink.tsx","pages/detailVerejneZakazky/DetailVerejneZakazky.tsx","models/ICinnostSubjektuModel.ts","models/ICpvNipezSubjektuModel.ts","models/IJinaAdresaSubjektuModel.ts","models/IJinaInformaceSubjektu.ts","models/IOsobaModel.ts","models/IRelevantniCinnostSubjektuModel.ts","pages/registry/registrySubjektu/detailRegistru/DetailSubjektu.tsx","store/breadcrumbTitleStore.ts","store/statisticsStore.tsx","store/WidgetStore/widgetItemsHelpers.ts","store/WidgetStore/newsWidgetStore.ts","store/WidgetStore/trainingWidgetStore.ts","store/WidgetStore/widgetStore.ts","services/EnumDescriptionService.ts","store/index.ts","store/configureStore.ts","components/UniversalLink/UniversalLink.tsx","components/FooterMenu/FooterMenu.tsx","components/Container/Container.tsx","components/Container/FooterContainer.tsx","components/Accessibility/pageIds.tsx","components/Layout/Footer.tsx","images/nen_logo_white.svg","components/Pictogram/Pictogram.tsx","components/GovMenu/GovMenu.tsx","components/Container/HeaderContainer.tsx","components/LanguageSwitcher/LanguageSwitcher.tsx","components/Logo/Logo.tsx","components/Layout/Header.tsx","components/Breadcrumb/Breadcrumb.tsx","components/ErrorMessage/ErrorMessage.tsx","utils/PathUtils.ts","components/Layout/PageHeading.tsx","components/Alert/Alert.tsx","components/Cookies/CookieBar.tsx","components/FormGroup/FormGroup.tsx","components/Cookies/CookieModal.tsx","components/Accessibility/Shortcuts/Shortcuts.tsx","components/Layout/Layout.tsx","utils/NumberUtils.tsx","components/CountUpSSR/CountUpSsr.tsx","components/Statistics/Statistics.tsx","pages/home/LoginCard/LoginCard.tsx","components/GovLayout/GovLayout.tsx","components/Widgets/News/NewsWidget.tsx","utils/EmailUtils.ts","components/Widgets/NewsSubscribe/NewsSubscribeWidget.tsx","images/logoMMR.svg","images/logoMMR-EN.svg","images/logoNIPEZ.svg","images/logoNIPEZ-EN.svg","components/CriticalInformation/CriticalInformation.tsx","components/Widgets/Training/TrainingWidget.tsx","components/Manuals/Manuals.tsx","pages/home/Home.tsx","components/Breadcrumb/withBreadcrumb.tsx","components/Breadcrumb/BreadcrumbRoute.tsx","components/Routing/SwitchWith404.tsx","pages/verejneZakazky/registrSK/RegistrSK.tsx","utils/TypeUtils.ts","pages/verejneZakazky/verejneZakazky/VerejneZakazky.tsx","pages/verejneZakazky/vestnikNen/VestnikNen.tsx","pages/verejneZakazky/verejneZakazkyPages/VerejneZakazkyPages.tsx","components/IconLabel/IconLabel.tsx","components/CompatibilityTest/Components/CryptoTestResult/CryptoComponentResult/CryptoComponentResult.tsx","components/CompatibilityTest/Components/CryptoTestResult/CryptoTestResult.tsx","components/CompatibilityTest/Components/ResultText/ResultText.tsx","components/Blockquote/Blockquote.tsx","components/CompatibilityTest/CompatibilityTest.tsx","components/GridTile/GridTile.tsx","pages/registrace/rozcestnikRegistrace.tsx","pages/prohlaseniOPristupnosti/prohlaseniOPristupnosti.tsx","pages/profilyZadavatelu/profilyZadavatelu/ProfilyZadavateluFilter.tsx","pages/profilyZadavatelu/profilyZadavatelu/ProfilyZadavateluPlatne.tsx","pages/profilyZadavatelu/profilyZadavatelu/ProfilyZadavateluZneplatnene.tsx","pages/profilyZadavatelu/profilyZadavateluPages/ProfilyZadavateluPages.tsx","pages/detailDetailUver/DetailDetailUver.tsx","pages/detailInfoUver/DetailInfoUver.tsx","pages/detailDodInfo/DetailDodInfo.tsx","pages/registry/registrySubjektu/RegistryDodavateluFilter.tsx","pages/registry/registrySubjektu/RegistryDodavatelu.tsx","pages/registry/registrySubjektu/RegistryZadavateluFilter.tsx","pages/registry/registrySubjektu/RegistryZadavatelu.tsx","pages/registry/registrySubjektuPages/RegistrySubjektuPages.tsx","components/ResizableIframe/ResizableIframe.tsx","components/Widgets/RedirectToDetail.tsx","components/Widgets/LargeWidget.tsx","pages/detailInformace/DetailInformace.tsx","utils/LoginUtils.tsx","styles/colors.tsx","utils/WindowMessageUtils.ts","components/LoginForm/LoginForm.tsx","components/LoginForm/LoginFormFrame/LoginFormFrame.tsx","components/Widgets/SmallWidget.tsx","pages/prihlaseni/Prihlaseni.tsx","pages/informace/Informace.tsx","pages/design/Design.tsx","models/IParametrPolozkyHistModel.ts","pages/detailDetailPolozkaPredm/DetailDetailPolozkaPredm.tsx","pages/verzeProOdstavku/verzeProOdstavku.tsx","pages/skoleni/Skoleni.tsx","pages/videa/Videa.tsx","pages/provozniRad/ProvozniRad.tsx","pages/osobniUdajeACookies/OsobniUdajeACookies.tsx","pages/registrace/TextKRegistracim.tsx","pages/registrace/registraceZadavatel.tsx","pages/registrace/registraceDodavatel.tsx","pages/registrace/registraceSdruzeni.tsx","pages/detailUverDokum/DetailUverDokum.tsx","components/CustomForm/CustomForm.tsx","pages/obnoveniUctu/ObnoveniUctu.tsx","models/IAkceptaceZmenyModel.ts","pages/zmenaHesla/ZmenaHesla.tsx","pages/SkoleniZzvz/SkoleniZzvz.tsx","pages/error/Page413.tsx","pages/detailUdajePod/DetailUdajePod.tsx","pages/detailExtPodpis/DetailExtPodpis.tsx","App.tsx","serviceWorkerRegistration.ts","index.tsx","utils/DescriptionManager.ts","utils/TitleManager.ts","services/DataRowsService.ts","services/EvaluateConditionsService.ts","services/CompatibilityTestService.ts","services/CryptoService.ts","services/InstanceService.ts","services/NENService.ts","services/PasswordResetService.ts","services/HeartBeatService.ts","services/WidgetService.ts"],"names":["isNode","process","versions","node","TaskManager","constructor","_nodeTaskMap","Map","_promises","add","key","action","this","has","promise","set","addPromise","push","needWait","promises","splice","length","Promise","allSettled","getCompletedTasks","size","keys","window","completedTasks","isTaskCompleted","some","t","removeTaskFromCompleted","tasks","indexOf","Element","prototype","parents","selector","elements","elem","isHaveSelector","undefined","parentElement","nodeType","Node","ELEMENT_NODE","matches","closest","msMatchesSelector","webkitMatchesSelector","s","ancestor","document","documentElement","contains","wrap","el","wrapper","parentNode","insertBefore","appendChild","unwrap","replaceWith","childNodes","optionByText","text","buffer","querySelectorAll","forEach","option","insertAfter","newNode","nextSibling","SkeletonPrimaryTheme","_ref","children","_jsx","SkeletonTheme","color","highlightColor","React","memo","SkeletonPrimary","props","Skeleton","Result","hasErrors","errors","Array","isArray","value","_len","arguments","_key","ServiceBase","nodeContext","_nodeContextHttp","url","method","abortSignal","data","axiosResult","result","axiosRequestConfig","headers","cookies","getCookie","getLanguage","signal","processQuery","concat","queryString","stringify","host","Cookie","httpsAgent","require","rejectUnauthorized","Axios","get","post","put","patch","delete","updateCookies","error","isCancel","isAxiosError","_error$response$data","_error$response","response","message","transformKey","toLowerCase","CaseInsensitiveMap","items","super","map","setCookie","cname","cvalue","exdays","sameSite","d","Date","setTime","getTime","expires","toUTCString","sameSiteSettings","test","navigator","userAgent","cookie","CancelError","Error","id","CancellationTokenSource","linkedTokens","_toUnregister","_tokenInternal","_token","lt","register","cancel","e","console","token","_newCTokenAndSetInternals","cancellationRequested","canBeCanceled","registeredMethods","Set","rm","values","clear","close","tu","unregister","_cancellationTokenInternals","WeakMap","internals","ct","CancellationToken","_none","_canceled","_getCTI","debugging","_debugId","throwIfCancellationRequested","createCancelError","callback","cti","none","canceled","PromiseUtils","predicate","resolve","then","loop","startIndexValue","indexLessThan","i","bind","reject","defer","isSettled","isResolved","isRejected","res","promiseValue","thisArg","body","bodyIterator","P","fulfilled","step","next","rejected","throw","done","apply","timeout","cancellationToken","debugInfo","info","registration","hid","self","setTimeout","clearTimeout","cts","delay","func","Symbol","iterator","Queue","_queue","_offset","_Symbol$iterator","_iterator","val","dequeue","isEmpty","enqueue","item","slice","peek","AsyncSemaphore","initialCount","_waiters","_currentCount","wait","_completed","waiter","deferStateful","release","JsEvent","_listeners","enabled","listener","oneTimeOnly","asFirst","unshift","addPredicateLimitedListener","limitingPredicate","remove","l","removeAll","trigger","sender","arg","listeners","listenersForRemoval","listenerData","call","containsListener","ld","mergeWith","eventToMerge","removeListenersFromSourceEvent","waitForEventTrigger","handle","EventAwaiter","eventToAwait","_awaiter","_eventHandler","_isDebugging","time","timeoutId","log","timeEnd","awaiter","PromisesStacker","onTick","_requested","_allRequested","_timeout","_createRequestedSet","getAllResolved","filter","itemPromise","request","itemDeferPromise","_runTimer","requested","timer","_handleTimerTick","_this$onTick","_popRequested","requestedMap","_requested$keys","flatArray","arr","flatArrayDeep","reduce","acc","curr","notNull","notEmpty","isEmptyOrWhitespace","match","notEmptyOrWhitespace","truthy","toArray","emptyIfNull","uniqueArray","arrays","arrayInjectSeparator","separatorFactory","index","is","expceted","_expceted$includes","includes","transposeArray","columns","arrLength","rows","Math","ceil","greaterColumns","columnsItems","itemsCount","column","LocalizationService","DEFAULT_LANGUAGE","_document","_document$documentEle","lang","language","locKeys","locKey","_getLanguageStacker","all","params","requestJson","stacker","_languageStackers","_getLocalizations","_postRequest","localizationsLoaded","locItems","locItem","code","entries","async","_ref2","resultItem","isMissing","warn","MISSING_TEXT","description","getLanguageFromCookie","_this$_nodeContextHtt","cookieLanguage","toUpperCase","supportedLanguages","setLanguageToCookie","_this$_languageStacke","name","toClientError","errorText","createSlice","initialState","reducers","state","_action$payload$map","_action$payload","payload","reducer","getErrorStoreActions","actions","getErrors","createSelector","appInsights","reactPlugin","ReactPlugin","telemetryInitializer","envelope","_envelope$baseType","_envelope$baseData","basetype","baseType","baseData","responseCode","enableApplicationInsightsCookies","config","disableCookiesUsage","isStorageUseDisabled","getCookieMgr","setEnabled","defaultState","showModal","settings","userSet","preferences","statistics","setUserCookieSettings","getUserCookieSettings","actionCreators","saveUserCookieSettngs","dispatch","getState","userCookieSettings","newSettings","encodeURIComponent","JSON","clearAuthenticatedUserContext","getUserCookieSettingsFromCookie","parse","decodeURIComponent","useUserCookiesSetings","useSelector","useDispatch","saveUserCookieSettings","useCallback","acceptAllCookies","rejectAllCookies","setCookiesSetting","openModal","closeModal","currentLanguage","languages","init","updateLanguageData","Object","addLanguageData","changeLanguage","getLanguageState","getLanguagesData","languageStore","getCurrentLanguage","getCurrentLanguageData","languagesData","getLocItemFromLanguageData","languageData","getLocItem","appState","getNodeContext","localizationService","getLocalizationItems","catch","taskManager","defaultText","_dispatch$text","_dispatch","_dispatch$description","_dispatch2","getLocalizationService","manifest","head","querySelector","href","replace","convertParams","_params$i","RegExp","toString","convertNodeParams","every","param","tokens","split","Children","n","Number","randomWidth","minWidth","maxWidth","_minWidth","_maxWidth","max","min","floor","random","createSkeleton","_props$width","SkeletonFactory","isPrimaryTheme","width","useCurrentLanguage","useLocalization","createLocalizationToolkit","currentLanguageData","getLocalizationItem","_ref3","_convertParams","_getLocalizationItem","locParams","loadingElement","_ref4","_convertParams2","_getLocalizationItem2","ts","_ref5","_convertNodeParams","_getLocalizationItem3","ds","_ref6","_convertNodeParams2","_getLocalizationItem4","useLocalizationText","useSwitchByLanguage","switchByLanguage","switchData","en","cz","getTitleManager","titleManager","getDescriptionManager","descriptionManager","getTaskManager","getDataRowsService","dataRowsService","getCompatibilityTestService","compatibilityTestService","getCryptoService","cryptoService","getInstanceService","instanceService","getPasswordResetService","passwordResetService","getHeartBeatService","heartBeatService","getWidgetService","widgetService","getPrivatePortal","privatePortal","getAppSettings","appSettings","useTaskManager","useCryptoService","usePrivatePortal","useAppSettings","getWidget","_appSettings$external","externalWidgets","getCriticalInformation","_appSettings$critical","_appSettings$critical2","_appSettings$critical3","criticalInformation","texts","getSmallWidgetUrl","_appSettings$external2","_getWidget","mainUrl","smallWidgetUrl","getAllWidgetUrl","_appSettings$external3","_getWidget2","allWidgetUrl","getDetailWidgetUrl","_appSettings$external4","_appSettings$external5","_appSettings$external6","detailUrl","baseUrl","getOutageVersion","_appSettings$outageVe","_appSettings$outageVe2","outageVersion","updateDetailWidgetLanguage","query","_appSettings$external7","_appSettings$external8","languageRegex","getManuals","_appSettings$manualsS","_appSettings$manualsS2","showAllUrl","manualsSettings","manuals","getInformationForUsersUrl","informationForUsersUrl","getFaqUrl","faq","joinNonEmpty","separator","segments","join","toFullTextObject","attrName","type","joinConditionsByAnd","conditionParts","part","joinConditionsByOr","_len2","_key2","escapeStringQuery","rtrimText","trimText","endsWith","toSplittedLinguisticLike","serverName","conditionParams","condition","strValue","toLinguisticLike","escapedValue","trim","toSplittedLinguisticContains","toLinguisticContains","createIn","serverAttrName","valuesIn","createSubtreeCondition","attrInfo","inCondition","parentInCondition","createBasicCondition","trueValues","falseValues","createStringCondition","createDateCondition","_ref7","stringValue","from","to","createNumberCondition","_ref8","conditionFactory","trueValue","find","falseValue","typeParam","createFilterCondition","_ref10","attrMapping","urlParams","fulltextParam","fulltextAttributes","filterAttrs","urlParam","getByClientName","attr","conditions","_ref9","_params$attrInfo$filt","filterCondition","createConditionPart","clientName","fulltextValue","fulltextConditionParts","_ref11","toServerName","joinedConditions","combineSegments","segments1","segments2","combineArrays","arr2","s1","s2","item1","item2","filterResult","setupCna","mainClasses","prefixesFlatten","cna","postfixes","classesString","classNames","setupSubCna","_len3","infixes","_key3","subCna","_len4","_key4","main","_len5","_key5","raw","_classNames","with","_len6","className","_key6","cnaWith","_len7","_key7","_len8","_key8","cn","setupSubCn","string","subCn","_len9","_key9","_len10","_key10","cnWith","c","_len11","_key11","_len12","_key12","setupCn","_len13","prefixes","_key13","PaginationArrow","onClick","direction","isDisabled","labelLocKey","directionModificator","Link","rel","PaginationPage","isActive","PaginationSeparator","Pagination","Page","Separator","Arrow","paramsPrefix","createPureUrl","anywhere","_match$params","pureUrl","path","createListUrl","_urlRouteParam","filterParam","urlRouteParam","_match$params2","paramNames","routeParamName","filterParamName","createDetailUrl","detailIdParam","pathWithoutRouteParam","routeParam","pages","pathWithPages","addPageUrl","pageUrl","createDetailPageUrl","home","loginFrame","provozniRad","skoleniVse","videa","videaVse","skoleniZzvz","skoleniZzvzVse","prirucky","provozniInformace","detailInformace","rozcestnikRegistrace","prohlaseniOPristupnosti","registrDns","registrDnsDetail","registrDnsPostupy","vestnik","vestnikDetail","registrSK","registrSKDetail","verejneZakazky","verejneZakazkyDetail","VerejneZakazkyCasti","verejneZakazkyDetailZadavaciDokumentace","verejneZakazkyDetailVysvetleniDokumentace","verejneZakazkyDetailVysledek","verejneZakazkyCastiDetail","verejneZakazkyDetailCastiZadavaciDokumentace","verejneZakazkyDetailCastiVysvetleniDokumentace","verejneZakazkyDetailCastiVysledek","profilyZadavateluPlatne","profilyZadavateluZneplatnene","profilZadavateleDetail","profilZadavateleDetailKontakty","profilZadavateleDetailZahajeneZakazky","profilZadavateleDetailUzavreneZakazky","profilZadavateleDetailPlanovaneZakazky","profilZadavateleDetailSeznamDns","profilZadavateleDetailZadavateleMultiprofilu","detailDetailUver","detailInfoUver","detailDetailPolozkaPredm","detailVysledek","detailVysledekSON","detailucast","detailDodInfo","detailUdajePod","detailOdpoved","detailUverDokum","detailExtPodpis","registrZadavatelu","registrDodavatelu","subjektDetail","subjektDetailDalsiInformace","compatibilityTest","registrace","urlConstants","registraceZadavatel","registraceDodavatel","registraceSpolecneZadavani","prihlaseni","obnoveniUctu","zmenaHesla","design","osobniUdajeACookies","page413","useConstants","useRouteMatch","getUrl","Function","parseParams","parseBooleans","parseNumbers","sort","parseUrlParams","paramsString","startsWith","paramString","paramName","paramValue","splitParam","_separator$length","separatorIndex","qs","getReplacedQueryParamUrl","update","updatedParams","paramKey","paramValues","generateQueryPath","getUpdatedQueryParamUrl","paramStrings","updateValues","k","v","queryParamsString","encode","resultParamsString","generatePath","replaceQueryParamUrl","history","historyState","updateQueryParamUrl","addFilterParamName","otherParams","useUrlParams","allUrlParams","useMemo","filterParams","useUrlParamsExtended","urlParamsBase","useHistory","updateParams","updateUrl","getUpdatedUrl","updateFilterUrl","getUpdatedFilterUrl","replaceUrlParams","getReplacedParamsUrl","replaceFilterUrlParams","getReplacedFilterParamsUrl","renderIf","shouldRender","nodeFactory","elseNodeFactory","_elseNodeFactory","FlexBox","_rest$style","align","justify","gap","rest","justifyModifier","alignModifier","directionModifier","style","displayName","ButtonBase","isOutlined","isInversed","element","isFlat","hasIconOnly","isSecondary","restProps","sizeModifier","styleModifier","disabled","ButtonLink","linkRef","isAnchor","targetBlank","ButtonLinkElement","target","ref","cnBasic","cnComplex","Icon","iconName","isComplex","iconRef","icon","IconElement","isPrimary","primaryColorModifier","govCn","PaginatorLoadMore","getPageRangePath","actualPage","rangeFrom","onPageCount","_jsxs","isLoadMore","parseActualPage","page","pageRange","isFinite","pageIndex","pagContainerCn","PaginatorComponent","_totalCount","_onPageCount","totalCount","loadMoreButton","scrollToRef","isLoading","isLoadingProp","extraButtons","pageScroll","current","scrollY","getBoundingClientRect","top","scrollTo","behavior","pathname","pageRangePath","maxPage","pagesRange","isLast","a","b","buttons","Paginator","_useCollectionPaginat","collectionKey","count","isFetchedOnce","isFetching","onPage","useCollectionPaginator","useOrderByMemo","array","hash","orderby","desc","linguisticTypesRegex","getOrderByColumnSort","orderBy","orderByColumn","orderByPart","collections","setFetching","setFetchedOnce","updateData","collection","isTooGeneralQuery","getAllCollections","collectionsStore","getCollectionInfo","_","loadData","dataRowsParams","service","loadDataWithCount","_result$errors","useManualCollectionManager","attributes","fetchCount","startIndex","collectionInfo","newOrder","createOrderBy","order","_attrMapping$getByCli","_order$desc","controller","objectName","getDataRowAttributes","reloadCollection","useListFrameBase","mapping","isSortable","sortUrlParams","addColumnToUrl","newOrderBy","_paramNames","defaultOrderBy","setDefaultOrderBy","useState","orderByStringToObject","columnsSet","col","hidden","defaultFilterParams","fromEntries","obj","actualFilterParams","useRef","orderByToObjects","_filterParams$name","assign","useSortUrl","filterHiddenColumns","onSortClickCallback","event","objects","object","setConditions","evaluatedConditions","clearObject","getAllObjects","objectsStore","getDetailObjectInfo","loadObject","evaluateConditions","stateSelector","_stateSelector","evaluateConditionsService","setItems","pop","getBreadcrumbItems","breadcrumbStore","getLastBreadcrumbItem","useBreadcrumb","lastItem","title","AttrMapping","clientMap","serverMap","entry","toServerNames","clientNames","toClientNames","serverNames","toClientName","_this$getByClientName","_this$getByServerName","getByServerName","_attributeInfo$requir","attributeInfo","requiredAttriubtes","DNSystemAttrMap","ProfilZadavateleAttrMap","createPredmetCinnostiCondition","subjectAttrName","ciselnikAttrName","SubjektAttrMap","SystemKvalifikaceAttrMap","createPredmetCondition","polozkaAttrName","ZpAttrMap","likeCondition","mistoNutsLike","polozkaPredmetuLike","ContentBlock","withEServiceIcon","lockey","height","_Fragment","Page404","location","useLocation","urlSearchParams","URLSearchParams","search","headlineText","file","DetailFrameContext","createContext","getAttr","evaluateCondition","DetailFrame","loadKey","attrsToLoad","conditionsToEvaluate","setAttrPromise","_state$isFetching","_data$attrName","_state$evaluatedCondi","_state$evaluatedCondi2","useEffect","AbortController","abort","_setAttrPromise","useDetailObject","Provider","useDetailFrameContext","useContext","getTabId","componentId","tabIndex","Tabs","_tabsWithInfo$","tabs","ariaLabel","fallbackTo","headerRight","noMargin","displayAsFlex","linksHolderRef","focusIndex","setFocusIndex","focusId","setFocusId","isTriggerIndex","handleKeyDown","keyCode","preventDefault","_index","_index2","_focusIndex","click","tabsWithInfo","tab","generatedPath","decodeURI","isSelected","selectedTabIndex","findIndex","handleTabFocus","_focusIndex2","focus","evalCond","cond","onKeyDown","role","tabId","showIf","NavLink","activeClassName","onFocus","exact","Switch","Route","component","render","Redirect","bottomSpaceClass","space","offsets","offsetClass","Grid","isPlain","lowerRowSpaces","alignItems","bottomSpace","columnsModifier","alignItemsModifier","bottomSpaceModifier","GroupBox","fillContent","GovLinkBase","isExternal","hasArrow","isStandalone","LinkElement","linkProps","GovLink","NavLinkElement","forwardRef","navLinkProps","innerRef","GovNavLink","Text","isBold","Note","DataLabelComponent","_valueTitle","caption","captionTitle","valueTitle","fillGrid","rawText","notWrapValue","content","descriptions","addDescriptions","newDescriptions","enumDesc","enumName","getAllEnumDescriptions","enumDescriptions","getEnumDescription","enumDescription","enumDescriptionService","getEnumsDescriptions","useEnumDescriptions","_enumDescriptions$enu","Button","buttonRef","ButtonElement","buttonProps","Modal","onClose","headerText","buttonText","noContentOffset","dialogRef","isMounted","setIsMounted","onMouseDown","onKeyUp","_dialogRef$current","currentFocus","activeElement","overflow","addEventListener","removeEventListener","createPortal","useArrayMemo","useStaticObject","useScrollToTop","SignatureInfoType","CertificateUsageType","SignatureValidationMsg","UseCase","isEncrypted","encryptionInfo","encrypted","signatureInfo","validationMessage","IsEncrypted","AttributeEncrypted","AllowUnknownSignature","getSignatureValidationText","localization","validationLocKey","None","SignaturePolicyNotMet","EmptySignature","HashEqualError","IncorrectIssuer","IncorrectKeyUsage","IncorrectIssuerServerCertificate","InvalidReferences","InvalidSignatureType","NeedManualVerification","OnlyDocumentPartSigned","OutOfDate","OutOfDateServerCertificate","Revocated","RevocatedServerCertificate","ServerCertificateError","TimeStampError","UnknownSignature","CantVerifySignature","TryLater","Signing","Failed","getSignatureValidationLocKey","getSignatureStateTooltip","isInCautionTime","getCautionTimeLocKey","cautionTime","_signatureInfo$valida","valid","Empty","getCautionWaitingTime","hours","minutes","seconds","x","parseInt","formatDistinguishedNamePart","nameInfo","partKey","defaultReturnValue","parts","getEncryptionTooltipParts","cryptoInfo","_cryptoInfo$certifica","toLocaleDateString","toLocaleTimeString","certificate","subject","hasSignatureWarning","_signatureInfo$valida2","withCounterSignatures","counterSignature","cs","CertificateDetail","dateFrom","validFrom","dateTo","validTo","usages","certificateInfo","_certificateInfo$cert","certificateKeyUsage","usage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","getSignatureUsagesLocKeys","Fragment","serialNumber","issuer","signatureAlgorithm","hasPrivateKey","version","publicKeyAlgorithm","hashAlgorithm","thumbprint","IdContext","defaultIdFactory","controlId","defaultControlIdFactory","parentId","useGenerateId","childIdFactory","childId","useId","controlIdFactory","generateId","AccordionPage","header","isExpanded","noTopBorder","onToggle","contentRef","contentId","headerId","status","setStatus","actualStatus","firstRender","toggleStatus","useLayoutEffect","contentHeight","scrollHeight","requestAnimationFrame","minHeight","Accordion","isBordered","asSection","asSidebar","noInnerOffset","noInnerYOffset","noInnerXOffset","withModalPadding","CryptoPart","captionDescription","captionIcon","toggleButtonContent","EncryptionInfo","subtextParts","MdLockOutline","algorithm","getCryptoNativeLanguage","createStringStream","referenceUri","objectIdentity","read","clbk","TextEncoder","getName","getMetadata","getReferenceUri","cryptoComponentsPromise","getCryptoComponents","_cryptoComponentsProm","requirejs","SigningSession","SigningExtensionCommunicator","DataConverter","NativeAppStreamReader","SigningActiveXCommunicator","cryptoErrorsromise","isIE","_detect","detect","loadPolyfillForIE","meta","createElement","createSigningSession","debug","signingSession","open","getOKResult","TestResult","ok","nativeApp","nativeComponent","extension","getCryptoDownloadUrl","downloadUrl","_url$startsWith","isDefaultCryptoNativeUrl","linkTarget","getCryptoErrorInfo","CryptoExtensionUnavailableException","EInsufficientVersionException","NativeAppExitedException","NativeAppUnavailableException","ProtectedModeException","getCryptoErrors","_cryptoErrorsromise","CryptoExceptions","failed","notEvaluated","downloadURL","nonCheckable","messageLocKey","nativeAppVersionSufficient","_error$installedNativ","installedNativeAppVersion","requiredVersion","requiredNativeAppVersion","extensionVersionSufficient","_error$installedExten","installedExtensionVersion","requiredExtensionVersion","isCryptoExtensionAttached","Boolean","cryptoNativeCheck","_ref12","attemps","waitForCryptoExtensionInit","_signingSession","dispose","signString","signatureData","profile","_ref13","createTextSignatures","provider","providerId","inputStreams","signingStream","displayStream","createSignGroup","signedInfo","infos","si","stream","bufferToBase64","_signingSession2","zFill","num","strNum","inMs","timeSpanToString","timeSpanInMs","sign","abs","parseDateTime","date","parseFromtoDateTime","fromDate","fromTime","toDate","toTime","updatetDateTimePart","dateTimeString","browserNames","edge","samsung","silk","miui","beaker","chrome","phantomjs","firefox","opera","ie","android","safari","operationSystems","checkBrowserPrivate","browserType","isVersion","isChromiumBased","compareVersions","chromeVersion","isEdgeLegacy","isFirefox","isSafari","checkBrowserPublic","isAndroid","isIOS","checkBrowser","browserInfo","required","_browserInfo$version","detectBrowserType","_ua$match","anyWindow","ua","isCordova","cordova","isChrome","vendor","isChromeIOS","platform","isOpera","privateResult","publicResult","checkCookies","cookieEnabled","actualVersion","requiredVersions","actualVersions","len","checkServiceWorker","browser","checkMultiwebTests","_TescoSW$Compatibilit","WebAssembly","TescoSW","Compatibility","isBlink","checkUICompatibility","testResultSwitch","nullValue","defaultValue","resolutionCheckBase","supportedWidth","supportedHeight","isSupported","isResolutionSupported","screen","resolutionText","getDateTimeDifferenceResult","sysDateTimeString","clientDateTime","sysDateTime","diffInMs","partially","timeSpan","indexedDBTest","indexedDB","dbName","objectStoreName","testKey","testValue","db","createIndexedDB","onUpgradeNeeded","onupgradeneeded","onsuccess","onerror","createObjectStore","transaction","objectStore","setIDBValue","valueInDb","getIDBValue","deleteDatabase","deleteIndexedDB","signTest","textForSign","instanceID","createObject","signed","_ref14","getDigitalSignatureSettings","dataForSign","getDataForSign","signature","sendSignature","profileId","providerType","providerVersion","signatures","signedData","signObject","getCryptographicInfo","ResultBadge","okText","failedText","evaluatingText","notEvaluatedText","partiallyText","nonCheckableText","clickable","noSpace","spaceLeft","evaluating","mainClassName","SignatureInfo","MdWorkspacePremium","timeStamp","MdAccessTime","digitalMark","validationDetails","updateSignatureValidationMessage","hasWarning","warningText","getSignatureState","showWarningIcon","MdWarning","MdCheckCircle","CryptoDetailSummaryBadge","signatureState","headerClass","empty","isSignatureEmpty","CryptoDetail","withoutSummary","withModalPaddig","signatureDownloadLink","signatureDataDescription","hasSignature","isSigned","signatruresDetails","createSignaturesTree","actualSignature","_actualSignature$coun","MdDraw","signatureInsideDocument","LoaderOverlay","Loader","isBlock","withOverlay","elementsCount","Wrapper","DocumentSignatureModal","fileName","modalProps","nanoid","useNanoid","isLoaded","getValue","deps","setValue","useAsyncValueWithState","getDocumentSignatureInfo","useToggleState","setState","prevState","useLoadState","setLoaded","onLoad","loaderTimeout","DocumentSignatureButton","signatureModalParams","isSignatureShown","toggleSignatureShown","stringConverter","_toString","convertDate","options","toLocaleString","isNaN","dateOptions","year","month","day","dateTimeOptions","hour","minute","dateConverter","dateTimeConverter","boolConverter","fileCn","fileStringConverter","formatParam","linkText","_formatParam$getFileN","_formatParam$getFileN2","getFileName","moneyConverter","_toLocaleString","minimumFractionDigits","attrNodeConverters","_enumDescription$item2","intValue","prms","_formatParam$hasDigit","_formatParam$hasDigit2","hasDigitalSignarue","attrToStringConverters","stringAttrValue","_toStringConverter","emptyValue","format","nodeAttrValue","_nodeConverter","EmptyValue","_enumDescription$item","useAttrConverter","requiredParams","withFormat","formatParams","DataLabel","_attrInfo$defaultForm","detailLinkShowIf","detailLink","objectData","defaultFormat","_getAttr$value","_getAttr","showLink","detailElement","DataLabelTyped","getColumnCSSWidth","TableCell","_column$format","_column$formatParam","isSkeleton","TableDetailCell","withArrow","alignRight","breakpoints","responsibility","prefix","breakpoint","display","cnCell","displayNoneStyles","visibility","TableRow","detailLinkFactory","isWide","TableRows","_data$length","_skeletonCount","skeletonCount","isNext","dataCount","row","combineRefs","refs","instance","TableEmptyMessage","TableHeadCell","onSortClick","asc","cnSortable","cnSortableTrigger","cnHeadCell","Table","lightVersion","containerRef","withPaginator","containerInnerRef","headRowRef","sortableCn","loadingInfo","setLoadingInfo","firstColumnWidth","widths","_headRowRef$current","allWidths","td","offsetWidth","getLoadingMinWidth","_loadingInfo$widths","DependentListFrameBase","_detailLinkFactory$ad","listFrameKey","p","finalCondition","finalConditionParams","isFirst","setIsFirst","historyIsLoadMore","_useHistory$location$","pagesCount","fetchCountParam","onpage","_filterCondition$cond","_filterCondition$cond2","conditionParamsMemo","useDependentCollectionManager","additionalAttriubtes","newDetailLinkFactory","extraButtonNodes","ToolbarButton","classname","DependentListFrame","DependentListFrameTyped","getDetailIdLink","titleFactory","_titleFactory","columnWidths","ListFrame","_useHistory$location$2","useCollectionManager","extraButtonsNodes","getZpDetailUrl","zpKod","excludeLoop","isCast","isFromVZ","getZPUrl","kod","getDnsDetailUrl","dnsId","_match$url$includes","isFromDNS","getProfilDetailUrl","profId","replaceProfil","_match$url$includes3","isFromProfil","substring","lastIndexOf","detailLinks","getSubjektDetailUrl","subjId","_match$url$includes2","isFromSubjekt","getLfZpDetailLinkFactory","nazev","getDnsDetailLinkFactory","getDetailInfoUverejneniLinkFactory","_match$url$includes4","isFromInfo","getSkDetailLinkFactory","skNazev","getDetailUverejneniLinkFactory","textVysvetleni","uredniNazev","getUverDokumLinkFactory","getDetailPolozkaPredmetuLinkFactory","nazevPolozky","getDetailDodInfoLinkFactory","predmet","getDetailUdajePodaniLinkFactory","getDetailDodInfoSonLinkFactory","idInfoUver","predmetInfo","getProfilZadavateleDetailLinkFactory","factory","_data$adresaProfilu$s","_data$adresaProfilu","adresaProfilu","nazevOrganizace","getDetailSubjektLinkFactory","getDetailExtPodpisLinkFactory","PolozkyDNSAttrMap","DodavateleDNSAttrMap","useDescription","useDetailDescription","InfoUverejneniAttrMap","UverejnenyDokumAttrMap","podepsan","downloadButtonOnly","btoa","registrDnsDetailLoadkey","parseDnsUrl","prepareDnsCondition","commonDescriptionParts","DetailDNS","_getAttr2","ListFrameKomodity","ListFrameDodavatele","ListFrameZadavaciDokumentace","ListFrameVysvetleniZD","komodityModelColumns","dodavateleModelColumns","PostupyDNS","ListFrameZakazky","zakazkyModelColumns","vysvetleniZDModelColumns","zaddokumDNSModelColumns","DetailDNSystem","JinaInformaceSubjektuHistAttrMap","TrzisteHistAttrMap","IProfZadavAttrMap","detailProfilZadavateleLoadKey","IProfZadavModelColumns","ListFrameProfZadav","jinaInformaceSubjektuModelColumns","ListFrameJinaInformaceSubjektu","trzisteModelColumns","ListFrameTrziste","uverejneneDokumentyModelColumns","ListFrameUverejneneDokumenty","ZakladniInformacePage","stopPropagation","FilterGroupContext","FilterManagerGroup","defaultVisible","filterValues","useFilterManagerContext","handleContentToggle","isContentHidden","registerFilterName","useFilterGroupExpandToggle","toggleIsContentHidden","setIsContentHidden","canAutotoggle","filterNames","setFilterNames","filterGroupContext","isVisible","usePreventDefaultCallback","eventHandler","filterName","prevFilterNames","useStopPropagationCallback","FilterApplyButton","NoContainer","FormControlContext","FormControl","_ControlContainer","_headerTitle","labelFor","headerTitle","afterLabel","container","ControlContainer","isCustom","hasError","isDate","isTime","onFormControlKeyUp","onFormControlClick","defaultBehaviorUnset","labelClassName","afterContainer","htmlFor","dateInputSettings","placeholder","FilterInput","_value","_placeholder","onChange","onInputChange","onInputChangeDone","onChangeDone","autoComplete","useApplyButton","afterButtons","onBlur","inputRef","inputRefProp","isInline","clearRequesting","formControlProps","actualValue","setActualValue","defaultPlaceholder","isInputStandalone","_value2","handleInput","_event$nativeEvent","nativeEvent","HTMLInputElement","handleChange","handleChangeDone","reason","_inputRef$current","_inputRef$current2","_inputRef$current3","newValue","handleApplyClick","handleBlur","applyButton","inputAttributes","onInput","FilterManagerInput","onFilterValueChange","setIsChanged","filterValue","isChanged","applyValue","useChangingFilterValue","cnCheckBox","CheckBox","isRequired","isChecked","checked","checksColumns","columnsBreakpoints","oneColumn","twoColumns","threeColumns","getItemOrderClasses","columnsCount","breakpointClass","property","breakpointPart","valuePart","Checks","handleCheck","enumValue","newCheckedValues","checkedValue","orderedItems","_a$order$oneColumn","_a$order","_b$order$oneColumn","_b$order","createTransposeOrder","oneColumnOrder","EnumChecks","hiddenValues","hiddenValuesMemo","filteredItems","_item$name","actualOrder","getItemOrder","_actualOrder$columnsC","FilterHeader","withSpace","FilterManagerEnum","BoolChecks","FilterManagerBool","moreColumns","getApplyValuePart","repeat","getApplyValue","parseFromToDateTime","FilterManagerDate","hideTime","oldValue","actualApplyValue","processNewValue","newVal","fromToString","updateFromToDateTimePart","inputName","prevValue","FilterManagerNumber","_actualRawValue$","actualRawValue","isFromChanged","setFromValue","isToChanged","setToValue","resultValue","scrollContainer","itemHeight","offsetHeight","itemTop","offsetTop","itemBottom","scrollTop","scrollLeft","clientHeight","WhispererInputContainerContext","whispererId","isCollapsed","containerClass","WhispererInputContainer","WhispererInput","onWhispererShow","onWhispererScrollDown","onItemSelected","classes","setIsCollapsed","preselectedIndex","setPreselectedIndex","whispererRef","handleItemSelected","checkWhispererScroll","acceptedPixels","isScrollDown","handleWhispererScroll","itemsMemo","itemClass","onMouseMove","whisperer","whispererClass","onScroll","handleContainerClick","containerContext","componentClass","handeFormControlKeyUp","_items$length","itemsLength","_items$preselectedInd","handleInputKeyDown","handleFocus","selectClasses","SelectInput","getLovText","lovData","showAttrs","showAttr","getLovItems","maxCount","abortController","fullCondition","getLovLikeItems","lovToWhispererItem","useLovBase","maxItems","filterDefaultText","selectedItemsAreInWhiperer","showAttrsArray","filterText","setFilterText","whispererData","setWhispererData","isAll","itemsNextCount","setItemsNextCount","selectedItems","setSelectedItems","fetchSelectedCount","_result$collection","valueIds","resultValues","getKey","toMap","handleWhispererScrollDown","_whispererData$data$l","_whispererData$data","prev","handleFilterChange","handleValueChange","_whispererData$data2","controlProps","LovInput","_selectedItems$","validateCounter","setValidateCounter","isInvalid","setIsInvalid","selectedItem","setSelectedItem","attrsValues","attrValue","exactFullCondition","exactResult","likeResult","getExactLovValue","exactValue","_exactValue$id$toStri","_exactValue$id","_item$data","_item$data$id","itemText","defaultProps","MultiselectTags","onRemove","renderedItems","multiselectClasses","Multiselect","onSelectedItemsChanged","handleItemRemove","itemToRemove","_selectedItems$filter","selectedIds","itemToAdd","selectedItemsNode","formControlContext","notSelectedItems","LovMultiselect","handleSelectedItemsChange","FilterManagerLov","actualCondition","FilterManagerRow","cnSearch","InputWithButton","placeholderLocKey","buttonTextLocKey","buttonTitleLocKey","disableButton","inputType","shouldClearInput","inputValue","setInputValue","disable","disabledIfEmpty","buttontextId","buttonContent","handleButtonClick","currentTarget","inputElement","buttonOnclick","Search","handleFilterValueChange","FilterManagerContext","FilterManager","isAppliedFilter","changedNames","setChangedNames","requestClear","useRefreshState","MAX_SAFE_INTEGER","handleClearAll","changeUrlValue","handleIsChangedUpdate","iremoveFromArray","iaddToArray","filterManagerContext","isQueryChanged","setQueryValue","applyQueryValue","withAdvanced","useFilterGroupRegister","GroupsContainer","Group","Row","Input","Enum","Bool","Lov","createEnumeratorAttrMap","DruhZadavacihoRizeniAttrMap","NUTSModelAttrMap","NIPEZModelAttrMap","CPVModelAttrMap","HlavniPredmetCinnostiAttrMap","PravniFormaAttrMap","kodNazevAttrs","lovCPVConditionFactory","cpv","lovNIPEZConditionFactory","nipez","FilterManagerBase","druhVZHiddenValues","druhVZOrder","typVZOrder","stavZPHiddenValues","stavZPOrder","lovNipezConditonFactoryFunction","lovCPVConditonFactoryFunction","VerejneZakazkyFilter","hideActualState","actualStateHiddenValues","actualStateHiddenValuesMemo","useNewArrayMemo","defaultColumns","_columns","CinnostSubjektuHistAttrMap","JinaAdresaSubjektuHistAttrMap","OsobaHistAttrMap","RelevantniCinnostSubjektuHistAttrMap","jinaAdresaModelColumns","ListFrameJinaAdresa","osobaModelColumns","ListFrameKontaktniOsoby","hlavniPredmetCinnostiModelColumns","ListFrameHlavniPredmetCinnosti","druhRelevantniCinnostiModelColumns","ListFrameDruhRelevantniCinnosti","zadavateleMultiprofiluModelColumns","ListFrameZadavateleMultiprofilu","DalsiInformacePage","usePageTitle","newTitle","registrDnsLoadKey","RegistrDns","listFrameRef","parseProfilUrl","kodProfilu","idSubj","prepareProfilCondition","_joinConditionsByOr","routeParamNameMulti","zahajeneZakazkyParamNames","uzavreneZakazkyParamNames","planovaneZakazkyParamNames","dnsProfilParamNames","actualStateHiddenUkonceneZakazky","PageDetailuProfiluZadavatele","zpZahajeneColumns","zpUkonceneColumns","zpPlanovaneColumns","ListFrameDnsProfil","seznamDnsProfilColumns","padding","DetailProfilZadavatele","registrSKDetailLoadkey","parseSkUrl","prepareSkCondition","DetailSK","ListFrameDokum","dokumModelColumns","DetailSystemKvalifikace","EvidUverVVZAttrMap","DetailUverejneniAttrMap","PolozkaPredmetuHistAttrMap","MistoNUTSAttrMap","InfoText","newLineToBr","_text$split$map","line","useFormatText","textToFormat","_newLineToBr","formatText","FormatedText","boldPrimaryColor","formatedText","MultiwebLink","urlParamsString","hasPrivatePortal","createHref","detailVerejneZakazkyLoadKey","parseVZUrl","urlCode","isVerejnaZakazka","prepareVZCondition","ZakladInfo","_getAttr3","dnsDetailLink","zakazkaDetailLink","ListFramePolozky","ListFrameMistoPol","ListFrameMisto","ListFrameEvidenceUver","ListFrameEvidUverVVZ","mistoModelColumns","mistoPolModelColumns","polozkyPredmetuModelColumns","evidUverVVZModelColumns","evidenceUverModelColumns","Casti","ListFrameCasti","ListFramePropojeneCasti","castiModelColumns","propojeneCastiModelColumns","ZadavaciDokumentace","ListFrameZadDokum","ListFramePrilohaPoloz","ListFrameOstatDokum","ListFrameUdajePodani","udajPodModelColumns","zaddokumModelColumns","prilohaPolozkyModelColumns","ostatdokumModelColumns","VysvetleniDokumentace","_ref15","ListFrameVysvetleni","vysvetleniModelColumns","_ref16","VysvetleniDokumentaceSON","_ref17","ListFrameVysvetleniSON","vysvetleniSONModelColumns","_ref18","Vysledek","_ref19","ListFrameVysledek","ListFramevysledekSON","ListFrameVysledekDokum","ListFrameDodatek","ListFrameUcast","ListFrameUcastPT","ListFramePlneni","ListFrameDetailPZ","ListFrameOduvodSON","ListFrameOsoby","ListFrameSubdod","vysledekdokumModelColumns","_ref20","vysledekModelColumns","_ref21","VysledekSONModelColumns","_ref22","ucastModelColumns","_ref23","ucastPTModelColumns","_ref24","dodatekModelColumns","_ref25","plneniModelColumns","_ref26","DetailPZModelColumns","_ref27","DetailOduvodSONModelColumns","_ref28","OsobyModelColumns","_ref29","subdodModelColumns","_ref30","DetailVerejneZakazky","zp","CinnostSubjektuAttrMap","CpvNipezSubjektuAttrMap","JinaAdresaSubjektuAttrMap","JinaInformaceSubjektuAttrMap","OsobaAttrMap","RelevantniCinnostSubjektuAttrMap","detailSubjektuLoadkey","parseSubjektUrl","prepareSubjektCondition","DetailSubjektu","ZakladniInformace","DalsiInformace","ListFrameClen","ListFrameNipez","ListFrameRelevantniCinnost","clenSdruzeniColumns","cpvNipezSubjektuModelColumns","cinnostSubjektuColumns","relevantniCinnostSubjektuColumns","ListFrameJineAdresy","ListFrameDalsiInformace","jineAdresySubjektuColumns","kontaktniOsobySubjektuColumns","dalsiInformaceSubjektuColumns","objectTitles","setObjectTitle","getBreadcrumbState","getBreadcrumbObjectTitles","breadcrumbTitleStore","load","_params$attributes","useTitleFactory","parser","fallbackLockey","fetchingStarted","statisticsData","setStatistisc","setFetchingStarted","getStatistics","getStatisticsData","getStatisticsTaskKey","nenService","createWidgetItemsSlice","setErrors","newsStoreName","trainingStoreName","slices","NewsWidgetStore","TrainingWidgetStore","widgetRootReducer","combineReducers","getWidgetStoreState","widgetStore","getWitgetItems","sliceKey","_widgetStore$sliceKey","useWidgetItems","keyOfSlice","queryFilter","controllerEndPoint","loadItems","endPoint","EnumDescriptionService","_EnumDescriptionServi","_promiseStacker","_getEnumsDescriptions","enumNames","_EnumDescriptionServi2","_EnumDescriptionServi3","enumDescriptionsLoaded","Localization","NodeContextStore","BreadcrumbStore","EnumDescriptionsStore","ErrorsStore","CollectionStore","DetailObjecStore","StatisticsStore","BreadcrumbTitleStore","UserCookieSettingsStore","WidgetStore","routerReducer","LOCATION_CHANGE","AnchorLink","sameTarget","UniversalLink","aProps","FooterMenu","defaultElement","Container","_Element","asPage","branded","noYOffset","Footer","FooterContainer","pageIds","scrollUp","anotherEnvironment","serviceDesk","faqUrl","tel","telNoSpace","BsPencilSquare","linkLocKey","Pictogram","src","nenlogo","alt","MenuTabIndexContext","GovMenu","links","onLinkClick","setTabIndex","initial","setInitial","r","visibleRefs","_visibleRefs$tabIndex","setAttribute","link","linkHref","ContainerElement","HeaderContainer","isNavigationActive","enRegExp","LanguageSwitcher","allLanguages","isEnInUrl","altLink","base","hreflang","cnEnv","Logo","isTestEnvironment","isActiveLinkFactory","urls","Header","toggleNavigation","onMobileLinkClick","Breadcrumb","lockeyPattern","DEFAULT_MESSAGE","OFFLINE_MESSAGE","TOO_MANY_REQUEST_MESSAGE","DEFAULT_HEADER","CLOSE_TEXT","useErrorMessage","_window","_window$navigator","onLine","_error$errorText","_error$errorText$incl","userErrors","isUserException","_errorText$includes","isLocKeyError","errorTitle","usedTexts","usedLocKeys","_error$errorText2","ErrorMessage","useErrorStore","dismiss","normalizePath","_path","endSlash","startSlash","end","joinPath","optionsOrSegment","segment","pathName","hideHeader","typeClasses","basic","inversed","warning","Alert","_type","_typeClasses$type","closeButton","typeClass","closed","setClosed","closeFunc","CookieBar","FormGroup","PreferencesForm","CookieModal","Shortcuts","accessKey","Layout","isHome","PageHeading","formatNumber","decimals","decimal","int","dec","round","randomInteger","CountUpSsr","countUpProps","start","suffix","formatedNumber","CountUp","countUpRef","cnSection","Section","counterProps","suffixNode","Statistics","_statistics$pocetZada","_statistics$pocetZada2","_statistics$pocetDoda","_statistics$pocetDoda2","_statistics$pocetZaka","_statistics$pocetZaka2","_statistics$hodnotaZa3","counterStarted","setCounterStarted","duration","useStatistics","hodnotaZakazek","_statistics$hodnotaZa","_statistics$hodnotaZa2","mldValue","floorMld","hodnotaZakazekCelkem","mantissa","exponent","fractionDigits","cutType","toExponential","getExponentionalParts","ReactVisibilitySensor","active","partialVisibility","delayedCall","pocetZadavatelu","pocetDodavatelu","pocetZakazekCelkem","LoginCard","loginCaption","flex","loginLocKey","colCn","GovLayout","leftCol","rightCol","ratio","spreadLeft","spreadRight","ratioModifier","spreadLeftModifier","spreadRightModifier","cnGrid","cnPrev","NewsWidget","urlBase","short_description","updated","emailPattern","NewsSubscribeWidget","setHasError","setShowModal","callWasSuccessful","setCallWasSuccessful","controllerRef","submitForm","newsSubscribe","CriticalInformation","TrainingWidget","trainingsType","linkTo","isZzvzTraining","label","u_training_date","trimSeconds","u_training_time_from","u_training_time_to","u_training_address","_time$substring","cnContainer","Manuals","manual","Home","NewsSubscribe","ministerstvo","ministerstvo_en","nipez_en","BreadcrumbContext","WithBreadcrumb","prependHome","breadCrumbItems","appendItems","breadRenderKey","addItems","BreadcrumbRoute","Component","_this$props$computedM","_routeProps$location","_this$context","brComponent","hideBreadcrumbHome","routeProps","withBreadcrumb","computedMatch","matchPath","context","route","contextType","SwitchWith404","registrSkLoadKey","RegistrSk","listFrameProps","vzLoadKey","VerejneZakazky","listFrameContainer","vestnikLoadKey","VestnikNen","VerejneZakazkyPages","RegistrSK","icons","information","IconLabel","_icons$type","_icon","withMargin","defaultIcon","CryptoComponentResult","_componentInfo","componentInfo","CryptoTestResult","ResultText","Blockquote","typeModifier","subRowHeaderCn","nevyhodnocenoLK","nepodporovanoLK","povolenoLK","anoLK","neLK","nepovolenoLK","podporovanoLK","neuplnneLK","castecnePodporovanoLK","useTestState","publicResultFnc","privateResultFnc","afterTest","testResult","setTestResult","runningPromise","runTestFnc","newTestResult","newResult","runTest","isResult","states","resultSelector","isNotResult","allTestOk","tests","runTestsIfNot","testsPromises","testsResults","getfinallyTestResultLK","CompatibilityTest","_serviceWorkerTest$re","_serviceWorkerTest$re2","_serviceWorkerTest$re3","_indexedDBUseTest$res","_indexedDBUseTest$res2","_indexedDBUseTest$res3","_minimalResolutionTes","_minimalResolutionTes2","_recommendedResolutio","_recommendedResolutio2","_timeDifferenceTest$r","_timeDifferenceTest$r2","_signingTest$result","testService","browserName","browserOs","getBrowserAndOs","os","resolution","cryptoNativeTest","browserTypeTest","serviceWorkerTest","indexedDBUseTest","popupsTest","popupWindowCheck","popupWondow","multiwebSupportTest","signingTest","cookiesEnabledTest","minimalResolutionTest","checkMinimalResulution","publicTest","privateTest","resolutionPrivateText","resolutionPublicText","recommendedResolutionTest","checkRecommendedResulution","timeDifferenceTest","getSysDateTime","browserTestsResult","allTestResult","runTests","handleSignTest","signTestDisabled","rowSpan","scope","colSpan","GridTile","RozcestnikRegistrace","MdOutlineHandyman","MdOutlinePerson","MdOutlineGroups","ProhlaseniOPristupnosti","ProfilyZadavateluFilter","profilyZadavateluLoadKey","ProfilyZadavateluPlatne","frameContainer","RegistrZadavateluFilter","ProfilyZadavateluZneplatnene","ProfilyZadavateluPages","detailDetailUverLoadkey","DetailUver","ListFrameSdruzeniDod","SdruzDodModelColumns","DetailDetailUver","DetailInfo","ListFrameVysledekSON","ListFrameDetailOduvodSoN","ListFrameVvz","ListFrameZpravaVysvetleniSON","ListFrameZpravaVysvetleni","ListFrameZpravaUdajePod","ListFrameDokumVys","udajePodModelColumns","SubdodModelColumns","DetailOduvodSoNModelColumns","VVZModelColumns","UcastModelColumns","UcastPTModelColumns","VysledekModelColumns","dokumVysledekModelColumns","DetailInfoUver","detailDodInfoLoadkey","DetailVys","ListFramePriloha","prilohaModelColumns","DetailDodInfo","RegistryDodavateluFilter","registrDodavateluLoadKey","RegistrDodavatelu","RegistryZadavateluFilter","registrZadavateluLoadKey","RegistrZadavatelu","RegistryPages","ResizableIframe","iframeRef","iframeResizer","iframeR","heightCalculationMethod","frameBorder","RedirectToDetail","baseDetailUrl","reset","useWidgetDetailRedirect","_appSettings$external10","setUrl","source","mainURL","_appSettings$external9","onMessage","origin","URL","redirect","setRedirect","_iframeRef$current","contentWindow","newWindow","opener","detail","LargeWidget","withoutLoader","DetailInformace","_iframeRef$current2","rect","requireAsync","modules","loadedModules","replaceFunction","funcFactory","getLoginModulesPromise","getLoginModules","_getLoginModulesPromi","appConfigurationModule","globalContextModule","AppConfiguration","GlobalContext","ContextType","oldFunction","defineProperty","nen","loginInit","getLoginState","login","loginWithToken","logout","redirectToApp","initCheckLoginInterval","tryChangeLanguage","lightwebAuthManager","getAppUrl","_urlParams$get","appSearch","colors","useWindowMessage","actionName","postWindowMessage","postMessage","LoginForm","swLoaded","useMwServiceWorker","setSwLoaded","refreshing","serviceWorker","reload","waiting","existed","installing","sw","loginStatus","setLoginStatus","loginResult","setLoginResult","userName","setUserName","password","setPassword","userNameInputRef","portalUrl","updateLoginInfo","getLoginInfo","checkAdminLoginLanguage","isLogged","loginLangLocKey","_loginStatus$isLogged","afterLoginConfirmLocKey","isSucceful","handleUserNameChange","handlePasswordChange","stopIntervalPromise","stopInterval","parent","notify","ro","ResizeObserver","observe","disconnect","checkLoginResult","_userNameInputRef$cur","_userNameInputRef$cur2","errorCode","setSelectionRange","_top","currentWindow","handleLogin","isInProgress","loginCredentials","errorMessage","handleLogout","errorLocKey","onSubmit","LoginFormFrame","iframeHeight","setIframeHeight","canLogin","useAsyncValue","urlParamsToString","iframeParams","append","loginIframeUrl","_iframeRef$current$co","_iframeRef$current$co2","readyState","_iframeRef$current3","SmallWidget","allLink","withPadding","position","titleLockey","Prihlaseni","loginBlock","Informace","Design","justifyContent","backgroundColor","ParametrPolozkyHistModelAttrMap","detailDetailPolozkaPredmLoadkey","DetailPolozka","ListFrameParametr","parametrModelColumns","DetailPolozkaPredm","verzeProOdstavku","Skoleni","Videa","ProvozniRad","personalInfoCn","OsobniUdajeACookies","TextyKRegistracim","additionalLinks","documentsForDownload","faqGetDigitalSignature","operatingRules","TextyKRegistracimZadavatel","TextyKRegistracimDodavatel","RegistraceZadavatel","RegistraceDodavatel","RegistraceSdruzeni","detailUverDokumLoadkey","DetailDokum","ListFramePodpis","podpisModelColumns","DetailUverDokum","cnRule","isOptionalValid","validation","_validation$optional$","_validation$optional","_validation$optional$2","_validation$optional$3","_validation$optional2","optional","rules","rule","minimalRequired","isFieldValid","_validation$required$","_validation$required","_validation$required$2","isRequiredValid","validate","touch","newState","fieldName","validateField","_state$fieldName$vali","_state$fieldName$vali2","_state$fieldName$vali3","_state$fieldName$vali4","_state$fieldName$vali5","_state$fieldName$vali6","_state$fieldName$vali7","_state$fieldName$vali8","testRule","_rule$regex$test","_rule$regex","_rule$regex$test2","_state$fieldName$valu","_rule$custom","_state$fieldName$valu2","regex","custom","requiredRules","optionalRules","changedOnce","FormContentWrapper","ValdiationRuleLabelFactory","formState","_formState$fieldName$2","_formState$fieldName$3","_formState$fieldName$4","_formState$fieldName$5","_formState$fieldName$6","_formState$fieldName$7","_formState$fieldName$8","ValdiationRuleLabel","isOptional","MdDone","MdClose","CustomForm","formDescLockey","handleSubmit","loading","isValid","setFormState","setLoading","setIsValid","useCustomForm","_formState$fieldName$","ObnoveniUctu","passwordService","errorStoreActions","setRequested","_state$email","_state$email$value","_state$username","_state$username$value","resetRequest","email","username","AkceptaceZmenyAttrMapping","Form","setRequestState","guid","_state$password","_state$password$value","_state$passwordConfir","_state$passwordConfir2","resetConfirm","passwordConfirm","sucess","_value$toLowerCase","_getAttr$value$toLowe","_getAttr2$value","ZmenaHesla","_useQuery","requestState","SkoleniZzvz","Page413","detailUdajePodLoadkey","ListFrameZpravaPoskytnuti","poskytnutiModelColumns","DetaillUdajePod","DetailPodpis","DetailExtPodpis","getTitle","useBreadcrumbTitle","getVZTitle","getProfilTitle","getDnsTitle","getSkTitle","getSubjektTitle","isOutageVersion","useHeartBeat","beat","heartBeatTimeout","VerejnaZakazkaDetailRoute","DNSDetailRoute","InfoUverDetailRoute","SubjektDetailRoute","UverDokumDetailRoute","ProfilZadavateleDetailRoute","RegistrySubjektuPages","VerejnaZakazkaDetailSubRoute","VysvetleniZDDetailRoute","isLocalhost","hostname","registerValidSW","swUrl","onupdatefound","installingWorker","onstatechange","onUpdate","onSuccess","bundles","paths","getElementsByTagName","getAttribute","createBrowserHistory","basename","getMetaValue","_document$querySelect","initialStateMeta","completedTasksMeta","appSettingsMeta","publicPortalPath","_getMetaValue","createPrivatePortal","privatePortalPath","_publicPortalPath","axios","defaults","baseURL","withCredentials","nodeContextHttp","setCookies","_setCookies","_cookies","cookieName","ca","getCookieFromString","store","http","_description","_title","_params$conditionPara","_params$conditionPara2","_params$conditionPara3","middleware","thunk","routerMiddleware","rootReducer","router","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","disposeStore","initStore","onLocLoaded","onEnumDescriptionLoaded","getAllLocItems","getAllDescriptions","configureStore","useApplicationInsights","instrumentationKey","ApplicationInsights","extensions","extensionConfig","identifier","loadAppInsights","addTelemetryInitializer","trackPageView","appInsightsKey","ReactDOM","ConnectedRouter","AppInsightsContext","App","getElementById","fetch","contentType","ready","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.73269457.chunk.js","sourcesContent":["export const isNode = typeof process === 'object' && process.versions && !!process.versions.node;\r\n\r\nexport class TaskManager {\r\n private _nodeTaskMap = new Map<string, Promise<unknown>>();\r\n private _promises: Promise<unknown>[] = [];\r\n\r\n public add(key: string, action: () => Promise<unknown>): void {\r\n if (isNode && !this._nodeTaskMap.has(key)) {\r\n const promise = action();\r\n this._nodeTaskMap.set(key, promise);\r\n this.addPromise(promise);\r\n }\r\n }\r\n\r\n public addPromise(promise: Promise<unknown>) {\r\n if (isNode) {\r\n this._promises.push(promise);\r\n }\r\n }\r\n\r\n public async waitAll(): Promise<void> {\r\n if (isNode) {\r\n while (this.needWait()) {\r\n const promises = this._promises.splice(0, this._promises.length);\r\n await Promise.allSettled(promises);\r\n } \r\n }\r\n }\r\n\r\n public needWait(): boolean {\r\n return isNode && this._promises.length > 0;\r\n }\r\n\r\n public getCompletedTasks(): string[] {\r\n if (isNode) {\r\n if (this._nodeTaskMap.size > 0)\r\n return [...this._nodeTaskMap.keys()];\r\n\r\n return [];\r\n }\r\n\r\n return (window as any).completedTasks;\r\n }\r\n\r\n public isTaskCompleted(key: string): boolean {\r\n if (!isNode && (window as any).completedTasks) {\r\n return ((window as any).completedTasks as string[]).some(t => t === key);\r\n }\r\n return false;\r\n }\r\n\r\n public removeTaskFromCompleted(key: string): void {\r\n if (!isNode && (window as any).completedTasks) {\r\n const tasks = ((window as any).completedTasks as string[])\r\n tasks.splice(tasks.indexOf(key), 1);\r\n }\r\n }\r\n}\r\n","/**\r\n * @param {Element|HTMLElement|null} element\r\n * @return {Element|null}\r\n */\r\nexport const getFirstFocusableElement = (element = null) => {\r\n element = element || document;\r\n const elements = element.querySelectorAll('button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\r\n return elements.length ? elements[0] : null;\r\n}\r\n\r\n/**\r\n * The parents() method returns all ancestor elements of the selected element.\r\n * @param selector\r\n * @returns {[Element|HTMLElement]}\r\n */\r\nElement.prototype.parents = function (selector) {\r\n let elements = [];\r\n let elem = this;\r\n let isHaveSelector = selector !== undefined;\r\n\r\n while ((elem = elem.parentElement) !== null) {\r\n if (elem.nodeType !== Node.ELEMENT_NODE) {\r\n continue;\r\n }\r\n\r\n if (!isHaveSelector || elem.matches(selector)) {\r\n elements.push(elem);\r\n }\r\n }\r\n\r\n return elements;\r\n};\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n }\r\n\r\n Element.prototype.closest = function (s) {\r\n let el = this;\r\n let ancestor = this;\r\n\r\n if (!document.documentElement.contains(el)) return null;\r\n\r\n do {\r\n if (ancestor.matches(s)) return ancestor;\r\n\r\n ancestor = ancestor.parentElement;\r\n } while (ancestor !== null);\r\n\r\n return null;\r\n };\r\n}\r\n\r\nif (!Element.prototype.wrap) {\r\n function wrap(el, wrapper) {\r\n el.parentNode.insertBefore(wrapper, el);\r\n wrapper.appendChild(el);\r\n }\r\n\r\n Element.prototype.wrap = function (wrapper) {\r\n let elem = this;\r\n wrap(elem, wrapper)\r\n }\r\n}\r\n\r\nif (!Element.prototype.unwrap) {\r\n Element.prototype.unwrap = function () {\r\n this.replaceWith(...this.childNodes);\r\n }\r\n}\r\n\r\nif (!Element.prototype.optionByText) {\r\n Element.prototype.optionByText = function (text) {\r\n let elem = this;\r\n const buffer = [];\r\n elem.querySelectorAll('option').forEach((option) => {\r\n if (option.text === text) buffer.push(option);\r\n });\r\n return buffer.length ? buffer[0] : null;\r\n }\r\n}\r\n\r\nif (!Element.prototype.insertAfter) {\r\n Element.prototype.insertAfter = function (newNode) {\r\n let referenceNode = this;\r\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n }\r\n}\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { SkeletonTheme } from \"react-loading-skeleton\";\r\n\r\nexport type SkeletonPrimaryThemeProps = PropsWithChildren<{}>;\r\n\r\nconst SkeletonPrimaryTheme: FC<SkeletonPrimaryThemeProps> = ({\r\n children\r\n}) => {\r\n return (\r\n <SkeletonTheme color='#4091c7' highlightColor='#69a9d3'>\r\n {children}\r\n </SkeletonTheme>\r\n );\r\n};\r\n\r\nexport default React.memo(SkeletonPrimaryTheme);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport Skeleton, { SkeletonProps } from \"react-loading-skeleton\";\r\nimport SkeletonPrimaryTheme from \"./SkeletonPrimaryTheme\";\r\n\r\nexport type SkeletonPrimaryProps = PropsWithChildren<SkeletonProps>;\r\n\r\nconst SkeletonPrimary: FC<SkeletonPrimaryProps> = (props) => {\r\n return (\r\n <SkeletonPrimaryTheme>\r\n <Skeleton {...props} />\r\n </SkeletonPrimaryTheme>\r\n );\r\n};\r\n\r\nexport default React.memo(SkeletonPrimary);\r\n","import Axios, { AxiosRequestConfig, AxiosResponse } from \"axios\";\r\nimport { isNode } from \"@utils/node-utils\";\r\nimport queryString from \"query-string\";\r\nimport { NodeContextHttp } from \"@store/nodeContextStore\";\r\nimport { ClientError } from \"@store/errorStore\";\r\n\r\nexport interface IRequestOptions {\r\n url: string;\r\n data?: any;\r\n abortSignal?: AbortSignal;\r\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\r\n}\r\n\r\nexport class Result<T> {\r\n public value: T;\r\n public errors: (ClientError | string)[];\r\n public get hasErrors(): boolean {\r\n return this.errors != null && Array.isArray(this.errors) && this.errors.length > 0;\r\n }\r\n\r\n constructor(value: T, ...errors: (ClientError | string)[]) {\r\n this.value = value;\r\n this.errors = errors?.[0] ? errors : [];\r\n }\r\n}\r\n\r\nexport abstract class ServiceBase {\r\n protected _nodeContextHttp: NodeContextHttp;\r\n\r\n constructor(nodeContext: NodeContextHttp) {\r\n this._nodeContextHttp = nodeContext;\r\n }\r\n\r\n /**\r\n * Make request with JSON data.\r\n * @param opts\r\n */\r\n protected async requestJson<T>({\r\n url,\r\n method,\r\n abortSignal,\r\n data\r\n }: IRequestOptions): Promise<Result<T>> {\r\n let axiosResult: AxiosResponse<any> = {} as AxiosResponse<any>;\r\n let result = null;\r\n let axiosRequestConfig: AxiosRequestConfig = {\r\n headers: {\r\n \"X-XSRF-TOKEN\": this._nodeContextHttp.cookies.getCookie(\"XSRF-TOKEN-Client\"),\r\n \"Language\": this._nodeContextHttp.getLanguage(),\r\n },\r\n signal: abortSignal\r\n };\r\n\r\n const processQuery = (url: string, data: any): string => {\r\n if (data) {\r\n return `${url}?${queryString.stringify(data)}`;\r\n }\r\n return url;\r\n };\r\n\r\n if (isNode && this._nodeContextHttp) {\r\n url = this._nodeContextHttp.host + url;\r\n\r\n // Make SSR requests 'authorized' from the NodeServices to the web server.\r\n axiosRequestConfig = {\r\n ...axiosRequestConfig,\r\n headers: {\r\n ...axiosRequestConfig.headers,\r\n Cookie: this._nodeContextHttp.cookies.cookies,\r\n },\r\n\r\n httpsAgent: new (require(\"https\").Agent)({\r\n rejectUnauthorized: false\r\n }),\r\n }\r\n }\r\n\r\n try {\r\n switch (method) {\r\n case \"GET\":\r\n axiosResult = await Axios.get(processQuery(url, data), axiosRequestConfig);\r\n break;\r\n case \"POST\":\r\n axiosResult = await Axios.post(url, data, axiosRequestConfig);\r\n break;\r\n case \"PUT\":\r\n axiosResult = await Axios.put(url, data, axiosRequestConfig);\r\n break;\r\n case \"PATCH\":\r\n axiosResult = await Axios.patch(url, data, axiosRequestConfig);\r\n break;\r\n case \"DELETE\":\r\n axiosResult = await Axios.delete(processQuery(url, data), axiosRequestConfig);\r\n break;\r\n }\r\n\r\n if (isNode && this._nodeContextHttp && axiosResult && axiosResult.headers['set-cookie']) {\r\n this._nodeContextHttp.cookies.updateCookies((axiosResult.headers['set-cookie'] as string[]));\r\n }\r\n\r\n result = new Result(axiosResult.data);\r\n } catch (error) {\r\n if (Axios.isCancel(error)) {\r\n result = new Result({});\r\n } else if (Axios.isAxiosError(error)) {\r\n result = new Result(null, error.response?.data ?? error.message);\r\n } else {\r\n result = new Result(null, error);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}","function transformKey<K>(key: K): K {\r\n if (typeof key == 'string') {\r\n return key.toLowerCase() as unknown as K;\r\n }\r\n return key;\r\n}\r\n\r\nexport class CaseInsensitiveMap<K, V> extends Map<K, V> {\r\n constructor(items?: Iterable<[K, V]>) {\r\n super(items && [...items].map(([key, value]) => [transformKey(key), value]));\r\n }\r\n\r\n public get(key: K) {\r\n return super.get(transformKey(key));\r\n }\r\n\r\n public set(key: K, value: V) {\r\n return super.set(transformKey(key), value);\r\n }\r\n\r\n public has(key: K) {\r\n return super.has(transformKey(key));\r\n }\r\n\r\n public delete(key: K) {\r\n return super.delete(transformKey(key));\r\n }\r\n}","import { isNode } from \"./node-utils\";\r\n\r\nexport function setCookie(cname: string, cvalue: string, exdays: number, sameSite?: string) {\r\n if (isNode) {\r\n return;\r\n }\r\n const d = new Date();\r\n d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n const expires = 'expires=' + d.toUTCString();\r\n let sameSiteSettings = '';\r\n if (!/(CPU iPhone OS 12)|(iPad; CPU OS 12)|(Chrome\\/5)|(Chrome\\/6)|(Macintosh; Intel Mac OS X 10_14.*Version\\/.*Safari)/\r\n .test(navigator.userAgent)) {\r\n sameSiteSettings = `SameSite=${sameSite ?? 'Lax'};`;\r\n }\r\n const cookie = cname + '=' + cvalue + ';' + expires + `;secure;${sameSiteSettings}path=/`;\r\n if (document) {\r\n document.cookie = cookie;\r\n }\r\n}\r\n\r\nexport function getCookieFromString(cname: string, cookies?: string) {\r\n if (!cookies) {\r\n return '';\r\n }\r\n const ca = cookies.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n const c = ca[i].trim().split('=');\r\n if (c[0] == cname) {\r\n return c[1];\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport class CookieManager {\r\n protected _cookies: string;\r\n protected _setCookies: string;\r\n\r\n public get setCookies(): string { return this._setCookies; }\r\n public get cookies(): string { return isNode ? this._cookies : document.cookie; }\r\n\r\n constructor(cookies?: string, setCookies?: string) {\r\n this._cookies = cookies || '';\r\n this._setCookies = setCookies || '';\r\n }\r\n\r\n public updateCookies(setCookies: string[]) {\r\n this._setCookies = setCookies.join(';,');\r\n this._cookies = this.cookies.concat('; ', setCookies.map(cookie => cookie.split(';')[0]).join('; '));\r\n }\r\n\r\n public getCookie(cookieName: string) {\r\n return getCookieFromString(cookieName, this.cookies);\r\n }\r\n}\r\n","// implementace podle rozhranà https://github.com/tc39/proposal-cancellation\r\n\r\n\r\ntype cancellationTokenInternal = { cancellationRequested: boolean, canBeCanceled: boolean, registeredMethods?: Set<() => void>, id?: number };\r\n\r\n/**\r\n * An error thrown when an operation is canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#class-cancelerror}\r\n */\r\nexport class CancelError extends Error {\r\n /**\r\n * Initializes a new instance of the CancelError class.\r\n * @param message An optional message for the error.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#new-cancelerrormessage}\r\n */\r\n constructor(message?: string, id?: number) {\r\n super(message || `Operation ${id !== undefined ? `id ${id}`: ''} has been cancelled`); //`\r\n }\r\n}\r\n\r\n/**\r\n * Signals a CancellationToken that it should be canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#class-cancellationtokensource}\r\n */\r\nexport class CancellationTokenSource {\r\n private _toUnregister: Array<{ unregister(): void; }> = [];\r\n\r\n /**\r\n * Initializes a new instance of a CancellationTokenSource.\r\n * By supplying a set of linked tokens, you can model a complex cancellation graph that allows you to signal cancellation to various subsets of a more complex asynchronous operation. For example, you can create a cancellation hierarchy where a root CancellationTokenSource can be used to signal cancellation for all asynchronous operations (such as when signing out of an application), with linked CancellationTokenSource children used to signal cancellation for subsets such as fetching pages of asynchronous data or stopping long-running background operations in a Web Worker. You can also create a CancellationTokenSource that is attached to multiple existing tokens, allowing you to aggregate multiple cancellation signals into a single token.\r\n * @param linkedTokens An optional iterable of tokens to which to link this source.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#new-cancellationtokensourcelinkedtokens}\r\n */\r\n constructor(linkedTokens?: Iterable<CancellationToken>) {\r\n if (linkedTokens)\r\n for (let lt of linkedTokens)\r\n try {\r\n //if (lt.id && lt.id > 0)\r\n // logger.log(\"Linking existing token \" + lt.id + \" to new \" + this.token.id);\r\n this._toUnregister.push(lt.register(() => this.cancel()));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n private _tokenInternal?: cancellationTokenInternal;\r\n private _token: CancellationToken | undefined;\r\n\r\n /**\r\n * Gets the CancellationToken linked to this source.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#sourcetoken}\r\n */\r\n public get token(): CancellationToken {\r\n return this._token || (this._token = _newCTokenAndSetInternals(this._tokenInternal = { cancellationRequested: false, canBeCanceled: true, registeredMethods: new Set() }));\r\n }\r\n\r\n /**\r\n * Cancels the source, evaluating any registered callbacks. If any callback raises an exception, the exception is propagated to a host specific unhandled exception mechansim (e.g. window.onerror or process.on(\"uncaughtException\") ).\r\n * @see {@link https://github.com/tc39/proposal-cancellation#sourcecancel}\r\n */\r\n public cancel(): void {\r\n if (!this.token || !this._tokenInternal || this._tokenInternal.cancellationRequested)\r\n return;\r\n\r\n //console.log(\"[CTS] Cancelled token \" + this.token.id);\r\n this._tokenInternal.cancellationRequested = true;\r\n if (!this._tokenInternal.registeredMethods)\r\n return;\r\n\r\n for (let rm of this._tokenInternal.registeredMethods.values())\r\n try {\r\n rm();\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n this._tokenInternal.registeredMethods.clear(); // odstrani vsechy registrovane metody, jelikoz uz je neni potreba volat a na zrusenem objektu uz se tato kolekce nevyuziva\r\n }\r\n\r\n /**\r\n * Closes the source, preventing the possibility of future cancellation. If the source is linked to any existing tokens, the links are unregistered.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#sourceclose}\r\n */\r\n public close(): void {\r\n for (let tu of this._toUnregister)\r\n tu.unregister();\r\n if (this._tokenInternal && this._tokenInternal.registeredMethods)\r\n this._tokenInternal.registeredMethods.clear();\r\n this._tokenInternal = undefined;\r\n }\r\n}\r\n\r\nvar _cancellationTokenInternals: WeakMap<CancellationToken, cancellationTokenInternal> = new WeakMap();\r\n\r\nfunction _newCTokenAndSetInternals(internals: cancellationTokenInternal): CancellationToken {\r\n let ct = new (<any>CancellationToken)(true);\r\n if (internals.id)\r\n ct.id = internals.id;\r\n _cancellationTokenInternals.set(ct, internals);\r\n return ct;\r\n}\r\n\r\nvar _getCTI = (key: CancellationToken) => _cancellationTokenInternals.get(key)!;\r\n\r\n/**\r\n * Propagates notifications that operations should be canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#class-cancellationtoken}\r\n */\r\nexport class CancellationToken {\r\n /**\r\n * ZapÃná generovánà unikátnÃho id pro každý token, které se poté pÅ™edává i na CancelError\r\n */\r\n public static debugging: boolean = false;\r\n private static _debugId: number = 0;\r\n\r\n constructor() {\r\n if (!arguments[0])\r\n throw Error(\"To create CancellationToken use CancellationTokenSource!\");\r\n\r\n if (CancellationToken.debugging)\r\n this.id = ++CancellationToken._debugId;\r\n }\r\n\r\n /**\r\n * Gets a value indicating whether cancellation has been requested.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#tokencancellationrequested}\r\n */\r\n public get cancellationRequested() { return _getCTI(this).cancellationRequested; }\r\n\r\n /**\r\n * Gets a value indicating whether the underlying source can be canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#tokencanbecanceled}\r\n */\r\n public get canBeCanceled() { return _getCTI(this).canBeCanceled; }\r\n\r\n public readonly id?: number;\r\n\r\n /**\r\n * Throws a CancelError if cancellation has been requested.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#tokenthrowifcancellationrequested}\r\n */\r\n public throwIfCancellationRequested(): void {\r\n if (this.cancellationRequested) {\r\n //console.log(\"[CancellationToken] throwIfCancellationRequested: \", this.id);\r\n throw this.createCancelError();\r\n }\r\n }\r\n\r\n /**\r\n * Vytvořà CancelError z tohoto tokenu\r\n */\r\n public createCancelError(message?: string): CancelError {\r\n return new CancelError(message, this.id);\r\n }\r\n\r\n /**\r\n * Registers a callback to execute when cancellation is requested.\r\n * @param callback The callback to register.\r\n * @returns An object that can be used to unregister the callback.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#tokenregistercallback}\r\n */\r\n public register(callback: () => void): { unregister(): void; } {\r\n if (this.cancellationRequested)\r\n callback();\r\n else {\r\n let cti = _getCTI(this);\r\n if (cti.registeredMethods) {\r\n cti.registeredMethods.add(callback);\r\n return {\r\n unregister: () => {\r\n if (cti && cti.registeredMethods)\r\n cti.registeredMethods.delete(callback);\r\n }\r\n };\r\n }\r\n }\r\n return { unregister: () => {} };\r\n }\r\n\r\n /**\r\n * Gets a token which will never be canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#cancellationtokennone}\r\n */\r\n public static get none() { return _none || (_none = _newCTokenAndSetInternals({ cancellationRequested: false, canBeCanceled: false, id: -1 })); }\r\n\r\n /**\r\n * Gets a token that is already canceled.\r\n * @see {@link https://github.com/tc39/proposal-cancellation#cancellationtokencanceled}\r\n */\r\n public static get canceled() { return _canceled || (_canceled = _newCTokenAndSetInternals({ cancellationRequested: true, canBeCanceled: false, id: -2 })); }\r\n}\r\n\r\nvar _none: CancellationToken;\r\nvar _canceled: CancellationToken;\r\n\r\n/*\r\nTC 1:\r\n(async () => {\r\n const csx = new TescoSW.CancellationTokenSource();\r\n const cs = new TescoSW.CancellationTokenSource([csx.token]);\r\n const d = TescoSW.PromiseUtils.delay(5000, cs.token).then(()=>false).catch((e)=>e instanceof TescoSW.CancelError);\r\n TescoSW.PromiseUtils.delay(2000).then(()=>csx.cancel());\r\n console.log(await d);\r\n})();\r\n\r\nTC 2:\r\n(async () => { console.log((await TescoSW.PromiseUtils.delay(5000, TescoSW.CancellationToken.canceled).then(()=>false).catch((e)=>e instanceof TescoSW.CancelError))); })();\r\n\r\nTC 3:\r\n(async () => { console.log((await TescoSW.PromiseUtils.delay(5000, TescoSW.CancellationToken.none).then(()=>true).catch((e)=>false))); })();\r\n*/\r\n","import { CancellationToken, CancellationTokenSource, CancelError } from \"./CancellationTokenSource\";\r\n\r\n/**\r\n * Pomocné metody pro práci s promisy\r\n * @includeToDoc\r\n */\r\nexport class PromiseUtils {\r\n\r\n /*\r\n * ŘÃdà vypisovánà ladÃcÃch informacÃ\r\n */\r\n public static debugInfo: boolean = false;\r\n\r\n /**\r\n * Funkce vytvořà \"while\" cyklus, ve kterém spouÅ¡tà pÅ™edanou akci dokud je splnÄ›ný predikát a umožnà Äekat na souhrnný výsledek\r\n * @param predicate Predikátová funkce urÄujÃcÃ, zda se má pokraÄovat v cyklu\r\n * @param action Funkce, která se bude cyklicky vykonávat\r\n * @returns Souhrnný promise se vÅ¡emi dÃlÄÃmi Äástmi\r\n */\r\n public static while(predicate: () => boolean | Promise<boolean>, action: () => void | Promise<void>): Promise<void> {\r\n function loop(): Promise<void> | undefined {\r\n if (!predicate())\r\n return undefined;\r\n return Promise.resolve(action()).then(loop);\r\n }\r\n\r\n return Promise.resolve().then(loop);\r\n }\r\n\r\n /**\r\n * Funkce vytvořà \"for\" cyklus, ve kterém sériovÄ› spustà pÅ™edanou akci a umožnà Äekat na souhrnný výsledek \r\n * @param startIndexValue PoÄáteÄnà hodnota indexu\r\n * @param lessThan Hodnota pÅ™ed jejÃmž dosaženÃm se cyklus ukonÄÃ\r\n * @returns Souhrnný promise se vÅ¡emi dÃlÄÃmi Äástmi\r\n */\r\n public static for(startIndexValue: number, indexLessThan: number, action: (index: number) => void | Promise<void>): Promise<void> {\r\n function loop(i: number): Promise<void> | undefined {\r\n if (i < indexLessThan) {\r\n return Promise.resolve(action(i)).then(loop.bind(null, ++i) as () => Promise<void> | undefined);\r\n }\r\n return undefined;\r\n }\r\n\r\n return Promise.resolve(startIndexValue).then(loop);\r\n }\r\n\r\n /**\r\n * Vytvořà odložený promise, který je pak možné ruÄnÄ› dokonÄit nebo zruÅ¡it\r\n */\r\n public static defer<R>(): Deferred<R> {\r\n var result: any = {};\r\n result.promise = new Promise((resolve: any, reject: any) => {\r\n result.resolve = resolve;\r\n result.reject = reject;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Vytvořà odložený promise, na kterém jde kontrolovat jeho stav\r\n */\r\n public static deferStateful<R>(): DeferredStateful<R> {\r\n const result = PromiseUtils.defer<R>() as any;\r\n result.isSettled = false;\r\n result.isResolved = false;\r\n result.isRejected = false;\r\n\r\n result.promise = result.promise.then((res: R) => {\r\n result.promiseValue = res;\r\n result.isSettled = true;\r\n result.isResolved = true;\r\n return res;\r\n }, (e: Error) => {\r\n result.isSettled = true;\r\n result.isRejected = true;\r\n throw e;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Polyfill pro async/await\r\n * @ignore\r\n */\r\n public static awaiter(thisArg: any, body: () => Iterator<any>, P: PromiseConstructor = Promise): Promise<any> {\r\n let bodyIterator: Iterator<any>;\r\n return new P(function(resolve, reject) {\r\n function fulfilled(value: any) {\r\n try {\r\n step(bodyIterator.next(value));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n }\r\n\r\n function rejected(value: any) {\r\n try {\r\n step(bodyIterator.throw!(value));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n }\r\n\r\n function step(result: IteratorResult<any>) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n\r\n bodyIterator = body.apply(thisArg);\r\n step(bodyIterator.next());\r\n });\r\n };\r\n\r\n /**\r\n * Vrátà promise, který se dokonÄà za stanovený Äas\r\n * @param timeout Doba v ms\r\n * @param cancellationToken Token, kterým lze promise stornovat\r\n */\r\n public static delay(timeout: number, cancellationToken: CancellationToken = CancellationToken.none): Promise<void> {\r\n if (PromiseUtils.debugInfo && timeout > 0)\r\n console.info(`Waiting: ${timeout}ms`); //` vetÅ¡inou bychom se mÄ›li vyhýbat použità delaye\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n cancellationToken.throwIfCancellationRequested();\r\n let registration: { unregister(): void; } | undefined;\r\n\r\n const hid = self.setTimeout(() => {\r\n if (registration)\r\n registration.unregister();\r\n resolve();\r\n }, timeout);\r\n\r\n registration = cancellationToken.register(() => {\r\n clearTimeout(hid);\r\n reject(new CancelError(undefined, cancellationToken.id));\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * ZruÅ¡Ã pÅ™edchozà promise, pokud existuje, a odložà provádÄ›nà pÅ™edané funkce o zadaný Äas\r\n * @param cts Pokud je pÅ™edaný source pÅ™edchozÃho promisu, tak se ukonÄà \r\n * @param delay Doba v ms, po které se spoustà provádÄ›nà pÅ™edané funkce\r\n * @param func Funkce, která se spustà po prodlevÄ›\r\n */\r\n public static cancelPrevAndDelayCall<TResult>(cts: CancellationTokenSource, delay: number, func: (cancellationToken?: CancellationToken) => TResult | PromiseLike<TResult>): { promise: Promise<TResult>, cts: CancellationTokenSource } {\r\n if (cts)\r\n cts.cancel();\r\n\r\n cts = new CancellationTokenSource();\r\n return { promise: PromiseUtils.delay(delay, cts.token).then(() => func(cts.token)), cts: cts };\r\n }\r\n\r\n /**\r\n * Handler pro zachytávánà výjimek CancelError. Tyto výjimky jsou zahozeny, ostatnà jsou propagovány dále.\r\n * @param e Zpracovávaná chyba\r\n */\r\n public static cancellationCatch(e: Error): void {\r\n if (e instanceof CancelError) {\r\n //logger.log(\"cancellationCatch: \", e.message);\r\n return;\r\n }\r\n throw e;\r\n }\r\n\r\n /**\r\n * Handler pohltà vÅ¡echny výjimky\r\n * @param e Zpracovávaná chyba\r\n */\r\n public static catchAll(e: Error): void {\r\n console.error(\"CatchAll: \", e);\r\n }\r\n}\r\n\r\n/**\r\n * Odložený promise, který je možné ruÄnÄ› dokonÄit nebo zruÅ¡it\r\n * @includeToDoc\r\n */\r\nexport interface Deferred<R> {\r\n /** ÄŒekajÃcà promise */\r\n readonly promise: Promise<R>;\r\n /** Metoda umožňujÃcà dokonÄenà promisu */\r\n readonly resolve: (value?: R | Promise<R>) => void;\r\n /** Metoda umožňujÃcà zruÅ¡enà promisu */\r\n readonly reject: (error?: any) => void;\r\n}\r\n\r\n/**\r\n * Odložený promise, na kterém lze navÃc sledovat jeho stav\r\n * @includeToDoc\r\n */\r\nexport interface DeferredStateful<R> extends Deferred<R> {\r\n /** Zda je už ukonÄený (aÅ¥ už pozitivnÄ› nebo negativnÄ›) */\r\n readonly isSettled: boolean;\r\n /** Zda je ukonÄený a dobÄ›hl v pořádku */\r\n readonly isResolved: boolean;\r\n /** Zda je ukonÄený a byl zruÅ¡en nebo skonÄil s chybou */\r\n readonly isRejected: boolean;\r\n /** Pokud dobÄ›hl v pořádku, tak tady je hodnota */\r\n readonly promiseValue: R;\r\n}","/*\r\nA function to represent a queue\r\nCreated by Stephen Morley - http://code.stephenmorley.org/ - and released under\r\nthe terms of the CC0 1.0 Universal legal code: http://creativecommons.org/publicdomain/zero/1.0/legalcode\r\n*/\r\n\r\n/**\r\n * Creates a new queue. A queue is a first-in-first-out (FIFO) data structure -\r\n * items are added to the end of the queue and removed from the front.\r\n */\r\nexport class Queue<T> {\r\n\r\n private _queue = new Array<T>();\r\n private _offset = 0;\r\n\r\n public [Symbol.iterator](): Iterator<T> {\r\n return this._iterator();\r\n }\r\n\r\n private *_iterator(): Iterator<T> {\r\n while (this._queue.length > 0) {\r\n const val = this.dequeue();\r\n if (val == null)\r\n break;\r\n yield val;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the length of the queue.\r\n */\r\n public get length(): number {\r\n return this._queue.length - this._offset;\r\n }\r\n\r\n /**\r\n * Returns true if the queue is empty, and false otherwise.\r\n */\r\n public isEmpty(): boolean {\r\n return this._queue.length === 0;\r\n }\r\n\r\n /**\r\n * Enqueues the specified item to the end of the queue.\r\n * @param item the item to enqueue\r\n */\r\n public enqueue(item: T): void {\r\n this._queue.push(item);\r\n }\r\n\r\n /**\r\n * Dequeues an item from the front of the queue and returns it. If the queue is empty, the value null is returned.\r\n */\r\n public dequeue(): T | null {\r\n\r\n // if the queue is empty, return immediately\r\n if (this._queue.length === 0)\r\n return null;\r\n\r\n // store the item at the front of the queue\r\n const item = this._queue[this._offset];\r\n\r\n // increment the offset and remove the free space if necessary\r\n if (++this._offset * 2 >= this._queue.length) {\r\n this._queue = this._queue.slice(this._offset);\r\n this._offset = 0;\r\n }\r\n\r\n // return the dequeued item\r\n return item;\r\n }\r\n\r\n /**\r\n * Returns the item at the front of the queue (without dequeuing it). If the queue is empty then null is returned.\r\n */\r\n public peek(): T | null {\r\n return this._queue.length > 0 ? this._queue[this._offset] : null;\r\n }\r\n}","import { DeferredStateful, PromiseUtils } from \"./PromiseUtils\";\r\nimport { Queue } from \"./Queue\";\r\n/**\r\n * Objekt vytvoÅ™enà pÅ™i asynchronnÃm zamknutÃ, pomocà kterého jde (a je potÅ™eba) zámek odemknout\r\n */\r\nexport class Releaser {\r\n private readonly _releasingFunc: () => void;\r\n\r\n constructor(releasingFunc: () => void) {\r\n this._releasingFunc = releasingFunc;\r\n }\r\n\r\n /**\r\n * Uvolnà zámek\r\n */\r\n public release(): void {\r\n if (this._releasingFunc != null)\r\n this._releasingFunc();\r\n }\r\n}\r\n\r\n/**\r\n * Asynchronnà zámek, který jde opakovanÄ› zamykat\r\n */\r\nexport class AsyncLock {\r\n\r\n private readonly _semaphore: AsyncSemaphore;\r\n private readonly _releaser: Promise<Releaser>;\r\n\r\n constructor() {\r\n this._semaphore = new AsyncSemaphore(1);\r\n this._releaser = Promise.resolve(new Releaser(() => { this._semaphore.release(); }));\r\n }\r\n\r\n /**\r\n * Zamkne zámek a vracà promis, na který je potÅ™eba Äekat, dokud se zámek neodemkne\r\n */\r\n public lock(): Promise<Releaser> {\r\n const wait = this._semaphore.wait();\r\n // pokud je už promis dokonÄený, tak se vracà releaser, což je dokonÄený promis s releaserem, jinak se k nedokonÄenému pÅ™idá dalÅ¡Ã uvolnÄ›nÃ\r\n return wait.isSettled ? this._releaser : wait.promise.then(() => { return new Releaser(() => { this._semaphore.release(); }); });\r\n }\r\n}\r\n\r\nexport class MultiAsyncLock {\r\n private readonly _locks: Map<any, AsyncLock>= new Map<any, AsyncLock>();\r\n\r\n public get locks() { return this._locks; }\r\n\r\n public getLock(key: any): AsyncLock {\r\n if (this._locks.has(key))\r\n return this._locks.get(key)!;\r\n\r\n const lock = new AsyncLock();\r\n this._locks.set(key, lock);\r\n return lock;\r\n }\r\n}\r\n\r\n/**\r\n * Asynchronnà semafor udržujÃcà frontu vÅ¡ech ÄekajÃcÃch úkolů\r\n */\r\nclass AsyncSemaphore {\r\n\r\n private static _completed: DeferredStateful<void> = { promise: Promise.resolve(), resolve: () => null, reject: () => null, isSettled: true, isResolved: true, isRejected: false, promiseValue: undefined };\r\n private _waiters: Queue<DeferredStateful<void>> = new Queue<DeferredStateful<void>>();\r\n private _currentCount: number;\r\n\r\n constructor(initialCount: number) {\r\n if (initialCount < 0)\r\n throw new Error(\"initialCount can't be lower than zero\");\r\n this._currentCount = initialCount;\r\n }\r\n\r\n public wait(): DeferredStateful<void> {\r\n if (this._currentCount > 0) {\r\n --this._currentCount;\r\n return AsyncSemaphore._completed;\r\n }\r\n\r\n const waiter = PromiseUtils.deferStateful<void>();\r\n this._waiters.enqueue(waiter);\r\n return waiter;\r\n }\r\n\r\n public release(): void {\r\n if (!this._waiters.isEmpty()) {\r\n this._waiters.dequeue()!.resolve();\r\n } else {\r\n ++this._currentCount;\r\n }\r\n }\r\n}","import { AsyncLock, Releaser } from \"./AsyncLock\";\r\nimport { DeferredStateful, PromiseUtils } from \"./PromiseUtils\";\r\n\r\nexport type EventCallback<TSender = any, TEventData = any> = (sender: TSender, prm: TEventData) => void;\r\nexport type AwaitableStandardEventCallback<TSender, TEventData> = (cancellableEventArgs: CancellableEventArgs, sender: TSender, prm: TEventData) => Promise<void>;\r\n\r\ninterface IListenerData<TSender, TEventData> {\r\n listener: EventCallback<TSender, TEventData>;\r\n oneTimeOnly?: boolean;\r\n limitingPredicate?: () => boolean;\r\n}\r\n\r\n/**\r\n * TÅ™Ãda reprezentuje obecnou událost a umožňuje pÅ™idávánà a odebÃránà listenerů a jejà vyvolávánÃ\r\n * @includeToDoc\r\n */\r\nexport class JsEvent<TSender, TEventData> {\r\n private _listeners: IListenerData<TSender, TEventData>[] = [];\r\n\r\n /**\r\n * Informace, zda je událost aktivnà a volajà se listenery\r\n */\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * Zaregistruje listener události\r\n * @param listener NaslouchajÃcà funkce\r\n * @param oneTimeOnly Zda má listener zavolán pouze jednou a pak uvolnÄ›n\r\n * @param asFirst Umožňuje zaÅ™adit listener na prvnà mÃsto\r\n */\r\n public add(listener: EventCallback<TSender, TEventData>, oneTimeOnly?: boolean, asFirst?: boolean): void {\r\n if (asFirst)\r\n this._listeners.unshift({ listener: listener, oneTimeOnly: oneTimeOnly });\r\n else\r\n this._listeners.push({ listener: listener, oneTimeOnly: oneTimeOnly });\r\n }\r\n\r\n /**\r\n * Zaregistruje listener události a pÅ™i splnÄ›nà predikátu je tento listener uvolnÄ›n\r\n * @param listener NaslouchajÃcà funkce\r\n * @param limitingPredicate Predikát, pÅ™i jehož splnÄ›nà dojde k uvolnÄ›nà listeneru\r\n */\r\n public addPredicateLimitedListener(listener: EventCallback<TSender, TEventData>, limitingPredicate: () => boolean) {\r\n this._listeners.push({ listener: listener, limitingPredicate: limitingPredicate });\r\n }\r\n\r\n /**\r\n * Odstranà pÅ™edaný listener, takže už nebude dostávát informace o události\r\n * @param listener Funkce k odregistrovánÃ\r\n */\r\n public remove(listener: EventCallback<TSender, TEventData>): void {\r\n if (typeof listener === 'function') {\r\n for (var i = 0, l = this._listeners.length; i < l; i++) {\r\n if (this._listeners[i].listener === listener) {\r\n this._listeners.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Odstranà vÅ¡echny listenery\r\n */\r\n public removeAll(): void {\r\n this._listeners = [];\r\n }\r\n\r\n /**\r\n * Vyvolá událost\r\n * @param sender Objekt, na kterém byla událost vyvolaná\r\n * @param arg Data události pÅ™edávaná do listenerů\r\n */\r\n public trigger(sender: TSender, arg: TEventData): void {\r\n if (!this.enabled)\r\n return;\r\n\r\n const listeners = [...this._listeners];\r\n const listenersForRemoval = [];\r\n for (const listenerData of listeners) {\r\n listenerData.listener.call(null, sender, arg);\r\n\r\n if (listenerData.oneTimeOnly || (listenerData.limitingPredicate && listenerData.limitingPredicate()))\r\n listenersForRemoval.push(listenerData.listener);\r\n }\r\n\r\n listenersForRemoval.forEach(l => this.remove(l));\r\n }\r\n\r\n /**\r\n * ZjistÃ, zda je pÅ™edaný listener už zaregistrovaný\r\n * @param listener Hledaná funkce\r\n */\r\n public containsListener(listener: EventCallback<TSender, TEventData>): boolean {\r\n return this._listeners.some(ld => ld.listener === listener);\r\n }\r\n\r\n /**\r\n * PÅ™idá do listenerů aktuálnà instance Eventu listenery z Eventu stejného typu pÅ™edaného do parametru\r\n * @param eventToMerge Událost, jejÞ listenery se majà pÅ™idat do této instance Eventu\r\n * @param removeListenersFromSourceEvent (Nepovinný) UrÄuje, zda se majà listenery ze zdrojového eventu rovnou odstranit. Výchozà = false\r\n */\r\n public mergeWith(eventToMerge: JsEvent<TSender, TEventData>, removeListenersFromSourceEvent?: boolean) {\r\n for (let listenerData of eventToMerge._listeners) {\r\n if (!this.containsListener(listenerData.listener)) {\r\n this.add(listenerData.listener, listenerData.oneTimeOnly);\r\n }\r\n if (removeListenersFromSourceEvent)\r\n eventToMerge.remove(listenerData.listener);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * PoÄká na prvnà vyvolánà události\r\n * @param timeout Pokud je nastavený timeout (v ms) a událost nenà do té doby vyvolaná, tak promis konÄà chybou\r\n */\r\n public waitForEventTrigger(timeout?: number): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n let handle: number;\r\n\r\n this.add(() => {\r\n if (handle)\r\n clearTimeout(handle);\r\n resolve();\r\n }, true);\r\n //let handler:TimerHandler =\r\n if (timeout)\r\n handle = self.setTimeout(() => reject(new Error(`Timeout after ${timeout}ms`)), timeout); //`\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * TÅ™Ãda reprezentuje stavovou událost. Prvnà vyvolánà události ji nastavà aktivnà stav. To lze provést pouze jednou.\r\n * Každé pÅ™idánà listeneru v aktivnÃm stavu ho automaticky hned vyvolá.\r\n * @includeToDoc\r\n */\r\nexport class StatefulEvent<TSender, TEventData> extends JsEvent<TSender, TEventData> {\r\n private _active: boolean = false;\r\n private _sender?: TSender;\r\n private _eventData?: TEventData;\r\n\r\n /**\r\n * Zda je událost aktivnà (má aktivnà stav) a tedy zda už byla spuÅ¡tÄ›na\r\n */\r\n public get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n /**\r\n * Vyvolá událost a tÃm zmÄ›nà stav této instance na aktivnÃ. VÅ¡echny dalÅ¡Ã pÅ™idánà listenerů automaticky vyvolávajà událost.\r\n * Trigger (a tedy nastavenà stavu) lze volat pouze jednou!\r\n * @param sender Objekt, na kterém byla událost vyvolaná\r\n * @param arg Data události pÅ™edávaná do listenerů\r\n * @throws Vyhazuje Error pokud je už aktivnÃ\r\n */\r\n public trigger(sender: TSender, arg: TEventData): void {\r\n if (!this.enabled)\r\n return;\r\n\r\n if (this.active)\r\n throw new Error(\"Stateful event already triggered. Multiple state changes forbidden.\");\r\n\r\n this._sender = sender;\r\n if (this._sender === undefined)\r\n throw new Error(\"Stateful event triggered without sender parameter.\");\r\n\r\n this._eventData = arg;\r\n this._active = true;\r\n\r\n super.trigger(sender, arg);\r\n }\r\n\r\n /**\r\n * Zaregistruje listener události.\r\n * Pokud už byla událost aktivována, tak ihned listener spustÃ!\r\n * @param listener NaslouchajÃcà funkce\r\n * @param oneTimeOnly Zda má listener zavolán pouze jednou a pak uvolnÄ›n - irelevantnÃ, vždy je volán pouze jednou\r\n */\r\n public add(listener: EventCallback<TSender, TEventData>, oneTimeOnly?: boolean): void {\r\n super.add(listener, oneTimeOnly);\r\n\r\n if (!this.enabled || !this.active)\r\n return;\r\n\r\n if (this._sender === undefined)\r\n throw new Error(\"Stateful event triggered without sender parameter.\");\r\n\r\n listener.call(null, this._sender, this._eventData!); // TEventData může mÃt i typ undefined, takže nelze provést runtime kontrolu\r\n }\r\n}\r\n/**\r\n * Rozhranà obecného listeneru, u kterého nám nezáležà na pÅ™edaných argumentech ani na návratové hodnotÄ›\r\n * @includeToDoc\r\n */\r\nexport interface IListener {\r\n (...args: any[]): any;\r\n}\r\n\r\n/**\r\n * Asynchronnà událost.\r\n * Listenery berou jako parametr CancellableEventArgs, kterým je možné indikovat zruÅ¡enà - negativnà výsledek triggeru.\r\n * Trigger vracà promise - poÄká se na dobÄ›hnutà vÅ¡ech listenerů a vracà se true, pokud nebyl event zruÅ¡en.\r\n * PÅ™i opÄ›tovném volánà triggeru z jiného mÃsta, pÅ™ed dobÄ›hnutÃm pÅ™edchozÃho, se na dobÄ›hnutà pÅ™edchozÃho poÄká.\r\n * @includeToDoc\r\n */\r\nexport class AwaitableStandardEvent<TSender, TEventData> {\r\n\r\n /**\r\n * Informace, zda je událost aktivnà a volajà se listenery\r\n */\r\n public enabled: boolean = true;\r\n\r\n private _listeners: Array<AwaitableStandardEventCallback<TSender, TEventData>> = [];\r\n private _cancellableEventArgs: CancellableEventArgs = new CancellableEventArgs();\r\n\r\n private _triggeredProcessingLock: AsyncLock = new AsyncLock();\r\n private _lockPromise: Promise<Releaser> | null = null;\r\n private _locked = false;\r\n\r\n /**\r\n * Zaregistruje listener události\r\n * @param listener NaslouchajÃcà funkce\r\n */\r\n public add(listener: AwaitableStandardEventCallback<TSender, TEventData>): void {\r\n this._listeners.push(listener);\r\n }\r\n\r\n /**\r\n * Odstranà pÅ™edaný listener, takže už nebude dostávát informace o události\r\n * @param listener Funkce k odregistrovánÃ\r\n */\r\n public remove(listener: AwaitableStandardEventCallback<TSender, TEventData>): void {\r\n if (typeof listener === 'function') {\r\n for (let i = 0, l = this._listeners.length; i < l; i++) {\r\n if (this._listeners[i] === listener) {\r\n this._listeners.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Odstranà vÅ¡echny listenery\r\n */\r\n public removeAll(): void {\r\n this._listeners = [];\r\n }\r\n\r\n /**\r\n * Vyvolá událost\r\n * @param sender Objekt, na kterém byla událost vyvolaná\r\n * @param arg Data události pÅ™edávaná do listenerů\r\n */\r\n public async trigger(sender: TSender, arg: TEventData): Promise<boolean> {\r\n if (!this.enabled)\r\n return false;\r\n\r\n if (!this._locked) {\r\n //console.log(\"Locking...\");\r\n this._lockPromise = this._triggeredProcessingLock.lock(); // ZamÄe event, aby dobÄ›hly vÅ¡echny listenery pÅ™ed zpracovánÃm dalÅ¡Ãho triggru eventu\r\n this._locked = true;\r\n } else {\r\n //console.log(\"Waiting for previous trigger to finish.\");\r\n if (this._lockPromise)\r\n await this._lockPromise;\r\n //console.log(\"Continuing...\");\r\n }\r\n\r\n this._cancellableEventArgs = new CancellableEventArgs();\r\n const listeners = this._listeners.slice(0);\r\n const promises: (Promise<void>)[] = listeners.map(listener => listener(this._cancellableEventArgs, sender, arg));\r\n await Promise.all(promises); // PoÄká na dobÄ›hnutà vÅ¡ech asychnronnÃch listenerů\r\n\r\n if (this._locked) {\r\n //console.log(\"Unlocking...\");\r\n if (this._lockPromise)\r\n (await this._lockPromise).release();\r\n this._locked = false;\r\n }\r\n\r\n return this._cancellableEventArgs.cancelEvent;\r\n }\r\n\r\n /**\r\n * ZjistÃ, zda je pÅ™edaný listener už zaregistrovaný\r\n * @param listener Hledaná funkce\r\n */\r\n public containsListener(listener: AwaitableStandardEventCallback<TSender, TEventData>): boolean {\r\n return this._listeners.indexOf(listener) > -1;\r\n }\r\n\r\n /**\r\n * PÅ™idá do listenerů aktuálnà instance Eventu listenery z Eventu stejného typu pÅ™edaného do parametru\r\n * @param eventToMerge Událost, jejÞ listenery se majà pÅ™idat do této instance Eventu\r\n * @param removeListenersFromSourceEvent (Nepovinný) UrÄuje, zda se majà listenery ze zdrojového eventu rovnou odstranit. Výchozà = false\r\n */\r\n public mergeWith(eventToMerge: AwaitableStandardEvent<TSender, TEventData>, removeListenersFromSourceEvent?: boolean) {\r\n for (let listener of eventToMerge._listeners) {\r\n if (!this.containsListener(listener)) {\r\n this.add(listener);\r\n }\r\n if (removeListenersFromSourceEvent)\r\n eventToMerge.remove(listener);\r\n }\r\n\r\n }\r\n}\r\n\r\n/**\r\n * TÅ™Ãda pro použità v eventu, která může indikovat požadavek na zruÅ¡enÃ.\r\n * @includeToDoc\r\n */\r\nexport class CancellableEventArgs {\r\n private _cancelEvent: boolean = false;\r\n\r\n /**\r\n * Stav pÅ™Ãznaku zruÅ¡enÃ\r\n */\r\n public get cancelEvent() {\r\n return this._cancelEvent;\r\n }\r\n\r\n /**\r\n * Nastavà pÅ™Ãznak zruÅ¡enÃ\r\n */\r\n public cancel() {\r\n this._cancelEvent = true;\r\n }\r\n}\r\n\r\n/**\r\n * TÅ™Ãda umožňuje vytvoÅ™enà promisu, který se resolvne pÅ™i triggeru pÅ™edané události nebo rejectne po timeoutu\r\n * @includeToDoc\r\n */\r\nexport class EventAwaiter {\r\n private _awaiter: DeferredStateful<void> = PromiseUtils.deferStateful<void>();\r\n private readonly _eventHandler: () => void;\r\n\r\n private static _isDebugging = false;\r\n\r\n constructor(eventToAwait: JsEvent<any, any>, timeout: number = 1000) {\r\n if (EventAwaiter._isDebugging) console.time(\"EventAwaiter\");\r\n const timeoutId = self.setTimeout(() => {\r\n if (this._eventHandler)\r\n eventToAwait.remove(this._eventHandler);\r\n this._awaiter.reject();\r\n if (EventAwaiter._isDebugging) {\r\n console.log(\"EventAwaiter timed out.\");\r\n console.timeEnd(\"EventAwaiter\");\r\n }\r\n }, timeout);\r\n\r\n eventToAwait.add(this._eventHandler = () => {\r\n clearTimeout(timeoutId);\r\n this._awaiter.resolve();\r\n if (EventAwaiter._isDebugging) {\r\n console.log(\"EventAwaiter timed resolved.\");\r\n console.timeEnd(\"EventAwaiter\");\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Umožnà Äekat na spuÅ¡tÄ›nà události\r\n */\r\n public get awaiter(): Promise<void> {\r\n return this._awaiter.promise;\r\n }\r\n\r\n /**\r\n * Zda už byla událost vyvolaná\r\n */\r\n public get isResolved(): boolean {\r\n return this._awaiter.isResolved;\r\n }\r\n\r\n /**\r\n * Vracà promise, který se resolvne pÅ™i triggeru pÅ™edané události nebo rejectne po timeoutu. POZOR - Je potÅ™eba handlovat možnou exception pÅ™i rejectu.\r\n * @param eventToAwait Událost, pÅ™i jejÃmž triggrovánà se promise resolvuje\r\n * @param timeout ÄŒas, po které dojde k rejectu promisu, pokud do té doby nedoÅ¡lo k resolvu; defaultnÄ› je 1000ms\r\n */\r\n public static createEventAwaiter(eventToAwait: JsEvent<any, any>, timeout: number = 1000): Promise<void> {\r\n return new EventAwaiter(eventToAwait, timeout).awaiter;\r\n }\r\n}\r\n","import { CaseInsensitiveMap } from \"./CaseInsensitiveMap\";\r\nimport { DeferredStateful, PromiseUtils } from \"./PromiseUtils\";\r\n\r\nexport type PromiseStackerItems<T> = Map<string, DeferredStateful<T>>;\r\nexport type PromisesStackerTiskCallback<T> = (items: PromiseStackerItems<T>) => Promise<void>;\r\n\r\nexport type PromisesStackerProps<T> = {\r\n timeout?: number;\r\n onTick?: PromisesStackerTiskCallback<T>;\r\n}\r\n\r\ntype PromisesStackerSet = {\r\n keys: Set<string>;\r\n timer?: unknown;\r\n}\r\n\r\nexport class PromisesStacker<T> {\r\n public onTick?: PromisesStackerTiskCallback<T>;\r\n private _requested: PromisesStackerSet;\r\n private _allRequested = new CaseInsensitiveMap<string, DeferredStateful<T>>();\r\n private _timeout: number;\r\n\r\n constructor({\r\n timeout,\r\n onTick\r\n }: PromisesStackerProps<T>) {\r\n this._timeout = timeout ?? 300;\r\n this.onTick = onTick;\r\n this._requested = this._createRequestedSet();\r\n }\r\n\r\n public getAllResolved(): T[] {\r\n return [...this._allRequested.values()]\r\n .filter(itemPromise => itemPromise.isResolved)\r\n .map(itemPromise => itemPromise.promiseValue);\r\n }\r\n\r\n public request(key: string) {\r\n let itemDeferPromise = this._allRequested.get(key);\r\n if (!itemDeferPromise) {\r\n const requested = this._requested;\r\n requested.keys.add(key);\r\n itemDeferPromise = PromiseUtils.deferStateful();\r\n this._allRequested.set(key, itemDeferPromise);\r\n this._runTimer();\r\n }\r\n return itemDeferPromise.promise;\r\n }\r\n\r\n private _runTimer() {\r\n const requested = this._requested;\r\n if (requested.timer != null) {\r\n return;\r\n }\r\n requested.timer = setTimeout(() => this._handleTimerTick(), this._timeout);\r\n }\r\n\r\n private _handleTimerTick() {\r\n const requested = this._popRequested();\r\n const requestedMap = new Map(requested.map(key => [key, this._allRequested.get(key) || PromiseUtils.deferStateful<T>()]));\r\n this.onTick?.(requestedMap);\r\n }\r\n\r\n private _popRequested(): string[] {\r\n const requested = this._requested;\r\n this._requested = this._createRequestedSet();\r\n return [...requested?.keys ?? []];\r\n }\r\n\r\n private _createRequestedSet(): PromisesStackerSet {\r\n return {\r\n keys: new Set()\r\n }\r\n }\r\n}","import { FalseValues } from \"./TypeUtils\";\r\n\r\nexport function flatArray<T>(arr: T[][]): T[] {\r\n return ([] as T[]).concat(...arr);\r\n}\r\n\r\nexport type MaybeArray<T> = T | T[];\r\n\r\ntype DeepArrayType<T> = Array<T | DeepArrayType<T>>;\r\nexport type DeepArray<T> = T | DeepArrayType<T>;\r\n\r\nexport function flatArrayDeep<T>(arr: DeepArray<T>[]): T[] {\r\n return arr.reduce<T[]>((acc, curr) => acc.concat(Array.isArray(curr) ? flatArrayDeep(curr) : [curr]), []);\r\n}\r\n\r\nexport const notNull = <TValue>(item: TValue | null | undefined): item is TValue => item != null;\r\nexport const isEmpty = (item?: unknown | null): item is null | undefined | '' => item == null || item == '';\r\nexport const notEmpty = (item?: unknown | null) => !isEmpty(item);\r\nexport const isEmptyOrWhitespace = (item?: unknown | null) => isEmpty(item) || typeof item == 'string' && item.match(/^\\s*$/);\r\nexport const notEmptyOrWhitespace = (item?: unknown | null) => !isEmptyOrWhitespace(item);\r\nexport const truthy = <TValue>(item: TValue | FalseValues): item is TValue => !!item;\r\n\r\nexport function combineArrays<T1, T2, TRet = [T1, T2]>(arr1: T1[], arr2: T2[], action: (item1: T1, item2: T2) => TRet): TRet[] {\r\n return flatArray(arr1.map(item1 => arr2.map(item2 => action(item1, item2))));\r\n}\r\n\r\nexport function toArray<T>(item: MaybeArray<T>, emptyIfNull?: boolean): T[] {\r\n if (item == null && emptyIfNull) {\r\n return [];\r\n }\r\n return Array.isArray(item) ? item : [item];\r\n}\r\n\r\nexport function uniqueArray<T>(...arrays: T[][]): T[] {\r\n return [...new Set(flatArray(arrays))];\r\n}\r\n\r\nexport function notEmptyItems<T>(array: T[]): T[] {\r\n return array.filter(notEmpty);\r\n}\r\n\r\nexport const arrayInjectSeparator = <T, S>(arr: T[], separatorFactory: (index: number) => S): (T | S)[] => {\r\n const result: (T | S)[] = [];\r\n arr?.forEach((item, index) => {\r\n if (index != 0) {\r\n result.push(separatorFactory(index));\r\n }\r\n result.push(item);\r\n });\r\n return result;\r\n}\r\n\r\nexport const toMap = <K, T>(getKey: (item: T) => K, arr: T[]): Map<K, T> => {\r\n return new Map(arr?.map(item => [getKey(item), item]));\r\n};\r\n\r\nexport class ArrayHelper {\r\n public static splitByPredicate<T>(arr: T[], predicate: (item: T) => boolean): [T[], T[]] {\r\n return arr.reduce<[T[], T[]]>((acc, item) => {\r\n acc[predicate(item) ? 0 : 1].push(item);\r\n return acc;\r\n }, [[], []]);\r\n }\r\n}\r\n\r\nexport const is = <T extends unknown>(item: T, expceted: T[]): boolean => expceted?.includes(item) ?? false;\r\n\r\nexport const transposeArray = <T extends unknown>(arr: T[], columns: number): T[] => {\r\n const result: T[] = [];\r\n const arrLength = arr.length;\r\n const rows = Math.ceil(arrLength / columns);\r\n let greaterColumns = arrLength % columns;\r\n if (greaterColumns == 0) {\r\n greaterColumns = columns\r\n }\r\n const columnsItems: T[][] = [];\r\n let i = 0;\r\n while (i < arrLength) {\r\n const itemsCount = rows - (greaterColumns > 0 ? 0 : 1);\r\n columnsItems.push(arr.slice(i, i + itemsCount));\r\n i += itemsCount;\r\n greaterColumns--; \r\n }\r\n for (let i = 0; i < rows; i++)\r\n {\r\n columnsItems.forEach(column => {\r\n if (i < column.length) {\r\n result.push(column[i]);\r\n }\r\n })\r\n }\r\n return result;\r\n}\r\n\r\nexport const iaddToArray = <T>(arr: T[], item: T) => arr.includes(item) ? arr : [...arr, item];\r\nexport const iremoveFromArray = <T>(arr: T[], itemToRemove: T) => arr.includes(itemToRemove) ? arr.filter(item => item != itemToRemove) : arr;\r\n","import { ServiceBase, Result } from \"./ServiceBase\";\r\nimport { LocalizationItem } from \"@store/localizationStore\";\r\nimport { CaseInsensitiveMap } from \"@utils/CaseInsensitiveMap\";\r\nimport { setCookie } from \"@utils/CookiesUtils\";\r\nimport { JsEvent } from \"@utils/Events\";\r\nimport { PromisesStacker, PromiseStackerItems } from \"@utils/PromisesStacker\";\r\nimport { flatArray } from \"@utils/ArrayHelper\";\r\nimport { isNode } from \"@utils/node-utils\";\r\n\r\ntype GetLocalizationItemsParams = {\r\n locKeys: string[];\r\n language: Language;\r\n}\r\n\r\nexport type Language = 'CZ' | 'EN';\r\n\r\nexport default class LocalizationService extends ServiceBase {\r\n public static readonly MISSING_TEXT = '?¿?¿?¿';\r\n public static get DEFAULT_LANGUAGE(): Language {\r\n if (isNode) {\r\n return 'CZ';\r\n }\r\n return document?.documentElement?.lang == 'cs' ? 'CZ' : 'EN';\r\n };\r\n public static readonly supportedLanguages: Language[] = ['CZ', 'EN'];\r\n\r\n private static _languageStackers = new Map<Language, PromisesStacker<LocalizationItem>>();\r\n\r\n public static localizationsLoaded = new JsEvent<LocalizationService, { language: Language; locItems: LocalizationItem[] }>();\r\n\r\n public async getLocalizationItems({ language, locKeys }: GetLocalizationItemsParams): Promise<LocalizationItem[]> {\r\n const promises = locKeys.map(locKey => this._getLanguageStacker(language).request(locKey));\r\n return await Promise.all(promises);\r\n }\r\n\r\n private async _postRequest(params: GetLocalizationItemsParams): Promise<Result<LocalizationItem[]>> {\r\n return await this.requestJson<LocalizationItem[]>({\r\n url: '/api/localization',\r\n method: 'POST',\r\n data: params\r\n });\r\n }\r\n\r\n private _getLanguageStacker(language: Language): PromisesStacker<LocalizationItem> {\r\n let stacker = LocalizationService._languageStackers.get(language);\r\n if (!stacker) {\r\n stacker = new PromisesStacker({\r\n timeout: 300\r\n });\r\n LocalizationService._languageStackers.set(language, stacker);\r\n }\r\n stacker.onTick = (items) => this._getLocalizations(language, items)\r\n return stacker;\r\n }\r\n\r\n private async _getLocalizations(language: Language, items: PromiseStackerItems<LocalizationItem>) {\r\n const request = await this._postRequest({\r\n language: language,\r\n locKeys: [...items.keys()]\r\n });\r\n if (request.hasErrors) {\r\n [...items.values()].forEach((itemPromise) => {\r\n itemPromise.reject(request.errors);\r\n });\r\n LocalizationService._languageStackers.delete(language);\r\n LocalizationService.localizationsLoaded.trigger(this, {\r\n language,\r\n locItems: []\r\n });\r\n return;\r\n }\r\n\r\n const result = new CaseInsensitiveMap(request.value.map(locItem => [locItem.code, locItem]));\r\n const promises = [...items.entries()].map(async ([locKey, itemPromise]) => {\r\n const resultItem = result.get(locKey);\r\n if (!resultItem || resultItem.isMissing) {\r\n console.warn(`[LocalizationService] ${locKey} in language ${language} is missing.`);\r\n }\r\n if (resultItem) {\r\n itemPromise.resolve(resultItem);\r\n return;\r\n }\r\n itemPromise.resolve({\r\n code: locKey,\r\n text: LocalizationService.MISSING_TEXT,\r\n description: LocalizationService.MISSING_TEXT\r\n });\r\n });\r\n await Promise.all(promises);\r\n LocalizationService.localizationsLoaded.trigger(this, {\r\n language,\r\n locItems: request.value\r\n });\r\n }\r\n\r\n public getLanguageFromCookie(): Language {\r\n const cookieLanguage = this._nodeContextHttp.cookies.getCookie('Language')?.toUpperCase();\r\n if (LocalizationService.supportedLanguages.includes(cookieLanguage as Language)) {\r\n return cookieLanguage as Language;\r\n }\r\n return LocalizationService.DEFAULT_LANGUAGE;\r\n }\r\n\r\n public setLanguageToCookie(language: Language) {\r\n setCookie('Language', language, 365);\r\n }\r\n\r\n public static getAllLocItems(language?: Language): LocalizationItem[] {\r\n if (language) {\r\n return this._languageStackers.get(language)?.getAllResolved() || [];\r\n }\r\n const allItems = [...this._languageStackers.values()]\r\n .map(stacker => stacker.getAllResolved());\r\n return flatArray(allItems);\r\n }\r\n}","import { createSelector, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { AppDispatch, ApplicationState } from \".\";\r\n\r\nexport const name = 'errorStore';\r\n\r\nexport type ClientError = {\r\n\tcode?: string;\r\n\terrorTitle?: string;\r\n\terrorText: string;\r\n\tisUserException?: boolean;\r\n\tlocKey?: string;\r\n\tlocParams?: string[];\r\n}\r\n\r\nexport type AnyError = string | ClientError;\r\n\r\nconst toClientError = (error: AnyError): ClientError => typeof error == 'string'\r\n\t? { errorText: error }\r\n\t: error;\r\n\r\nexport type ErrorStoreState = {\r\n\terrors: ClientError[];\r\n}\r\n\r\nexport const slice = createSlice({\r\n\tname: name,\r\n\tinitialState: {\r\n\t\terrors: []\r\n\t} as ErrorStoreState,\r\n\treducers: {\r\n\t\tpush: (state: ErrorStoreState, action: PayloadAction<AnyError[]>) => {\r\n\t\t\treturn {\r\n\t\t\t\t...state, \r\n\t\t\t\terrors: state.errors.concat(action.payload?.map(toClientError) ?? [])\r\n\t\t\t}\r\n\t\t},\r\n\t\tclear: (state: ErrorStoreState) => {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\terrors: []\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getErrorState = (state: ApplicationState) => state[name];\r\nexport const getErrorStoreActions = () => slice.actions;\r\nexport const getErrors = createSelector(\r\n\tgetErrorState,\r\n\t(state) => state?.errors,\r\n);\r\n\r\n//hooks\r\nexport const useErrorStore = () => {\r\n\tconst dispatch: AppDispatch = useDispatch();\r\n\tconst clear = () => dispatch(getErrorStoreActions().clear());\r\n\tconst push = (errors: AnyError[]) => dispatch(getErrorStoreActions().push(errors));\r\n\tconst errors = useSelector(getErrors);\r\n\treturn { errors, push, clear };\r\n}","import { ReactPlugin } from '@microsoft/applicationinsights-react-js';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web'\r\nimport { ITelemetryItem } from \"@microsoft/applicationinsights-core-js\";\r\nimport { History } from \"history\";\r\nimport { getUserCookieSettingsFromCookie } from '@store/userCookieSettingsStore';\r\nimport { NodeContextState } from '@store/nodeContextStore';\r\nimport { setCookie } from '@utils/CookiesUtils';\r\n\r\nvar appInsights: ApplicationInsights|null;\r\nconst reactPlugin = new ReactPlugin();\r\n\r\nconst telemetryInitializer = (envelope: ITelemetryItem) => {\r\n var basetype = envelope.baseType?.toLowerCase();\r\n if (basetype === \"pageviewperformancedata\") {\r\n return false;\r\n }\r\n else if (basetype === \"remotedependencydata\") {\r\n if (envelope?.baseData?.responseCode == 200) { // posÃláme jen ty požadavky které dopadnou chybou\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nconst useApplicationInsights = (history: History, nodeContext: NodeContextState, instrumentationKey: string | undefined) => {\r\n if (!instrumentationKey) {\r\n return;\r\n }\r\n const userCookieSettings = getUserCookieSettingsFromCookie(nodeContext.http);\r\n\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: instrumentationKey,\r\n extensions: [reactPlugin],\r\n extensionConfig: {\r\n [reactPlugin.identifier]: { history: history }\r\n },\r\n disableCookiesUsage: true, //defaultnÄ› nepovolujeme cookies\r\n isStorageUseDisabled: true,\r\n }\r\n });\r\n appInsights.loadAppInsights();\r\n appInsights.addTelemetryInitializer(telemetryInitializer);\r\n\r\n if (userCookieSettings.settings.statistics) {\r\n enableApplicationInsightsCookies();\r\n }\r\n appInsights.trackPageView();\r\n}\r\n\r\nconst enableApplicationInsightsCookies = () => {\r\n if (appInsights) {\r\n appInsights.config.disableCookiesUsage = false;\r\n appInsights.config.isStorageUseDisabled = false;\r\n appInsights.getCookieMgr().setEnabled(true);\r\n }\r\n}\r\n\r\nconst disableApplicationInsightsCookies = () => {\r\n if (appInsights) {\r\n appInsights.config.disableCookiesUsage = true;\r\n appInsights.config.isStorageUseDisabled = true;\r\n appInsights.clearAuthenticatedUserContext();\r\n appInsights.getCookieMgr().setEnabled(false);\r\n }\r\n setCookie(\"ai_session\", \"\", -1, 'None');\r\n setCookie(\"ai_user\", \"\", -1, 'None');\r\n}\r\n\r\nexport { reactPlugin, appInsights, useApplicationInsights, enableApplicationInsightsCookies, disableApplicationInsightsCookies };","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from '.';\r\nimport { setCookie } from '@utils/CookiesUtils';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useCallback } from 'react';\r\nimport { NodeContextHttp } from './nodeContextStore';\r\nimport { disableApplicationInsightsCookies, enableApplicationInsightsCookies } from '@utils/ApplicationInsights';\r\n\r\nexport const name = 'userCookieSettingsStore';\r\n\r\n// Declare an interface of the store's state.\r\nexport type UserCookieSettingsState = {\r\n showModal: boolean;\r\n settings: UserCookieSettings;\r\n};\r\n\r\ntype UserCookieSettings = {\r\n userSet: boolean;\r\n statistics: boolean;\r\n preferences: boolean;\r\n}\r\n\r\nexport const defaultState = {\r\n showModal: false,\r\n settings: {\r\n userSet: false,\r\n preferences: false,\r\n statistics: false,\r\n }\r\n} as UserCookieSettingsState;\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: defaultState,\r\n reducers: {\r\n setUserCookieSettings: (state, action: PayloadAction<UserCookieSettingsState>) => {\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getUserCookieSettings = (state: ApplicationState) => state[name];\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n setUserCookieSettings: (settings: UserCookieSettingsState) =>\r\n (dispatch: AppDispatch) => {\r\n dispatch(slice.actions.setUserCookieSettings(settings));\r\n },\r\n saveUserCookieSettngs: () =>\r\n (dispatch: AppDispatch, getState: ApplicationStateSelector) => {\r\n const userCookieSettings = getUserCookieSettings(getState());\r\n const newSettings: UserCookieSettingsState = {\r\n ...userCookieSettings,\r\n showModal: false,\r\n settings: {\r\n ...userCookieSettings.settings,\r\n userSet: true\r\n }\r\n };\r\n dispatch(slice.actions.setUserCookieSettings(newSettings));\r\n setCookie(\"UserCookiesSettings\", encodeURIComponent(JSON.stringify(newSettings.settings)), 365);\r\n if (newSettings.settings.statistics) {\r\n enableApplicationInsightsCookies();\r\n } else {\r\n // Clear statistics cookies\r\n disableApplicationInsightsCookies();\r\n }\r\n \r\n if (!newSettings.settings.preferences) {\r\n setCookie(\"Language\", \"\", -1);\r\n }\r\n }\r\n};\r\n\r\nexport const getUserCookieSettingsFromCookie = (nodeContext: NodeContextHttp) => {\r\n const userCookieSettings = nodeContext.cookies.getCookie(\"UserCookiesSettings\")\r\n if (userCookieSettings)\r\n return {\r\n ...defaultState,\r\n settings: JSON.parse(decodeURIComponent(userCookieSettings))\r\n } as UserCookieSettingsState;\r\n\r\n return defaultState;\r\n}\r\n\r\n//Hooks\r\nexport const useUserCookiesSetings = () => {\r\n const userCookieSettings = useSelector(getUserCookieSettings);\r\n const dispatch = useDispatch();\r\n\r\n const saveUserCookieSettings = useCallback(() => {\r\n dispatch(actionCreators.saveUserCookieSettngs());\r\n }, [dispatch]);\r\n\r\n const acceptAllCookies = useCallback(() => {\r\n dispatch(slice.actions.setUserCookieSettings({\r\n ...userCookieSettings,\r\n settings: {\r\n ...userCookieSettings.settings,\r\n preferences: true,\r\n statistics: true\r\n }\r\n }));\r\n saveUserCookieSettings();\r\n }, [dispatch, userCookieSettings, saveUserCookieSettings]);\r\n\r\n const rejectAllCookies = useCallback(() => {\r\n dispatch(slice.actions.setUserCookieSettings({\r\n ...userCookieSettings,\r\n settings: {\r\n ...userCookieSettings.settings,\r\n preferences: false,\r\n statistics: false\r\n }\r\n }));\r\n saveUserCookieSettings();\r\n }, [dispatch, userCookieSettings, saveUserCookieSettings]);\r\n\r\n const setCookiesSetting = useCallback((key: keyof Omit<UserCookieSettings, 'userSet'>, value: boolean) => {\r\n dispatch(slice.actions.setUserCookieSettings({\r\n ...userCookieSettings,\r\n settings: {\r\n ...userCookieSettings.settings,\r\n [key]: value\r\n }\r\n }));\r\n }, [dispatch, userCookieSettings]);\r\n\r\n const openModal = useCallback(() => {\r\n dispatch(slice.actions.setUserCookieSettings({\r\n ...userCookieSettings,\r\n showModal: true\r\n }));\r\n }, [dispatch, userCookieSettings]);\r\n\r\n const closeModal = useCallback(() => {\r\n dispatch(slice.actions.setUserCookieSettings({\r\n ...userCookieSettings,\r\n showModal: false\r\n }));\r\n }, [dispatch, userCookieSettings]);\r\n\r\n return { userCookieSettings, acceptAllCookies, rejectAllCookies, saveUserCookieSettings, setCookiesSetting, openModal, closeModal } as const;\r\n}","import { createSlice, PayloadAction, createSelector } from '@reduxjs/toolkit';\r\nimport SkeletonPrimary from '@components/Skeleton/SkeletonPrimary';\r\nimport React, { ReactNode } from 'react';\r\nimport Skeleton from 'react-loading-skeleton';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from '.';\r\nimport LocalizationService, { Language as Language } from '@services/LocalizationService';\r\nimport { getErrorStoreActions } from './errorStore';\r\nimport { getLocalizationService, getNodeContext } from './nodeContextStore';\r\nimport { isNode } from '@utils/node-utils';\r\nimport { getUserCookieSettings } from './userCookieSettingsStore';\r\n\r\nexport const name = 'localization';\r\n\r\n// Declare an interface of the store's state.\r\nexport type LocalizationItem = {\r\n code: string;\r\n text: string | null,\r\n description: string | null;\r\n isMissing?: boolean | null;\r\n}\r\n\r\nexport type LanguageData = {\r\n [key: string]: LocalizationItem;\r\n}\r\n\r\nexport type LanguagesData = Record<Language, LanguageData>;\r\n\r\nexport type LocalizationStoreState = {\r\n languages: LanguagesData;\r\n currentLanguage: Language;\r\n}\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n currentLanguage: LocalizationService.DEFAULT_LANGUAGE,\r\n languages: {}\r\n } as LocalizationStoreState,\r\n reducers: {\r\n init: (state, action: PayloadAction<Language>) => {\r\n return {\r\n ...state,\r\n currentLanguage: action.payload\r\n }\r\n },\r\n updateLanguageData: (state, action: PayloadAction<LanguagesData>) => {\r\n const languages = { ...state.languages };\r\n Object.keys(action.payload).forEach(language => {\r\n languages[language as Language] = {\r\n ...languages[language as Language],\r\n ...action.payload[language as Language]\r\n }\r\n })\r\n return { ...state, languages };\r\n },\r\n addLanguageData: (state, action: PayloadAction<{ language: Language; locItems: LocalizationItem[] }>) => {\r\n const language = { ...state.languages[action.payload.language] };\r\n action.payload.locItems\r\n .filter(item => item)\r\n .forEach(locItem => language[locItem.code] = locItem);\r\n return {\r\n ...state,\r\n languages: {\r\n ...state.languages,\r\n [action.payload.language]: language\r\n }\r\n };\r\n },\r\n changeLanguage: (state, action: PayloadAction<Language>) => {\r\n return {\r\n ...state,\r\n currentLanguage: action.payload\r\n }\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getLanguageState = (state: ApplicationState) => state[name];\r\nexport const getLanguagesData = createSelector([getLanguageState],\r\n (languageStore) => languageStore?.languages\r\n);\r\nexport const getCurrentLanguage = createSelector([getLanguageState],\r\n (languageStore) => languageStore?.currentLanguage || LocalizationService.DEFAULT_LANGUAGE\r\n);\r\nexport const getCurrentLanguageData = createSelector([getLanguagesData, getCurrentLanguage],\r\n (languagesData, currentLanguage) => currentLanguage ? languagesData?.[currentLanguage] : undefined\r\n);\r\nexport const getLocItemFromLanguageData = (languageData: LanguageData | undefined, locKey: string) => languageData?.[locKey];\r\nexport const getLocItem = (state: ApplicationState, locKey: string) => getLocItemFromLanguageData(getCurrentLanguageData(state), locKey);\r\n\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n getLocItem: (locKey: string) =>\r\n (dispatch: AppDispatch, getState: ApplicationStateSelector): LocalizationItem | null => {\r\n const appState = getState();\r\n const currentLanguage = getCurrentLanguage(appState) || LocalizationService.DEFAULT_LANGUAGE;\r\n const locItem = getLocItem(appState, locKey);\r\n const nodeContext = getNodeContext(appState);\r\n if (locItem) {\r\n return locItem;\r\n }\r\n\r\n const promise = nodeContext.localizationService\r\n .getLocalizationItems({ locKeys: [locKey], language: currentLanguage });\r\n\r\n promise.catch(e => {\r\n dispatch(getErrorStoreActions().push(e))\r\n })\r\n\r\n nodeContext.taskManager.addPromise(promise);\r\n\r\n return null;\r\n },\r\n t: (locKey: string, defaultText: string = '') =>\r\n (dispatch: AppDispatch): string => {\r\n return dispatch(actionCreators.getLocItem(locKey))?.text ?? defaultText ?? '';\r\n },\r\n d: (locKey: string, defaultText: string = '') =>\r\n (dispatch: AppDispatch): string => {\r\n return dispatch(actionCreators.getLocItem(locKey))?.description ?? defaultText ?? '';\r\n },\r\n changeLanguage: (language: Language) =>\r\n (dispatch: AppDispatch, getState: ApplicationStateSelector) => {\r\n const state = getState();\r\n if (getUserCookieSettings(state).settings.preferences)\r\n getLocalizationService(state).setLanguageToCookie(language);\r\n\r\n if (!isNode && document?.documentElement) {\r\n document.documentElement.lang = language == 'CZ' ? 'cs' : 'en';\r\n const manifest = document.head.querySelector<HTMLLinkElement>('[rel=\"manifest\"]');\r\n if (manifest) {\r\n manifest.href = manifest.href.replace(/\\.(CZ|EN)\\./, `.${language}.`);\r\n }\r\n }\r\n dispatch(slice.actions.changeLanguage(language));\r\n }\r\n};\r\n\r\nexport type Stringable = {\r\n toString(): string;\r\n}\r\n\r\nexport const convertParams = (text?: string | null, params?: Stringable[]) => {\r\n if (text == null || !params?.length) {\r\n return text;\r\n }\r\n for (let i = params.length - 1; i >= 0; i--) {\r\n text = text.replace(new RegExp(`@${i}`, 'g'), params[i]?.toString());\r\n }\r\n return text;\r\n}\r\n\r\nexport const convertNodeParams = (text?: string | null, params?: ReactNode[]) => {\r\n if (text == null || !params?.length) {\r\n return text;\r\n }\r\n if (params.every(param => param == null || typeof param == 'string')) {\r\n return convertParams(text, params as string[]);\r\n }\r\n const tokens = text.split(/(@\\d+)/g);\r\n return React.Children.toArray(tokens.map(token => {\r\n if (token.match(/@\\d/)) {\r\n const n = Number(token.slice(1));\r\n return params[n];\r\n }\r\n return token;\r\n }));\r\n}\r\n\r\nconst randomWidth = (minWidth?: number, maxWidth?: number) => {\r\n minWidth ??= 40;\r\n maxWidth ??= Math.max(minWidth, 120);\r\n minWidth = Math.min(minWidth || 40, maxWidth);\r\n return Math.floor(Math.random() * (maxWidth - minWidth)) + minWidth;\r\n}\r\n\r\nexport type CreateSkeletonProps = {\r\n minWidth?: number;\r\n maxWidth?: number;\r\n width?: string | number | undefined;\r\n isPrimaryTheme?: boolean;\r\n}\r\n\r\nexport const createSkeleton = (props?: CreateSkeletonProps) => {\r\n const SkeletonFactory = props?.isPrimaryTheme ? SkeletonPrimary : Skeleton;\r\n return <SkeletonFactory width={props?.width ?? randomWidth(props?.minWidth, props?.maxWidth)} />;\r\n}\r\n\r\nconst createLocalizationToolkit = (dispatch: AppDispatch, currentLanguageData: LanguageData | undefined) => {\r\n const getLocalizationItem = (locKey: string): LocalizationItem | null => {\r\n const locItem = getLocItemFromLanguageData(currentLanguageData, locKey);\r\n if (locItem) {\r\n return locItem;\r\n }\r\n return dispatch(actionCreators.getLocItem(locKey));\r\n }\r\n const t = <T extends unknown = string>(locKey?: string | null, params?: { loadingElement?: T, locParams?: Stringable[] }) => locKey == null ? '' : (convertParams(getLocalizationItem(locKey)?.text, params?.locParams) ?? params?.loadingElement ?? '');\r\n const d = <T extends unknown = string>(locKey?: string | null, params?: { loadingElement?: T, locParams?: Stringable[] }) => locKey == null ? '' : (convertParams(getLocalizationItem(locKey)?.description, params?.locParams) ?? params?.loadingElement ?? '');\r\n const ts = (locKey?: string | null, params?: { locParams?: Stringable[] } & CreateSkeletonProps) => locKey == null ? '' : (convertNodeParams(getLocalizationItem(locKey)?.text, params?.locParams) ?? createSkeleton(params) ?? '');\r\n const ds = (locKey?: string | null, params?: { locParams?: Stringable[] } & CreateSkeletonProps) => locKey == null ? '' : (convertNodeParams(getLocalizationItem(locKey)?.description, params?.locParams) ?? createSkeleton(params) ?? '');\r\n return { t, d, ts, ds, getLocalizationItem };\r\n}\r\n\r\nexport const useCurrentLanguage = () => useSelector(getCurrentLanguage);\r\nexport const useLocalization = () => createLocalizationToolkit(useDispatch(), useSelector(getCurrentLanguageData));\r\nexport const useLocalizationText = () => useLocalization().t;\r\nexport const useLocalizationDesc = () => useLocalization().d;\r\n\r\nexport type UseLocalizationType = ReturnType<typeof useLocalization>;\r\nexport type UseLocalizationTextType = ReturnType<typeof useLocalizationText>;\r\nexport type UseLocalizationDescType = ReturnType<typeof useLocalizationDesc>;\r\n","import { Language } from \"@services/LocalizationService\";\r\nimport { useCurrentLanguage } from \"@store/localizationStore\";\r\nimport { useCallback } from \"react\";\r\n\r\nexport type SwitchByLanguageKeys = 'cz' | 'en';\r\n\r\nexport type SwitchByLanguage<T = string> = Record<SwitchByLanguageKeys, T>;\r\n\r\nexport const switchByLanguage = <T>(switchData: SwitchByLanguage<T>, language: Language) =>\r\n language == 'EN'\r\n ? switchData?.en\r\n : switchData?.cz;\r\n\r\nexport const useSwitchByLanguage = () => {\r\n const currentLanguage = useCurrentLanguage();\r\n\r\n const switchByLanguageCallback = useCallback<SwitchByLanguageResolver>(\r\n switchData => switchByLanguage(switchData, currentLanguage),\r\n [currentLanguage]);\r\n\r\n return {\r\n switchByLanguage: switchByLanguageCallback,\r\n currentLanguage,\r\n };\r\n}\r\n\r\nexport type SwitchByLanguageResolver = <T>(switchData: SwitchByLanguage<T>) => T;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { useSelector } from \"react-redux\";\r\nimport DataRowsService from \"services/DataRowsService\";\r\nimport EnumDescriptionService from \"services/EnumDescriptionService\";\r\nimport LocalizationService, { Language } from \"services/LocalizationService\";\r\nimport { ApplicationState } from \"store\";\r\nimport { CookieManager as CookiesManager } from \"@utils/CookiesUtils\";\r\nimport { TaskManager } from \"@utils/node-utils\";\r\nimport { TitleManager } from \"@utils/TitleManager\";\r\nimport EvaluateConditionsService from \"services/EvaluateConditionsService\";\r\nimport CompatibilityTestService from \"services/CompatibilityTestService\";\r\nimport CryptoService from \"services/CryptoService\";\r\nimport InstanceService from \"services/InstanceService\";\r\nimport NENService from \"@services/NENService\";\r\nimport PasswordResetService from \"@services/PasswordResetService\";\r\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useState } from \"react\";\r\nimport HeartBeatService from \"@services/HeartBeatService\";\r\nimport { DescriptionManager } from \"@utils/DescriptionManager\";\r\nimport WidgetService from \"@services/WidgetService\";\r\nimport { SwitchByLanguage, useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nexport const name = 'nodeContext';\r\n\r\nexport type NodeContextHttp = {\r\n host?: string;\r\n cookies: CookiesManager;\r\n getLanguage: () => Language;\r\n}\r\n\r\nexport type PrivatePortal = {\r\n url: string | null;\r\n loginIframeUrl: string | null;\r\n}\r\n\r\n//Mirror of server side AppSettings\r\nexport type AppSettings = {\r\n heartBeatTimeout: number;\r\n isTestEnvironment: boolean;\r\n isDevEnvironment: boolean;\r\n outageVersion: OutageVersionSettings;\r\n criticalInformation: CriticalInformationSettings;\r\n anotherEnvironment?: AnotherEnvironmentSettings;\r\n externalWidgets: ExternalWidgetsSettings;\r\n appInsightsKey?: string;\r\n serviceDesk: ServiceDeskSettings;\r\n registration: RegistrationSettings;\r\n loginCaption: string;\r\n manualsSettings: ManualsSettings\r\n informationForUsersUrl: LocalizedSettings<string>;\r\n faq: LocalizedSettings<string>;\r\n}\r\n\r\ntype AnotherEnvironmentSettings = {\r\n loginLocKey: string;\r\n linkLocKey: string;\r\n url: string;\r\n}\r\n\r\ntype OutageVersionSettings = {\r\n text: LocalizedSettings<string>;\r\n enabled: boolean;\r\n}\r\ntype CriticalInformationSettings = {\r\n texts: Array<LocalizedSettings<CriticalInformationText>>;\r\n enabled: boolean;\r\n}\r\nexport type CriticalInformationText = {\r\n header: string;\r\n body: string;\r\n}\r\n\r\ntype ExternalWidgetsSettings = {\r\n loaderTimeout: number;\r\n mainUrl: string;\r\n detailUrl: DetailUrlSettings;\r\n alerts: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n skoleni: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n skoleniZzvz: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n videa: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n provozniInformace: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n provozniInformacePrihlaseni: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n provozniRad: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n registraceDodavatel: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n registraceZadavatel: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n registraceSdruzeni: LocalizedSettings<ExternalWidgetUrlSettings>;\r\n}\r\n\r\ntype ExternalWidgetUrlSettings = {\r\n smallWidgetUrl: string;\r\n allWidgetUrl: string;\r\n}\r\n\r\ntype LocalizedSettings<T = any> = SwitchByLanguage<T>;\r\n\r\ntype ServiceDeskSettings = {\r\n url: string;\r\n}\r\n\r\ntype DetailUrlSettings = {\r\n baseUrl: string\r\n languageRegex: string\r\n}\r\n\r\ntype WidgetName = keyof Omit<ExternalWidgetsSettings, 'loaderTimeout' | 'mainUrl' | 'detailUrl'>;\r\n\r\ntype RegistrationSettings = {\r\n additionalLinks: LocalizedSettings<AdditionalLinks>;\r\n enabled: boolean;\r\n}\r\n\r\ntype ManualsSettings = {\r\n showAllUrl: LocalizedSettings<string>;\r\n manuals: LocalizedSettings<Manual>[];\r\n}\r\n\r\ntype Manual = {\r\n caption: string;\r\n description: string;\r\n url: string;\r\n}\r\n\r\ntype AdditionalLinks = {\r\n faqGetDigitalSignature: string;\r\n documentsForDownload: string;\r\n operatingRules: string;\r\n}\r\n\r\nexport type NodeContextState = {\r\n http: NodeContextHttp;\r\n titleManager: TitleManager;\r\n descriptionManager: DescriptionManager;\r\n localizationService: LocalizationService;\r\n taskManager: TaskManager;\r\n enumDescriptionService: EnumDescriptionService;\r\n dataRowsService: DataRowsService;\r\n compatibilityTestService: CompatibilityTestService;\r\n evaluateConditionsService: EvaluateConditionsService;\r\n cryptoService: CryptoService;\r\n instanceService: InstanceService;\r\n nenService: NENService;\r\n passwordResetService: PasswordResetService;\r\n heartBeatService: HeartBeatService;\r\n widgetService: WidgetService;\r\n privatePortal: PrivatePortal;\r\n appSettings: AppSettings;\r\n}\r\n\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {} as NodeContextState,\r\n reducers: {\r\n init(state, action: PayloadAction<NodeContextState>) {\r\n return action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const { reducer } = slice;\r\n\r\nexport const getNodeContext = (state: ApplicationState) => state[name];\r\nexport const getLocalizationService = (state: ApplicationState) => getNodeContext(state).localizationService;\r\nexport const getTitleManager = (state: ApplicationState) => getNodeContext(state).titleManager;\r\nexport const getDescriptionManager = (state: ApplicationState) => getNodeContext(state).descriptionManager;\r\nexport const getTaskManager = (state: ApplicationState) => getNodeContext(state).taskManager;\r\nexport const getNodeHttp = (state: ApplicationState) => getNodeContext(state).http;\r\nexport const getCookieManager = (state: ApplicationState) => getNodeHttp(state).cookies;\r\nexport const getEnumDescriptionService = (state: ApplicationState) => getNodeContext(state).enumDescriptionService;\r\nexport const getDataRowsService = (state: ApplicationState) => getNodeContext(state).dataRowsService;\r\nexport const getEvaluateConditionsService = (state: ApplicationState) => getNodeContext(state).evaluateConditionsService;\r\nexport const getCompatibilityTestService = (state: ApplicationState) => getNodeContext(state).compatibilityTestService;\r\nexport const getCryptoService = (state: ApplicationState) => getNodeContext(state).cryptoService;\r\nexport const getInstanceService = (state: ApplicationState) => getNodeContext(state).instanceService;\r\nexport const getNENService = (state: ApplicationState) => getNodeContext(state).nenService;\r\nexport const getPasswordResetService = (state: ApplicationState) => getNodeContext(state).passwordResetService;\r\nexport const getHeartBeatService = (state: ApplicationState) => getNodeContext(state).heartBeatService;\r\nexport const getWidgetService = (state: ApplicationState) => getNodeContext(state).widgetService;\r\nexport const getPrivatePortal = (state: ApplicationState) => getNodeContext(state).privatePortal;\r\nexport const getAppSettings = (state: ApplicationState) => getNodeContext(state).appSettings;\r\n\r\nexport const useNodeContext = () => useSelector(getNodeContext);\r\nexport const useLocalizationService = () => useSelector(getLocalizationService);\r\nexport const useNodeHttp = () => useSelector(getNodeHttp);\r\nexport const useCookieManager = () => useSelector(getCookieManager);\r\nexport const useTitleManager = () => useSelector(getTitleManager);\r\nexport const useDescriptionManager = () => useSelector(getDescriptionManager);\r\nexport const useTaskManager = () => useSelector(getTaskManager);\r\nexport const useEnumDescriptionService = () => useSelector(getEnumDescriptionService);\r\nexport const useDataRowsService = () => useSelector(getDataRowsService);\r\nexport const useCompatibilityTestService = () => useSelector(getCompatibilityTestService);\r\nexport const useCryptoService = () => useSelector(getCryptoService);\r\nexport const useInstanceService = () => useSelector(getInstanceService);\r\nexport const useNENService = () => useSelector(getNENService);\r\nexport const useWidgetService = () => useSelector(getWidgetService);\r\nexport const usePrivatePortal = () => useSelector(getPrivatePortal);\r\nexport const useAppSettings = () => {\r\n const appSettings = useSelector(getAppSettings);\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n\r\n const getWidget = (name: WidgetName) => switchByLanguage(appSettings?.externalWidgets?.[name]);\r\n const getSmallWidgetUrl = (name: WidgetName) => appSettings?.externalWidgets?.mainUrl + getWidget(name)?.smallWidgetUrl;\r\n const getAllWidgetUrl = (name: WidgetName) => appSettings?.externalWidgets?.mainUrl + getWidget(name)?.allWidgetUrl;\r\n const getDetailWidgetUrl = () => appSettings?.externalWidgets?.mainUrl + appSettings?.externalWidgets?.detailUrl?.baseUrl;\r\n const updateDetailWidgetLanguage = (query: string) => query.replace(new RegExp(appSettings?.externalWidgets?.detailUrl?.languageRegex), `$1${switchByLanguage({ cz: 'cs', en: 'en' })}`);\r\n const getOutageVersion = () => ({ enabled: appSettings?.outageVersion?.enabled, text: switchByLanguage(appSettings?.outageVersion?.text) });\r\n const getCriticalInformation = () => ({ enabled: appSettings?.criticalInformation?.enabled, texts: appSettings?.criticalInformation?.texts?.map(switchByLanguage) });\r\n const getManuals = () => ({\r\n showAllUrl: switchByLanguage(appSettings?.manualsSettings?.showAllUrl),\r\n manuals: appSettings?.manualsSettings?.manuals.map(switchByLanguage)\r\n });\r\n const getInformationForUsersUrl = () => switchByLanguage(appSettings?.informationForUsersUrl);\r\n const getFaqUrl = () => switchByLanguage(appSettings?.faq);\r\n\r\n return { appSettings, getCriticalInformation, getSmallWidgetUrl, getAllWidgetUrl, getDetailWidgetUrl, getOutageVersion, updateDetailWidgetLanguage, getManuals, getInformationForUsersUrl, getFaqUrl };\r\n}\r\n\r\nexport const useWidgetDetailRedirect = () => {\r\n const { appSettings, getDetailWidgetUrl } = useAppSettings();\r\n const [url, setUrl] = useState<{ url: string, source: MessageEventSource | null }>({ url: '', source: null });\r\n\r\n const mainURL = useMemo(() => appSettings?.externalWidgets?.mainUrl,\r\n [appSettings?.externalWidgets?.mainUrl])\r\n\r\n const reset = useCallback(() => {\r\n setUrl({ url: '', source: null });\r\n }, [setUrl]);\r\n\r\n const onMessage = useCallback(async (event: MessageEvent) => {\r\n if (event?.origin != (new URL(mainURL)).origin\r\n || !event?.data\r\n || typeof event.data !== 'string'\r\n || !/^(\\?id=)|(https?)/.test(event.data))\r\n return;\r\n\r\n const url = event.data.replace(getDetailWidgetUrl(), '')\r\n setUrl({ url: url, source: event.source });\r\n }, [setUrl, mainURL, getDetailWidgetUrl]);\r\n\r\n useLayoutEffect(() => {\r\n window.addEventListener('message', onMessage);\r\n return () => {\r\n window.removeEventListener('message', onMessage);\r\n };\r\n }, [onMessage]);\r\n\r\n return { url, reset };\r\n}\r\n\r\nexport const useHeartBeat = () => {\r\n const heartBeatService = useSelector(getHeartBeatService);\r\n const { appSettings } = useAppSettings();\r\n const beat = useCallback(async () => {\r\n setTimeout(() => requestAnimationFrame(async () => {\r\n const result = await heartBeatService.beat();\r\n\r\n if (result.hasErrors) {\r\n //Token corrupted/expired\r\n window.location.reload();\r\n return;\r\n }\r\n\r\n beat();\r\n }), (appSettings?.heartBeatTimeout || 15) * 60 * 1000);\r\n }, [heartBeatService, appSettings])\r\n\r\n useEffect(() => {\r\n beat();\r\n }, [beat]);\r\n}\r\n\r\nexport const createPrivatePortal = (privatePortalPath?: string, publicPortalPath?: string): PrivatePortal => {\r\n publicPortalPath ??= '';\r\n if (!privatePortalPath) {\r\n return {\r\n url: null,\r\n loginIframeUrl: null,\r\n }\r\n }\r\n\r\n return {\r\n url: `/${privatePortalPath}/`,\r\n loginIframeUrl: `${privatePortalPath}/login-frame`\r\n };\r\n};\r\n","import { isEmpty, notEmpty } from \"./ArrayHelper\";\r\n\r\nexport const rtrimText = (text: string, trimText: string) => {\r\n while (text.endsWith(trimText)) {\r\n text = text.slice(0, text.length - trimText.length);\r\n }\r\n return text;\r\n}\r\n\r\nexport const splitParam = (text?: string, separator?: string) => {\r\n if (text == null) {\r\n return [];\r\n }\r\n const separatorIndex = separator == null ? -1 : text.indexOf(separator);\r\n if (separatorIndex < 0) {\r\n return ['', text] as const;\r\n }\r\n return [text.slice(0, separatorIndex), text.slice(separatorIndex + (separator?.length ?? 0))] as const;\r\n}\r\n\r\nexport const joinNonEmpty = (separator: string, ...segments: (string | null | undefined)[]) => segments.filter(notEmpty).join(separator);\r\n\r\nexport const prefixNonEmpty = (prefix: string, text: string) => isEmpty(text) ? '' : `${prefix}${text}`;\r\n","import { Stringable } from \"@store/localizationStore\"\r\nimport { AttrMapping, AttrMappingDescription, AttrType } from \"./AttrMapping\"\r\nimport { UrlParamObject } from \"./QueryHook\"\r\nimport { rtrimText } from \"./StringUtils\"\r\n\r\nexport type FulltextAttrType = 'like' | 'contains';\r\n\r\nexport type FulltextAttrObject = {\r\n attrName: string;\r\n type: FulltextAttrType;\r\n}\r\n\r\nexport type FulltextAttr = string | FulltextAttrObject;\r\n\r\nconst toFullTextObject = (attrName: FulltextAttr): FulltextAttrObject => {\r\n if (typeof attrName == 'string') {\r\n return { attrName, type: 'like' };\r\n }\r\n return attrName;\r\n}\r\n\r\nexport type FilterConditionParams = {\r\n attrMapping: AttrMapping\r\n urlParams?: UrlParamObject;\r\n fulltextParam?: string;\r\n fulltextAttributes?: FulltextAttr[];\r\n}\r\n\r\nexport type CrateConditionPartParams = {\r\n attrInfo: AttrMappingDescription;\r\n value: unknown;\r\n conditionParams: unknown[];\r\n}\r\n\r\nexport type CrateConditionResult = {\r\n condition: string;\r\n conditionParams: unknown[];\r\n}\r\n\r\nexport type CreateConditionFactory = (params: CrateConditionPartParams) => CrateConditionResult | null;\r\n\r\nexport const joinConditionsByAnd = (...conditionParts: (string | null | undefined)[]) => {\r\n conditionParts = conditionParts.filter(part => part);\r\n if (conditionParts.length == 0) {\r\n return undefined;\r\n }\r\n return `(${conditionParts.filter(part => part).join(') AND (')})`;\r\n}\r\n\r\nexport const joinConditionsByOr = (...conditionParts: (string | null | undefined | boolean)[]) => {\r\n conditionParts = conditionParts.filter(part => part);\r\n if (conditionParts.length == 0) {\r\n return undefined;\r\n }\r\n return `(${conditionParts.filter(part => part).join(') OR (')})`;\r\n};\r\n\r\nconst escapeStringQuery = (query: string) => {\r\n return rtrimText(query || '', '\\\\')\r\n .replace(/%/g, '\\\\%')\r\n .replace(/([^\\\\]|^)\\*/g, '$1%')\r\n .replace(/\\\\\\*/g, '*');\r\n}\r\n\r\nexport const toLinguisticLike = (serverName: string, value: string, conditionParams: any[]) => {\r\n const escapedValue = escapeStringQuery(value);\r\n conditionParams.push(`%${escapedValue}%`);\r\n return `:Linguistic.LIKE(${serverName}, @${conditionParams.length - 1})`;\r\n};\r\n\r\nexport const toSplittedLinguisticLike = (serverName: string, value: string, conditionParams: any[]) => {\r\n if (value == null || value == '') {\r\n return null;\r\n }\r\n const condition = joinConditionsByOr(...(value as string)\r\n .split('|')\r\n .map(strValue => toLinguisticLike(serverName, strValue?.trim(), conditionParams))\r\n );\r\n return condition ? `(${condition})` : null;\r\n}\r\n\r\nexport const toLinguisticContains = (serverName: string, value: string, conditionParams: any[]) => {\r\n const escapedValue = escapeStringQuery(value);\r\n conditionParams.push(`${escapedValue}`);\r\n return `:DBNEN.FiltrovatZPNaLW(${serverName}, @${conditionParams.length})`;\r\n};\r\n\r\nexport const toSplittedLinguisticContains = (serverName: string, value: string, conditionParams: any[]) => {\r\n if (value == null || value == '') {\r\n return null;\r\n }\r\n const condition = joinConditionsByOr(...(value as string)\r\n .split('|')\r\n .map(strValue => toLinguisticContains(serverName, strValue?.trim(), conditionParams))\r\n );\r\n return condition ? `(${condition})` : null;\r\n}\r\n\r\nexport const createIn = (serverAttrName: string, values: string | string[] | null | undefined) => {\r\n if (!values) {\r\n return null;\r\n }\r\n const valuesArray = Array.isArray(values) ? values : values.split(',');\r\n const valuesIn = valuesArray.join(',');\r\n if (!valuesIn) {\r\n return null;\r\n }\r\n return `${serverAttrName} in [${valuesIn}]`;\r\n}\r\n\r\nexport const createSubtreeCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n if (value == null || value == '') {\r\n return null;\r\n }\r\n const inCondition = createIn(attrInfo.serverName, value as string);\r\n const parentInCondition = createIn('Nadrizeny', value as string);\r\n return {\r\n condition: `${inCondition} OR Exists(DStrom, ID=&${attrInfo.serverName} AND ${parentInCondition})`,\r\n conditionParams\r\n };\r\n}\r\n\r\nexport const createBasicCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n conditionParams.push(value);\r\n return {\r\n condition: `${attrInfo.serverName}=@${conditionParams.length - 1}`,\r\n conditionParams\r\n };\r\n}\r\n\r\nconst trueValues = ['ano', 'true', 'a', false] as unknown[];\r\nconst falseValues = ['ne', 'false', 'n', true] as unknown[];\r\nconst createBoolCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n const values = (value as Stringable)?.toString().toLowerCase().split(',');\r\n const trueValue = values.find(val => trueValues.includes(val)) != null;\r\n const falseValue = values.find(val => falseValues.includes(val)) != null;\r\n if (value == null || trueValue && falseValue) {\r\n return null;\r\n }\r\n return {\r\n condition: `${attrInfo.serverName}${trueValue ? '=' : '<>'}true`,\r\n conditionParams\r\n };\r\n};\r\n\r\nconst createStringCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n if (!value) {\r\n return null;\r\n }\r\n const condition = toSplittedLinguisticLike(attrInfo.serverName, value as string, conditionParams);\r\n return condition ? {\r\n condition: `(${condition})`,\r\n conditionParams\r\n } : null;\r\n};\r\n\r\nconst createEnumCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n if (!value) {\r\n return null;\r\n }\r\n const valuesArray = Array.isArray(value) ? value : (value as string).split(',');\r\n const values = valuesArray.map(val => `!${attrInfo.typeParam}.${val}`);\r\n const condition = createIn(attrInfo.serverName, values);\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n};\r\n\r\nconst createIdCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n if (!value) {\r\n return null;\r\n }\r\n const condition = createIn(attrInfo.serverName, value as string);\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n};\r\n\r\nconst createDateCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n if (!value) {\r\n return null;\r\n }\r\n const stringValue = (value as Stringable).toString();\r\n if (stringValue.includes(',')) {\r\n const [from, to] = stringValue.split(',');\r\n const condition = joinConditionsByAnd(\r\n from && `${attrInfo.serverName} >= '${from}'`,\r\n to && `${attrInfo.serverName} <= '${to}'`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams: conditionParams\r\n } : null;\r\n }\r\n return {\r\n condition: `${attrInfo.serverName}='${stringValue}'`,\r\n conditionParams: conditionParams\r\n };\r\n};\r\n\r\nconst createNumberCondition: CreateConditionFactory = ({ attrInfo, value }) => {\r\n const stringValue = (value as Stringable)?.toString();\r\n if (stringValue == null || stringValue == '') {\r\n return null;\r\n }\r\n if (stringValue.includes(',')) {\r\n const [from, to] = stringValue.split(',');\r\n const condition = joinConditionsByAnd(\r\n from && `${attrInfo.serverName} >= ${from}`,\r\n to && `${attrInfo.serverName} <= ${to}`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams: []\r\n } : null;\r\n }\r\n return {\r\n condition: `${attrInfo.serverName}=${stringValue}`,\r\n conditionParams: []\r\n };\r\n}\r\n\r\nconst conditionFactory = new Map<AttrType, CreateConditionFactory>();\r\nconditionFactory.set('bool', createBoolCondition);\r\nconditionFactory.set('string', createStringCondition);\r\nconditionFactory.set('text', createStringCondition);\r\nconditionFactory.set('enum', createEnumCondition);\r\nconditionFactory.set('date', createDateCondition);\r\nconditionFactory.set('dateTime', createDateCondition);\r\nconditionFactory.set('number', createNumberCondition);\r\nconditionFactory.set('money', createNumberCondition);\r\nconditionFactory.set('id', createIdCondition);\r\n\r\nexport const createConditionPart: CreateConditionFactory = (params) => {\r\n const conditionCreator = params.attrInfo.filterCondition\r\n ?? conditionFactory.get(params.attrInfo.type)\r\n ?? createBasicCondition;\r\n return conditionCreator(params);\r\n}\r\n\r\nexport const createFilterCondition = ({\r\n attrMapping,\r\n urlParams,\r\n fulltextParam,\r\n fulltextAttributes\r\n}: FilterConditionParams): CrateConditionResult => {\r\n if (!urlParams || !attrMapping) {\r\n return {\r\n condition: '',\r\n conditionParams: []\r\n };\r\n }\r\n const filterAttrs = [...Object.keys(urlParams)]\r\n .map(urlParam => attrMapping.getByClientName(urlParam))\r\n .filter(attr => attr) as AttrMappingDescription[];\r\n const conditions: (string | undefined | null)[] = [];\r\n const conditionParams: unknown[] = [];\r\n filterAttrs.forEach(attrInfo => {\r\n const part = createConditionPart({\r\n attrInfo,\r\n value: urlParams[attrInfo.clientName],\r\n conditionParams\r\n });\r\n if (part) {\r\n conditions.push(part.condition);\r\n }\r\n });\r\n\r\n const fulltextValue = fulltextParam ? urlParams[fulltextParam] : null;\r\n if (fulltextValue && fulltextAttributes) {\r\n const fulltextConditionParts = fulltextAttributes.map(toFullTextObject)\r\n .map(({ attrName, type }) => {\r\n if (type == 'contains') {\r\n return toSplittedLinguisticContains(attrMapping.toServerName(attrName), fulltextValue, conditionParams);\r\n }\r\n return toSplittedLinguisticLike(attrMapping.toServerName(attrName), fulltextValue, conditionParams);\r\n });\r\n conditions.push(joinConditionsByOr(...fulltextConditionParts));\r\n }\r\n\r\n const joinedConditions = joinConditionsByAnd(...conditions);\r\n\r\n return {\r\n condition: joinedConditions ? joinedConditions : '',\r\n conditionParams\r\n };\r\n}","import classNames, { Argument } from \"classnames\";\r\nimport { combineArrays, DeepArray, flatArrayDeep, notEmptyItems, toArray, uniqueArray } from \"./ArrayHelper\";\r\n\r\nexport type ComponentNames = DeepArray<string>;\r\nexport type Classes = Argument | Argument[];\r\n\r\nconst combineSegments = (segments1: string[], segments2: string[]) =>\r\n combineArrays(segments1, segments2, (s1, s2) => `${s1}${s2}`);\r\n\r\nconst filterResult = <T extends unknown>(...arrays: T[][]): T[] => {\r\n return notEmptyItems(uniqueArray(...arrays))\r\n}\r\n\r\nexport const setupCna = (...mainClasses: ComponentNames[]) => {\r\n const prefixesFlatten = uniqueArray(\r\n flatArrayDeep(mainClasses)\r\n .filter(name => name)\r\n );\r\n const cna = (...postfixes: Classes[]) => {\r\n if (postfixes.length == 0) {\r\n return prefixesFlatten;\r\n }\r\n const classesString = classNames(postfixes);\r\n if (!classesString) {\r\n return [];\r\n }\r\n return filterResult(combineSegments(prefixesFlatten, classesString.split(' ')));\r\n }\r\n cna.setupSubCna = (...infixes: string[]) => setupCna(...combineSegments(prefixesFlatten, infixes));\r\n cna.subCna = (infixes: string | string[], ...postfixes: Classes[]) => filterResult([...cna(infixes), ...cna.setupSubCna(...toArray(infixes))(postfixes)]);\r\n cna.main = (...postfixes: Classes[]) => filterResult([...cna(), ...cna(postfixes)]);\r\n cna.raw = (...className: Classes[]) => (classNames(...className) ?? '').split(' ');\r\n cna.with = (...className: Classes[]) => {\r\n const cnaWith = (...postfixes: Classes[]) => filterResult(cna(postfixes), classNames(className).split(' '));\r\n cnaWith.main = (...postfixes: Classes[]) => filterResult(cna.main(postfixes), classNames(className).split(' '));\r\n return cnaWith;\r\n };\r\n const cn = (...postfixes: Classes[]) => cna(...postfixes).join(' ');\r\n cn.setupSubCn = (...infixes: string[]) => cna.setupSubCna(...infixes).string;\r\n cn.subCn = (infixes: string | string[], ...postfixes: Classes[]) => cna.subCna(infixes, ...postfixes).join(' ');\r\n cn.main = (...postfixes: Classes[]) => cna.main(...postfixes).join(' ');\r\n cn.with = (...className: Classes[]) => {\r\n const cnWith = (...postfixes: Classes[]) => [cn(...postfixes), classNames(className)].filter(c => c).join(' ');\r\n cnWith.main = (...postfixes: Classes[]) => [cn.main(postfixes), classNames(className)].filter(c => c).join(' ');\r\n cnWith.subCn = (infixes: string | string[], ...postfixes: Classes[]) => [cn.subCn(infixes, ...postfixes), classNames(className)].filter(c => c).join(' ');\r\n return cnWith;\r\n };\r\n cn.raw = classNames;\r\n cna.string = cn;\r\n return cna;\r\n}\r\n\r\nexport const setupCn = (...prefixes: ComponentNames[]) => {\r\n return setupCna(prefixes).string;\r\n}\r\n\r\nexport type Cn = ReturnType<typeof setupCn>;\r\n","import { useLocalization } from \"@store/localizationStore\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport React, { MouseEventHandler } from \"react\";\r\nimport { FC } from \"react\"\r\nimport { Link, LinkProps } from \"react-router-dom\";\r\n\r\nconst cn = setupCn('gov-pagination__item');\r\n\r\nexport type PaginationArrowDirection = 'left' | 'right';\r\n\r\nexport type PaginationArrowProps =\r\n Pick<LinkProps, 'to'> &\r\n {\r\n className?: Classes;\r\n direction: PaginationArrowDirection;\r\n onClick?: MouseEventHandler;\r\n isDisabled?: boolean;\r\n }\r\n\r\nconst PaginationArrow: FC<PaginationArrowProps> = ({ className, to, onClick, direction, isDisabled }) => {\r\n const { t } = useLocalization();\r\n\r\n const labelLocKey = direction == 'left' ? 'NEN-765109' : 'NEN-765110';\r\n const directionModificator = direction == 'left' ? '--arrow-left' : '--arrow-right';\r\n\r\n return (\r\n <Link\r\n to={to}\r\n className={cn.with(className).main(directionModificator, {\r\n '--disabled': isDisabled\r\n })}\r\n onClick={onClick}\r\n rel={direction == 'left' ? 'prev' : 'next'}\r\n aria-label={`${t(labelLocKey)} ${t('NEN-787016')}`} />\r\n );\r\n}\r\n\r\nexport default React.memo(PaginationArrow);\r\n","import { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport React, { MouseEventHandler, PropsWithChildren } from \"react\";\r\nimport { FC } from \"react\"\r\nimport { Link, LinkProps } from \"react-router-dom\";\r\n\r\nconst cn = setupCn('gov-pagination__item');\r\n\r\nexport type PaginationPageProps =\r\n Pick<LinkProps, 'to'> &\r\n PropsWithChildren<{\r\n className?: Classes;\r\n isActive?: boolean;\r\n onClick?: MouseEventHandler;\r\n }>;\r\n\r\nconst PaginationPage: FC<PaginationPageProps> = ({ className, to, isActive, onClick, children }) => (\r\n <Link\r\n to={to}\r\n onClick={onClick}\r\n aria-current={isActive}\r\n className={cn.with(className).main({\r\n '--active': isActive\r\n })}>\r\n {children}\r\n </Link>\r\n);\r\n\r\nexport default React.memo(PaginationPage);\r\n","import { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport React from \"react\";\r\nimport { FC } from \"react\"\r\n\r\nconst cn = setupCn('gov-pagination__item');\r\n\r\nexport type PaginationSeparatorProps = {\r\n className?: Classes;\r\n}\r\n\r\nconst PaginationSeparator: FC<PaginationSeparatorProps> = ({ className }) => (\r\n <span className={cn.with(className).main('--dots')} aria-hidden='true'>...</span>\r\n);\r\n\r\nexport default React.memo(PaginationSeparator);\r\n","import { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport React, { PropsWithChildren } from \"react\";\r\nimport { FC } from \"react\"\r\nimport PaginationArrow from \"./PaginationArrow\";\r\nimport PaginationPage from \"./PaginationPage\";\r\nimport PaginationSeparator from \"./PaginationSeparator\";\r\n\r\nconst cn = setupCn('gov-pagination');\r\n\r\nexport type PaginationProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\nexport type PaginationType = FC<PaginationProps> & {\r\n Page: typeof PaginationPage;\r\n Separator: typeof PaginationSeparator;\r\n Arrow: typeof PaginationArrow;\r\n}\r\n\r\nconst Pagination: PaginationType = React.memo(({ className, children }: PaginationProps) => {\r\n return (\r\n <div className={cn.with(className)()}>\r\n <div className={cn.with(className)('__holder')}>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}) as unknown as PaginationType;\r\n\r\nPagination.Page = PaginationPage;\r\nPagination.Separator = PaginationSeparator;\r\nPagination.Arrow = PaginationArrow;\r\n\r\nexport default Pagination;\r\n","import { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { useCallback } from \"react\";\r\nimport { match, useRouteMatch } from \"react-router\";\r\n\r\nexport const paramsPrefix = 'p:'\r\n\r\nexport type FilterParamsNames = {\r\n filterParamName: string;\r\n routeParamName: string;\r\n};\r\n\r\ntype ListUrl = {\r\n url: (match: match<UrlParamObject>) => string;\r\n pureUrl: string;\r\n path: string;\r\n paramNames: FilterParamsNames;\r\n}\r\n\r\ntype DetailUrl = {\r\n url: string;\r\n path: string;\r\n pathWithoutRouteParam: string;\r\n detailIdParam: string;\r\n urlRouteParam: string;\r\n addPageUrl: (pageUrl: string) => number\r\n}\r\n\r\nconst createPureUrl = (url: string, anywhere?: boolean) => ({\r\n url: (match: match<UrlParamObject>) => {\r\n if (match?.params?.language) {\r\n return `/${match.params.language}${url}`;\r\n }\r\n return url;\r\n },\r\n pureUrl: url,\r\n path: anywhere ? `/:language(en)?/*${url}` : `/:language(en)?${url}`\r\n});\r\n\r\nconst createListUrl = ({ name, filterParam, urlRouteParam }: { name: string; filterParam: string, urlRouteParam?: string }): ListUrl => {\r\n urlRouteParam ??= 'filter';\r\n return {\r\n url: (match: match<UrlParamObject>) => {\r\n if (match?.params?.language) {\r\n return `/${match.params.language}/${name}`;\r\n }\r\n return `/${name}`;\r\n },\r\n pureUrl: `/${name}`,\r\n path: `/:language(en)?/${name}/:${urlRouteParam}(${paramsPrefix}[^\\/]*)?`,\r\n paramNames: {\r\n routeParamName: urlRouteParam,\r\n filterParamName: filterParam\r\n }\r\n }\r\n}\r\n\r\nconst createDetailUrl = ({ url, detailIdParam, urlRouteParam }: { url: string, detailIdParam: string, urlRouteParam: string }) => {\r\n const pathWithoutRouteParam = `/:language(en)?/*/${url}/:${detailIdParam}([^\\/]+)`;\r\n const routeParam = `/:${urlRouteParam}(${paramsPrefix}[^\\/]*)?`;\r\n const path = `${pathWithoutRouteParam}${routeParam}`;\r\n const pages: string[] = [];\r\n return {\r\n url: url,\r\n pathWithoutRouteParam: pathWithoutRouteParam,\r\n path: path,\r\n get pathWithPages() {\r\n return [...pages, path];\r\n },\r\n detailIdParam: detailIdParam,\r\n urlRouteParam: urlRouteParam,\r\n addPageUrl: (pageUrl: string) => pages.push(`${pathWithoutRouteParam}/${pageUrl}${routeParam}`)\r\n }\r\n}\r\n\r\nconst createDetailPageUrl = ({ detailUrl, url }: { url: string, detailUrl: DetailUrl }) => {\r\n detailUrl.addPageUrl(url);\r\n return {\r\n path: `${detailUrl.pathWithoutRouteParam}/${url}/:${detailUrl.urlRouteParam}(${paramsPrefix}[^\\/]*)?`,\r\n url: `/${url}`\r\n }\r\n}\r\n\r\nconst home = createPureUrl('/');\r\nconst loginFrame = createPureUrl('/login-frame');\r\n\r\nconst provozniRad = createPureUrl('/provozni-rad');\r\nconst skoleniVse = createPureUrl('/skoleni-vse');\r\nconst videa = createPureUrl('/videa');\r\nconst videaVse = createPureUrl('/videa-vse');\r\nconst skoleniZzvz = createPureUrl('/skoleni-zzvz');\r\nconst skoleniZzvzVse = createPureUrl('/skoleni-zzvz-vse');\r\nconst prirucky = createPureUrl('/prirucky');\r\nconst provozniInformace = createPureUrl('/provozni-informace');\r\nconst detailInformace = createPureUrl('/detail-provozni-informace', true);\r\n\r\nconst rozcestnikRegistrace = createPureUrl('/registrace');\r\nconst prohlaseniOPristupnosti = createPureUrl('/prohlaseni-o-pristupnosti');\r\n\r\nconst registrDns = createListUrl({ name: 'registr-dns', filterParam: 'dns' });\r\nconst registrDnsDetail = createDetailUrl({ url: 'detail-dns', detailIdParam: 'registrDnsId', urlRouteParam: 'dnsFilter' });\r\n//const registrDnsPostupy = createDetailUrl({ url: 'postupy-dns', detailIdParam: 'registrDnsId', urlRouteParam: 'dnsFilter' });\r\nconst registrDnsPostupy = createDetailPageUrl({ url: 'postupy-dns', detailUrl: registrDnsDetail });\r\n\r\nconst vestnik = createListUrl({ name: 'vestnik', filterParam: 'vestnik' });\r\nconst vestnikDetail = createDetailUrl({ url: 'detail-vestniku', detailIdParam: 'vestnikId', urlRouteParam: 'vestnikFilter' });\r\n\r\nconst registrSK = createListUrl({ name: 'registr-sk', filterParam: 'sk' });\r\nconst registrSKDetail = createDetailUrl({ url: 'detail-sk', detailIdParam: 'skId', urlRouteParam: 'skFilter' });\r\n\r\nconst verejneZakazky = createListUrl({ name: 'verejne-zakazky', filterParam: 'vz' });\r\nconst verejneZakazkyDetail = createDetailUrl({ url: 'detail-zakazky', detailIdParam: 'zakazkaId', urlRouteParam: 'vzFilter' });\r\nconst VerejneZakazkyCasti = createDetailPageUrl({ url: 'casti', detailUrl: verejneZakazkyDetail });\r\nconst verejneZakazkyDetailZadavaciDokumentace = createDetailPageUrl({ url: 'zadavaci-dokumentace', detailUrl: verejneZakazkyDetail });\r\nconst verejneZakazkyDetailVysvetleniDokumentace = createDetailPageUrl({ url: 'vysvetleni-dokumentace', detailUrl: verejneZakazkyDetail });\r\nconst verejneZakazkyDetailVysledek = createDetailPageUrl({ url: 'vysledek', detailUrl: verejneZakazkyDetail });\r\n\r\nconst verejneZakazkyCastiDetail = createDetailUrl({ url: 'detail-casti', detailIdParam: 'castId', urlRouteParam: 'cvzFilter' });\r\nconst verejneZakazkyDetailCastiZadavaciDokumentace = createDetailPageUrl({ url: 'zadavaci-dokumentace', detailUrl: verejneZakazkyCastiDetail });\r\nconst verejneZakazkyDetailCastiVysvetleniDokumentace = createDetailPageUrl({ url: 'vysvetleni-dokumentace', detailUrl: verejneZakazkyCastiDetail });\r\nconst verejneZakazkyDetailCastiVysledek = createDetailPageUrl({ url: 'vysledek', detailUrl: verejneZakazkyCastiDetail });\r\n\r\nconst profilyZadavateluPlatne = createListUrl({ name: 'profily-zadavatelu-platne', filterParam: 'pzp' });\r\nconst profilyZadavateluZneplatnene = createListUrl({ name: 'profily-zadavatelu-zneplatnene', filterParam: 'pzz' });\r\nconst profilZadavateleDetail = createDetailUrl({ url: 'detail-profilu', detailIdParam: 'profilId', urlRouteParam: 'pFilter' });\r\nconst profilZadavateleDetailKontakty = createDetailPageUrl({ url: 'dalsi-informace', detailUrl: profilZadavateleDetail });\r\nconst profilZadavateleDetailZahajeneZakazky = createDetailPageUrl({ url: 'zahajene-zakazky', detailUrl: profilZadavateleDetail });\r\nconst profilZadavateleDetailUzavreneZakazky = createDetailPageUrl({ url: 'uzavrene-zakazky', detailUrl: profilZadavateleDetail });\r\nconst profilZadavateleDetailPlanovaneZakazky = createDetailPageUrl({ url: 'planovane-zakazky', detailUrl: profilZadavateleDetail });\r\nconst profilZadavateleDetailSeznamDns = createDetailPageUrl({ url: 'seznam-dns', detailUrl: profilZadavateleDetail });\r\nconst profilZadavateleDetailZadavateleMultiprofilu = createDetailPageUrl({ url: 'zadavatele-multiprofilu', detailUrl: profilZadavateleDetail });\r\n\r\nconst detailDetailUver = createDetailUrl({ url: 'detail-uverejneni', detailIdParam: 'uverejneniId', urlRouteParam: 'uverFilter' });\r\nconst detailInfoUver = createDetailUrl({ url: 'detail-info', detailIdParam: 'infoId', urlRouteParam: 'infoFilter' });\r\nconst detailDetailPolozkaPredm = createDetailUrl({ url: 'detail-polozka', detailIdParam: 'polozkaId', urlRouteParam: 'polozkaFilter' });\r\nconst detailVysledek = createDetailUrl({ url: 'detail-vysledek', detailIdParam: 'vysledekId', urlRouteParam: 'vysledekFilter' });\r\nconst detailVysledekSON = createDetailUrl({ url: 'detail-vysledek-SON', detailIdParam: 'vysledekSonId', urlRouteParam: 'vysledekSonFilter' });\r\nconst detailucast = createDetailUrl({ url: 'detail-ucast', detailIdParam: 'ucastId', urlRouteParam: 'ucastFilter' });\r\nconst detailDodInfo = createDetailUrl({ url: 'detail-vysvetleni', detailIdParam: 'vysvetleniId', urlRouteParam: 'vysvetleniFilter' });\r\nconst detailUdajePod = createDetailUrl({ url: 'detail-udaje-podani', detailIdParam: 'udajeId', urlRouteParam: 'udajePodaniFilter' });\r\nconst detailOdpoved = createDetailUrl({ url: 'detail-odpoved', detailIdParam: 'odpovedId', urlRouteParam: 'odpovedFilter' });\r\nconst detailUverDokum = createDetailUrl({ url: 'detail-dokument', detailIdParam: 'dokumId', urlRouteParam: 'dokumFilter' });\r\nconst detailExtPodpis = createDetailUrl({ url: 'detail-podpis', detailIdParam: 'podpisId', urlRouteParam: 'podpisFilter' });\r\n\r\nconst registrZadavatelu = createListUrl({ name: 'registr-zadavatelu', filterParam: 'zad' });\r\nconst registrDodavatelu = createListUrl({ name: 'registr-dodavatelu', filterParam: 'dod' });\r\nconst subjektDetail = createDetailUrl({ url: 'detail-subjektu', detailIdParam: 'subjektId', urlRouteParam: 'sFilter' });\r\nconst subjektDetailDalsiInformace = createDetailPageUrl({ url: 'dalsi-informace', detailUrl: subjektDetail });\r\n\r\nconst compatibilityTest = createPureUrl('/kompatibilita');\r\nconst registrace = createPureUrl('/registrace');\r\nconst registraceZadavatel = createPureUrl(registrace.pureUrl + '/zadavatel');\r\nconst registraceDodavatel = createPureUrl(registrace.pureUrl + '/dodavatel');\r\nconst registraceSpolecneZadavani = createPureUrl(registrace.pureUrl + '/spolecne-zadavani');\r\nconst prihlaseni = createPureUrl('/prihlaseni');\r\nconst obnoveniUctu = createPureUrl('/obnoveni-uctu');\r\nconst zmenaHesla = createPureUrl('/zmena-hesla');\r\nconst design = createPureUrl('/design');\r\nconst osobniUdajeACookies = createPureUrl('/osobni-udaje-a-cookies');\r\n\r\n\r\nconst page413 = createPureUrl('/413');\r\n\r\nexport const urlConstants = {\r\n loginFrame,\r\n home,\r\n provozniRad,\r\n skoleniVse,\r\n videa,\r\n videaVse,\r\n skoleniZzvz,\r\n skoleniZzvzVse,\r\n prirucky,\r\n compatibilityTest,\r\n verejneZakazky,\r\n verejneZakazkyDetail,\r\n VerejneZakazkyCasti,\r\n verejneZakazkyCastiDetail,\r\n verejneZakazkyDetailZadavaciDokumentace,\r\n verejneZakazkyDetailVysvetleniDokumentace,\r\n verejneZakazkyDetailVysledek,\r\n verejneZakazkyDetailCastiZadavaciDokumentace,\r\n verejneZakazkyDetailCastiVysvetleniDokumentace,\r\n verejneZakazkyDetailCastiVysledek,\r\n registrDns,\r\n registrDnsDetail,\r\n registrDnsPostupy,\r\n registrSK,\r\n registrSKDetail,\r\n registrZadavatelu,\r\n registrDodavatelu,\r\n subjektDetail,\r\n subjektDetailDalsiInformace,\r\n vestnik,\r\n vestnikDetail,\r\n profilyZadavateluPlatne,\r\n profilyZadavateluZneplatnene,\r\n profilZadavateleDetail,\r\n profilZadavateleDetailKontakty,\r\n profilZadavateleDetailZahajeneZakazky,\r\n profilZadavateleDetailUzavreneZakazky,\r\n profilZadavateleDetailPlanovaneZakazky,\r\n profilZadavateleDetailSeznamDns,\r\n profilZadavateleDetailZadavateleMultiprofilu,\r\n detailDetailUver,\r\n detailInfoUver,\r\n detailDetailPolozkaPredm,\r\n detailVysledek,\r\n detailVysledekSON,\r\n detailucast,\r\n detailDodInfo,\r\n detailUdajePod,\r\n detailOdpoved,\r\n detailUverDokum,\r\n detailExtPodpis,\r\n provozniInformace,\r\n detailInformace,\r\n registrace,\r\n registraceZadavatel,\r\n registraceDodavatel,\r\n registraceSpolecneZadavani,\r\n prihlaseni,\r\n obnoveniUctu,\r\n zmenaHesla,\r\n design,\r\n rozcestnikRegistrace,\r\n prohlaseniOPristupnosti,\r\n osobniUdajeACookies,\r\n page413\r\n}\r\n\r\nexport const useConstants = () => {\r\n const match = useRouteMatch();\r\n const getUrl = useCallback((name: keyof typeof urlConstants) => {\r\n const url = urlConstants[name].url;\r\n if (url instanceof Function) {\r\n return url(match);\r\n }\r\n return url;\r\n }, [match]);\r\n return { getUrl };\r\n}\r\n","import * as qs from 'query-string';\r\nimport { generatePath, match, useHistory, useLocation, useRouteMatch } from 'react-router';\r\nimport * as H from 'history';\r\nimport { ParseOptions, StringifiableRecord } from 'query-string';\r\nimport { useCallback, useMemo } from 'react';\r\nimport { splitParam } from './StringUtils';\r\nimport { FilterParamsNames, paramsPrefix } from '@constants/urlConstants';\r\n\r\nconst parseParams: ParseOptions = {\r\n parseBooleans: false,\r\n parseNumbers: false,\r\n sort: false\r\n};\r\n\r\nexport type UrlParamObject = { [param: string]: string | undefined };\r\nexport type UrlParamObjects = { [param: string]: UrlParamObject | undefined };\r\n\r\nexport const useQuery = <T extends {} = {}>() => {\r\n return qs.parse(useLocation().search, parseParams) as T;\r\n}\r\n\r\nexport const parseUrlParams = (paramsString?: string) => {\r\n if (paramsString == null) {\r\n return undefined;\r\n }\r\n if (paramsPrefix && paramsString.startsWith(paramsPrefix)) {\r\n paramsString = paramsString.slice(paramsPrefix.length);\r\n }\r\n const result: UrlParamObjects = {};\r\n paramsString.split(';').forEach(paramString => {\r\n const [paramName, paramValue] = splitParam(paramString, ':');\r\n result[paramName] = qs.parse(`?${paramValue}`, parseParams) as UrlParamObject;\r\n });\r\n return result;\r\n}\r\n\r\nexport const parseUrlFilterParams = (filterParam: string, paramsString?: string) => {\r\n return parseUrlParams(paramsString)?.[filterParam];\r\n}\r\n\r\nexport type UpdateFilterParamProps = {\r\n update: StringifiableRecord | undefined;\r\n}\r\n\r\nexport type UpdateQueryParamProps = {\r\n update: GenerateQueryPathParams | undefined;\r\n}\r\n\r\nexport const getReplacedQueryParamUrl = ({ routeParamName, params, match, update }: UpdateQueryParamProps & GenerateQueryPathProps) => {\r\n if (!update) {\r\n return match?.url;\r\n }\r\n\r\n const updatedParams: GenerateQueryPathParams = { ...params };\r\n Object.entries(update).forEach(([paramKey, paramValues]) => {\r\n updatedParams[paramKey] = { ...paramValues }\r\n });\r\n\r\n return generateQueryPath({ match, routeParamName, params: updatedParams })\r\n}\r\n\r\nexport const getUpdatedQueryParamUrl = ({ routeParamName, params, match, update }: UpdateQueryParamProps & GenerateQueryPathProps) => {\r\n if (!update) {\r\n return match?.url;\r\n }\r\n\r\n const updatedParams: GenerateQueryPathParams = { ...params };\r\n Object.entries(update).forEach(([paramKey, paramValues]) => {\r\n updatedParams[paramKey] = {\r\n ...updatedParams[paramKey],\r\n ...paramValues\r\n }\r\n });\r\n\r\n return generateQueryPath({ match, routeParamName, params: updatedParams })\r\n}\r\n\r\nexport type GenerateQueryPathParams = { [key: string]: StringifiableRecord | undefined };\r\nexport type GenerateQueryPathProps = {\r\n routeParamName: string;\r\n params: GenerateQueryPathParams;\r\n match?: match<UrlParamObject> | null;\r\n};\r\n\r\nexport const generateQueryPath = ({ params, routeParamName, match }: GenerateQueryPathProps) => {\r\n const paramStrings: string[] = [];\r\n Object.entries(params).forEach(([paramKey, paramValues]) => {\r\n if (!paramValues) {\r\n return;\r\n }\r\n const updateValues: StringifiableRecord = {};\r\n Object.entries(paramValues).forEach(([k, v]) => {\r\n if (v == 'none') {\r\n delete paramValues[k];\r\n return;\r\n }\r\n updateValues[k] = v && encodeURIComponent(v)\r\n });\r\n const queryParamsString = qs.stringify(updateValues, {\r\n encode: false,\r\n sort: false\r\n });\r\n if (queryParamsString != '') {\r\n paramStrings.push(`${paramKey}:${queryParamsString}`);\r\n }\r\n });\r\n\r\n const resultParamsString = paramStrings.join(';');\r\n return match?.path && routeParamName && generatePath(match.path, {\r\n ...match.params,\r\n [routeParamName]: resultParamsString == '' ? undefined : `${paramsPrefix}${resultParamsString}`\r\n }) || match?.url;\r\n}\r\n\r\nexport type UpdateQueryParamUrl = GenerateQueryPathProps & {\r\n history: H.History;\r\n}\r\n\r\nexport const replaceQueryParamUrl = (props: UpdateQueryParamUrl & UpdateQueryParamProps & { historyState?: any }) => {\r\n const path = getReplacedQueryParamUrl(props);\r\n if (path && props.history) {\r\n props.history.push(path, props.historyState);\r\n }\r\n}\r\n\r\nexport const updateQueryParamUrl = (props: UpdateQueryParamUrl & UpdateQueryParamProps & { historyState?: any }) => {\r\n const path = getUpdatedQueryParamUrl(props);\r\n if (path && props.history) {\r\n props.history.push(path, props.historyState);\r\n }\r\n}\r\n\r\nconst addFilterParamName = ({ update, ...otherParams }: UpdateFilterParamProps, filterParamName: string): UpdateQueryParamProps => ({\r\n ...otherParams,\r\n update: {\r\n [filterParamName]: update\r\n }\r\n});\r\n\r\nexport const useUrlParams = ({ paramNames }: { paramNames: FilterParamsNames; }) => {\r\n const { filterParamName, routeParamName } = paramNames;\r\n\r\n const match = useRouteMatch<UrlParamObject>();\r\n\r\n const allUrlParams = useMemo(() => parseUrlParams(match?.params[routeParamName]) || {},\r\n [match?.params, routeParamName]);\r\n\r\n const filterParams = useMemo(() => allUrlParams[filterParamName],\r\n [allUrlParams, filterParamName]);\r\n\r\n return useMemo(() => ({\r\n allUrlParams,\r\n filterParams,\r\n match,\r\n }), [allUrlParams, filterParams, match]);\r\n}\r\n\r\nexport const useUrlParamsExtended = ({ paramNames }: { paramNames: FilterParamsNames; }) => {\r\n const urlParamsBase = useUrlParams({ paramNames });\r\n const { allUrlParams, match } = urlParamsBase;\r\n const { filterParamName, routeParamName } = paramNames;\r\n const history = useHistory();\r\n\r\n const updateParams: UpdateQueryParamUrl = useMemo(() => ({ history, match, params: allUrlParams, routeParamName }),\r\n [history, match, allUrlParams, routeParamName]);\r\n\r\n const updateUrl = useCallback((params: UpdateQueryParamProps) =>\r\n updateQueryParamUrl({ ...updateParams, ...params }),\r\n [updateParams]);\r\n\r\n const getUpdatedUrl = useCallback((params: UpdateQueryParamProps) =>\r\n getUpdatedQueryParamUrl({ ...updateParams, ...params }),\r\n [updateParams]);\r\n\r\n const updateFilterUrl = useCallback((params: UpdateFilterParamProps) =>\r\n updateQueryParamUrl({ ...updateParams, ...addFilterParamName(params, filterParamName) }),\r\n [updateParams, filterParamName]);\r\n\r\n const getUpdatedFilterUrl = useCallback((params: UpdateFilterParamProps) =>\r\n getUpdatedQueryParamUrl({ ...updateParams, ...addFilterParamName(params, filterParamName) }),\r\n [updateParams, filterParamName]);\r\n\r\n const replaceUrlParams = useCallback((params: UpdateQueryParamProps) =>\r\n replaceQueryParamUrl({ ...updateParams, ...params }),\r\n [updateParams]);\r\n\r\n const getReplacedParamsUrl = useCallback((params: UpdateQueryParamProps) =>\r\n getReplacedQueryParamUrl({ ...updateParams, ...params }),\r\n [updateParams]);\r\n\r\n const replaceFilterUrlParams = useCallback((params: UpdateFilterParamProps) =>\r\n replaceQueryParamUrl({ ...updateParams, ...addFilterParamName(params, filterParamName) }),\r\n [updateParams, filterParamName]);\r\n\r\n const getReplacedFilterParamsUrl = useCallback((params: UpdateFilterParamProps) =>\r\n getReplacedQueryParamUrl({ ...updateParams, ...addFilterParamName(params, filterParamName) }),\r\n [updateParams, filterParamName]);\r\n\r\n return useMemo(() => ({\r\n ...urlParamsBase,\r\n updateUrl,\r\n updateFilterUrl,\r\n getUpdatedUrl,\r\n getUpdatedFilterUrl,\r\n replaceUrlParams,\r\n getReplacedParamsUrl,\r\n replaceFilterUrlParams,\r\n getReplacedFilterParamsUrl,\r\n }), [\r\n urlParamsBase,\r\n updateUrl,\r\n updateFilterUrl,\r\n getUpdatedUrl,\r\n getUpdatedFilterUrl,\r\n replaceUrlParams,\r\n getReplacedParamsUrl,\r\n replaceFilterUrlParams,\r\n getReplacedFilterParamsUrl,\r\n ]);\r\n}\r\n","import { FC, ReactNode } from \"react\";\r\nimport { NonFalseable } from \"./TypeUtils\";\r\n\r\nexport const renderIf = <\r\n T extends unknown,\r\n TIf extends ((value: NonFalseable<T>) => ReactNode),\r\n TIfNode extends ReactNode,\r\n TElse extends (() => ReactNode) | undefined = undefined\r\n>(\r\n shouldRender: T,\r\n nodeFactory: TIf | TIfNode,\r\n elseNodeFactory?: TElse\r\n):\r\n (TIf extends (...args: any[]) => infer TIfRet ? TIfRet : TIfNode) |\r\n (TElse extends undefined ? null : (TElse extends () => infer TElseRet ? TElseRet extends undefined ? null : TElseRet : null)) => {\r\n if (!shouldRender) {\r\n return (elseNodeFactory?.() ?? null) as (TElse extends undefined ? null : (TElse extends () => infer TElseRet ? TElseRet extends undefined ? null : TElseRet : null));\r\n }\r\n if (typeof nodeFactory == 'function') {\r\n return nodeFactory(shouldRender as NonFalseable<T>);\r\n }\r\n return nodeFactory as (TIf extends (...args: any[]) => infer TIfRet ? TIfRet : TIfNode);\r\n}\r\n\r\nexport const notRenderIf = (shouldntRender: unknown, nodeFactory: ReactNode | FC): ReactNode => {\r\n if (shouldntRender) {\r\n return null;\r\n }\r\n if (typeof nodeFactory == 'function') {\r\n const NodeFactory = nodeFactory;\r\n return <NodeFactory />;\r\n }\r\n return nodeFactory;\r\n}\r\n","import React, { FC, HTMLProps, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"utils/BemUtils\";\r\nimport './FlexBox.scss';\r\n\r\nconst cn = setupCn('gov-flexbox');\r\n\r\nexport type FlexBoxJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-evenly';\r\nexport type FlexBoxAlign = 'start' | 'center' | 'end';\r\nexport type FlexDirection = 'row' | 'column';\r\n\r\nexport type FlexBoxProps = PropsWithChildren<{\r\n className?: Classes;\r\n align?: FlexBoxAlign;\r\n justify?: FlexBoxJustify;\r\n direction?: FlexDirection;\r\n wrap?: boolean;\r\n gap?: string;\r\n} & Omit<HTMLProps<HTMLDivElement>, 'wrap'>>;\r\n\r\nconst FlexBox: FC<FlexBoxProps> = ({\r\n className,\r\n align,\r\n justify,\r\n wrap,\r\n direction,\r\n children,\r\n gap,\r\n ...rest\r\n}) => {\r\n const justifyModifier = (!justify || justify == 'space-between') ? null : `--justify-${justify}`;\r\n const alignModifier = (!align || align == 'center') ? null : `--align-${align}`;\r\n const directionModifier = (!direction || direction == 'row') ? null : `--direction-${direction}`;\r\n\r\n return (\r\n <div\r\n className={cn.with(className).main(justifyModifier, alignModifier, directionModifier, {\r\n '--wrap': wrap\r\n })}\r\n style={{ gap, ...rest.style ?? {} }}\r\n {...rest}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nFlexBox.displayName = 'FlexBox';\r\n\r\nexport default React.memo(FlexBox);\r\n","import React, { FC } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('gov-button');\r\n\r\nexport type ButtonSize = 'small' | 'normal' | 'large';\r\n\r\nexport type ButtonBaseProps = React.PropsWithChildren<{\r\n className?: Classes;\r\n size?: ButtonSize;\r\n isOutlined?: boolean;\r\n isFlat?: boolean;\r\n hasIconOnly?: boolean;\r\n isInversed?: boolean;\r\n isSecondary?: boolean;\r\n}>\r\n\r\nconst ButtonBase: FC<ButtonBaseProps & {\r\n element: React.FC<any>;\r\n disabled?: boolean;\r\n}> = ({ className, size, isOutlined, isInversed, element: Element, isFlat, hasIconOnly, isSecondary, ...restProps }) => {\r\n const sizeModifier = (!size || size == 'normal') ? null : `--${size}`;\r\n const role = isSecondary ? '--secondary' : '--primary'\r\n const styleModifier = isFlat ? null : `${role}${isOutlined ? '-outlined' : ''}`;\r\n\r\n return (\r\n <Element\r\n className={cn.with(className).main(sizeModifier, styleModifier, {\r\n '--disabled': restProps.disabled,\r\n '--inversed': isInversed,\r\n '--icon-only': hasIconOnly\r\n })}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(ButtonBase);\r\n","import React, { FC, useCallback } from \"react\";\r\nimport { Link, LinkProps } from \"react-router-dom\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport ButtonBase, { ButtonBaseProps } from \"./ButtonBase\";\r\n\r\nimport './ButtonLink.scss';\r\n\r\nconst cn = setupCn('button-link');\r\n\r\nexport type ButtonLinkProps =\r\n ButtonBaseProps &\r\n Omit<LinkProps, 'className'> &\r\n {\r\n linkRef?: React.Ref<HTMLAnchorElement>;\r\n disabled?: boolean;\r\n isAnchor?: boolean;\r\n targetBlank?: boolean;\r\n };\r\n\r\nconst ButtonLink: FC<ButtonLinkProps> = ({ to, linkRef, isAnchor, targetBlank, className,...restProps }) => {\r\n const ButtonLinkElement: FC<any> = useCallback((props) => {\r\n return isAnchor\r\n ? <a href={to} target={targetBlank ? '_blank' : ''} ref={linkRef} {...props} />\r\n : <Link to={to} ref={linkRef} {...props} />\r\n }, [to, linkRef, isAnchor, targetBlank]);\r\n\r\n className = isAnchor ? cn.with(className).main('--anchor') : className;\r\n\r\n return (\r\n <ButtonBase\r\n element={ButtonLinkElement}\r\n className={className}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(ButtonLink);\r\n","import React, { FC } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport { IconType } from \"react-icons\";\r\nimport './Icon.scss';\r\n\r\nconst cn = setupCn('general-icon');\r\nconst cnBasic = setupCn('gov-icon');\r\nconst cnComplex = setupCn('gov-complex-icon');\r\n\r\nexport type IconSize = \"16\" | \"20\" | \"24\" | \"32\" | \"tile\";\r\n\r\nexport type IconProps = {\r\n className?: Classes;\r\n iconName?: string;\r\n isComplex?: boolean;\r\n iconRef?: React.Ref<HTMLSpanElement>;\r\n icon?: IconType;\r\n size?: IconSize;\r\n isPrimary?: boolean;\r\n};\r\n\r\nconst Icon: FC<IconProps> = ({\r\n className, iconName, isComplex, iconRef, icon: IconElement, size, isPrimary\r\n}) => {\r\n if (IconElement) {\r\n const sizeModifier = size && `--size-${size}`;\r\n const primaryColorModifier = isPrimary ? `--primaryColor` : null;\r\n return (\r\n <IconElement aria-hidden='true' className={cn.with(className).main(sizeModifier, primaryColorModifier)} />\r\n );\r\n }\r\n const govCn = isComplex ? cnComplex : cnBasic;\r\n return (\r\n <span aria-hidden='true' ref={iconRef} className={govCn.with(className).main(`--${iconName}`)} />\r\n );\r\n}\r\n\r\nexport default React.memo(Icon);","import ButtonLink from \"@components/Button/ButtonLink\";\r\nimport Icon from \"@components/Icon/Icon\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport React, { useMemo } from \"react\";\r\nimport { FC } from \"react\"\r\nimport { PaginatorHistoryState } from \"./Paginator\";\r\nimport { LocationDescriptorObject } from \"history\";\r\n\r\ntype GetPageRangePath = (params: {\r\n from: number;\r\n to: number;\r\n historyState?: PaginatorHistoryState | undefined;\r\n}) => LocationDescriptorObject<PaginatorHistoryState>;\r\n\r\nexport type PaginatorLoadMoreProps = {\r\n getPageRangePath: GetPageRangePath;\r\n rangeFrom: number;\r\n actualPage: number;\r\n onPageCount: number;\r\n}\r\n\r\nconst PaginatorLoadMore: FC<PaginatorLoadMoreProps> = ({ getPageRangePath, actualPage, rangeFrom, onPageCount }) => {\r\n const { ts } = useLocalization();\r\n\r\n const text = ts('NEN-659782', { locParams: [onPageCount ?? ''], isPrimaryTheme: true });\r\n return useMemo(() => (\r\n <ButtonLink isOutlined to={getPageRangePath({\r\n from: rangeFrom,\r\n to: actualPage + 1,\r\n historyState: { isLoadMore: true }\r\n })}>\r\n <Icon iconName='plus-small' />\r\n {text}\r\n </ButtonLink>\r\n ), [text, getPageRangePath, actualPage, rangeFrom]);\r\n}\r\n\r\nexport default React.memo(PaginatorLoadMore);\r\n","import React, { FC, ReactNode, useCallback } from \"react\";\r\nimport { LocationDescriptorObject } from \"history\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useUrlParamsExtended } from \"@utils/QueryHook\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport { FilterParamsNames } from \"@constants/urlConstants\";\r\nimport Pagination from \"./Pagination\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { useCollectionPaginator } from \"@store/collectionStore\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport './Paginator.scss';\r\nimport PaginatorLoadMore from \"./PaginatorLoadMore\";\r\n\r\nexport type PaginatorComponentProps = {\r\n totalCount?: number;\r\n onPageCount?: number | null;\r\n loadMoreButton?: boolean;\r\n scrollToRef?: React.RefObject<HTMLElement>;\r\n paramNames: FilterParamsNames;\r\n isLoading?: boolean;\r\n className?: Classes;\r\n extraButtons?: ReactNode[];\r\n}\r\n\r\nexport type PaginatorQueryParams = {\r\n onpage?: string;\r\n page?: string;\r\n}\r\n\r\nexport type PaginatorHistoryState = {\r\n isLoadMore?: boolean;\r\n}\r\n\r\nexport const parseActualPage = (page: number | string | undefined): [number, number] => {\r\n if (!page || page <= 0) {\r\n return [1, 1];\r\n }\r\n if (typeof page == 'number') {\r\n return [page, page];\r\n }\r\n const pageRange = page.toString()\r\n .split('-')\r\n .map(part => Number(part))\r\n .filter(part => Number.isFinite(part));\r\n if (pageRange.length > 1) {\r\n return [Math.max(pageRange[0], 1), pageRange[1]];\r\n }\r\n if (pageRange.length == 1) {\r\n const pageIndex = Math.max(pageRange[0], 1);\r\n return [pageIndex, pageIndex];\r\n }\r\n return [1, 1];\r\n}\r\n\r\nconst cn = setupCn('paginator');\r\nconst pagContainerCn = cn.setupSubCn('__container');\r\n\r\nexport const PaginatorComponent: FC<PaginatorComponentProps> = React.memo(({\r\n className,\r\n onPageCount,\r\n totalCount,\r\n loadMoreButton,\r\n scrollToRef,\r\n paramNames,\r\n isLoading: isLoadingProp,\r\n extraButtons\r\n}) => {\r\n const isLoading = isLoadingProp && (totalCount == null || onPageCount == null);\r\n const { t } = useLocalization();\r\n const { filterParams, getUpdatedFilterUrl } = useUrlParamsExtended({ paramNames });\r\n const pageScroll = useCallback(() => {\r\n if (scrollToRef?.current) {\r\n const scrollY = scrollToRef?.current.getBoundingClientRect().top + window.scrollY - 20;\r\n window.scrollTo({ top: scrollY, behavior: 'smooth' });\r\n }\r\n }, [scrollToRef]);\r\n\r\n const pageUrl = useCallback(({ page, historyState }: { page: string | number; historyState?: PaginatorHistoryState; }): LocationDescriptorObject<PaginatorHistoryState> => {\r\n const pathname = getUpdatedFilterUrl({ update: { page } });\r\n return {\r\n pathname,\r\n state: historyState\r\n };\r\n }, [getUpdatedFilterUrl]);\r\n\r\n const pageRangePath = useCallback(({ from, to, historyState }: { from: number; to: number; historyState?: PaginatorHistoryState; }) =>\r\n pageUrl({ page: `${from}-${to}`, historyState }),\r\n [pageUrl]);\r\n\r\n if (!isLoading && (totalCount == null || onPageCount == null)) {\r\n return null;\r\n }\r\n\r\n totalCount ??= 1000;\r\n onPageCount ??= 10;\r\n const maxPage = Math.ceil(totalCount / onPageCount);\r\n if (maxPage <= 1) {\r\n return extraButtons && totalCount > 0 ? (\r\n <FlexBox className={pagContainerCn()}>\r\n <div className={pagContainerCn('__buttons')}>\r\n {extraButtons}\r\n </div>\r\n </FlexBox>\r\n ) : null\r\n }\r\n\r\n const pagesRange = parseActualPage(filterParams?.page);\r\n const actualPage = Math.min(maxPage, Math.max(...pagesRange));\r\n const isLast = actualPage >= maxPage;\r\n const pages = [... new Set([\r\n 1,\r\n actualPage - 2,\r\n actualPage - 1,\r\n actualPage,\r\n actualPage + 1,\r\n maxPage\r\n ])]\r\n .filter(page => page > 0 && page <= maxPage)\r\n .sort((a, b) => a - b);\r\n\r\n const buttons: ReactNode[] = [];\r\n pages.forEach((page, index) => {\r\n const withseparator = index != 0 && pages[index - 1] != page - 1;\r\n if (withseparator) {\r\n buttons.push(<Pagination.Separator key={`${page}-sep`} />);\r\n }\r\n buttons.push(\r\n <Pagination.Page key={page} to={pageUrl({ page })} onClick={pageScroll} isActive={page == actualPage}>\r\n {\r\n isLoading\r\n ? <Skeleton />\r\n : <span>\r\n <span className='u-sr-only'>{t('NEN-787016')}</span> {page}\r\n </span>}\r\n </Pagination.Page>\r\n );\r\n });\r\n\r\n return (\r\n <nav className={cn.with(className)()}>\r\n <FlexBox className={pagContainerCn()}>\r\n <div className={pagContainerCn('__buttons')}>\r\n {renderIf(loadMoreButton && !isLast,\r\n <PaginatorLoadMore\r\n actualPage={actualPage}\r\n getPageRangePath={pageRangePath}\r\n onPageCount={onPageCount}\r\n rangeFrom={pagesRange[0]} />\r\n )}\r\n {extraButtons}\r\n </div>\r\n <div>\r\n <Pagination>\r\n <Pagination.Arrow to={pageUrl({ page: Math.max(actualPage - 1, 1) })} direction='left' isDisabled={pagesRange[0] == 1} onClick={pageScroll} />\r\n {buttons}\r\n <Pagination.Arrow to={pageUrl({ page: Math.min(actualPage + 1, maxPage) })} direction='right' isDisabled={isLast} onClick={pageScroll} />\r\n </Pagination>\r\n </div>\r\n </FlexBox>\r\n </nav>\r\n )\r\n});\r\n\r\nPaginatorComponent.displayName = 'PaginatorComponent';\r\n\r\nexport type PaginatorProps =\r\n Omit<PaginatorComponentProps, 'isLoading' | 'paramNames' | 'onPageCount' | 'totalCount'> &\r\n {\r\n collectionKey: string;\r\n }\r\n\r\nconst Paginator: FC<PaginatorProps> = ({ collectionKey, ...restProps }) => {\r\n const {\r\n count,\r\n isFetchedOnce,\r\n isFetching,\r\n onPage,\r\n paramNames\r\n } = useCollectionPaginator({ collectionKey }) ?? {};\r\n\r\n if (!paramNames) {\r\n return null;\r\n }\r\n\r\n return (\r\n <PaginatorComponent\r\n {...restProps}\r\n paramNames={paramNames}\r\n onPageCount={onPage}\r\n totalCount={count}\r\n isLoading={isFetching || !isFetchedOnce}\r\n />\r\n );\r\n}\r\n\r\nexport default React.memo(Paginator);\r\n","import { MaybeArray, toArray } from \"@utils/ArrayHelper\";\r\nimport { useMemo } from \"react\";\r\nimport { TableColumn } from \"../components/Table\";\r\nimport { AttrMapping, AttrName } from \"./AttrMapping\";\r\n\r\nexport type OrderByObject<T extends string = string> = { desc?: boolean, column: T };\r\nexport type OrderBy<T extends string = string> = OrderByObject<T> | T;\r\n\r\nexport const useOrderByMemo = <T extends {}>(...array: OrderBy<AttrName<T>>[]): OrderBy<AttrName<T>>[] => {\r\n const hash = array.map(orderby => {\r\n if (typeof orderby == 'object') {\r\n return `${orderby.desc}-${orderby.column}`;\r\n }\r\n\r\n return orderby;\r\n }).join(\"&;&\");\r\n\r\n return useMemo(() => array, [hash]);\r\n}\r\n\r\nconst linguisticTypesRegex = /strnum|text|string/i;\r\n\r\nexport const createOrderBy = (orderBy: MaybeArray<OrderBy>, attrMapping: AttrMapping): string[] =>\r\n toArray(orderBy).map(order => {\r\n let column = '', desc = false, orderByPart = '';\r\n if (typeof order == 'string') {\r\n column = order;\r\n } else {\r\n column = order.column;\r\n desc = order.desc ?? false;\r\n }\r\n\r\n orderByPart = desc ? 'DESC ' : '';\r\n orderByPart += attrMapping.getByClientName(column)?.type.match(linguisticTypesRegex) ? 'LINGUISTIC ' : '';\r\n\r\n return orderByPart + attrMapping.toServerName(column);\r\n });\r\n\r\n\r\nexport const getOrderByColumnSort = (orderBy: MaybeArray<OrderBy> | undefined, column: TableColumn<any>): string => {\r\n if (!orderBy)\r\n return '';\r\n\r\n if (Array.isArray(orderBy)) {\r\n const orderByColumn = orderBy.find(orderByPart => {\r\n return ((typeof orderByPart === 'object' && orderByPart.column == column.attrName) || (orderByPart == column.attrName))\r\n })\r\n\r\n if (orderByColumn && typeof orderByColumn === 'object') {\r\n return orderByColumn.desc ? 'desc' : 'asc';\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport const orderByStringToObject = (column: string | OrderBy): OrderByObject => {\r\n if (typeof column === 'string')\r\n return { desc: false, column: column };\r\n\r\n return column;\r\n}","import { createSlice, PayloadAction, createSelector } from '@reduxjs/toolkit';\r\nimport { IGetDataRowsParams } from \"@services/DataRowsService\";\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from \"store\";\r\nimport { getDataRowsService, useTaskManager } from \"./nodeContextStore\";\r\nimport { getErrorStoreActions } from './errorStore';\r\nimport { AttrMapping, IBasicData } from '@utils/AttrMapping';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\nimport { createFilterCondition, FulltextAttr, joinConditionsByAnd } from '@utils/FilterCondition';\r\nimport { PaginatorHistoryState, parseActualPage } from '@components/Pagination';\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useUrlParams, useUrlParamsExtended } from '@utils/QueryHook';\r\nimport { MaybeArray, toArray, uniqueArray } from '@utils/ArrayHelper';\r\nimport { FilterParamsNames } from '@constants/urlConstants';\r\nimport { OrderBy, createOrderBy, orderByStringToObject } from '@utils/OrderByUtils';\r\nimport { OnSortClickEventHandler, TableColumn } from \"@components/Table\";\r\nimport { AttrModel } from '@components/ListFrame';\r\n\r\n\r\n// Declare an interface of the store's state.\r\n\r\nexport const name = 'collectionStore';\r\n\r\nexport type CollectionStoreState = {\r\n collections: {\r\n [key: string]: CollectionType\r\n };\r\n}\r\n\r\nexport type StoreCollectionInfo = {\r\n onPage?: number;\r\n paramNames?: FilterParamsNames;\r\n}\r\n\r\nexport type CollectionType = StoreCollectionInfo & {\r\n isFetching: boolean;\r\n isFetchedOnce: boolean;\r\n collection: IBasicData[]\r\n count?: number;\r\n isLoadMore?: boolean;\r\n isTooGeneralQuery?: boolean;\r\n}\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n collections: {}\r\n } as CollectionStoreState,\r\n reducers: {\r\n setFetching: (state, action: PayloadAction<{ key: string, isFetching: boolean, isLoadMore: boolean } & StoreCollectionInfo>) => {\r\n return {\r\n ...state,\r\n collections: {\r\n ...state.collections,\r\n [action.payload.key]: {\r\n ...state.collections[action.payload.key],\r\n ...action.payload\r\n }\r\n }\r\n };\r\n },\r\n setFetchedOnce: (state, action: PayloadAction<{ key: string, isFetchedOnce: boolean }>) => {\r\n return {\r\n ...state,\r\n collections: {\r\n ...state.collections,\r\n [action.payload.key]: {\r\n ...state.collections[action.payload.key],\r\n isFetchedOnce: action.payload.isFetchedOnce\r\n }\r\n }\r\n };\r\n },\r\n updateData: (state, { payload: { key, collection, count, isTooGeneralQuery } }: PayloadAction<{ key: string, collection: IBasicData[], count: number, isTooGeneralQuery?: boolean }>) => {\r\n return {\r\n ...state,\r\n collections: {\r\n ...state.collections,\r\n [key]: {\r\n ...state.collections[key],\r\n collection,\r\n count,\r\n isTooGeneralQuery,\r\n isFetchedOnce: true\r\n }\r\n }\r\n };\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getCollectionStoreState = (state: ApplicationState) => state[name];\r\nexport const getAllCollections = createSelector([getCollectionStoreState],\r\n (collectionsStore) => collectionsStore?.collections\r\n);\r\nexport const getCollectionInfo = createSelector(\r\n getAllCollections,\r\n (_: unknown, key: string) => key,\r\n (collections, key) => collections[key]\r\n);\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n clear: (key: string) =>\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector) => {\r\n const actions = slice.actions;\r\n dispatch(actions.updateData({ key, collection: [], count: 0 }));\r\n dispatch(actions.setFetching({ key, isFetching: false, isLoadMore: false }));\r\n dispatch(actions.setFetchedOnce({ key, isFetchedOnce: false }));\r\n },\r\n loadData: (key: string, { onPage, paramNames, ...dataRowsParams }: IGetDataRowsParams & StoreCollectionInfo) =>\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector) => {\r\n const actions = slice.actions;\r\n dispatch(actions.setFetching({ key, isFetching: true, isLoadMore: dataRowsParams.isLoadMore || false, onPage, paramNames }));\r\n\r\n const service = getDataRowsService(getState());\r\n const result = await service.loadDataWithCount(dataRowsParams);\r\n\r\n if (!result.hasErrors) {\r\n dispatch(actions.updateData({ key, ...result.value }));\r\n } else {\r\n dispatch(actions.updateData({\r\n key,\r\n collection: [],\r\n count: 0,\r\n isTooGeneralQuery: result.errors?.some(error => typeof error == 'object' && error?.code == 'TOO_GENERAL_QUERY'),\r\n }));\r\n dispatch(getErrorStoreActions().push(result.errors));\r\n }\r\n\r\n dispatch(actions.setFetching({ key, isFetching: false, isLoadMore: false }));\r\n\r\n return result;\r\n }\r\n}\r\n\r\n\r\ntype useCollectiomManagerCommonParams<CType> = {\r\n attrMapping: AttrMapping;\r\n attributes: string[];\r\n key: string;\r\n condition?: string;\r\n onPage?: number;\r\n paramNames?: FilterParamsNames;\r\n orderBy?: MaybeArray<OrderBy>;\r\n}\r\n\r\nexport type useManualCollectionManagerParams<CType> = useCollectiomManagerCommonParams<CType> & {\r\n conditionParams?: any[];\r\n fetchCount?: number;\r\n startIndex?: number;\r\n}\r\n\r\nexport type useCollectionManagerParams<CType> = useCollectiomManagerCommonParams<CType> & {\r\n onPage: number | undefined;\r\n fulltextAttributes?: FulltextAttr[];\r\n paramNames: FilterParamsNames;\r\n}\r\n\r\nexport type useDependantCollectionManagerParams<CType> = useCollectiomManagerCommonParams<CType> & {\r\n conditionParams: any[]\r\n onPage?: number;\r\n fulltextAttributes?: FulltextAttr[];\r\n paramNames?: FilterParamsNames;\r\n}\r\n\r\nexport const useManualCollectionManager = <CType>({\r\n attrMapping,\r\n attributes,\r\n condition,\r\n conditionParams,\r\n orderBy,\r\n onPage,\r\n paramNames,\r\n fetchCount,\r\n startIndex,\r\n key\r\n}: useManualCollectionManagerParams<CType>) => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const collectionInfo = useSelector((state: ApplicationState) => getCollectionInfo(state, key));\r\n\r\n const newOrder = orderBy ? createOrderBy(orderBy, attrMapping) : undefined\r\n const loadData = useCallback((isLoadMore?: boolean, controller?: AbortController) => dispatch(\r\n actionCreators.loadData(key, {\r\n className: attrMapping.objectName,\r\n attributes: attrMapping.getDataRowAttributes(...uniqueArray(['id'], attributes)),\r\n condition: condition,\r\n conditionParams: conditionParams,\r\n count: fetchCount,\r\n onPage,\r\n paramNames,\r\n isLoadMore: isLoadMore,\r\n startIndex: startIndex,\r\n orderBy: newOrder,\r\n abortSignal: controller?.signal\r\n })\r\n ), [dispatch, startIndex, condition, conditionParams, newOrder, startIndex, fetchCount]);\r\n\r\n const reloadCollection = useCallback(() => loadData(false), [loadData]);\r\n\r\n return { reloadCollection, collectionInfo, loadData, orderBy: newOrder };\r\n}\r\n\r\nexport const useDependentCollectionManager = <CType>({\r\n attrMapping,\r\n attributes,\r\n condition,\r\n conditionParams,\r\n orderBy,\r\n key,\r\n onPage,\r\n paramNames,\r\n fulltextAttributes\r\n}: useDependantCollectionManagerParams<CType>) => {\r\n const [isFirst, setIsFirst] = useState(true);\r\n const dispatch: AppDispatch = useDispatch();\r\n let fetchCount: number | undefined;\r\n let startIndex: number | undefined;\r\n let historyIsLoadMore: boolean | undefined;\r\n if (paramNames && onPage) {\r\n const { filterParams } = useUrlParams({ paramNames });\r\n const pageRange = parseActualPage(filterParams?.page);\r\n const pagesCount = Math.abs(pageRange[1] - pageRange[0]) + 1;\r\n const fetchCountParam = Number(filterParams?.onpage) || onPage;\r\n const actualPage = Math.min(...pageRange);\r\n historyIsLoadMore = useHistory<PaginatorHistoryState>().location.state?.isLoadMore;\r\n fetchCount = pagesCount * fetchCountParam;\r\n startIndex = (actualPage - 1) * fetchCountParam;\r\n const filterCondition = createFilterCondition({\r\n urlParams: filterParams,\r\n attrMapping: attrMapping,\r\n fulltextParam: 'query',\r\n fulltextAttributes\r\n });\r\n if (conditionParams && filterCondition.conditionParams) {\r\n filterCondition.condition = filterCondition.condition\r\n .match(/(@\\d)/g)\r\n ?.sort((a, b) => Number(b[1]) - Number(a[1]))\r\n .reduce((acc, curr) => acc.replace(new RegExp(curr, 'g'), '@' + (Number(curr[1]) + conditionParams.length)),\r\n filterCondition.condition)\r\n ?? filterCondition.condition;\r\n }\r\n condition = joinConditionsByAnd(condition, filterCondition.condition);\r\n conditionParams = conditionParams.concat(filterCondition.conditionParams);\r\n }\r\n\r\n const conditionParamsMemo = useMemo(() => [...conditionParams], [conditionParams.join('-')]);\r\n const {\r\n collectionInfo,\r\n reloadCollection,\r\n loadData,\r\n orderBy: newOrder\r\n } = useManualCollectionManager({\r\n key,\r\n attrMapping: attrMapping,\r\n condition: condition,\r\n conditionParams: conditionParamsMemo,\r\n attributes: attributes,\r\n onPage,\r\n paramNames,\r\n orderBy: orderBy,\r\n fetchCount: fetchCount,\r\n startIndex: startIndex\r\n });\r\n\r\n const taskManager = useTaskManager();\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(actionCreators.clear(key));\r\n }\r\n }, [dispatch, key]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController()\r\n if (taskManager.isTaskCompleted(key)) {\r\n taskManager.removeTaskFromCompleted(key);\r\n } else if (!isFirst && conditionParamsMemo.every(p => p != undefined)) {\r\n loadData(historyIsLoadMore, controller);\r\n } else {\r\n setIsFirst(false);\r\n }\r\n\r\n return () => {\r\n controller?.abort();\r\n }\r\n }, [fetchCount, condition, startIndex, conditionParamsMemo, newOrder?.join('-')]);\r\n\r\n if (conditionParamsMemo.every(p => p != undefined))\r\n taskManager.add(key, loadData);\r\n\r\n return { reloadCollection, collectionInfo, fetchCount, loadData, condition, conditionParams };\r\n}\r\n\r\nexport const useCollectionManager = <CType>({\r\n key,\r\n attrMapping,\r\n onPage,\r\n fulltextAttributes,\r\n attributes,\r\n condition,\r\n paramNames,\r\n orderBy\r\n}: useCollectionManagerParams<CType>) => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const { match, filterParams } = useUrlParams({ paramNames });\r\n const pageRange = parseActualPage(filterParams?.page);\r\n const pagesCount = Math.abs(pageRange[1] - pageRange[0]) + 1;\r\n const fetchCountParam = Number(filterParams?.onpage) || onPage;\r\n const actualPage = Math.min(...pageRange);\r\n const { fetchCount, startIndex } = fetchCountParam ?\r\n { fetchCount: pagesCount * fetchCountParam, startIndex: (actualPage - 1) * fetchCountParam } :\r\n { fetchCount: undefined, startIndex: undefined }\r\n\r\n const taskManager = useTaskManager();\r\n const historyIsLoadMore = useHistory<PaginatorHistoryState>().location.state?.isLoadMore;\r\n const filterCondition = createFilterCondition({\r\n urlParams: filterParams,\r\n attrMapping: attrMapping,\r\n fulltextParam: 'query',\r\n fulltextAttributes\r\n });\r\n\r\n condition = joinConditionsByAnd(filterCondition.condition, condition);\r\n\r\n const {\r\n collectionInfo,\r\n reloadCollection,\r\n loadData,\r\n orderBy: newOrder\r\n } = useManualCollectionManager({\r\n key,\r\n attrMapping: attrMapping,\r\n condition: condition,\r\n conditionParams: filterCondition.conditionParams,\r\n attributes,\r\n onPage,\r\n paramNames,\r\n fetchCount: fetchCount,\r\n startIndex: startIndex,\r\n orderBy: orderBy,\r\n });\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(actionCreators.clear(key));\r\n }\r\n }, [dispatch, key]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n if (taskManager.isTaskCompleted(key)) {\r\n taskManager.removeTaskFromCompleted(key);\r\n } else {\r\n loadData(historyIsLoadMore, controller);\r\n }\r\n\r\n return () => {\r\n controller?.abort();\r\n }\r\n }, [fetchCount, condition, startIndex, filterCondition.condition, filterCondition.conditionParams.join('-'), newOrder?.join('-')]);\r\n\r\n taskManager.add(key, loadData);\r\n\r\n return { reloadCollection, collectionInfo, fetchCount, match, condition, conditionParams: filterCondition.conditionParams };\r\n}\r\n\r\nexport type UseSortUrlParams = {\r\n paramNames?: FilterParamsNames;\r\n orderBy?: MaybeArray<OrderBy>;\r\n columns: TableColumn<AttrModel<AttrMapping>>[];\r\n};\r\n\r\nexport const useSortUrl = ({ paramNames, orderBy, columns }: UseSortUrlParams) => {\r\n paramNames ??= { filterParamName: '', routeParamName: '' };\r\n\r\n const [defaultOrderBy, setDefaultOrderBy] = useState(toArray(orderBy, true)\r\n .map(orderByPart => orderByStringToObject(orderByPart ?? ''))\r\n );\r\n\r\n const {\r\n updateFilterUrl,\r\n filterParams\r\n } = useUrlParamsExtended({ paramNames });\r\n\r\n const columnsSet = useMemo(() =>\r\n new Set(columns\r\n .filter(col => !col.hidden)\r\n .map(col => `sort-${col.attrName}`)),\r\n [columns]);\r\n\r\n const defaultFilterParams: any = useMemo(() => {\r\n return {\r\n ...Object.fromEntries(defaultOrderBy\r\n .map(obj => [`sort-${obj.column}`, obj.desc ? 'desc' : 'asc'] as const)),\r\n page: undefined\r\n }\r\n }, [defaultOrderBy]);\r\n\r\n const actualFilterParams = useRef(\r\n Object.fromEntries(Object.entries(defaultFilterParams).filter(([k]) => columnsSet.has(k)))\r\n );\r\n\r\n const orderByToObjects = Object.entries(filterParams ?? {})\r\n .filter(([k]) => k.includes('sort-'))\r\n .map(([k, v]) => Object.fromEntries([['desc', v == 'desc'], ['column', k.replace('sort-', '')]]));\r\n\r\n const addColumnToUrl = (column: string) => {\r\n if (!column) {\r\n return;\r\n }\r\n\r\n setDefaultOrderBy([]);\r\n\r\n const name = `sort-${column}`;\r\n let value = '';\r\n\r\n switch (filterParams?.[name] ?? (filterParams || defaultFilterParams?.[name])) {\r\n case 'none':\r\n value = 'asc';\r\n break;\r\n case 'asc':\r\n value = 'desc';\r\n break;\r\n case 'desc':\r\n value = 'none';\r\n break;\r\n default:\r\n value = 'asc';\r\n }\r\n\r\n actualFilterParams.current = Object.assign(\r\n Object.fromEntries(Object.entries(actualFilterParams.current).filter(([k]) => columnsSet.has(k) || filterParams?.[k])),\r\n filterParams,\r\n { [name]: value }\r\n );\r\n\r\n updateFilterUrl({ update: actualFilterParams.current });\r\n }\r\n\r\n return {\r\n addColumnToUrl,\r\n orderBy: orderByToObjects.length == 0 ? defaultOrderBy : orderByToObjects\r\n };\r\n}\r\n\r\nexport type UseListFrameBase = UseSortUrlParams & {\r\n isSortable?: boolean;\r\n mapping: AttrMapping<any>;\r\n};\r\n\r\nexport const useListFrameBase = (params: UseListFrameBase) => {\r\n const { mapping, isSortable, ...sortUrlParams } = params;\r\n const { addColumnToUrl, orderBy: newOrderBy } = useSortUrl(sortUrlParams);\r\n\r\n const filterHiddenColumns = useMemo<TableColumn<AttrModel<AttrMapping>>[]>(() => {\r\n return sortUrlParams.columns.filter(c => !c.hidden);\r\n }, [sortUrlParams.columns]);\r\n\r\n const onSortClickCallback = useCallback<OnSortClickEventHandler<typeof mapping>>((event) => {\r\n return isSortable !== false\r\n ? addColumnToUrl(event.column.attrName.toString())\r\n : undefined\r\n }, [isSortable, addColumnToUrl]);\r\n\r\n return { orderBy: newOrderBy, filterHiddenColumns, onSortClickCallback };\r\n}\r\n\r\nexport type UseCollectionPaginatorProps = {\r\n collectionKey: string;\r\n}\r\n\r\nexport const useCollectionPaginator = ({ collectionKey }: UseCollectionPaginatorProps) => {\r\n return useSelector((state: ApplicationState) => getCollectionInfo(state, collectionKey));\r\n}\r\n","import { createSelector, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { useCallback, useEffect, useMemo } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from \".\";\r\nimport { IGetDataRowsParams } from \"@services/DataRowsService\";\r\nimport { EvaluatedCondition } from \"@services/EvaluateConditionsService\";\r\nimport { AttrMapping, AttrMappingDescription, AttrName, IData } from \"@utils/AttrMapping\";\r\nimport { Deferred, PromiseUtils } from \"@utils/PromiseUtils\";\r\nimport { getErrorStoreActions } from \"./errorStore\";\r\nimport { getDataRowsService, getEvaluateConditionsService, useTaskManager } from \"./nodeContextStore\";\r\n\r\nexport const name = 'detailObjectStore'\r\n\r\nexport type DetailObjectStoreState = {\r\n objects: {\r\n [key: string]: ObjectType<IData>\r\n }\r\n}\r\n\r\nexport type ObjectType<T extends IData> = {\r\n id: string,\r\n isFetching: boolean,\r\n object: T | null,\r\n evaluatedConditions: EvaluatedCondition[]\r\n}\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n objects: {}\r\n } as DetailObjectStoreState,\r\n reducers: {\r\n setFetching: (state, action: PayloadAction<{ key: string, isFetching: boolean }>) => {\r\n return {\r\n ...state,\r\n objects: {\r\n ...state.objects,\r\n [action.payload.key]: {\r\n ...state.objects[action.payload.key],\r\n isFetching: action.payload.isFetching\r\n }\r\n }\r\n };\r\n },\r\n updateData: (state, action: PayloadAction<{ key: string, id: string, object: IData | null }>) => {\r\n return {\r\n ...state,\r\n objects: {\r\n ...state.objects,\r\n [action.payload.key]: {\r\n ...state.objects[action.payload.key],\r\n id: action.payload.id,\r\n object: action.payload.object\r\n }\r\n }\r\n };\r\n },\r\n setConditions: (state, action: PayloadAction<{ key: string, evaluatedConditions: EvaluatedCondition[] }>) => {\r\n return {\r\n ...state,\r\n objects: {\r\n ...state.objects,\r\n [action.payload.key]: {\r\n ...state.objects[action.payload.key],\r\n evaluatedConditions: action.payload.evaluatedConditions\r\n }\r\n }\r\n };\r\n },\r\n clearObject: (state, action: PayloadAction<{ key: string }>) => {\r\n return {\r\n ...state,\r\n objects: {\r\n ...state.objects,\r\n [action.payload.key]: undefined\r\n }\r\n } as DetailObjectStoreState;\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getObjectStoreState = (state: ApplicationState) => state[name];\r\n\r\nexport const getAllObjects = createSelector([getObjectStoreState],\r\n (objectsStore) => objectsStore?.objects\r\n);\r\n\r\nexport const getDetailObjectInfo = createSelector(\r\n getAllObjects,\r\n (_: unknown, key: string) => key,\r\n (objects, key) => objects[key]\r\n);\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n clear: (key: string) =>\r\n (dispatch: AppDispatch) => {\r\n const actions = slice.actions;\r\n dispatch(actions.clearObject({ key }));\r\n },\r\n setFetching: (key: string, value: boolean) =>\r\n (dispatch: AppDispatch) => {\r\n dispatch(slice.actions.setFetching({ key: key, isFetching: value }));\r\n },\r\n loadObject: (key: string, params: IGetDataRowsParams) =>\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector): Promise<any> => {\r\n const actions = slice.actions;\r\n\r\n const service = getDataRowsService(getState());\r\n const result = await service.loadData({\r\n ...params\r\n });\r\n\r\n if (!result.hasErrors && result.value.length == 1) {\r\n dispatch(actions.updateData({ key: key, id: result.value[0].id.toString(), object: result.value[0] }));\r\n } else {\r\n dispatch(actions.updateData({ key: key, id: '', object: null }));\r\n dispatch(getErrorStoreActions().push(result.errors || ['Obj not found!']));\r\n }\r\n\r\n return result;\r\n },\r\n evaluateConditions: (key: string, conditions: Map<string, boolean>, stateSelector: ((state: ApplicationState) => ObjectType<IData> | undefined), params: IGetDataRowsParams) =>\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector): Promise<any> => {\r\n const actions = slice.actions;\r\n const id = stateSelector(getState())?.id;\r\n if (!id)\r\n return;\r\n\r\n const service = getEvaluateConditionsService(getState());\r\n const result = await service.evaluateConditions({\r\n id: id,\r\n className: params.className,\r\n conditions: [...conditions.keys()],\r\n });\r\n if (!result.hasErrors) {\r\n dispatch(actions.setConditions({ key: key, evaluatedConditions: result.value }));\r\n } else {\r\n dispatch(getErrorStoreActions().push(result.errors || ['Condition evaluation error!']));\r\n }\r\n }\r\n}\r\n\r\n\r\n//hooks\r\nexport type UseDetailObjectParams<T extends IData> = {\r\n condition: string,\r\n conditionParams: string[]\r\n attrMapping: AttrMapping<T>\r\n loadKey: string,\r\n}\r\n\r\nexport type GetAttrMethodType<T extends IData> = {\r\n getAttr: <TAttr extends AttrName<T>>(attrName: TAttr) => GetAttrType<T, T[TAttr]>\r\n}\r\n\r\nexport type GetAttrType<T extends IData, TValue> = {\r\n value: TValue | null;\r\n isFetching: boolean;\r\n data?: T;\r\n attrInfo?: AttrMappingDescription<T>;\r\n objectName?: string;\r\n}\r\n\r\nexport type EvaluateConditionMethodType = {\r\n evaluateCondition: (condition: string) => boolean | undefined\r\n}\r\n\r\nexport type UseDetailObjectReturnType<T extends IData> = GetAttrMethodType<T> & EvaluateConditionMethodType;\r\n\r\n\r\nexport const useDetailObject = <T extends IData>({\r\n condition,\r\n conditionParams,\r\n attrMapping,\r\n loadKey,\r\n}: UseDetailObjectParams<T>): GetAttrMethodType<T> & EvaluateConditionMethodType => {\r\n loadKey = [loadKey, ...conditionParams].join('-')\r\n const dispatch = useDispatch();\r\n const match = useRouteMatch();\r\n const state = useSelector((state: ApplicationState) => getDetailObjectInfo(state, loadKey));\r\n const taskManager = useTaskManager();\r\n const attrsToLoad = useMemo(() => new Set<AttrName<T>>(), [condition, conditionParams.join('-'), match?.path]);\r\n const conditionsToEvaluate = useMemo(() => new Map<string, boolean>(), [condition, conditionParams.join('-'), match?.path]);\r\n let setAttrPromise: Deferred<void>;\r\n\r\n const loadData = useCallback(async (controller?: AbortController) => {\r\n dispatch(actionCreators.setFetching(loadKey, true));\r\n\r\n await dispatch(actionCreators.loadObject(loadKey, {\r\n className: attrMapping.objectName,\r\n condition,\r\n conditionParams,\r\n attributes: attrMapping.getDataRowAttributes(\r\n ...attrsToLoad.add('id')\r\n ),\r\n abortSignal: controller?.signal\r\n }));\r\n if (conditionsToEvaluate.size > 0) {\r\n await dispatch(actionCreators.evaluateConditions(loadKey, conditionsToEvaluate, (state: ApplicationState) => getDetailObjectInfo(state, loadKey), {\r\n className: attrMapping.objectName,\r\n attributes: attrMapping.getDataRowAttributes('id'),\r\n abortSignal: controller?.signal\r\n }));\r\n }\r\n\r\n dispatch(actionCreators.setFetching(loadKey, false));\r\n }, [condition, conditionParams.join('-'), dispatch, match?.path]);\r\n\r\n const getAttr = useCallback((attrName: AttrName<T>): GetAttrType<T, any> => {\r\n const attrInfo = attrMapping.getByClientName(attrName);\r\n if (attrInfo) {\r\n attrsToLoad.add(attrName);\r\n const isFetching = !state || (state?.isFetching ?? false);\r\n const data = isFetching ? undefined : state?.object as T | undefined;\r\n return {\r\n value: data?.[attrName] ?? null as any,\r\n attrInfo,\r\n data,\r\n isFetching,\r\n objectName: attrMapping.objectName,\r\n }\r\n } else {\r\n console.error(`${attrName} not found!`);\r\n }\r\n return {\r\n value: null,\r\n isFetching: false\r\n };\r\n }, [condition, conditionParams.join('-'), state, match?.path]);\r\n\r\n const evaluateCondition = useCallback((condition: string) => {\r\n if (!conditionsToEvaluate.has(condition)) {\r\n conditionsToEvaluate.set(condition, false);\r\n }\r\n return state?.evaluatedConditions?.find(c => c.condition == condition)?.result;\r\n }, [condition, conditionParams.join('-'), state, match?.path]);\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [conditionParams.join('-')]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(actionCreators.clear(loadKey));\r\n }\r\n }, [condition, conditionParams.join('-')]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n\r\n if (taskManager.isTaskCompleted(loadKey)) {\r\n taskManager.removeTaskFromCompleted(loadKey);\r\n } else {\r\n loadData(controller);\r\n }\r\n\r\n return () => {\r\n controller?.abort();\r\n }\r\n }, [condition, conditionParams.join('-'), match?.path]);\r\n\r\n taskManager.add(loadKey + '-attr-set', () => {\r\n setAttrPromise = PromiseUtils.defer();\r\n\r\n setAttrPromise.promise.then(() => {\r\n taskManager.add(loadKey, loadData);\r\n });\r\n\r\n setAttrPromise?.resolve();\r\n return setAttrPromise.promise;\r\n });\r\n\r\n return { getAttr, evaluateCondition };\r\n}","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppDispatch, ApplicationState } from '.';\r\nimport { useLocalization } from './localizationStore';\r\nimport { useConstants } from '@constants/urlConstants';\r\n\r\nexport const name = 'breadcrumb';\r\n\r\nexport type BreadcrumbItem = {\r\n title: string,\r\n href: string\r\n}\r\n\r\nexport type BreadcrumbStoreState = {\r\n items: BreadcrumbItem[];\r\n}\r\n\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n items: [] as BreadcrumbItem[]\r\n } as BreadcrumbStoreState,\r\n reducers: {\r\n setItems: (state, action: PayloadAction<BreadcrumbItem[]>) => {\r\n return {\r\n ...state,\r\n items: action.payload\r\n }\r\n },\r\n push: (state, action: PayloadAction<{ item: BreadcrumbItem }>) => {\r\n return {\r\n ...state,\r\n items: [...state.items].concat(action.payload.item)\r\n }\r\n },\r\n pop: (state) => {\r\n return {\r\n ...state,\r\n items: state.items.slice(0, -1)\r\n }\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getBreadcrumbState = (state: ApplicationState) => state[name];\r\nexport const getBreadcrumbItems = createSelector([getBreadcrumbState],\r\n (breadcrumbStore) => breadcrumbStore?.items\r\n);\r\nexport const getLastBreadcrumbItem = createSelector([getBreadcrumbItems],\r\n (items) => [...items].pop()\r\n);\r\n\r\nexport const useBreadcrumb = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const { t } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const items = useSelector(getBreadcrumbItems);\r\n const lastItem = useSelector(getLastBreadcrumbItem);\r\n const setItems = (items: BreadcrumbItem[]) => dispatch(slice.actions.setItems(items));\r\n const appendItemsToHome = (items: BreadcrumbItem[]) => setItems([{ href: getUrl('home'), title: t(\"NEN-738416\") }].concat(items));\r\n\r\n return [appendItemsToHome, setItems, items, lastItem] as const;\r\n}\r\n","import { GetDataRowsAttribute } from \"services/DataRowsService\";\r\nimport { CreateConditionFactory } from \"./FilterCondition\";\r\nimport { truthy, uniqueArray } from \"./ArrayHelper\";\r\n\r\nexport type IData = {\r\n id: number;\r\n}\r\n\r\nexport type IBasicData = IData & { [clientName: string]: unknown };\r\n\r\nexport type AttrType = 'id' | 'string' | 'date' | 'dateTime' | 'number' | 'bool' | 'enum' | 'file' | 'money' | 'text';\r\n\r\nexport type AttrName<T> = keyof T & string;\r\nexport type AttrNames<T> = AttrName<T>[];\r\n\r\ntype TypeParamsMap<T extends IData> = {\r\n file: FileConverterParam<T>;\r\n enum: EnumConverterParam;\r\n}\r\n\r\nexport type AttrMappingDescription<T extends IBasicData = IBasicData, TAttr extends AttrType = AttrType> = {\r\n clientName: AttrName<T>,\r\n type: TAttr;\r\n serverName: string,\r\n requiredAttriubtes?: AttrNames<T>;\r\n defaultFormat?: AttrType,\r\n filterCondition?: CreateConditionFactory;\r\n} & (\r\n TAttr extends keyof TypeParamsMap<T> ? {\r\n typeParam: TAttr extends keyof TypeParamsMap<T> ? TypeParamsMap<T>[TAttr] : never;\r\n } : {\r\n typeParam?: unknown;\r\n }\r\n);\r\n\r\nexport type FileConverterParam<IModel> = {\r\n getFileName?: (data?: IModel, fileName?: string) => string | undefined;\r\n hasDigitalSignarue?: (data?: IModel) => boolean | undefined;\r\n}\r\n\r\nexport type EnumConverterParam = string;\r\n\r\nexport class AttrMapping<T extends IData = any>{\r\n public readonly clientMap: Map<keyof T, AttrMappingDescription<T, AttrType>>;\r\n public readonly serverMap: Map<string, AttrMappingDescription<T, AttrType>>;\r\n public readonly objectName: string;\r\n\r\n constructor(objectName: string, entries: AttrMappingDescription<T, AttrType>[]) {\r\n this.objectName = objectName;\r\n this.clientMap = new Map(entries.map(entry => [entry.clientName, entry] as const));\r\n this.serverMap = new Map(entries.map(entry => [entry.serverName, entry] as const));\r\n }\r\n\r\n public toServerNames(...clientNames: AttrNames<T>): string[] {\r\n return clientNames.map(clientName => this.toServerName(clientName));\r\n }\r\n\r\n public toClientNames(...serverNames: string[]): AttrName<T>[] {\r\n return serverNames.map(serverName => this.toClientName(serverName));\r\n }\r\n\r\n public toServerName(clientName: AttrName<T>): string {\r\n return this.getByClientName(clientName)?.serverName as string;\r\n }\r\n\r\n public toClientName(serverName: string): AttrName<T> {\r\n return this.getByServerName(serverName)?.clientName as AttrName<T>;\r\n }\r\n\r\n public getDataRowAttributes(...clientNames: AttrNames<T>): GetDataRowsAttribute[] {\r\n const allClientNames = clientNames.map(clientName => {\r\n const attributeInfo = this.getByClientName(clientName);\r\n return [attributeInfo?.clientName, ...attributeInfo?.requiredAttriubtes ?? []];\r\n });\r\n return uniqueArray(...allClientNames).map(clientName => {\r\n const serverName = clientName && this.toServerName(clientName);\r\n return serverName ? { clientName, serverName } : undefined;\r\n }).filter(truthy);\r\n }\r\n\r\n public getByServerName(serverName: string): AttrMappingDescription<T, AttrType> | undefined {\r\n return this.serverMap.get(serverName);\r\n }\r\n\r\n public getByClientName(clientName: AttrName<T>): AttrMappingDescription<T, AttrType> | undefined {\r\n return this.clientMap.get(clientName);\r\n }\r\n}","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IDNSystemiModel = IData & {\r\n cpvKod: string;\r\n datumZavedeni: Date;\r\n delkaMesic: number;\r\n delkaRok: number;\r\n nazev: string;\r\n pocetDod: number;\r\n podaniLhuta: Date;\r\n predmet: string;\r\n stav: number;\r\n terminUkonceni: Date;\r\n vz: number;\r\n vzHierarchie: number;\r\n zadavatelNazev: string;\r\n zadavatelICO: string;\r\n zadavatelID: number;\r\n zakazka: number;\r\n zakazkaKod: string;\r\n \r\n}\r\n\r\nexport const DNSystemAttrMap = new AttrMapping<IDNSystemiModel>('DNSystem', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'cpvKod', serverName: 'Hist.CPV_predmetu.Kod', type: 'string' },\r\n { clientName: 'datumZavedeni', serverName: 'Datum_zavedeni', type: 'dateTime' },\r\n { clientName: 'delkaMesic', serverName: 'Delka_trvani_mesice', type: 'number' },\r\n { clientName: 'delkaRok', serverName: 'Delka_trvani_roky', type: 'number' },\r\n { clientName: 'nazev', serverName: 'Nazev_DNS', type: 'string' },\r\n { clientName: 'pocetDod', serverName: 'Pocet_dodavatelu', type: 'number' },\r\n { clientName: 'podaniLhuta', serverName: 'Hist.Podani_nabidka.Lhuta', type: 'dateTime' },\r\n { clientName: 'predmet', serverName: 'Predmet', type: 'text' },\r\n { clientName: 'stav', serverName: 'Stav', type: 'enum', typeParam: 'Stav_DNS' },\r\n { clientName: 'terminUkonceni', serverName: 'Termin_ukonceni', type: 'date' },\r\n { clientName: 'vz', serverName: 'VZ', type: 'id' },\r\n { clientName: 'vzHierarchie', serverName: 'Hist.Hierarchie', type: 'id' },\r\n { clientName: 'zadavatelNazev', serverName: 'Hist.Zadavatel.Nazev', type: 'string' },\r\n { clientName: 'zadavatelICO', serverName: 'Hist.Zadavatel.ICO', type: 'string' },\r\n { clientName: 'zadavatelID', serverName: 'Hist.Zadavatel', type: 'id' },\r\n { clientName: 'zakazka', serverName: 'Hist.ID', type: 'id' },\r\n { clientName: 'zakazkaKod', serverName: 'Hist.Kod', type: 'string' },\r\n \r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IProfilZadavateleModel = IData & {\r\n adresaProfilu: string;\r\n adresaProfiluMulti: string;\r\n castObce: string;\r\n cisloOrientacni: number;\r\n cisloPopisne: number;\r\n dalsiProfil: string;\r\n datumDeaktivace: Date;\r\n datumNarozeni: Date;\r\n datumUverejneniVVZ: Date;\r\n datumVytvoreni: Date;\r\n dic: string;\r\n dominantniVliv: boolean;\r\n doplnekKNazvu: string;\r\n email: string;\r\n evidencniCisloVeVestniku: string;\r\n fax: string;\r\n ico: string;\r\n id: number;\r\n jinyIdentifikátor: string;\r\n kategorieZadavatele: string;\r\n multiprofil: boolean;\r\n nazevOrganizace: string;\r\n nazevProfilu: string;\r\n obec: string;\r\n obrana: boolean;\r\n pfNazev: string;\r\n profID: number;\r\n profilZadavatele: string;\r\n psc: string;\r\n relativniCinnost: string;\r\n relativniCinnostJinak: boolean;\r\n rodneCislo: string;\r\n stat: string;\r\n subjID: number;\r\n telefon1: string;\r\n telefon2: string;\r\n typSubjektu: string;\r\n ulice: string;\r\n www: string;\r\n nazevUctu: string;\r\n predcisliUctu: number;\r\n cisloUctu: string;\r\n kodBanky: string;\r\n iban: string;\r\n swift: string;\r\n platnyZruseny: boolean;\r\n neaktivniAktivni: boolean;\r\n nutsKod: string;\r\n}\r\n\r\nexport const ProfilZadavateleAttrMap = new AttrMapping<IProfilZadavateleModel>('Profil_lw', [\r\n { clientName: 'adresaProfilu', serverName: 'Adresa_profil_NEN', type: 'string' },\r\n { clientName: 'adresaProfiluMulti', serverName: 'Prof.Adresa_profil_NEN', type: 'string' },\r\n { clientName: 'castObce', serverName: 'Subj.Cast_obce', type: 'string' },\r\n { clientName: 'cisloOrientacni', serverName: 'Subj.Cislo_orientacni', type: 'number' },\r\n { clientName: 'cisloPopisne', serverName: 'Subj.Cislo_popisne', type: 'number' },\r\n { clientName: 'dalsiProfil', serverName: 'Subj.Dalsi_profil_1', type: 'string' },\r\n { clientName: 'datumDeaktivace', serverName: 'Plati_do', type: 'dateTime' },\r\n { clientName: 'datumNarozeni', serverName: 'Subj.Datum_narozeni', type: 'dateTime' },\r\n { clientName: 'datumUverejneniVVZ', serverName: 'Datum_uver_VVZ', type: 'dateTime' },\r\n { clientName: 'datumVytvoreni', serverName: 'Plati_od', type: 'dateTime' },\r\n { clientName: 'dic', serverName: 'Subj.DIC', type: 'string' },\r\n { clientName: 'dominantniVliv', serverName: 'Subj.Dominantni_vliv', type: 'bool' },\r\n { clientName: 'doplnekKNazvu', serverName: 'Subj.Doplnek_k_nazvu', type: 'string' },\r\n { clientName: 'email', serverName: 'Subj.Email', type: 'string' },\r\n { clientName: 'evidencniCisloVeVestniku', serverName: 'Subj.Evid_c_ve_Vestniku', type: 'string' },\r\n { clientName: 'fax', serverName: 'Subj.Fax', type: 'string' },\r\n { clientName: 'ico', serverName: 'Subj.ICO', type: 'string' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'jinyIdentifikátor', serverName: 'Subj.Jiny_identifikator', type: 'string' },\r\n { clientName: 'kategorieZadavatele', serverName: 'Subj.Kategorie_zadavatele', type: 'enum', typeParam: 'Kategorie_zadavatele' },\r\n { clientName: 'multiprofil', serverName: 'Prof.Multiprofil', type: 'bool' },\r\n { clientName: 'nazevOrganizace', serverName: 'Subj.Nazev', type: 'string' },\r\n { clientName: 'nazevProfilu', serverName: 'Prof.Nazev', type: 'string' },\r\n { clientName: 'obec', serverName: 'Subj.Obec', type: 'string' },\r\n { clientName: 'obrana', serverName: 'Subj.Obrana', type: 'bool' },\r\n { clientName: 'pfNazev', serverName: 'Subj.PF.Nazev', type: 'string' },\r\n { clientName: 'profID', serverName: 'Prof', type: 'id' },\r\n { clientName: 'profilZadavatele', serverName: 'Subj.Profil_zadavatele', type: 'string' },\r\n { clientName: 'psc', serverName: 'Subj.PSC', type: 'string' },\r\n { clientName: 'relativniCinnost', serverName: 'Subj.Rel_cin', type: 'string' },\r\n { clientName: 'relativniCinnostJinak', serverName: 'Subj.Rel_cinnost_jinak', type: 'bool' },\r\n { clientName: 'rodneCislo', serverName: 'Subj.Rodne_cislo', type: 'string' },\r\n { clientName: 'stat', serverName: 'Subj.Stat_adresy.Kod', type: 'string' },\r\n { clientName: 'subjID', serverName: 'Subj', type: 'id' },\r\n { clientName: 'telefon1', serverName: 'Subj.Telefon_1', type: 'string' },\r\n { clientName: 'telefon2', serverName: 'Subj.Telefon_2', type: 'string' },\r\n { clientName: 'typSubjektu', serverName: 'Subj.Typ_subj', type: 'string' },\r\n { clientName: 'ulice', serverName: 'Subj.Ulice', type: 'string' },\r\n { clientName: 'www', serverName: 'Subj.WWW', type: 'string' },\r\n { clientName: 'nazevUctu', serverName: 'Subj.Nazev_uctu', type: 'string' },\r\n { clientName: 'predcisliUctu', serverName: 'Subj.Predcisli_uctu', type: 'number' },\r\n { clientName: 'cisloUctu', serverName: 'Subj.cislo_uctu', type: 'string' },\r\n { clientName: 'kodBanky', serverName: 'Subj.Banka_uctu.Kod', type: 'string' },\r\n { clientName: 'iban', serverName: 'Subj.IBAN', type: 'string' },\r\n { clientName: 'swift', serverName: 'Subj.Banka_uctu.SWIFT', type: 'string' },\r\n { clientName: 'platnyZruseny', serverName: 'Platny', type: 'bool' },\r\n { clientName: 'neaktivniAktivni', serverName: 'Subj.Neaktivni_profil', type: 'bool' },\r\n { clientName: 'nutsKod', serverName: 'Subj.vazba_NUTS.Kod', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\nimport { CreateConditionFactory, createIn, createSubtreeCondition } from \"@utils/FilterCondition\";\r\n\r\nexport type ISubjektModel = IData & {\r\n adresaProfilNEN: string;\r\n castObce: string;\r\n cisloOrientacni: number;\r\n cisloPopisne: number;\r\n cisloUctu: string;\r\n dalsiProfil: string;\r\n datumDeaktivace: Date;\r\n datumNarozeni: Date;\r\n datumUverejneniVVZ: Date;\r\n datumVytvoreni: Date;\r\n dic: string;\r\n dominantniVliv: boolean;\r\n doplnekKNazvu: string;\r\n email: string;\r\n evidencniCisloVeVestniku: string;\r\n externiAdministrator: boolean;\r\n fax: string;\r\n iban: string;\r\n ico: string;\r\n id: number;\r\n jinyIdentifikátor: string;\r\n kategorieZadavatele: string;\r\n kodBanky: string;\r\n multiprofil: boolean;\r\n nazevOrganizace: string;\r\n nazevSdruzZadav: string;\r\n nazevUctu: string;\r\n nipezSubjektu: number;\r\n cpvNipezSubjektu: number;\r\n nutsKod: string;\r\n obec: string;\r\n obrana: boolean;\r\n pfNazev: string;\r\n pocetZam: number;\r\n profID: number;\r\n profilZadavatele: string;\r\n predcisliUctu: number;\r\n predmetCinnostiOrg: string;\r\n psc: string;\r\n relativniCinnost: string;\r\n relativniCinnostJinak: boolean;\r\n rocniObrat: string;\r\n rodneCislo: string;\r\n rokVznikuOrg: string;\r\n stat: string;\r\n subjID: number;\r\n swift: string;\r\n telefon1: string;\r\n telefon2: string;\r\n typSubjektu: string;\r\n ulice: string;\r\n vedouciClenSdruz: string;\r\n www: string;\r\n zpusobJednani: string;\r\n NUTS: number;\r\n pravniForma: number;\r\n}\r\n\r\nconst createPredmetCinnostiCondition = ({ objectName, subjectAttrName, ciselnikAttrName }: { objectName: string; subjectAttrName: string; ciselnikAttrName: string; }): CreateConditionFactory =>\r\n ({ value, conditionParams }) => {\r\n const stringValue = value as string;\r\n if (!stringValue) {\r\n return null;\r\n }\r\n\r\n const parentInCondition = createIn('Nadrizeny', stringValue);\r\n const condition = `EXISTS(${objectName},${subjectAttrName}=&ID AND (${createIn(ciselnikAttrName, stringValue)} OR EXISTS(DStrom,ID=&${ciselnikAttrName} AND ${parentInCondition})))`;\r\n \r\n return { condition, conditionParams };\r\n }\r\n\r\nexport const SubjektAttrMap = new AttrMapping<ISubjektModel>('Subjekt', [\r\n { clientName: 'adresaProfilNEN', serverName: 'Adresa_Profil_NEN', type: 'string' },\r\n { clientName: 'castObce', serverName: 'Cast_obce', type: 'string' },\r\n { clientName: 'cisloOrientacni', serverName: 'Cislo_orientacni', type: 'number' },\r\n { clientName: 'cisloPopisne', serverName: 'Cislo_popisne', type: 'number' },\r\n { clientName: 'cisloUctu', serverName: 'cislo_uctu', type: 'string' },\r\n { clientName: 'dalsiProfil', serverName: 'Dalsi_profil_1', type: 'string' },\r\n { clientName: 'datumNarozeni', serverName: 'Datum_narozeni', type: 'date' },\r\n { clientName: 'dic', serverName: 'DIC', type: 'string' },\r\n { clientName: 'dominantniVliv', serverName: 'Dominantni_vliv', type: 'bool' },\r\n { clientName: 'doplnekKNazvu', serverName: 'Doplnek_k_nazvu', type: 'string' },\r\n { clientName: 'email', serverName: 'Email', type: 'string' },\r\n { clientName: 'externiAdministrator', serverName: 'ext_admin', type: 'bool' },\r\n { clientName: 'evidencniCisloVeVestniku', serverName: 'Evid_c_ve_Vestniku', type: 'string' },\r\n { clientName: 'fax', serverName: 'Fax', type: 'string' },\r\n { clientName: 'iban', serverName: 'IBAN', type: 'string' },\r\n { clientName: 'ico', serverName: 'ICO', type: 'string' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'jinyIdentifikátor', serverName: 'Jiny_identifikator', type: 'string' },\r\n { clientName: 'kategorieZadavatele', serverName: 'Kategorie_zadavatele', type: 'enum', typeParam: 'Kategorie_zadavatele' },\r\n { clientName: 'kodBanky', serverName: 'Banka_uctu.Kod', type: 'string' },\r\n { clientName: 'nazevOrganizace', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'nazevSdruzZadav', serverName: 'Nazev_sdruz_zad', type: 'string' },\r\n { clientName: 'nazevUctu', serverName: 'Nazev_uctu', type: 'string' },\r\n { clientName: 'obec', serverName: 'Obec', type: 'string' },\r\n { clientName: 'obrana', serverName: 'Obrana', type: 'bool' },\r\n { clientName: 'pfNazev', serverName: 'PF.Nazev', type: 'string' },\r\n { clientName: 'pocetZam', serverName: 'Pocet_zam', type: 'number' },\r\n { clientName: 'predcisliUctu', serverName: 'Predcisli_uctu', type: 'number' },\r\n { clientName: 'predmetCinnostiOrg', serverName: 'Predmet_cinnosti_org', type: 'string' },\r\n { clientName: 'profilZadavatele', serverName: 'Profil_zadavatele', type: 'string' },\r\n { clientName: 'psc', serverName: 'PSC', type: 'string' },\r\n { clientName: 'relativniCinnost', serverName: 'Rel_cin', type: 'string' },\r\n { clientName: 'relativniCinnostJinak', serverName: 'Rel_cinnost_jinak', type: 'bool' },\r\n { clientName: 'rocniObrat', serverName: 'Rocni_obrat', type: 'string' },\r\n { clientName: 'rodneCislo', serverName: 'Rodne_cislo', type: 'string' },\r\n { clientName: 'rokVznikuOrg', serverName: 'Rok_vzniku_org', type: 'string' },\r\n { clientName: 'nutsKod', serverName: 'vazba_NUTS.Kod', type: 'string' },\r\n { clientName: 'stat', serverName: 'Stat_adresy.Kod', type: 'string' },\r\n { clientName: 'subjID', serverName: 'ID', type: 'id' },\r\n { clientName: 'swift', serverName: 'Banka_uctu.SWIFT', type: 'string' },\r\n { clientName: 'telefon1', serverName: 'Telefon_1', type: 'string' },\r\n { clientName: 'telefon2', serverName: 'Telefon_2', type: 'string' },\r\n { clientName: 'typSubjektu', serverName: 'Typ_subj', type: 'string' },\r\n { clientName: 'ulice', serverName: 'Ulice', type: 'string' },\r\n { clientName: 'vedouciClenSdruz', serverName: 'Vedouci_clen_sdruz', type: 'string' },\r\n { clientName: 'www', serverName: 'WWW', type: 'string' },\r\n { clientName: 'zpusobJednani', serverName: 'Zpusob_jednani', type: 'string' },\r\n { clientName: 'nipezSubjektu', serverName: '', type: 'id', filterCondition: createPredmetCinnostiCondition({ objectName: 'VSubjekt_NIPEZ', subjectAttrName: 'subj_ID', ciselnikAttrName: 'NIPEZ_id' }) },\r\n { clientName: 'cpvNipezSubjektu', serverName: '', type: 'id', filterCondition: createPredmetCinnostiCondition({ objectName: 'CPVNIPEZ_subjektu', subjectAttrName: 'Subj', ciselnikAttrName: 'CPV_subjekt' }) },\r\n { clientName: 'NUTS', serverName: 'vazba_NUTS', type: 'id', filterCondition: createSubtreeCondition },\r\n { clientName: 'pravniForma', serverName: 'PF', type: 'id' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type ISystemKvalifikaceModel = IData & {\r\n obdobiOd: Date;\r\n obdobiDo: Date;\r\n skKod: string;\r\n skNazev: string;\r\n skPredmet: string;\r\n skStav: string;\r\n skUcel: string\r\n skZadavatelNazev: string;\r\n skZadavatelID: number\r\n}\r\n\r\nexport const SystemKvalifikaceAttrMap = new AttrMapping<ISystemKvalifikaceModel>('System_kvalifikace', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'obdobiOd', serverName: 'Obdobi_OD', type: 'date' },\r\n { clientName: 'obdobiDo', serverName: 'Obdobi_DO', type: 'date' },\r\n { clientName: 'skKod', serverName: 'Kod_SK', type: 'string' },\r\n { clientName: 'skNazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'skPredmet', serverName: 'Predmet', type: 'string' },\r\n { clientName: 'skStav', serverName: 'Stav', type: 'enum', typeParam: 'Stav_SK' },\r\n { clientName: 'skUcel', serverName: 'Ucel', type: 'string' },\r\n { clientName: 'skZadavatelNazev', serverName: 'Zadavatel.Nazev', type: 'string' },\r\n { clientName: 'skZadavatelID', serverName: 'Zadavatel', type: 'id' },\r\n]);","import { CreateConditionFactory, createIn, createSubtreeCondition, joinConditionsByOr, toSplittedLinguisticLike } from \"@utils/FilterCondition\";\r\nimport { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IZpModel = IData & {\r\n cpvPredmetu: number;\r\n cpvPredmetuKod: string;\r\n cpvPredmetuNazev: string;\r\n createCas: string;\r\n datumPosledniUver: Date;\r\n datumProfil: Date;\r\n datumProfilMimo: Date;\r\n datumPrvniUver: Date;\r\n datumUkonceni: Date;\r\n datumVestnik: Date;\r\n datumZruseni: Date;\r\n dnsZavedeneID: number;\r\n dnsZavedeneNazev: string;\r\n dodavatelICO: string;\r\n dodavatelNazev: string;\r\n druhVZ: number;\r\n druhZR: number;\r\n druhZRNazev: string;\r\n histId: number;\r\n hlavniMistoNUTS: string;\r\n identifDNS: string;\r\n identifEU: string;\r\n identifSouvis: string;\r\n identifZP: string;\r\n importovanaZakazka: boolean;\r\n jeToRD: boolean;\r\n kod: string;\r\n kodET: string;\r\n kodEU: string;\r\n kodIEN: string;\r\n kodPuvodniProfil: string;\r\n kodVestnik: string;\r\n kodZakazkaProfil: string;\r\n mistoKPolozce: boolean;\r\n mistoNUTS: number;\r\n mistoPlneni: string;\r\n naZakladeRSRD: boolean;\r\n nazev: string;\r\n nazevPredmetu: string;\r\n nazevRSRD: string;\r\n nipezPredmetu: number;\r\n nipezPredmetuKod: string;\r\n nipezPredmetuNazev: string;\r\n osobaDalsiInfo: string;\r\n osobaEmail: string;\r\n osobaFax: string;\r\n osobaFunkce: string;\r\n osobaJmeno: string;\r\n osobaMobil: string;\r\n osobaPrijmeni: string;\r\n osobaTelefon: string;\r\n osobaTitPred: string;\r\n osobaTitZa: string;\r\n oteviraniLhuta: Date;\r\n oteviraniNavrhLhuta: Date;\r\n oteviraniPredNabLhuta: Date;\r\n oteviraniPredZajemLhuta: Date;\r\n oteviraniZadostLhuta: Date;\r\n podaniInformaceLhuta: Date;\r\n podaniLhuta: Date;\r\n podaniNavrhLhuta: Date;\r\n podaniPredNabLhuta: Date;\r\n podaniPredZajemLhuta: Date;\r\n podaniZadostLhuta: Date;\r\n popisPredmet: string;\r\n predchoziCastId: number;\r\n predpokladHodnota: number;\r\n predpokladHodnotaCZK: number;\r\n predpokladMenaNazev: string;\r\n profId: number;\r\n profilMimo: string;\r\n profilNazev: string;\r\n rozdeleniNaCasti: boolean;\r\n specifZRNazev: string;\r\n stavZP: string;\r\n typVZ: string;\r\n typVZcast: string;\r\n ucastnikICO: string;\r\n ucastnikNazev: string;\r\n uverProfil: string;\r\n uzamceni: boolean;\r\n vzDnsZavedeneID: number;\r\n vzDnsZavedeneNazev: string;\r\n vzDnsZavedeneKod: string;\r\n vzDnsZavedeneKodNazev: string;\r\n zadavanaDNS: boolean;\r\n zadavatelCastObce: string;\r\n zadavatelHlavniPredmet: number;\r\n zadavatelICO: string;\r\n zadavatelID: number;\r\n zadavatelNazev: string;\r\n zadavatelNUTS: number;\r\n zadavatelObec: string;\r\n zadavatelPravniForma: number;\r\n zadavatelUlice: string;\r\n zavedeniDNS: boolean;\r\n fullTextFiltr: string;\r\n}\r\n\r\nconst createMistoPlneniCondition: CreateConditionFactory = ({ attrInfo, value, conditionParams }) => {\r\n const mistoNutsLike = toSplittedLinguisticLike('vazba_NUTS.Nazev', value as string, conditionParams);\r\n const polozkaPredmetuLike = toSplittedLinguisticLike('Misto_plneni', value as string, conditionParams);\r\n const condition = joinConditionsByOr(\r\n toSplittedLinguisticLike(attrInfo.serverName, value as string, conditionParams),\r\n mistoNutsLike && `EXISTS(Misto_NUTS_hist,ZP=&Hist AND ${mistoNutsLike})`,\r\n polozkaPredmetuLike && `EXISTS(Polozka_predm_hist,ZP=&Hist AND ${polozkaPredmetuLike})`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n}\r\n\r\nconst createPredmetCondition = (polozkaAttrName: string): CreateConditionFactory => ({ attrInfo, value, conditionParams }) => {\r\n const stringValue = value as string;\r\n if (!stringValue) {\r\n return null;\r\n }\r\n const parentInCondition = createIn('Nadrizeny', stringValue);\r\n const condition = joinConditionsByOr(\r\n `${createIn(attrInfo.serverName, stringValue)} OR EXISTS(DStrom,ID=&${attrInfo.serverName} AND ${parentInCondition})`,\r\n `EXISTS(Polozka_predm_hist,ZP=&Hist AND (${createIn(polozkaAttrName, stringValue)} OR EXISTS(DStrom,ID=&${polozkaAttrName} AND ${parentInCondition})))`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n}\r\n\r\nconst createNazevDodavateleCondition: CreateConditionFactory = ({ value, conditionParams }) => {\r\n const likeCondition = toSplittedLinguisticLike('Uredni_nazev', value as string, conditionParams);\r\n return {\r\n condition: `EXISTS(Detail_uverejneni,Info_uver.ZP=&Hist AND Info_uver.Uverejneni = 'VYS' AND Info_uver.Platny = true AND Uverejnen = true AND ${likeCondition})`,\r\n conditionParams\r\n };\r\n}\r\n\r\nconst createDodavatelICOCondition: CreateConditionFactory = ({ value, conditionParams }) => {\r\n const likeCondition = toSplittedLinguisticLike('IC', value as string, conditionParams);\r\n return {\r\n condition: `EXISTS(Detail_uverejneni,Info_uver.ZP=&Hist AND Info_uver.Uverejneni = 'VYS' AND Info_uver.Platny = true AND Uverejnen = true AND ${likeCondition})`,\r\n conditionParams\r\n };\r\n}\r\n\r\nconst createUcastnikNazevCondition: CreateConditionFactory = ({ value, conditionParams }) => {\r\n const condition = joinConditionsByOr(\r\n `EXISTS(Detail_uverejneni,Info_uver.ZP=&Hist AND Info_uver.Uverejneni = 'UCH' AND Info_uver.Platny = true AND Uverejnen = true AND ${toSplittedLinguisticLike('Uredni_nazev', value as string, conditionParams)})`,\r\n `EXISTS(Detail_uverejneni,Info_uver.ZP=&ID AND Info_uver.Uverejneni = 'UCH' AND Info_uver.Platny = true AND Uverejnen = true AND Sdruzeni_dodavatelu = true AND ${toSplittedLinguisticLike('Nazev_vedouciho', value as string, conditionParams)})`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n}\r\n\r\nconst createUcastnikICOCondition: CreateConditionFactory = ({ value, conditionParams }) => {\r\n const condition = joinConditionsByOr(\r\n `EXISTS(Detail_uverejneni,Info_uver.ZP=&Hist AND Info_uver.Uverejneni = 'UCH' AND Info_uver.Platny = true AND Uverejnen = true AND ${toSplittedLinguisticLike('IC', value as string, conditionParams)})`,\r\n `EXISTS(Detail_uverejneni,Info_uver.ZP=&ID AND Info_uver.Uverejneni = 'UCH' AND Info_uver.Platny = true AND Uverejnen = true AND Sdruzeni_dodavatelu = true AND ${toSplittedLinguisticLike('ICO_vedouciho', value as string, conditionParams)})`\r\n );\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n}\r\n\r\nconst createHlavniPredmetCinnostiCondition: CreateConditionFactory = ({ value, conditionParams }) => {\r\n const inCondition = createIn('Predmet_cinnosti', value as string);\r\n const condition = inCondition && `EXISTS(Cinnost_subj,Subj=&Zadavatel AND ${inCondition})`\r\n return condition ? {\r\n condition,\r\n conditionParams\r\n } : null;\r\n}\r\n\r\nexport const ZpAttrMap = new AttrMapping<IZpModel>('Zadavaci_postup_hist', [\r\n { clientName: 'cpvPredmetu', serverName: 'CPV_predmetu', type: 'id', filterCondition: createPredmetCondition('CPV_polozky') },\r\n { clientName: 'cpvPredmetuKod', serverName: 'CPV_predmetu.Kod', type: 'string' },\r\n { clientName: 'cpvPredmetuNazev', serverName: 'CPV_predmetu.Nazev', type: 'string' },\r\n { clientName: 'createCas', serverName: 'create_cas', type: 'dateTime' },\r\n { clientName: 'datumPosledniUver', serverName: 'Hist.Datum_posl_uver', type: 'dateTime' },\r\n { clientName: 'datumProfil', serverName: 'Datum_uver_profil', type: 'dateTime' },\r\n { clientName: 'datumProfilMimo', serverName: 'Datum_uver_mimo_NEN', type: 'dateTime' },\r\n { clientName: 'datumPrvniUver', serverName: 'Hist.Datum_prvni_uver', type: 'dateTime' },\r\n { clientName: 'datumUkonceni', serverName: 'Datum_ukonceni', type: 'date' },\r\n { clientName: 'datumVestnik', serverName: 'Datum_uver_vestnik', type: 'dateTime' },\r\n { clientName: 'datumZruseni', serverName: 'Datum_zruseni_ZR', type: 'dateTime' },\r\n { clientName: 'dnsZavedeneID', serverName: 'Zalozena_z_DNS.ID', type: 'id' },\r\n { clientName: 'dnsZavedeneNazev', serverName: 'Zalozena_z_DNS.Nazev_DNS', type: 'string' },\r\n { clientName: 'dodavatelICO', serverName: 'Dodavatel.ICO', type: 'string', filterCondition: createDodavatelICOCondition },\r\n { clientName: 'dodavatelNazev', serverName: '', type: 'string', filterCondition: createNazevDodavateleCondition },\r\n { clientName: 'druhVZ', serverName: 'Druh_VZ', type: 'enum', typeParam: 'Druh_VZ' },\r\n { clientName: 'druhZR', serverName: 'Druh_ZR', type: 'id' },\r\n { clientName: 'druhZRNazev', serverName: 'Druh_ZR.Nazev', type: 'string' },\r\n { clientName: 'histId', serverName: 'Hist', type: 'id' },\r\n { clientName: 'hlavniMistoNUTS', serverName: 'Hlavni_misto_nuts.Nazev', type: 'string' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'identifDNS', serverName: 'Kod_souvisejici_ZP', type: 'string' },\r\n { clientName: 'identifEU', serverName: 'Identifikator_EU', type: 'string' },\r\n { clientName: 'identifSouvis', serverName: 'Identif_ZP_z_DNS', type: 'string' },\r\n { clientName: 'identifZP', serverName: 'Identifikator_ZP', type: 'string' },\r\n { clientName: 'importovanaZakazka', serverName: 'Importovana_zakazka', type: 'bool' },\r\n { clientName: 'jeToRD', serverName: 'Jedna_se_o_RD', type: 'bool' },\r\n { clientName: 'kod', serverName: 'Kod', type: 'string' },\r\n { clientName: 'kodET', serverName: 'System_c_ET', type: 'string' },\r\n { clientName: 'kodIEN', serverName: 'System_c_IEN', type: 'string' },\r\n { clientName: 'kodPuvodniProfil', serverName: 'Puvodni_kod_profilu', type: 'string' },\r\n { clientName: 'kodEU', serverName: 'Evid_c_Uv_EU', type: 'string' },\r\n { clientName: 'kodVestnik', serverName: 'Evid_c_ve_Vestniku', type: 'string' },\r\n { clientName: 'kodZakazkaProfil', serverName: 'Kod_na_profil', type: 'string' },\r\n { clientName: 'mistoKPolozce', serverName: 'Misto_k_celku', type: 'bool' },\r\n { clientName: 'mistoNUTS', serverName: 'Hlavni_misto_nuts', type: 'id', filterCondition: createSubtreeCondition },\r\n { clientName: 'mistoPlneni', serverName: 'Misto_plneni', type: 'string', filterCondition: createMistoPlneniCondition },\r\n { clientName: 'naZakladeRSRD', serverName: 'Na_zaklade_RS', type: 'bool' },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'nazevPredmetu', serverName: 'Nazev_predmetu', type: 'string' },\r\n { clientName: 'nazevRSRD', serverName: 'Evidencni_cislo_sml', type: 'string' },\r\n { clientName: 'nipezPredmetu', serverName: 'NIPEZ_predmetu', type: 'id', filterCondition: createPredmetCondition('NIPEZ_polozky') },\r\n { clientName: 'nipezPredmetuKod', serverName: 'NIPEZ_predmetu.Kod', type: 'string' },\r\n { clientName: 'nipezPredmetuNazev', serverName: 'NIPEZ_predmetu.Nazev', type: 'string' },\r\n { clientName: 'osobaDalsiInfo', serverName: 'Osoba_zadavat.Dalsi_informace', type: 'string' },\r\n { clientName: 'osobaEmail', serverName: 'Osoba_zadavat.Email', type: 'string' },\r\n { clientName: 'osobaFax', serverName: 'Osoba_zadavat.Fax', type: 'string' },\r\n { clientName: 'osobaFunkce', serverName: 'Osoba_zadavat.Funkce', type: 'string' },\r\n { clientName: 'osobaJmeno', serverName: 'Osoba_zadavat.Jmeno', type: 'string' },\r\n { clientName: 'osobaMobil', serverName: 'Osoba_zadavat.Mobil', type: 'string' },\r\n { clientName: 'osobaPrijmeni', serverName: 'Osoba_zadavat.Prijmeni', type: 'string' },\r\n { clientName: 'osobaTelefon', serverName: 'Osoba_zadavat.Telefon_zam', type: 'string' },\r\n { clientName: 'osobaTitPred', serverName: 'Osoba_zadavat.Titul_pred', type: 'string' },\r\n { clientName: 'osobaTitZa', serverName: 'Osoba_zadavat.Titul_za', type: 'string' },\r\n { clientName: 'oteviraniLhuta', serverName: 'Podani_nabidka.Datum_otevirani', type: 'dateTime' },\r\n { clientName: 'oteviraniNavrhLhuta', serverName: 'Podani_navrh.Datum_otevirani', type: 'dateTime' },\r\n { clientName: 'oteviraniPredNabLhuta', serverName: 'Podani_predb_nab.Datum_otevirani', type: 'dateTime' },\r\n { clientName: 'oteviraniPredZajemLhuta', serverName: 'Podani_projeveni.Datum_otevirani', type: 'dateTime' },\r\n { clientName: 'oteviraniZadostLhuta', serverName: 'Podani_zadost.Datum_otevirani', type: 'dateTime' },\r\n { clientName: 'podaniInformaceLhuta', serverName: 'Podani_informace.Lhuta', type: 'dateTime' },\r\n { clientName: 'podaniLhuta', serverName: 'Podani_nabidka.Lhuta', type: 'dateTime' },\r\n { clientName: 'podaniNavrhLhuta', serverName: 'Podani_navrh.Lhuta', type: 'dateTime' },\r\n { clientName: 'podaniPredNabLhuta', serverName: 'Podani_predb_nab.Lhuta', type: 'dateTime' },\r\n { clientName: 'podaniPredZajemLhuta', serverName: 'Podani_projeveni.Lhuta', type: 'dateTime' },\r\n { clientName: 'podaniZadostLhuta', serverName: 'Podani_zadost.Lhuta', type: 'dateTime' },\r\n { clientName: 'popisPredmet', serverName: 'Popis_predmetu', type: 'text' },\r\n { clientName: 'predchoziCastId', serverName: 'Hist.Predchozi_cast', type: 'id' },\r\n { clientName: 'predpokladHodnota', serverName: 'Predpokl_hodnota', type: 'money' },\r\n { clientName: 'predpokladHodnotaCZK', serverName: 'Predpokl_hodnota_CZK', type: 'money' },\r\n { clientName: 'predpokladMenaNazev', serverName: 'Predpoklada_mena.Nazev', type: 'string' },\r\n { clientName: 'profId', serverName: 'Prof', type: 'id' },\r\n { clientName: 'profilMimo', serverName: 'www_profil_mimo', type: 'string' },\r\n { clientName: 'profilNazev', serverName: 'Prof.Nazev', type: 'string' },\r\n { clientName: 'rozdeleniNaCasti', serverName: 'Rozdeleni_na_casti', type: 'bool' },\r\n { clientName: 'specifZRNazev', serverName: 'Specif_ZR.Nazev', type: 'string' },\r\n { clientName: 'stavZP', serverName: 'Stav_ZP', type: 'enum', typeParam: 'Stav_postupu' },\r\n { clientName: 'typVZ', serverName: 'Typ_VZ_uziv', type: 'enum', typeParam: 'Typ_VZ' },\r\n { clientName: 'typVZcast', serverName: 'Typ_VZ_uziv', type: 'enum', typeParam: 'Typ_VZ' },\r\n { clientName: 'ucastnikICO', serverName: '', type: 'string', filterCondition: createUcastnikICOCondition },\r\n { clientName: 'ucastnikNazev', serverName: '', type: 'string', filterCondition: createUcastnikNazevCondition },\r\n { clientName: 'uverProfil', serverName: 'Uver_profil', type: 'bool' },\r\n { clientName: 'uzamceni', serverName: 'Uzamceni', type: 'bool' },\r\n { clientName: 'vzDnsZavedeneID', serverName: 'Zalozena_z_DNS.Hist.ID', type: 'id' },\r\n { clientName: 'vzDnsZavedeneNazev', serverName: 'Zalozena_z_DNS.Hist.Nazev', type: 'string' },\r\n { clientName: 'vzDnsZavedeneKod', serverName: 'Zalozena_z_DNS.Hist.Kod', type: 'string' },\r\n { clientName: 'vzDnsZavedeneKodNazev', serverName: 'Zalozena_z_DNS.Hist.Kod', type: 'string' }, \r\n { clientName: 'zadavanaDNS', serverName: 'Zadavana_v_DNS', type: 'bool' },\r\n { clientName: 'zadavatelCastObce', serverName: 'Zadavatel.Cast_obce', type: 'string' },\r\n { clientName: 'zadavatelHlavniPredmet', serverName: '', type: 'number', filterCondition: createHlavniPredmetCinnostiCondition },\r\n { clientName: 'zadavatelICO', serverName: 'Zadavatel.ICO', type: 'string' },\r\n { clientName: 'zadavatelID', serverName: 'Zadavatel', type: 'id' },\r\n { clientName: 'zadavatelNazev', serverName: 'Zadavatel.Nazev', type: 'string' },\r\n { clientName: 'zadavatelNUTS', serverName: 'Zadavatel.vazba_NUTS', type: 'id', filterCondition: createSubtreeCondition },\r\n { clientName: 'zadavatelObec', serverName: 'Zadavatel.Obec', type: 'string' },\r\n { clientName: 'zadavatelPravniForma', serverName: 'Zadavatel.PF', type: 'id' },\r\n { clientName: 'zadavatelUlice', serverName: 'Zadavatel.Ulice', type: 'string' },\r\n { clientName: 'zavedeniDNS', serverName: 'Zavedeni_DNS', type: 'bool' },\r\n { clientName: 'fullTextFiltr', serverName: 'Fulltext_filtr', type: 'string' }\r\n]);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"utils/BemUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\n\r\nconst cn = setupCn('gov-content-block');\r\n\r\nexport type ContentBlockProps = PropsWithChildren<{\r\n className?: Classes;\r\n withEServiceIcon?: boolean;\r\n lockey?: string;\r\n height?: string;\r\n}>;\r\n\r\nconst ContentBlock: FC<ContentBlockProps> = ({\r\n className,\r\n withEServiceIcon,\r\n children,\r\n lockey,\r\n height\r\n}) => {\r\n const { d, ts } = useLocalization();\r\n\r\n return (\r\n <div className={cn.with(className).main({\r\n '--e-service-icon': withEServiceIcon\r\n })} title={d(lockey)} style={{ height: height }}>\r\n {\r\n renderIf(lockey, () => (\r\n <>\r\n <h2>{ts(lockey)}</h2>\r\n <hr className={cn.subCn('__separator')} />\r\n </>\r\n ))\r\n }\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nContentBlock.displayName = 'ContentBlock';\r\n\r\nexport default React.memo(ContentBlock);\r\n","import { FC } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nexport const Page404: FC = () => {\r\n const { ts } = useLocalization();\r\n const location = useLocation();\r\n const urlSearchParams = new URLSearchParams(location.search);\r\n const params = Object.fromEntries(urlSearchParams.entries());\r\n\r\n const getText = () => {\r\n if (params.file) {\r\n\r\n if (params.file == \"multiple\") {\r\n return {\r\n headlineText: ts('NEN-781344', { width: 500 }), // V�mi po�adovan� soubory nebyly nalezeny.\r\n text: ts('NEN-645267', { width: 250 }) // Pros�m, zkontrolujte si URL adresu.\r\n }\r\n }\r\n\r\n return {\r\n headlineText: ts('NEN-781351', { width: 500 }), // V�mi po�adovan� soubor nebyl nalezen.\r\n text: ts('NEN-645267', { width: 250 }) // Pros�m, zkontrolujte si URL adresu.\r\n }\r\n }\r\n\r\n return {\r\n headlineText: ts('NEN-645266', { width: 500 }), // V�mi po�adovan� str�nka neexistuje.\r\n text: ts('NEN-645267', { width: 250 }) // Pros�m, zkontrolujte si URL adresu.\r\n };\r\n }\r\n\r\n const { headlineText, text } = getText();\r\n return (\r\n <ContentBlock>\r\n <h2>{headlineText}</h2>\r\n <p>{text}</p>\r\n </ContentBlock>\r\n );\r\n}","import React, { createContext, FC, useContext } from \"react\";\r\nimport { PropsWithChildren } from \"react\";\r\nimport { useDetailObject, UseDetailObjectParams, UseDetailObjectReturnType } from \"@store/detailObjectStore\";\r\nimport { IData } from \"@utils/AttrMapping\";\r\nimport { Page404 } from \"@pages/error/Page404\";\r\n\r\ntype DetailFramePropsType<T extends IData> = PropsWithChildren<UseDetailObjectParams<T>>;\r\n\r\nconst DetailFrameContext = createContext<UseDetailObjectReturnType<any>>({\r\n getAttr: (attrName) => ({ value: null, isFetching: false }),\r\n evaluateCondition: (condition) => undefined\r\n});\r\n\r\nexport const DetailFrame: FC<DetailFramePropsType<any>> = <T extends IData>({\r\n children,\r\n attrMapping,\r\n condition,\r\n conditionParams,\r\n loadKey }: DetailFramePropsType<T>) => {\r\n\r\n const { getAttr, evaluateCondition } = useDetailObject<T>({\r\n condition,\r\n conditionParams,\r\n attrMapping,\r\n loadKey,\r\n }); \r\n const id = getAttr('id');\r\n if (!id.isFetching && !id.value) {\r\n return (\r\n <Page404 />\r\n );\r\n }\r\n\r\n return (\r\n <DetailFrameContext.Provider value={{getAttr, evaluateCondition}}>\r\n {children}\r\n </DetailFrameContext.Provider>\r\n );\r\n}\r\n\r\nexport const useDetailFrameContext = <T extends IData = any>() => useContext(DetailFrameContext) as UseDetailObjectReturnType<T>;\r\n\r\nexport default React.memo(DetailFrame);","import React, { FC, KeyboardEventHandler, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { generatePath, Redirect, StaticContext, useRouteMatch } from \"react-router\";\r\nimport { NavLink, Route, RouteComponentProps, Switch } from \"react-router-dom\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport './Tabs.scss';\r\nimport { useDetailFrameContext } from \"../DetailFrame\";\r\n\r\nconst cn = setupCn('gov-tabs');\r\n\r\nexport type TabType = {\r\n path: string;\r\n lockey: string;\r\n showIf?: string | boolean;\r\n render?: (props: RouteComponentProps<any, StaticContext, any>) => React.ReactNode;\r\n component?: React.ComponentType<RouteComponentProps<any>> | React.ComponentType<any>;\r\n}\r\n\r\nexport type TabWithInfo = TabType & {\r\n generatedPath: string;\r\n isSelected: boolean;\r\n}\r\n\r\nexport type TabsProps = {\r\n tabs: TabType[];\r\n fallbackTo?: string\r\n id?: string;\r\n headerRight?: ReactNode;\r\n ariaLabel?: string;\r\n noMargin?: boolean;\r\n displayAsFlex?: boolean;\r\n};\r\n\r\nconst getTabId = (componentId: string, tabIndex: number) => `${componentId ?? 'pages'}-tab${tabIndex + 1}`;\r\n\r\nconst Tabs: FC<TabsProps> = ({ tabs, ariaLabel, fallbackTo, headerRight, id = 'pages', noMargin, displayAsFlex = false }) => {\r\n const { ts } = useLocalization();\r\n const match = useRouteMatch();\r\n const linksHolderRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const { evaluateCondition } = useDetailFrameContext();\r\n\r\n const [focusIndex, setFocusIndex] = useState<number | null>(null);\r\n const [focusId, setFocusId] = useState<string | null>(`${id}-tab1`);\r\n\r\n const isTriggerIndex = useCallback((index: number) => {\r\n return (index >= 0 && index <= (tabs.length - 1));\r\n }, [tabs]);\r\n\r\n const keys = useMemo(() => [13, 32, 37, 39], [])\r\n\r\n\r\n const handleKeyDown = useCallback<KeyboardEventHandler>(e => {\r\n const { keyCode } = e;\r\n if (keys?.includes(keyCode)) {\r\n e.preventDefault();\r\n if (!isTriggerIndex(focusIndex ?? 0)) {\r\n return;\r\n }\r\n\r\n if (keyCode === 39) {\r\n setFocusIndex(index => {\r\n index ??= 0;\r\n return (index + 1) >= tabs.length ? 0 : (index + 1)\r\n });\r\n } else if (keyCode === 37) {\r\n setFocusIndex(index => {\r\n index ??= 0;\r\n return (index - 1) < 0 ? (tabs.length - 1) : (index - 1)\r\n });\r\n } else if (keyCode === 13 || keyCode === 32) {\r\n if (focusIndex != null && linksHolderRef.current) {\r\n ([...linksHolderRef.current.children][focusIndex] as HTMLElement)?.click();\r\n }\r\n }\r\n }\r\n }, [tabs, isTriggerIndex, focusIndex, keys]);\r\n\r\n const tabsWithInfo = tabs.map<TabWithInfo>(tab => {\r\n const generatedPath = decodeURI(generatePath(tab.path, match?.params));\r\n return {\r\n ...tab,\r\n generatedPath,\r\n isSelected: match.url == generatedPath\r\n };\r\n });\r\n\r\n const selectedTabIndex = tabsWithInfo.findIndex(tab => tab.isSelected);\r\n\r\n const handleTabFocus = useCallback((id: string) => {\r\n if (linksHolderRef.current) {\r\n setFocusId(id);\r\n setFocusIndex([...linksHolderRef.current.children].findIndex(el => el.id == id));\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (focusIndex != null && linksHolderRef.current) {\r\n ([...linksHolderRef.current.children][focusIndex] as HTMLElement)?.focus();\r\n }\r\n }, [focusIndex]);\r\n\r\n const evalCond = (cond: string | boolean | undefined) =>\r\n cond === undefined || cond === true || (typeof cond === 'string' && evaluateCondition(cond))\r\n\r\n return (\r\n <div className={cn.main({\r\n '--display-flex': displayAsFlex\r\n })}>\r\n <div className={cn.subCn('__links-holder', {\r\n '--no-margin': noMargin\r\n })} ref={linksHolderRef} onKeyDown={handleKeyDown} role='tablist' aria-label={ariaLabel}>\r\n {\r\n tabsWithInfo.map((tab, index) => {\r\n const tabId = getTabId(id, index);\r\n return evalCond(tab.showIf) === false ? null : <NavLink\r\n className={cn.with('gov-button')('__link')}\r\n id={tabId}\r\n role='tab'\r\n aria-selected={tab.isSelected}\r\n tabIndex={focusId == tabId ? 0 : -1}\r\n activeClassName='is-active'\r\n onFocus={() => handleTabFocus(tabId)}\r\n key={`${tab.path}-${tab.showIf}`}\r\n exact to={{ pathname: tab.generatedPath }}>\r\n {ts(tab.lockey)}\r\n </NavLink>\r\n })\r\n }\r\n {headerRight}\r\n </div>\r\n <div className={cn('__content-holder')}>\r\n <div className={cn.with('is-active')('__content')}\r\n role='tabpanel'\r\n aria-labelledby={selectedTabIndex == null ? undefined : getTabId(id, selectedTabIndex)}>\r\n <Switch>\r\n {\r\n tabs.map((tab) => tab.showIf && evalCond(tab.showIf) === false ? null : <Route\r\n key={`${tab.path}-${tab.showIf}`}\r\n exact path={tab.path}\r\n component={tab.component}\r\n render={tab.render} />)\r\n }\r\n <Route path='*'>\r\n <Redirect to={fallbackTo ? fallbackTo : tabsWithInfo[0]?.generatedPath} />\r\n </Route>\r\n </Switch>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default React.memo(Tabs);\r\n","import { ArrayValues, EnumFromKeys } from \"@utils/TypeUtils\";\r\n\r\n\r\nexport type BottomSpace = 'unset' | '25' | 25 | '32' | 32;\r\n\r\nexport const bottomSpaceClass = (space?: BottomSpace) => space == null ? '' : `u-mb--${space}`;\r\n\r\nconst offsetsClasses = [\r\n 'u-mt--unset',\r\n 'u-mb--unset',\r\n 'u-mb--25',\r\n 'u-mb--32',\r\n 'u-pt--unset',\r\n 'u-pt--20',\r\n 'u-pt--40',\r\n 'u-pt--60',\r\n 'u-pb--unset',\r\n 'u-pb--20',\r\n 'u-pb--40',\r\n 'u-pb--60',\r\n] as const;\r\n\r\ntype OffsetsClassesEnum = EnumFromKeys<ArrayValues<typeof offsetsClasses>>;\r\n\r\nconst offsets: Record<string, string> = {};\r\noffsetsClasses.forEach(offsetClass => offsets[offsetClass] = offsetClass);\r\n\r\nexport default offsets as OffsetsClassesEnum;\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport './Grid.scss';\r\nimport { BottomSpace, bottomSpaceClass } from \"@styles/offsets\";\r\n\r\nconst cn = setupCn('gov-grid');\r\n\r\nexport type ColumnsCount = 1 | '1' | 2 | '2' | 3 | '3' | 4 | '4' | '4-2' | '2-mobile';\r\nexport type GridAlignItems = 'center' | 'start' | 'end';\r\n\r\nexport type GridProps = PropsWithChildren<{\r\n className?: Classes;\r\n isPlain?: boolean;\r\n lowerRowSpaces?: boolean;\r\n bottomSpace?: BottomSpace;\r\n columns: ColumnsCount;\r\n alignItems?: GridAlignItems;\r\n}>;\r\n\r\nconst Grid: FC<GridProps> = ({\r\n className,\r\n isPlain,\r\n lowerRowSpaces,\r\n alignItems,\r\n bottomSpace,\r\n children,\r\n columns\r\n}) => {\r\n const columnsModifier = `--x${columns}`;\r\n const alignItemsModifier = alignItems && `--align-items-${alignItems}`\r\n const bottomSpaceModifier = bottomSpaceClass(bottomSpace);\r\n\r\n return (\r\n <div className={cn.with(className, bottomSpaceModifier).main(columnsModifier, alignItemsModifier, {\r\n '--plain': isPlain,\r\n '--lower-row-spaces': lowerRowSpaces\r\n })}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nGrid.displayName = 'Grid';\r\n\r\nexport default React.memo(Grid);\r\n","import React from \"react\";\r\nimport { PropsWithChildren } from \"react\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Grid from \"@components/Grid\";\r\nimport { useDetailFrameContext } from \"../DetailFrame\";\r\n\r\nconst GroupBox: React.FC<PropsWithChildren<{\r\n lockey: string,\r\n fillContent?: boolean,\r\n showIf?: string | boolean\r\n}>> = ({ lockey, fillContent, showIf, children }) => {\r\n const { evaluateCondition } = useDetailFrameContext();\r\n\r\n if (showIf === false)\r\n return null;\r\n\r\n if (typeof showIf === 'string' && evaluateCondition(showIf) === false)\r\n return null;\r\n\r\n return (\r\n <ContentBlock lockey={lockey}>\r\n <Grid isPlain columns={fillContent ? 1 : 3}>\r\n {children}\r\n </Grid>\r\n </ContentBlock>\r\n );\r\n}\r\n\r\nexport default React.memo(GroupBox);","import React, { FC } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('gov-link');\r\n\r\nexport type LinkBaseSize = 'small' | 'normal' | 'large';\r\n\r\nexport type GovLinkBaseProps = {\r\n className?: Classes;\r\n linkRef?: React.Ref<HTMLAnchorElement>;\r\n size?: LinkBaseSize;\r\n disabled?: boolean;\r\n isInversed?: boolean;\r\n isExternal?: boolean;\r\n hasArrow?: boolean;\r\n isStandalone?: boolean;\r\n title?: string;\r\n}\r\n\r\nconst GovLinkBase: FC<GovLinkBaseProps & {\r\n element: React.FC<any>;\r\n}> = ({ className, size, linkRef, isInversed, isExternal, hasArrow, isStandalone, disabled, element: Element, ...restProps }) => {\r\n const sizeModifier = (!size || size == 'normal') ? null : `--${size}`;\r\n\r\n return (\r\n <Element\r\n ref={linkRef}\r\n className={cn.with(className).main(sizeModifier, {\r\n '--disabled': disabled,\r\n '--inversed': isInversed,\r\n '--external': isExternal,\r\n '--has-arrow': hasArrow,\r\n '--standalone': isStandalone,\r\n })}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(GovLinkBase);\r\n","import React, { FC } from \"react\";\r\nimport { Link, LinkProps } from \"react-router-dom\";\r\nimport GovLinkBase, { GovLinkBaseProps } from \"./GovLinkBase\";\r\n\r\nexport type GovLinkProps = GovLinkBaseProps & Omit<LinkProps, 'className'>;\r\n\r\nconst LinkElement: React.FC<any> = (linkProps) => <Link {...linkProps} />\r\nconst GovLink: FC<GovLinkProps> = ({ ...restProps }) => {\r\n return (\r\n <GovLinkBase\r\n element={LinkElement}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(GovLink);\r\n","import React, { FC } from \"react\";\r\nimport { NavLink, NavLinkProps } from \"react-router-dom\";\r\nimport GovLinkBase, { GovLinkBaseProps } from \"./GovLinkBase\";\r\n\r\nexport type GovNavLinkProps = GovLinkBaseProps & Omit<NavLinkProps, 'className'>;\r\n\r\nconst NavLinkElement = React.forwardRef<HTMLAnchorElement, NavLinkProps>((navLinkProps, ref) =>\r\n <NavLink innerRef={ref} {...navLinkProps} activeClassName='is-active' />)\r\n\r\nconst GovNavLink: FC<GovNavLinkProps> = ({ ...restProps }) => {\r\n return (\r\n <GovLinkBase\r\n element={NavLinkElement}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(GovNavLink);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport './Text.scss';\r\n\r\nconst cn = setupCn('text');\r\n\r\nexport type TextProps = PropsWithChildren<{\r\n className?: Classes;\r\n title?: string;\r\n isBold?: boolean;\r\n}> & React.HTMLProps<HTMLParagraphElement>;\r\n\r\nconst Text: FC<TextProps> = ({\r\n className,\r\n isBold,\r\n title,\r\n children\r\n}) => {\r\n return (\r\n <p title={title} className={cn.with(className).main({\r\n '--bold': isBold,\r\n })}>\r\n {children}\r\n </p>\r\n );\r\n};\r\n\r\nText.displayName = 'Text';\r\n\r\nexport default React.memo(Text);\r\n","import React, { FC } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Text, { TextProps } from '../Text';\r\n\r\nconst cn = setupCn('gov-note');\r\n\r\nexport type NoteProps = TextProps;\r\n\r\nconst Note: FC<NoteProps> = ({\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <Text\r\n className={cn.with(className).main()}\r\n {...props} />\r\n );\r\n};\r\n\r\nNote.displayName = 'Note';\r\n\r\nexport default React.memo(Note);\r\n","import React, { PropsWithChildren, ReactNode } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport './DataLabelComponent.scss';\r\nimport Note from \"@components/Note/Note\";\r\n\r\nconst cn = setupCn('gov-grid-tile');\r\n\r\nexport type DataLabelComponentProps = PropsWithChildren<{\r\n className?: Classes;\r\n captionTitle?: string;\r\n valueTitle?: string;\r\n caption: ReactNode;\r\n value?: ReactNode;\r\n fillGrid?: boolean;\r\n rawText?: boolean;\r\n notWrapValue?: boolean;\r\n}>;\r\n\r\nconst DataLabelComponent: React.FC<DataLabelComponentProps> = ({\r\n className,\r\n caption,\r\n captionTitle,\r\n valueTitle,\r\n fillGrid,\r\n rawText,\r\n notWrapValue,\r\n children\r\n}) => { \r\n if (children == null) {\r\n return null;\r\n }\r\n\r\n valueTitle ??= ['string', 'number'].includes(typeof children) ? children?.toString() : undefined;\r\n\r\n const content = notWrapValue ?\r\n children :\r\n <Note title={valueTitle}>{children}</Note>;\r\n\r\n return (\r\n <div\r\n title={captionTitle}\r\n className={cn.with(className).main({\r\n '--fill-grid': fillGrid,\r\n '--raw-text': rawText\r\n })}>\r\n <h3 className='gov-title--delta'>{caption}</h3>\r\n {content}\r\n </div>\r\n );\r\n};\r\n\r\nexport default React.memo(DataLabelComponent);\r\n","import { createSlice, PayloadAction, createSelector } from '@reduxjs/toolkit';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { EnumDescription } from '@services/EnumDescriptionService';\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from '.';\r\nimport { getErrorStoreActions } from './errorStore';\r\nimport { getNodeContext } from './nodeContextStore';\r\n\r\nexport const name = 'enumDescriptions';\r\n\r\n// Declare an interface of the store's state.\r\nexport type EnumDescriptionsState = {\r\n descriptions: { [enumName: string]: EnumDescription }\r\n}\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n descriptions: {}\r\n } as EnumDescriptionsState,\r\n reducers: {\r\n addDescriptions: (state, action: PayloadAction<EnumDescription[]>) => {\r\n const newDescriptions = { ...state.descriptions };\r\n action.payload?.forEach(enumDesc => newDescriptions[enumDesc.enumName] = enumDesc);\r\n return {\r\n ...state,\r\n descriptions: newDescriptions\r\n };\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getEnumDescriptionsState = (state: ApplicationState) => state[name];\r\nexport const getAllEnumDescriptions = createSelector([getEnumDescriptionsState],\r\n (enumDescriptions) => enumDescriptions?.descriptions\r\n);\r\nexport const getEnumDescription = createSelector(\r\n getAllEnumDescriptions,\r\n (_: unknown, enumName: string) => enumName,\r\n (enumDescriptions, enumName) => enumDescriptions[enumName]\r\n);\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n getEnumDescription: (enumName: string) =>\r\n (dispatch: AppDispatch, getState: ApplicationStateSelector): EnumDescription | null => {\r\n const appState = getState();\r\n const enumDescription = getEnumDescription(appState, enumName);\r\n if (enumDescription) {\r\n return enumDescription;\r\n }\r\n\r\n const nodeContext = getNodeContext(appState);\r\n const promise = nodeContext.enumDescriptionService\r\n .getEnumsDescriptions(enumName);\r\n\r\n promise.catch(e => {\r\n dispatch(getErrorStoreActions().push(e))\r\n })\r\n\r\n nodeContext.taskManager.addPromise(promise);\r\n\r\n return null;\r\n }\r\n};\r\n\r\nexport const useEnumDescriptions = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const enumDescriptions = useSelector(getAllEnumDescriptions);\r\n return {\r\n getEnumDescription: (enumName: string) => enumDescriptions[enumName] ?? dispatch(actionCreators.getEnumDescription(enumName))\r\n }\r\n}\r\n\r\nexport type UseEnumDescriptionsType = ReturnType<typeof useEnumDescriptions>;\r\n","import React, { FC, useCallback } from \"react\";\r\nimport ButtonBase, { ButtonBaseProps } from \"./ButtonBase\";\r\n\r\nexport type ButtonProps =\r\n Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, 'className'> &\r\n ButtonBaseProps &\r\n {\r\n buttonRef?: React.Ref<HTMLButtonElement>;\r\n };\r\n\r\nconst Button: FC<ButtonProps> = ({ buttonRef, ...restProps }) => {\r\n const ButtonElement: FC<any> = useCallback(({ type, ...buttonProps }) => <button ref={buttonRef} type={type ?? 'button'} {...buttonProps} />,\r\n [buttonRef]);\r\n\r\n return (\r\n <ButtonBase\r\n element={ButtonElement}\r\n {...restProps} />\r\n )\r\n}\r\n\r\nexport default React.memo(Button);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { setupCn } from '@utils/BemUtils';\r\nimport Button from '@components/Button/Button';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { createPortal } from 'react-dom';\r\nimport './Modal.scss';\r\n\r\nconst cn = setupCn('gov-modal');\r\n\r\nexport type ModalProps = {\r\n onClose: () => void;\r\n headerText: React.ReactNode;\r\n buttonText?: string;\r\n noContentOffset?: boolean;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({ onClose, headerText, buttonText, noContentOffset, children }) => {\r\n const { t } = useLocalization();\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const [isMounted, setIsMounted] = useState(false);\r\n\r\n const onMouseDown = React.useCallback((event: MouseEvent) => {\r\n if (dialogRef.current && !dialogRef.current.contains(event.target as Node)) {\r\n onClose();\r\n }\r\n }, [dialogRef, onClose]);\r\n\r\n const onKeyUp = React.useCallback((event: KeyboardEvent) => {\r\n if (event.key == 'Escape') {\r\n onClose();\r\n }\r\n }, [onClose]);\r\n\r\n useEffect(() => setIsMounted(true), []);\r\n\r\n useEffect(() => {\r\n const currentFocus = document.activeElement as HTMLElement;\r\n dialogRef.current?.focus();\r\n document.body.style.overflow = 'hidden';\r\n\r\n document.addEventListener('mousedown', onMouseDown);\r\n document.addEventListener('keyup', onKeyUp);\r\n return () => {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n document.removeEventListener('keyup', onKeyUp);\r\n document.body.style.overflow = '';\r\n currentFocus?.focus();\r\n };\r\n }, [onMouseDown, onKeyUp]);\r\n\r\n if (!isMounted) {\r\n return null;\r\n }\r\n\r\n return createPortal(\r\n <div className={cn.with('is-active is-visible')()}>\r\n <div tabIndex={0} ref={dialogRef} role='dialog' aria-modal='true' className={cn('__content')} aria-labelledby='modal-heading'>\r\n <div className={cn('__header')}>\r\n <h2 id='modal-heading'>\r\n {headerText}\r\n </h2>\r\n </div>\r\n <div className={cn.subCn('__content-inner', { '--no-offset': noContentOffset })} style={{ overflow: 'auto' }}>\r\n {children}\r\n </div>\r\n <Button onClick={onClose} isSecondary className={cn('__close')} aria-labelledby='modal-close'>\r\n <span\r\n id='modal-close'\r\n className='u-sr-only gov-button__label'>\r\n {buttonText ?? t('GUI-0')}\r\n </span>\r\n </Button>\r\n </div>\r\n <div className={cn('__backdrop')}></div>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n\r\nexport default Modal;","import { DependencyList, useEffect, useMemo, useRef, useState } from \"react\";\r\n\r\nexport const useArrayMemo = <T extends number | string | Date | bigint | null | undefined | boolean>(array: T[]): T[] => useMemo(() => array, [array.join('&;&')]);\r\nexport const useNewArrayMemo = <T extends number | string | Date | bigint | null | undefined | boolean>(...array: T[]): T[] => useMemo(() => array, [array.join('&;&')]);\r\n\r\nexport const useStaticObject = <T>(obj: T): T => useRef<T>(obj).current;\r\nexport const useNewStaticArray = <T>(...array: T[]): T[] => useRef<T[]>(array).current;\r\n\r\nconst usePrevious = (value: any, initialValue: any) => {\r\n const ref = useRef(initialValue);\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n};\r\n\r\nexport const useEffectDebugger = (effectHook: React.EffectCallback, dependencies: React.DependencyList) => {\r\n const previousDeps = usePrevious(dependencies, []);\r\n\r\n const changedDeps = dependencies.reduce((accum, dependency, index) => {\r\n if (dependency !== previousDeps[index]) {\r\n const keyName = `Dep on index ${index}`;\r\n return {\r\n ...accum,\r\n [keyName]: {\r\n before: previousDeps[index],\r\n after: dependency\r\n }\r\n };\r\n }\r\n\r\n return accum;\r\n }, {});\r\n\r\n if (Object.keys(changedDeps).length) {\r\n console.log('[use-effect-debugger] ', changedDeps);\r\n }\r\n\r\n useEffect(effectHook, dependencies);\r\n};\r\n\r\nexport const useScrollToTop = () => {\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n}\r\n\r\nexport type UseAsyncValueParams<T> = {\r\n defaultValue?: T;\r\n deps?: DependencyList;\r\n}\r\n\r\nexport const useAsyncValue = <T extends unknown>(getValue: () => Promise<T>, { defaultValue, deps }: UseAsyncValueParams<T> = {}): T | undefined => {\r\n const [value, setValue] = useState<T | undefined>(defaultValue);\r\n\r\n useEffect(() => {\r\n let cancel = false;\r\n getValue().then(result => {\r\n if (!cancel) {\r\n setValue(result);\r\n }\r\n })\r\n return () => { cancel = true; }\r\n }, deps ?? []);\r\n\r\n return value;\r\n}\r\n\r\nexport const useAsyncValueWithState = <T extends unknown>(getValue: () => Promise<T>, { defaultValue, deps }: UseAsyncValueParams<T> = {}): { value: T | undefined, isLoaded: boolean } => {\r\n const [value, setValue] = useState<{\r\n value: T | undefined;\r\n isLoaded: boolean;\r\n }>(() => ({\r\n value: defaultValue,\r\n isLoaded: false\r\n }));\r\n\r\n useEffect(() => {\r\n let cancel = false;\r\n getValue().then(result => {\r\n if (!cancel) {\r\n setValue({\r\n value: result,\r\n isLoaded: true\r\n });\r\n }\r\n })\r\n return () => { cancel = true; }\r\n }, deps ?? []);\r\n\r\n return value;\r\n}","/**\r\n* Stavy podpisu\r\n*/\r\nexport enum DigitalSignatureState {\r\n notUsed = 0,\r\n empty = 1,\r\n valid = 2,\r\n invalid = 3,\r\n encrypted = 4,\r\n unknown = 5,\r\n allowUnknown = 6,\r\n indeterminate = 7\r\n}\r\n\r\nexport interface ISignatureTemplate {\r\n className: string;\r\n identifier: string;\r\n attributes: string[];\r\n associatedCollections: Array<ISignatureTemplateAssociatedCollection>;\r\n}\r\n\r\nexport interface ISignatureTemplateAssociatedCollection extends ISignatureTemplate {\r\n condition: string;\r\n conditionParams: string;\r\n}\r\n\r\nexport enum SignatureInfoType {\r\n empty,\r\n digitalSignature,\r\n digitalMark,\r\n timeStamp,\r\n unknown\r\n}\r\n\r\nexport enum CertificateUsageType {\r\n crlSign,\r\n dataEncipherment,\r\n decipherOnly,\r\n digitalSignature,\r\n encipherOnly,\r\n keyAgreement,\r\n keyCertSign,\r\n keyEncipherment,\r\n nonRepudiation\r\n}\r\n\r\n/**\r\n * Informace o certifikátu\r\n */\r\nexport interface ICertificate {\r\n subject: IDistinguishedName;\r\n validFrom: Date;\r\n validTo: Date;\r\n issuer: IDistinguishedName;\r\n version: number;\r\n hasPrivateKey: boolean;\r\n serialNumber: string;\r\n thumbprint: string;\r\n certificateKeyUsage: Array<CertificateUsageType>;\r\n signatureAlgorithm: string;\r\n publicKeyAlgorithm: string;\r\n publicKeySize: number;\r\n hashAlgorithm: string;\r\n}\r\n\r\n/**\r\n * Asociovaná kolekce informacà zÃskaných z položky certifikátu\r\n */\r\nexport interface IDistinguishedName {\r\n [key: string]: string[]\r\n}\r\n\r\n/**\r\n * Informace o podpisu\r\n */\r\nexport interface ISignatureInfo {\r\n valid: boolean | null;\r\n validationMessage?: string;\r\n certificate: ICertificate;\r\n time: Date;\r\n signatureInsideDocument?: boolean;\r\n type: SignatureInfoType;\r\n counterSignature?: Array<ISignatureInfo>;\r\n counterSignatureCount?: number;\r\n signedData?: string;\r\n cautionTime?: string;\r\n validationDetails?: string;\r\n}","import { ReactNode } from \"react\";\r\nimport { UseLocalizationType } from \"@store/localizationStore\";\r\nimport { ICryptographicInfo, IEncryptionInfo } from \"./interface/ICryptographicInfo\";\r\nimport { CertificateUsageType, ICertificate, IDistinguishedName, ISignatureInfo, SignatureInfoType } from \"./interface/ISignatureInfo\";\r\n\r\n/**\r\n * Enum validaÄnÃch hlášek digitálnÃho podpisu\r\n */\r\nexport enum SignatureValidationMsg {\r\n SignaturePolicyNotMet = \"SignaturePolicyNotMet\",\r\n AttributeEncrypted = \"AttributeEncrypted\",\r\n AllowUnknownSignature = \"AllowUnknownSignature\",\r\n EmptySignature = \"Signature is empty/not generated\",\r\n HashEqualError = \"HashEqualError\",\r\n IncorrectIssuer = \"IncorrectIssuer\",\r\n IncorrectKeyUsage = \"IncorrectKeyUsage\",\r\n IncorrectIssuerServerCertificate = \"IncorrectIssuerServerCertificate\",\r\n InvalidReferences = \"References Invalid\",\r\n InvalidSignatureType = \"InvalidSignatureType\",\r\n IsEncrypted = \"IsEncrypted\",\r\n NeedManualVerification = \"NeedManualVerification\",\r\n OnlyDocumentPartSigned = \"OnlyDocumentPartSigned\",\r\n OutOfDate = \"OutOfDate\",\r\n OutOfDateServerCertificate = \"OutOfDateServerCertificate\",\r\n Revocated = \"Revocated\",\r\n RevocatedServerCertificate = \"RevocatedServerCertificate\",\r\n ServerCertificateError = \"ServerCertificateError\",\r\n TimeStampError = \"TimeStampError\",\r\n UnknownSignature = \"UnknownSignature\",\r\n CantVerifySignature = \"CantVerifySignature\",\r\n TryLater = \"TryLater\",\r\n Error = \"Error\",\r\n Failed = \"Failed\",\r\n Empty = \"Empty\"\r\n}\r\n\r\nexport enum SignatureValidationIntermediateMsg {\r\n CantVerifySignature,\r\n InvalidReferences,\r\n IncorrectIssuer,\r\n InvalidSignatureType,\r\n OutOfDate,\r\n Revocated,\r\n TryLater,\r\n TimeStampError,\r\n Error,\r\n SignaturePolicyNotMet\r\n}\r\n\r\nexport enum UseCase {\r\n /** Bez bližšÃho urÄenà */\r\n None,\r\n /** PÅ™i podepisovánà */\r\n Signing\r\n}\r\n\r\nexport enum SignatureCssClass {\r\n Signed = \"signed\",\r\n Unknown = \"unknown\",\r\n Warning = \"warning\"\r\n}\r\n\r\nexport const isSignatureEmpty = (signatureInfo: ISignatureInfo): boolean => {\r\n return signatureInfo && signatureInfo.type === SignatureInfoType.empty;\r\n}\r\n\r\nexport const isSigned = (signatureInfo: ISignatureInfo): boolean => {\r\n return signatureInfo && signatureInfo.type !== SignatureInfoType.empty;\r\n}\r\n\r\nexport const isEncrypted = (info: ICryptographicInfo): boolean => {\r\n if (info && info.encryptionInfo && info.encryptionInfo.encrypted)\r\n return true;\r\n else\r\n return info && info.signatureInfo && (info.signatureInfo.validationMessage === SignatureValidationMsg.IsEncrypted || info.signatureInfo.validationMessage === SignatureValidationMsg.AttributeEncrypted || info.signatureInfo.validationMessage === SignatureValidationMsg.AllowUnknownSignature);\r\n}\r\n\r\n/*\r\n * Vracà hlášku k zadanému stavu podpisu \r\n */\r\nexport const getSignatureValidationLocKey = (validationMessage: string, useCase: UseCase = UseCase.None): string | null => {\r\n switch (useCase) {\r\n case UseCase.None:\r\n switch (validationMessage) {\r\n case SignatureValidationMsg.SignaturePolicyNotMet: return \"GUI-664969\"; // Certifikát nesplňuje požadované vlastnosti\r\n case SignatureValidationMsg.AllowUnknownSignature: return \"GUI-618548\";// Neznámý formát podpisu.\r\n case SignatureValidationMsg.EmptySignature: return \"GUI-389642\"; // Digitálnà podpis je prázdný\r\n case SignatureValidationMsg.HashEqualError: return \"GUI-393912\"; // Aktuálnà stav záznamu neodpovÃdá podpisu\r\n case SignatureValidationMsg.IncorrectIssuer: return \"GUI-582035\"; // Chyba pÅ™i kontrole certifikátu nesprávný vydavatel.\r\n case SignatureValidationMsg.IncorrectKeyUsage: return \"GUI-582034\"; // Chyba pÅ™i kontrole certifikátu nesprávné použità klÃÄe.\r\n case SignatureValidationMsg.IncorrectIssuerServerCertificate: return \"GUI-614076\"; // Chyba serverového certifikátu nepodporovaný vydavatel. Kontaktujte správce systému.\r\n case SignatureValidationMsg.InvalidReferences: return \"GUI-393912\"; // Aktuálnà stav záznamu neodpovÃdá podpisu\r\n case SignatureValidationMsg.InvalidSignatureType: return \"GUI-568137\"; // Neznámý typ podpisu\r\n case SignatureValidationMsg.AttributeEncrypted:\r\n case SignatureValidationMsg.IsEncrypted:\r\n return \"GUI-418020\"; // Stav podpisu nenà možné ověřit data jsou Å¡ifrována.\r\n case SignatureValidationMsg.NeedManualVerification: return \"GUI-582043\"; // Chyba pÅ™i kontrole certifikátu certifikát nebylo možné ověřit.\r\n case SignatureValidationMsg.OnlyDocumentPartSigned: return \"GUI-568139\"; // Pouze Äást dokumentu je podepsaná\r\n case SignatureValidationMsg.OutOfDate: return \"GUI-582040\"; // Chyba pÅ™i kontrole certifikátu nesprávné datum platnosti.\r\n case SignatureValidationMsg.OutOfDateServerCertificate: return \"GUI-614074\"; // Chyba serverového certifikátu nesprávné datum platnosti. Kontaktujte správce systému.\r\n case SignatureValidationMsg.Revocated: return \"GUI-582041\"; // Chyba pÅ™i kontrole certifikátu certifikát byl odvolán.\r\n case SignatureValidationMsg.RevocatedServerCertificate: return \"GUI-614075\"; // Chyba serverového certifikátu certifikát byl odvolán. Kontaktujte správce systému.\r\n case SignatureValidationMsg.ServerCertificateError: return \"GUI-614072\"; // Chyba serverového certifikátu. Kontaktujte správce systému.\r\n case SignatureValidationMsg.TimeStampError: return \"GUI-582042\"; // Chyby pÅ™i kontrole certifikátu nesprávné Äasové razÃtko.\r\n case SignatureValidationMsg.UnknownSignature: return \"GUI-618548\"; // Neznámý formát podpisu.\r\n case SignatureValidationMsg.CantVerifySignature: return \"GUI-564883\"; // NepodaÅ™ilo se ověřit platnost souÄásti podpisu.\r\n case SignatureValidationMsg.TryLater: return \"GUI-658906\"; // AktuálnÄ› nenà možno certifikát použitý pro podpis ověřit. Ověřenà je tÅ™eba opakovat.\r\n case SignatureValidationMsg.Error: return \"GUI-564883\"; // NepodaÅ™ilo se ověřit platnost souÄásti podpisu.\r\n default:\r\n break;\r\n }\r\n break;\r\n case UseCase.Signing:\r\n switch (validationMessage) {\r\n case SignatureValidationMsg.SignaturePolicyNotMet: return \"GUI-664969\"; // Certifikát nesplňuje požadované vlastnosti\r\n case SignatureValidationMsg.IncorrectIssuer: return \"GUI-582035\"; // Chyba pÅ™i kontrole certifikátu nesprávný vydavatel.\r\n case SignatureValidationMsg.IncorrectKeyUsage: return \"GUI-582034\"; // Chyba pÅ™i kontrole certifikátu nesprávné použità klÃÄe.\r\n case SignatureValidationMsg.OutOfDate: return \"GUI-582040\"; // Chyba pÅ™i kontrole certifikátu nesprávné datum platnosti.\r\n case SignatureValidationMsg.Revocated: return \"GUI-582041\"; // Chyba pÅ™i kontrole certifikátu certifikát byl odvolán.\r\n case SignatureValidationMsg.TimeStampError: return \"GUI-582042\"; // Chyby pÅ™i kontrole certifikátu nesprávné Äasové razÃtko.\r\n case SignatureValidationMsg.CantVerifySignature: return \"GUI-564883\"; // NepodaÅ™ilo se ověřit platnost souÄásti podpisu.\r\n case SignatureValidationMsg.TryLater: return \"GUI-658906\"; // AktuálnÄ› nenà možno certifikát použitý pro podpis ověřit. Ověřenà je tÅ™eba opakovat.\r\n case SignatureValidationMsg.Error: return \"GUI-389142\"; // PÅ™i ověřenà certifikátu doÅ¡lo k neoÄekávané chybÄ›. Záznam nelze podepsat. Kontaktujte správce systému.\r\n case SignatureValidationMsg.Failed: return \"GUI-389144\"; //Zadaný certifikát nenà možné použÃt pro podpis.\r\n default:\r\n break;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport const getSignatureValidationText = (validationMessage: string | null | undefined, localization: UseLocalizationType): string | null => {\r\n const { t } = localization;\r\n const validationLocKey = validationMessage && getSignatureValidationLocKey(validationMessage);\r\n return validationLocKey ? t(validationLocKey) : validationMessage ?? null;\r\n}\r\n\r\nexport const getSignatureStateTooltip = (signatureInfo: ISignatureInfo, localization: UseLocalizationType): string | null => {\r\n if (signatureInfo == null) {\r\n return null;\r\n }\r\n\r\n const { t } = localization;\r\n\r\n if (isInCautionTime(signatureInfo)) {\r\n const { locKey, locParams } = getCautionTimeLocKey(signatureInfo.cautionTime);\r\n return t(locKey, { locParams });\r\n }\r\n\r\n // null - prázdný, neznámý, Å¡ifrovaný podpis\r\n if (signatureInfo.valid == null) {\r\n if (signatureInfo.validationMessage?.length) {\r\n return getSignatureValidationText(signatureInfo.validationMessage, localization);\r\n }\r\n return t('GUI-389642'); // Digitálnà podpis je prázdný\r\n }\r\n\r\n if (signatureInfo.valid === true) {\r\n return t('GUI-389872'); // Digitálnà podpis je platný\r\n }\r\n\r\n switch (signatureInfo.validationMessage) {\r\n case null:\r\n case '':\r\n return t('GUI-389876'); // Chyba pÅ™i kontrole digitálnÃho podpisu\r\n case SignatureValidationMsg.Failed:\r\n case SignatureValidationMsg.Error:\r\n case SignatureValidationMsg.Empty:\r\n return null;\r\n default:\r\n return getSignatureValidationText(signatureInfo.validationMessage, localization);\r\n }\r\n};\r\n\r\nexport const isInCautionTime = (signatureInfo: ISignatureInfo): signatureInfo is (ISignatureInfo & { cautionTime: string }) =>\r\n signatureInfo?.valid === true && signatureInfo.cautionTime && signatureInfo.cautionTime[0] != '-' || false;\r\n\r\n\r\nexport const getCautionWaitingTime = (cautionTime: string): string => {\r\n const [hours, minutes, seconds] = cautionTime.split(':').map(x => parseInt(x));\r\n if (hours > 0) {\r\n return `${hours}h`;\r\n }\r\n if (minutes > 0) {\r\n return `${minutes}min`;\r\n }\r\n return `${seconds}s`;\r\n}\r\n\r\nexport const getCautionTimeLocKey = (cautionTime: string): { locKey: string, locParams: string[] } => {\r\n return {\r\n locKey: 'GUI-672298',\r\n locParams: [getCautionWaitingTime(cautionTime)],\r\n };\r\n}\r\n\r\nexport const getSignatureState = (signatureInfo: ISignatureInfo, localization: UseLocalizationType): ReactNode | null => {\r\n if (signatureInfo == null) {\r\n return null;\r\n }\r\n\r\n const { ts } = localization;\r\n\r\n // null - prázdný, neznámý, Å¡ifrovaný podpis\r\n if (signatureInfo.valid == null) {\r\n return getSignatureValidationText(signatureInfo.validationMessage, localization);\r\n }\r\n\r\n if (isInCautionTime(signatureInfo)) {\r\n const { locKey, locParams } = getCautionTimeLocKey(signatureInfo.cautionTime);\r\n return ts(locKey, { locParams });\r\n }\r\n\r\n if (signatureInfo.valid === true) { // true - platný\r\n return ts(\"GUI-389872\"); // Digitálnà podpis je platný\r\n }\r\n\r\n if (signatureInfo.validationMessage) {\r\n return getSignatureValidationText(signatureInfo.validationMessage, localization);\r\n }\r\n\r\n return <>{ts(\"GUI-389876\")}{'\\n'}{signatureInfo.validationMessage}</>; //'Chyba pÅ™i kontrole digitálnÃho podpisu\r\n}\r\n\r\n/**\r\n * Ze struktury názvu vybere požadovanou Äást a pokud jich je vÃce, tak je spojà oddÄ›lovaÄem do jednoho Å™etÄ›zce\r\n * @param nameInfo Struktura s názvem\r\n * @param partKey KlÃÄ názvu hledané Äásti\r\n * @param separator OddÄ›lovaÄ použitý pro spojenà vÃce ÄástÃ\r\n * @param defaultReturnValue Výchozà hodnota vrácená pÅ™i neexistenci Äásti\r\n */\r\nexport const formatDistinguishedNamePart = (nameInfo: IDistinguishedName, partKey: string, separator: string = \", \", defaultReturnValue: any = \"\"): string | null => {\r\n const parts = nameInfo[partKey];\r\n return parts ? parts.join(separator) : defaultReturnValue;\r\n}\r\n\r\n/**\r\n * Vytvořà text pro tooltip podpisu\r\n * @param signatureInfo Informace o podpisu\r\n * @param culture Kultura použitá pro formátovánÃ\r\n */\r\nexport const createSignatureCertificateTooltipText = (signatureInfo: ISignatureInfo, localization: UseLocalizationType): string | null => {\r\n if (signatureInfo?.certificate == null) {\r\n return null;\r\n }\r\n\r\n const { t } = localization;\r\n\r\n const parts: string[] = [];\r\n\r\n parts.push(new Date(signatureInfo.time.toString()).toLocaleString());\r\n\r\n const commonName = formatDistinguishedNamePart(signatureInfo.certificate.subject, \"CN\");\r\n if (commonName) {\r\n parts.push(commonName);\r\n }\r\n\r\n const email = formatDistinguishedNamePart(signatureInfo.certificate.subject, \"E\");\r\n if (email) {\r\n parts.push(`(${email})`);\r\n }\r\n return `${t(\"GUI-536877\")}: ${parts.join(\", \")}`; // Podepsáno\r\n}\r\n\r\nexport const getCounterSignatureCountTooltip = (signatureInfo: ISignatureInfo, localization: UseLocalizationType): string | null => {\r\n if (signatureInfo == null || signatureInfo.certificate == null) {\r\n return null;\r\n }\r\n\r\n const { t } = localization;\r\n\r\n let counterSignaturesCount = signatureInfo.counterSignatureCount ?? 0;\r\n if (!counterSignaturesCount && signatureInfo.counterSignature?.length) {\r\n for (let signature of signatureInfo.counterSignature) {\r\n if (signature.type != SignatureInfoType.timeStamp)\r\n counterSignaturesCount++;\r\n }\r\n }\r\n\r\n return `${t(\"GUI-604239\")}: ${counterSignaturesCount}`; //PoÄet kontrapodpisů\r\n}\r\n\r\nexport const getEncryptionTooltipParts = (cryptoInfo: IEncryptionInfo): string[] => {\r\n if (!cryptoInfo || !cryptoInfo.encrypted) {\r\n return [];\r\n }\r\n\r\n const texts: (string | null)[] = [];\r\n if (cryptoInfo.time) {\r\n texts.push(cryptoInfo.time ? new Date(cryptoInfo.time.toString()).toLocaleDateString() + \", \" + new Date(cryptoInfo.time.toString()).toLocaleTimeString() : \"\");\r\n\r\n }\r\n if (cryptoInfo.certificate?.subject) {\r\n texts.push(formatDistinguishedNamePart(cryptoInfo.certificate.subject, \"CN\"));\r\n }\r\n return texts.filter(t => t) as string[];\r\n}\r\n\r\nexport const getSignatureUsages = (certificateInfo: ICertificate): string[] => {\r\n return (certificateInfo.certificateKeyUsage ?? []).map(usage => {\r\n switch (usage) {\r\n case CertificateUsageType.crlSign:\r\n return \"GUI-488336\"; // Podepisovánà CRL\r\n case CertificateUsageType.dataEncipherment:\r\n return \"GUI-488340\"; // Å ifrovánà dat\r\n case CertificateUsageType.decipherOnly:\r\n return \"GUI-488342\"; // DeÅ¡ifrovánÃ\r\n case CertificateUsageType.digitalSignature:\r\n return \"GUI-488346\"; // Digitálnà podpis\r\n case CertificateUsageType.encipherOnly:\r\n return \"GUI-488348\"; // Å ifrovánÃ\r\n case CertificateUsageType.keyAgreement:\r\n return \"GUI-488352\"; // Dohoda o klÃÄÃch\r\n case CertificateUsageType.keyCertSign:\r\n return \"GUI-488354\"; // Podepisovánà certifikátu\r\n case CertificateUsageType.keyEncipherment:\r\n return \"GUI-488356\"; // Å ifrovánà klÃÄe\r\n //case CertificateUsageType.none: key = \"GUI-630047\"; break; // Žádné parametry použità klÃÄe\r\n case CertificateUsageType.nonRepudiation: // Neodvolatelnost\r\n return \"GUI-488358\";\r\n default:\r\n return null;\r\n }\r\n }).filter(locKey => locKey) as string[];\r\n}\r\n\r\nexport const hasSignatureWarning = (signatureInfo: ISignatureInfo, withCounterSignatures = true): boolean => {\r\n if (isInCautionTime(signatureInfo)) {\r\n return true;\r\n }\r\n\r\n if (withCounterSignatures && signatureInfo.counterSignature) {\r\n for (const cs of signatureInfo.counterSignature)\r\n if (hasSignatureWarning(cs))\r\n return true;\r\n }\r\n if (signatureInfo.valid == null && signatureInfo.validationMessage?.length && signatureInfo.validationMessage != SignatureValidationMsg.EmptySignature) {\r\n return true;\r\n }\r\n\r\n if (signatureInfo.valid === false && signatureInfo.validationMessage) {\r\n switch (signatureInfo.validationMessage) {\r\n case SignatureValidationMsg.Failed:\r\n case SignatureValidationMsg.Error:\r\n case SignatureValidationMsg.Empty:\r\n break;\r\n default:\r\n case null:\r\n case \"\":\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const getSignatureWarningClass = (signatureInfo: ISignatureInfo, withCounterSignatures = true): SignatureCssClass | null => {\r\n if (!hasSignatureWarning(signatureInfo, withCounterSignatures))\r\n return null;\r\n\r\n return signatureInfo.type === SignatureInfoType.unknown ? SignatureCssClass.Unknown : SignatureCssClass.Warning;\r\n}\r\n\r\nexport const getCryptoInfoToolTip = (signatureInfo: ISignatureInfo, encInfo: IEncryptionInfo | null | undefined, localization: UseLocalizationType): string => {\r\n const textLines: (string | null)[] = [];\r\n const { t } = localization;\r\n if (encInfo?.encrypted) {\r\n const encTooltipParts = getEncryptionTooltipParts(encInfo);\r\n const encTooltip = `${t(\"GUI-536875\")}: ${encTooltipParts} `\r\n textLines.push(encTooltip);\r\n }\r\n if (!signatureInfo)\r\n textLines.push(t(\"GUI-389642\")); // Digitálnà podpis je prázdný\r\n else {\r\n textLines.push(createSignatureCertificateTooltipText(signatureInfo, localization));\r\n textLines.push(getSignatureStateTooltip(signatureInfo, localization));\r\n textLines.push(getCounterSignatureCountTooltip(signatureInfo, localization));\r\n }\r\n\r\n return textLines.filter(l => l).join(\"\\n\"); //vyfiltruje null nebo undefined řádky a spojà je.\r\n}\r\n\r\nexport const updateSignatureValidationMessage = (signatureInfo: ISignatureInfo) => {\r\n if (signatureInfo.type != SignatureInfoType.digitalSignature) {\r\n return;\r\n }\r\n \r\n if (signatureInfo.valid == false && !signatureInfo.validationMessage && signatureInfo.validationDetails) {\r\n signatureInfo.validationMessage = signatureInfo.validationDetails == 'HashFailure' ?\r\n SignatureValidationMsg.HashEqualError :\r\n signatureInfo.validationDetails;\r\n }\r\n}\r\n","import { formatDistinguishedNamePart, getSignatureUsages as getSignatureUsagesLocKeys } from 'crypto/SignatureUtils';\r\nimport { ICertificate } from 'MultiWebClient/MWCore/TescoSW/Global/Base/Crypto/ISignatureInfo';\r\nimport React, { FC, PropsWithChildren } from 'react'\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { arrayInjectSeparator } from '@utils/ArrayHelper';\r\nimport { setupCn, Classes } from '@utils/BemUtils';\r\nimport { DataLabelComponent } from '@components/DataLabel';\r\nimport Grid from '@components/Grid';\r\n\r\nconst cn = setupCn('certificate-detail');\r\n\r\nexport type CertificateDetailProps = PropsWithChildren<{\r\n className?: Classes;\r\n certificate: ICertificate;\r\n}>;\r\n\r\nconst CertificateDetail: FC<CertificateDetailProps> = ({\r\n className,\r\n certificate,\r\n}) => {\r\n const localization = useLocalization();\r\n\r\n if (!certificate) {\r\n return null;\r\n }\r\n\r\n const { ts } = localization;\r\n const dateFrom = new Date(certificate.validFrom.toString()).toLocaleDateString();\r\n const dateTo = new Date(certificate.validTo.toString()).toLocaleDateString();\r\n const usages = getSignatureUsagesLocKeys(certificate);\r\n\r\n return (\r\n <Grid className={cn.with(className).main()} columns='2-mobile' isPlain bottomSpace='unset'>\r\n <DataLabelComponent caption={ts('GUI-629011')}>{arrayInjectSeparator(usages.map((locKey, i) => <React.Fragment key={i}>{ts(locKey)}</React.Fragment>), () => ', ')}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629012')}>{certificate.serialNumber}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629013')}>{formatDistinguishedNamePart(certificate.issuer, 'CN')}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629014')}>{certificate.signatureAlgorithm}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629015')}>{dateFrom + ' - ' + dateTo}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629016')}>{ts(certificate.hasPrivateKey ? 'GUI-146838' : 'GUI-146840')}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629017')}>{certificate.version.toString()}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629018')}>{certificate.publicKeyAlgorithm}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629019')}>{certificate.hashAlgorithm}</DataLabelComponent>\r\n <DataLabelComponent caption={ts('GUI-629020')}>{certificate.thumbprint}</DataLabelComponent>\r\n </Grid>\r\n );\r\n};\r\n\r\nCertificateDetail.displayName = 'CertificateDetail';\r\n\r\nexport default React.memo(CertificateDetail);\r\n","import { nanoid } from \"@reduxjs/toolkit\";\r\nimport { createContext, useCallback, useContext, useState } from \"react\"\r\nimport { joinNonEmpty } from \"./StringUtils\";\r\n\r\ntype IdFactory = (props: { controlId: string; id: string; }) => string;\r\ntype IdControlFactory = (props: { parentId?: string; id: string; }) => string;\r\n\r\nexport const IdContext = createContext<string | undefined>(undefined);\r\n\r\nconst defaultIdFactory: IdFactory = ({ controlId, id }) => joinNonEmpty('__', controlId, id);\r\nconst defaultControlIdFactory: IdControlFactory = ({ parentId, id }) => joinNonEmpty('__', parentId, id);\r\n\r\ntype UseIdParams = {\r\n id?: string;\r\n controlIdFactory?: IdControlFactory\r\n childIdFactory?: IdFactory;\r\n};\r\n\r\nconst useGenerateId = ({ controlId, childIdFactory }: { controlId: string; childIdFactory?: IdFactory; }) => \r\n useCallback((childId: string) => (childIdFactory ?? defaultIdFactory)({ controlId, id: childId }),\r\n [childIdFactory, controlId]);\r\n\r\nexport const useId = ({ controlIdFactory, childIdFactory, id = 'control' }: UseIdParams) => {\r\n const parentId = useContext(IdContext);\r\n const controlId = (controlIdFactory ?? defaultControlIdFactory)({ parentId, id });\r\n\r\n return {\r\n controlId,\r\n parentId,\r\n generateId: useGenerateId({ childIdFactory, controlId }),\r\n };\r\n}\r\n\r\nexport const useNanoid = ({ childIdFactory }: { childIdFactory?: IdFactory } = {}) => {\r\n const controlId = useState(() => nanoid())[0];\r\n\r\n return {\r\n controlId,\r\n generateId: useGenerateId({ childIdFactory, controlId }),\r\n };\r\n}\r\n","import { useId } from \"@utils/UseId\";\r\nimport React, { FC, MouseEventHandler, PropsWithChildren, ReactNode, useCallback, useEffect, useLayoutEffect, useRef, useState } from \"react\"\r\nimport { setupCn, Classes } from \"utils/BemUtils\";\r\nimport './AccordionPage.scss';\r\n\r\nconst cn = setupCn('gov-accordion');\r\n\r\nexport type AccordionPageProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n isExpanded?: boolean;\r\n onToggle?: MouseEventHandler;\r\n header: ReactNode;\r\n noTopBorder?: boolean;\r\n}>;\r\n\r\ntype AccordionPageStatus = 'visible' | 'hidding' | 'hidding-2' | 'hidden';\r\n\r\ntype StatusType = {\r\n status: AccordionPageStatus;\r\n height?: string;\r\n minHeight?: string;\r\n};\r\n\r\nconst AccordionPage: FC<AccordionPageProps> = ({\r\n id,\r\n className,\r\n header,\r\n isExpanded,\r\n noTopBorder,\r\n onToggle,\r\n children\r\n}) => {\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n\r\n const { generateId } = useId({ id });\r\n\r\n const contentId = generateId('content');\r\n const headerId = generateId('header');\r\n\r\n const [status, setStatus] = useState<StatusType>({ status: isExpanded ? 'visible' : 'hidden' });\r\n\r\n if (onToggle == null) {\r\n isExpanded = status.status == 'visible';\r\n }\r\n\r\n const actualStatus: StatusType = isExpanded && status.status !== 'visible' ? { status: 'visible' } : status;\r\n\r\n const firstRender = useRef(true);\r\n useEffect(() => {\r\n if (firstRender.current) {\r\n firstRender.current = false;\r\n return;\r\n }\r\n if (!isExpanded) {\r\n setStatus({ status: 'hidding' });\r\n }\r\n }, [isExpanded]);\r\n\r\n const toggleStatus = useCallback(() => {\r\n setStatus({ status: actualStatus.status == 'visible' ? 'hidden' : 'visible' })\r\n }, [actualStatus.status]);\r\n\r\n useLayoutEffect(() => {\r\n const element = contentRef.current;\r\n if (!element) {\r\n return;\r\n }\r\n switch (actualStatus.status) {\r\n case 'hidding':\r\n const contentHeight = element.scrollHeight;\r\n requestAnimationFrame(() => {\r\n setStatus({ status: 'hidding-2', height: contentHeight + 'px' });\r\n });\r\n break;\r\n case 'hidding-2':\r\n requestAnimationFrame(() => setStatus({ status: 'hidden' }));\r\n break;\r\n case 'visible':\r\n setStatus({ status: 'visible', minHeight: element.scrollHeight + 'px' });\r\n break;\r\n\r\n }\r\n }, [actualStatus.status]);\r\n\r\n return (\r\n <>\r\n <button\r\n className={cn.with(className, {\r\n 'is-expanded': isExpanded\r\n }).subCn('__header', {\r\n '--noborder': noTopBorder,\r\n })}\r\n onClick={onToggle ?? toggleStatus}\r\n aria-expanded={isExpanded}\r\n aria-controls={contentId}>\r\n <h3 className={cn('__header-title')} id={headerId}>\r\n {header}\r\n </h3>\r\n </button>\r\n <div\r\n ref={contentRef}\r\n role='region'\r\n className={cn.subCn('__content', {\r\n '--is-visible': actualStatus.status == 'visible',\r\n '--is-hidding': actualStatus.status == 'hidding' || actualStatus.status == 'hidding-2',\r\n })}\r\n style={{\r\n height: actualStatus.height,\r\n minHeight: actualStatus.minHeight\r\n }}\r\n id={contentId}\r\n aria-labelledby={headerId}>\r\n <div className={cn('__content-inner')}>\r\n {children}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nAccordionPage.displayName = 'AccordionPage';\r\n\r\nexport default React.memo(AccordionPage);\r\n","import { IdContext, useId } from \"@utils/UseId\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"utils/BemUtils\";\r\nimport AccordionPage from \"./AccordionPage\";\r\n\r\nconst cn = setupCn('gov-accordion');\r\n\r\nexport type AccordionSize = 'small' | 'large';\r\n\r\nexport type AccordionProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n isBordered?: boolean;\r\n asSection?: boolean;\r\n asSidebar?: boolean;\r\n noInnerOffset?: boolean;\r\n noInnerYOffset?: boolean;\r\n noInnerXOffset?: boolean;\r\n withModalPadding?: boolean;\r\n size?: AccordionSize;\r\n}>;\r\n\r\ntype AccordionType = FC<AccordionProps> & {\r\n Page: typeof AccordionPage;\r\n}\r\n\r\nconst Accordion: AccordionType = React.memo(({\r\n id,\r\n className,\r\n isBordered,\r\n asSection,\r\n asSidebar,\r\n noInnerOffset,\r\n noInnerYOffset,\r\n noInnerXOffset,\r\n withModalPadding,\r\n size,\r\n children\r\n}: AccordionProps) => {\r\n const { controlId } = useId({ id: cn(`-${id}`) });\r\n\r\n const sizeModifier = `--${size ?? 'large'}`;\r\n\r\n return (\r\n <div id={controlId} className={cn.with(className).main(sizeModifier, {\r\n '--bordered': isBordered,\r\n '--as-section': asSection,\r\n '--as-sidebar': asSidebar,\r\n '--no-inner-offset': noInnerOffset,\r\n '--no-inner-y-offset': noInnerYOffset,\r\n '--no-inner-x-offset': noInnerXOffset,\r\n '--modal-padding': withModalPadding,\r\n })}>\r\n <IdContext.Provider value={controlId}>\r\n {children}\r\n </IdContext.Provider>\r\n </div>\r\n );\r\n}) as unknown as AccordionType;\r\n\r\nAccordion.Page = AccordionPage;\r\n\r\nAccordion.displayName = 'Accordion';\r\n\r\nexport default Accordion;\r\n","import React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Icon from \"@components/Icon\";\r\nimport { IconType } from \"react-icons\";\r\nimport Accordion from \"@components/Accordion\";\r\nimport './CryptoPart.scss';\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\n\r\nconst cn = setupCn('crypto-part');\r\n\r\nexport type CryptoPartProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n caption: ReactNode;\r\n captionIcon?: IconType;\r\n captionDescription?: ReactNode;\r\n toggleButtonContent?: ReactNode;\r\n}>;\r\n\r\nconst CryptoPart: FC<CryptoPartProps> = ({\r\n id,\r\n className,\r\n caption,\r\n captionDescription,\r\n captionIcon,\r\n toggleButtonContent,\r\n children\r\n}) => {\r\n return (\r\n <Accordion.Page className={cn.with(className).main()} id={id} header={\r\n <FlexBox gap='4px'>\r\n <FlexBox direction='column' align='start' gap='4px'>\r\n <FlexBox className={cn('__caption')} gap='4px'>\r\n {renderIf(captionIcon, captionIcon =>\r\n <Icon className={cn('__caption-icon')} icon={captionIcon} size='24' />\r\n )}\r\n {caption}\r\n </FlexBox>\r\n {captionDescription}\r\n </FlexBox>\r\n {toggleButtonContent}\r\n </FlexBox>\r\n }>\r\n <div className={cn('__content')}>\r\n {children}\r\n </div>\r\n </Accordion.Page>\r\n );\r\n};\r\n\r\nCryptoPart.displayName = 'CryptoPart';\r\n\r\nexport default React.memo(CryptoPart);\r\n","import CertificateDetail from \"crypto/CertificateDetail/CertificateDetail\";\r\nimport CryptoPart from \"crypto/CryptoPart/CryptoPart\";\r\nimport { IEncryptionInfo } from \"crypto/interface/ICryptographicInfo\";\r\nimport { getEncryptionTooltipParts } from \"crypto/SignatureUtils\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { MdLockOutline } from \"react-icons/md\";\r\n\r\nconst cn = setupCn('encryption-info');\r\n\r\nexport type EncryptionInfoProps = PropsWithChildren<{\r\n className?: Classes;\r\n encryptionInfo: IEncryptionInfo;\r\n}>;\r\n\r\nconst EncryptionInfo: FC<EncryptionInfoProps> = ({\r\n className,\r\n encryptionInfo\r\n}) => {\r\n const localization = useLocalization();\r\n const { ts } = localization;\r\n const subtextParts = getEncryptionTooltipParts(encryptionInfo); //datum a Äas Å¡ifry, název certifikátu\r\n return (\r\n <CryptoPart\r\n id='encrpytion-info'\r\n className={cn.with(className)()}\r\n caption={ts('GUI-536875')}\r\n captionIcon={MdLockOutline}\r\n captionDescription={<>\r\n {subtextParts.map((part, i) => <React.Fragment key={i}>{part}<br /></React.Fragment>)}\r\n {ts('GUI-536869')}: {encryptionInfo.algorithm}\r\n </>}>\r\n <CertificateDetail\r\n className={cn('__certificate-detail')}\r\n certificate={encryptionInfo.certificate} />\r\n </CryptoPart>\r\n );\r\n};\r\n\r\nEncryptionInfo.displayName = 'EncryptionInfo';\r\n\r\nexport default React.memo(EncryptionInfo);\r\n","/// <reference path=\"../declarations/TescoSW.Crypto.LightWeb.ES5.d.ts\"/>\r\nimport { ISignatureDataStream, ISignGroup } from \"MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/CryptoInterfaces\"\r\nimport { detect } from 'detect-browser';\r\nimport { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\"\r\nimport { ISignatureProviderProfile } from \"MultiWebClient/MWCore/TescoSW/Global/Base/Crypto/ISignatureProvider\"\r\nimport CryptoService from \"services/CryptoService\"\r\nimport { ISignatureProviderSettings } from \"./interface/ISignatureProvider\"\r\nimport { PromiseUtils } from \"@utils/PromiseUtils\";\r\n\r\ntype GetCryptoNativeLanguageProps = {\r\n language?: string;\r\n}\r\n\r\nconst getCryptoNativeLanguage = ({ language }: GetCryptoNativeLanguageProps) => {\r\n switch (language?.toLowerCase()) {\r\n case 'en':\r\n return 'en';\r\n case 'cz':\r\n case 'cs':\r\n default:\r\n return 'cs';\r\n }\r\n}\r\n\r\ntype CreateStringStreamProps = {\r\n referenceUri: string\r\n objectIdentity: string\r\n text: string\r\n}\r\n\r\nconst createStringStream = ({ referenceUri, objectIdentity, text }: CreateStringStreamProps): ISignatureDataStream => {\r\n return {\r\n read: clbk => clbk(new TextEncoder().encode(text), true),\r\n getName: () => Promise.resolve(objectIdentity),\r\n getMetadata: () => Promise.resolve(null),\r\n getReferenceUri: () => Promise.resolve(referenceUri)\r\n }\r\n}\r\n\r\ntype CreateSignGroupProps = {\r\n text: string\r\n referenceUri: string\r\n objectIdentity: string\r\n provider: ISignatureProviderSettings\r\n providerId: string\r\n}\r\n\r\nconst createSignGroup = ({ text, referenceUri, objectIdentity, provider, providerId }: CreateSignGroupProps): ISignGroup => {\r\n return {\r\n providerId,\r\n provider,\r\n inputStreams: [{\r\n signingStream: createStringStream({ referenceUri, objectIdentity, text }),\r\n displayStream: createStringStream({ referenceUri, objectIdentity, text })\r\n }]\r\n }\r\n}\r\n\r\nexport type SigningSessionType = typeof import('multiwebclient/mwcore/tescosw/cryptography/crypto/signingsession').SigningSession;\r\nexport type SigningExtensionCommunicatorType = typeof import('MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/SigningExtensionCommunicator').SigningExtensionCommunicator;\r\nexport type DataConverterType = typeof import('MultiWebClient/MWCore/TescoSW/Global/Base/Converters/DataConverter').DataConverter;\r\nexport type NativeAppStreamReaderType = typeof import('MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/NativeAppStreamReader').NativeAppStreamReader;\r\nexport type SigningActiveXCommunicatorType = typeof import('LightWebClient/TescoSW/Cryptography/SigningActiveXCommunicator').SigningActiveXCommunicator;\r\n\r\nexport type SigningSessionInstance = SigningSessionType['prototype'];\r\nexport type SigningExtensionCommunicatorInstance = SigningExtensionCommunicatorType['prototype'];\r\nexport type DataConverterInstance = DataConverterType['prototype'];\r\nexport type NativeAppStreamReaderInstance = NativeAppStreamReaderType['prototype'];\r\nexport type SigningActiveXCommunicatorInstance = SigningActiveXCommunicatorType['prototype'];\r\n\r\ntype CryptoComponentsType = {\r\n SigningSession: SigningSessionType;\r\n SigningExtensionCommunicator: SigningExtensionCommunicatorType;\r\n DataConverter: DataConverterType;\r\n NativeAppStreamReader: NativeAppStreamReaderType;\r\n SigningActiveXCommunicator: SigningActiveXCommunicatorType;\r\n}\r\n\r\nlet cryptoComponentsPromise: Promise<CryptoComponentsType>;\r\nconst getCryptoComponents = () => cryptoComponentsPromise ??= new Promise((resolve, reject) => {\r\n try {\r\n requirejs([\r\n 'multiwebclient/mwcore/tescosw/cryptography/crypto/signingsession',\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/SigningExtensionCommunicator',\r\n 'MultiWebClient/MWCore/TescoSW/Global/Base/Converters/DataConverter',\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/NativeAppStreamReader',\r\n 'LightWebClient/TescoSW/Cryptography/SigningActiveXCommunicator'\r\n ], (\r\n { SigningSession }: { SigningSession: CryptoComponentsType['SigningSession'] },\r\n { SigningExtensionCommunicator }: { SigningExtensionCommunicator: CryptoComponentsType['SigningExtensionCommunicator'] },\r\n { DataConverter }: { DataConverter: CryptoComponentsType['DataConverter'] },\r\n { NativeAppStreamReader }: { NativeAppStreamReader: CryptoComponentsType['NativeAppStreamReader'] },\r\n { SigningActiveXCommunicator }: { SigningActiveXCommunicator: CryptoComponentsType['SigningActiveXCommunicator'] }\r\n ) => resolve({\r\n SigningSession,\r\n SigningExtensionCommunicator,\r\n DataConverter,\r\n NativeAppStreamReader,\r\n SigningActiveXCommunicator\r\n }), reject);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n});\r\n\r\ntype CryptoErrorsModuleType = typeof import('MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/CryptoExceptions');\r\nlet cryptoErrorsromise: Promise<CryptoErrorsModuleType>;\r\nconst getCryptoErrors = () => cryptoErrorsromise ??= new Promise((resolve, reject) => {\r\n try {\r\n requirejs([\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/CryptoExceptions'\r\n ], (\r\n CryptoExceptions: CryptoErrorsModuleType,\r\n ) => resolve(CryptoExceptions), reject);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n});\r\n\r\nconst isIE = () => detect()?.name == 'ie';\r\n\r\nlet loadIEPolyfillsPromise: Promise<void>;\r\nexport const loadIEPolyfills = () => loadIEPolyfillsPromise ?? new Promise<void>((resolve, reject) => {\r\n try {\r\n requirejs([\r\n 'static/js/polyfills/polyfill-textencoding',\r\n 'static/js/polyfills/base64',\r\n 'static/js/polyfills/customEvent',\r\n ], () => resolve(), reject);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n})\r\n\r\nconst loadPolyfillForIE = async () => {\r\n if (!isIE()) {\r\n return;\r\n }\r\n await loadIEPolyfills();\r\n if (document.querySelector(\"meta[name='MultiWebCryptoExtension']\") == null) {\r\n const meta = document.createElement('meta');\r\n meta.name = 'MultiWebCryptoExtension';\r\n document.head.appendChild(meta);\r\n }\r\n}\r\n\r\ntype CreateSigningSessionProps = {\r\n language?: string\r\n}\r\n\r\nexport const createSigningSession = async ({ language }: CreateSigningSessionProps) => {\r\n console.debug('[SigningSession] create');\r\n const [{\r\n SigningExtensionCommunicator,\r\n SigningSession,\r\n SigningActiveXCommunicator\r\n }] = await Promise.all([getCryptoComponents(), loadPolyfillForIE()]);\r\n const communicator = isIE() ? new SigningActiveXCommunicator() : new SigningExtensionCommunicator();\r\n const signingSession = new SigningSession(communicator);\r\n await signingSession.open(getCryptoNativeLanguage({ language }));\r\n console.debug('[SigningSession] created');\r\n return signingSession;\r\n}\r\n\r\ntype CryptoNativeVersionInfo = {\r\n extension: string;\r\n nativeComponent: string;\r\n}\r\n\r\nexport type CryptoComponentDownloadUrl = {\r\n downloadUrl?: (lang: string) => string;\r\n linkTarget?: string;\r\n}\r\n\r\nexport type CryptoComponentInfo = CryptoComponentDownloadUrl & {\r\n version?: string;\r\n requiredVersion?: string;\r\n result: TestResult;\r\n}\r\n\r\nexport type CryptoNativeCheckResult = {\r\n result: TestResult;\r\n messageLocKey?: string;\r\n nativeApp: CryptoComponentInfo;\r\n extension: CryptoComponentInfo;\r\n}\r\n\r\nconst getOKResult = (versions?: CryptoNativeVersionInfo): CryptoNativeCheckResult => ({\r\n result: TestResult.ok,\r\n nativeApp: {\r\n result: TestResult.ok,\r\n version: versions?.nativeComponent\r\n },\r\n extension: {\r\n result: TestResult.ok,\r\n version: versions?.extension\r\n }\r\n});\r\n\r\nconst defaultCryproNativeUpdateUrl = 'https://download.tescosw.cz/crypto/?lang={lang}';\r\nconst isDefaultCryptoNativeUrl = (url?: string): boolean => url?.startsWith('https://download.tescosw.cz/crypto/?lang=') ?? false;\r\n\r\ntype GetCryptoDownloadUrlProps = {\r\n downloadUrl?: string;\r\n}\r\n\r\nconst getCryptoDownloadUrl = ({ downloadUrl }: GetCryptoDownloadUrlProps): CryptoComponentDownloadUrl => {\r\n if (downloadUrl == null || isDefaultCryptoNativeUrl(downloadUrl)) {\r\n return {\r\n downloadUrl: language => defaultCryproNativeUpdateUrl.replace('{lang}', getCryptoNativeLanguage({ language })),\r\n linkTarget: '_blank'\r\n };\r\n }\r\n return {\r\n downloadUrl: () => downloadUrl\r\n }\r\n}\r\n\r\ntype GetCryptoErrorInfoProps = {\r\n error: Error\r\n versions?: CryptoNativeVersionInfo\r\n}\r\n\r\nexport const getCryptoErrorInfo = async ({ error, versions }: GetCryptoErrorInfoProps): Promise<CryptoNativeCheckResult> => {\r\n const {\r\n CryptoExtensionUnavailableException,\r\n EInsufficientVersionException,\r\n //NativeAppBulkException,\r\n //NativeAppException,\r\n NativeAppExitedException,\r\n //NativeAppSigningException,\r\n NativeAppUnavailableException,\r\n ProtectedModeException\r\n } = await getCryptoErrors();\r\n const result: CryptoNativeCheckResult = {\r\n result: TestResult.failed,\r\n nativeApp: {\r\n result: TestResult.notEvaluated\r\n },\r\n extension: {\r\n result: TestResult.notEvaluated\r\n }\r\n }\r\n\r\n if (error instanceof CryptoExtensionUnavailableException) {\r\n return {\r\n ...result,\r\n extension: {\r\n result: TestResult.failed,\r\n ...getCryptoDownloadUrl({ downloadUrl: error.downloadURL })\r\n },\r\n nativeApp: {\r\n result: TestResult.nonCheckable\r\n }\r\n }\r\n }\r\n\r\n if (error instanceof NativeAppUnavailableException) {\r\n return {\r\n ...result,\r\n extension: {\r\n result: TestResult.ok\r\n },\r\n nativeApp: {\r\n result: TestResult.failed,\r\n ...getCryptoDownloadUrl({ downloadUrl: error.downloadURL })\r\n }\r\n }\r\n }\r\n\r\n if (error instanceof ProtectedModeException) {\r\n return {\r\n ...result,\r\n messageLocKey: 'NEN-746900'\r\n }\r\n }\r\n\r\n if (error instanceof EInsufficientVersionException) {\r\n return {\r\n ...result,\r\n nativeApp: {\r\n result: error.nativeAppVersionSufficient ? TestResult.failed : TestResult.ok,\r\n version: error.installedNativeAppVersion ?? versions?.nativeComponent,\r\n requiredVersion: error.requiredNativeAppVersion\r\n },\r\n extension: {\r\n result: error.extensionVersionSufficient ? TestResult.failed : TestResult.ok,\r\n version: error.installedExtensionVersion ?? versions?.extension,\r\n requiredVersion: error.requiredExtensionVersion\r\n },\r\n messageLocKey:\r\n error.nativeAppVersionSufficient && error.extensionVersionSufficient ? 'NEN-746903' :\r\n error.nativeAppVersionSufficient ? 'NEN-746901' :\r\n error.extensionVersionSufficient ? 'NEN-746902' : undefined\r\n }\r\n }\r\n\r\n if (error instanceof NativeAppExitedException) {\r\n return getOKResult();\r\n }\r\n\r\n console.error(error);\r\n return result;\r\n}\r\n\r\n\r\nexport type CryptoNativeCheckProps = {\r\n language?: string;\r\n}\r\n\r\nconst isCryptoExtensionAttached = () => Boolean(document.querySelector(\"meta[name='MultiWebCryptoExtension']\"));\r\n\r\nconst waitForCryptoExtensionInit = async (): Promise<boolean> => {\r\n // poÄká 6s na inicializaci CryptoWebExtension\r\n for (let attemps = 30; attemps; attemps--) {\r\n if (isCryptoExtensionAttached()) {\r\n return true;\r\n }\r\n\r\n await PromiseUtils.delay(200);\r\n }\r\n\r\n return isCryptoExtensionAttached();\r\n}\r\n\r\nexport const cryptoNativeCheck = async ({ language }: CryptoNativeCheckProps): Promise<CryptoNativeCheckResult> => {\r\n let signingSession: SigningSessionInstance | null = null;\r\n let versions: CryptoNativeVersionInfo | undefined;\r\n try {\r\n await waitForCryptoExtensionInit();\r\n signingSession = await createSigningSession({ language });\r\n versions = await signingSession['_getVersionInfo']().catch(() => undefined);\r\n await signingSession['_checkRequiredVersions'](); // kontrola verzi crypto extension a app\r\n return getOKResult(versions);\r\n } catch (e) {\r\n return getCryptoErrorInfo({ error: e, versions });\r\n }\r\n finally {\r\n signingSession?.dispose();\r\n }\r\n};\r\n\r\ntype SignStringProps = {\r\n signatureData: string\r\n referenceUri: string\r\n objectIdentity: string\r\n profile: ISignatureProviderProfile\r\n language?: string\r\n}\r\n\r\nexport const signString = async ({ signatureData, referenceUri, objectIdentity, profile, language }: SignStringProps) => {\r\n if (profile?.settings == null) {\r\n return null;\r\n }\r\n const {\r\n DataConverter,\r\n NativeAppStreamReader\r\n } = await getCryptoComponents();\r\n let signingSession: SigningSessionInstance | null = null;\r\n try {\r\n signingSession = await createSigningSession({ language });\r\n console.log('[SigningSession] create signautre');\r\n const result = await signingSession.createTextSignatures(createSignGroup({\r\n text: signatureData,\r\n referenceUri,\r\n objectIdentity,\r\n provider: profile.settings,\r\n providerId: profile.id\r\n }));\r\n console.log('[SigningSession] signature created');\r\n const signedInfo = result[0];\r\n console.log(result);\r\n const signatures = await Promise.all(signedInfo.infos.map(async si => si.stream && DataConverter.bufferToBase64(await new NativeAppStreamReader(si.stream).read())));\r\n return signatures[0];\r\n } finally {\r\n console.log('[SigningSession] disposed');\r\n signingSession?.dispose();\r\n }\r\n}\r\n\r\nexport type SignObjectParams = {\r\n instanceID: string;\r\n cryptoService: CryptoService;\r\n language?: string;\r\n}\r\n\r\nexport const signObject = async ({ instanceID, cryptoService, language }: SignObjectParams): Promise<boolean> => {\r\n if (!instanceID) {\r\n return false;\r\n }\r\n const profile = await cryptoService.getDigitalSignatureSettings({ instanceID });\r\n if (!profile?.settings) {\r\n return false;\r\n }\r\n const dataForSign = await cryptoService.getDataForSign({ instanceID });\r\n if (!dataForSign) {\r\n return false;\r\n }\r\n const signature = await signString({ signatureData: dataForSign.signatureData, referenceUri: dataForSign.referenceUri, objectIdentity: dataForSign.objectIdentity, profile, language });\r\n if (!signature) {\r\n return false;\r\n }\r\n return await cryptoService.sendSignature([{\r\n profileId: profile.id,\r\n providerType: profile.settings.providerType,\r\n providerVersion: profile.settings.providerVersion,\r\n signatures: [{\r\n instanceID,\r\n signature,\r\n signedData: dataForSign.signatureData\r\n }]\r\n }]);\r\n}\r\n","import { isEmpty, notEmpty } from \"./ArrayHelper\";\r\n\r\nexport const isDate = (date: Date | null) => {\r\n const valueOf = date?.valueOf?.();\r\n return valueOf != null && !isNaN(valueOf);\r\n}\r\n\r\nexport const dateISOFormat = (date: Date | null) => {\r\n if (date == null || !isDate(date)) {\r\n return null;\r\n }\r\n const year = ('0000' + date.getFullYear()).slice(-4);\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n const day = ('0' + date.getDate()).slice(-2);\r\n return `${year}-${month}-${day}`\r\n}\r\n\r\nconst zFill = (num: number | string) => {\r\n let strNum = (num ?? '').toString();\r\n while (strNum.length < 2) {\r\n strNum = `0${strNum}`;\r\n }\r\n return strNum;\r\n}\r\n\r\nexport const inMs = {\r\n day: 1000 * 60 * 60 * 24,\r\n hour: 1000 * 60 * 60,\r\n minute: 1000 * 60,\r\n second: 1000,\r\n};\r\n\r\nexport const timeSpanToString = (timeSpanInMs: number) => {\r\n const sign = timeSpanInMs < 0 ? '-' : '+';\r\n timeSpanInMs = Math.abs(timeSpanInMs);\r\n const hours = Math.floor(timeSpanInMs / inMs.hour);\r\n timeSpanInMs = timeSpanInMs % inMs.hour;\r\n const minutes = Math.floor(timeSpanInMs / inMs.minute);\r\n timeSpanInMs = timeSpanInMs % inMs.minute;\r\n const seconds = Math.floor(timeSpanInMs / inMs.second);\r\n return `${sign}${zFill(hours)}:${zFill(minutes)}:${zFill(seconds)}`;\r\n}\r\n\r\nexport const parseDateTime = (value: string) => {\r\n const [date, time] = (value || '').split(/T|\\s+/);\r\n return {\r\n date: date ?? '',\r\n time: time ?? ''\r\n };\r\n}\r\n\r\nexport const parseFromtoDateTime = (value: string) => {\r\n let [from, to] = value.split(',');\r\n const {\r\n date: fromDate,\r\n time: fromTime\r\n } = parseDateTime(from);\r\n const {\r\n date: toDate,\r\n time: toTime\r\n } = parseDateTime(to);\r\n return { fromDate, fromTime, toDate, toTime }\r\n}\r\n\r\nexport const updatetDateTimePart = ({ dateTimeString, date, time }: { dateTimeString: string; date?: string; time?: string; }) => {\r\n const result = parseDateTime(dateTimeString);\r\n if (date !== undefined) {\r\n result.date = date;\r\n }\r\n if (time !== undefined) {\r\n result.time = time;\r\n }\r\n if (result.time) {\r\n result.time = 'T' + result.time;\r\n }\r\n return [result.date, result.time].filter(notEmpty).join('');\r\n}\r\n\r\nexport type UpdateFromToDateTimePartParams = {\r\n fromToString: string;\r\n fromDate?: string;\r\n fromTime?: string;\r\n toDate?: string;\r\n toTime?: string;\r\n};\r\n\r\nexport const updateFromToDateTimePart = ({ fromToString, fromDate, fromTime, toDate, toTime }: UpdateFromToDateTimePartParams) => {\r\n let [from, to] = fromToString.split(',');\r\n if (fromDate !== undefined || fromTime !== undefined) {\r\n from = updatetDateTimePart({ dateTimeString: from, date: fromDate, time: fromTime });\r\n }\r\n if (toDate !== undefined || toTime !== undefined) {\r\n to = updatetDateTimePart({ dateTimeString: to, date: toDate, time: toTime });\r\n }\r\n return [from, to].join(',');\r\n}\r\n\r\nexport const getCorrectTime = (value: string) => {\r\n if (isEmpty(value)) {\r\n return '';\r\n }\r\n value = value.replace(/\\s/g, '');\r\n if (/^([0-1]?[0-9]|2[0-4]):([0-5]?[0-9])(:[0-5]?[0-9])?$/.test(value)) {\r\n return value.split(':').map(part => '0'.repeat(2 - part.length) + part).join(':');\r\n }\r\n return '';\r\n}\r\n","import { signObject } from \"crypto/CryptoUtils\";\r\nimport { ICryptographicInfo } from \"crypto/interface/ICryptographicInfo\";\r\nimport { detect } from \"detect-browser\";\r\nimport CryptoService from \"services/CryptoService\";\r\nimport InstanceService from \"services/InstanceService\";\r\nimport { inMs, timeSpanToString } from \"@utils/DateUtils\";\r\n\r\nexport const browserNames: { [name: string]: string | undefined } = {\r\n edge: 'Edge Legacy',\r\n 'edge-ios': 'Edge iOS',\r\n samsung: 'Samsung Internet Browser',\r\n silk: 'Amazon Silk',\r\n miui: 'MIUI Browser',\r\n beaker: 'Beaker Browser',\r\n 'edge-chromium': 'Edge Chromium',\r\n 'chromium-webview': 'Chromium WebView',\r\n chrome: 'Chrome',\r\n phantomjs: 'PhantomJS',\r\n firefox: 'Firefox',\r\n 'opera-mini': 'Opera Mini',\r\n opera: 'Opera',\r\n ie: 'Internet Explorer',\r\n android: 'Android',\r\n safari: 'Safari'\r\n}\r\n\r\nexport const operationSystems: { [name: string]: string | undefined } = {\r\n 'Windows 10': 'Windows 10 / Windows 11'\r\n}\r\n\r\nexport const getBrowserAndOs = () => {\r\n const browser = detect();\r\n const browserName = (browser?.name && browserNames[browser.name]) ?? browser?.name;\r\n const browserOs = (browser?.os && operationSystems[browser.os]) ?? browser?.os;\r\n return {\r\n browser,\r\n browserName,\r\n browserOs\r\n }\r\n}\r\n\r\nexport const detectBrowserType = () => {\r\n const anyWindow = window as any;\r\n const ua = navigator.userAgent;\r\n return {\r\n isAndroid: /Android/.test(ua),\r\n isCordova: !!anyWindow.cordova,\r\n isEdgeLegacy: /Edge/.test(ua),\r\n isFirefox: /Firefox/.test(ua),\r\n isChrome: /Google Inc/.test(navigator.vendor),\r\n chromeVersion: ua.match(/Chrome\\/([\\d\\.]+)/)?.[1],\r\n isChromeIOS: /CriOS/.test(ua),\r\n isChromiumBased: !!anyWindow.chrome && !/Edge/.test(ua),\r\n isIE: /Trident/.test(ua),\r\n isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform),\r\n isOpera: /OPR/.test(ua),\r\n isSafari: /Safari/.test(ua) && !/Chrome/.test(ua),\r\n }\r\n}\r\n\r\ntype DetectBrowserTypeResult = ReturnType<typeof detectBrowserType>;\r\n\r\nconst checkBrowserPrivate = (browserType: DetectBrowserTypeResult, isVersion: (actualVersion: string) => boolean): boolean => {\r\n if (browserType.isIE) {\r\n return false;\r\n }\r\n if (browserType.isChromiumBased) {\r\n return compareVersions('45', browserType.chromeVersion);\r\n }\r\n if (browserType.isEdgeLegacy) {\r\n return isVersion('17');\r\n }\r\n if (browserType.isFirefox) {\r\n return isVersion('44');\r\n }\r\n if (browserType.isSafari) {\r\n return isVersion('11.1');\r\n }\r\n return false;\r\n}\r\n\r\nconst checkBrowserPublic = (browserType: DetectBrowserTypeResult, isVersion: (actualVersion: string) => boolean): boolean => {\r\n if (browserType.isIE) {\r\n return isVersion('11');\r\n }\r\n if (browserType.isChromiumBased) {\r\n return compareVersions('45', browserType.chromeVersion);\r\n }\r\n if (browserType.isEdgeLegacy) {\r\n return isVersion('17');\r\n }\r\n if (browserType.isFirefox) {\r\n return isVersion('44');\r\n }\r\n if (browserType.isSafari) {\r\n return isVersion('9');\r\n }\r\n if (browserType.isAndroid) {\r\n return true;\r\n }\r\n if (browserType.isIOS) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport const checkBrowser = () => {\r\n const browserInfo = detect();\r\n const isVersion = (required: string) => compareVersions(required, browserInfo?.version ?? '0');\r\n const browserType = detectBrowserType();\r\n return {\r\n privateResult: checkBrowserPrivate(browserType, isVersion) ? TestResult.ok : TestResult.failed,\r\n publicResult: checkBrowserPublic(browserType, isVersion) ? TestResult.ok : TestResult.failed\r\n }\r\n}\r\n\r\nexport const checkCookies = () => navigator.cookieEnabled ? TestResult.ok : TestResult.failed;\r\n\r\nconst compareVersions = (requiredVersion?: string, actualVersion?: string): boolean => {\r\n const requiredVersions = (requiredVersion ?? '').split('.');\r\n const actualVersions = (actualVersion ?? '').split('.');\r\n for (let i = 0, len = requiredVersions.length; i < len; i++) {\r\n const actualVersion = Number(actualVersions[i] || 0);\r\n const requiredVersion = Number(requiredVersions[i] || 0);\r\n if (actualVersion > requiredVersion) {\r\n return true;\r\n }\r\n if (actualVersion < requiredVersion) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport type ServiceWorkerResult = {\r\n result: TestResult;\r\n messageLocKey?: string;\r\n}\r\n\r\nexport const checkServiceWorker = (): ServiceWorkerResult => {\r\n const result: ServiceWorkerResult = {\r\n result: (navigator && ('serviceWorker' in navigator)) ? TestResult.ok : TestResult.failed\r\n };\r\n const browser = detect();\r\n if (result.result != TestResult.ok && browser?.name == 'firefox' && compareVersions('44', browser.version)) {\r\n result.messageLocKey = 'NEN-747096';\r\n }\r\n return result;\r\n}\r\n\r\nexport type MultiwebTestResult = TestResult;\r\n\r\nexport const checkMultiwebTests = () => new Promise<MultiwebTestResult>((resolve) => {\r\n if (!document.addEventListener || !window.Promise || !checkCookies()) {\r\n resolve(TestResult.failed);\r\n return;\r\n }\r\n requirejs(['static/js/TescoSW.Compatibility.js'], () => {\r\n let result = TestResult.ok;\r\n if (self) {\r\n if (typeof self.WebAssembly !== \"object\")\r\n result = TestResult.failed; // Chrome 57, Edge 16, Safari 11, FF 52, Opera 44 \r\n //if (Intl.Collator('en').resolvedOptions().caseFirst === void 0) return false; // FF 55 - Vlastnost nize neni potreba, jen potrebujeme vyspecifikovat verzi FF55, ktera ma chybu v indexedDB volane pres webWorker\r\n else if (typeof self.AbortController !== \"function\" && !(window as any).TescoSW.Compatibility.isBlink())\r\n result = TestResult.failed; // Edge 16, Safari 11.1, FF 57\r\n else if (!(window as any).TescoSW.Compatibility?.checkUICompatibility()) {\r\n result = TestResult.failed; // Edge 16, Safari 11.1, FF 57\r\n }\r\n } else {\r\n result = TestResult.failed;\r\n }\r\n resolve(result);\r\n }, () => resolve(TestResult.nonCheckable));\r\n});\r\n\r\nexport enum TestResult {\r\n ok = 'ok',\r\n notEvaluated = 'notEvaluated',\r\n nonCheckable = 'nonCheckable',\r\n failed = 'failed',\r\n partially = 'partially',\r\n evaluating = 'evaluating'\r\n}\r\n\r\ntype TestResultValues<T> = {\r\n [key in TestResult]?: T;\r\n} & {\r\n nullValue?: T;\r\n defaultValue: T;\r\n}\r\n\r\nexport const testResultSwitch = <T>(result: TestResult | null | undefined, values: TestResultValues<T>): T => {\r\n let value: T | undefined = values.nullValue;\r\n if (result != null) {\r\n value = values[result];\r\n }\r\n return value === undefined ? values.defaultValue : value;\r\n}\r\n\r\nexport const getBrowserInfo = () => {\r\n var navigatorName = navigator.appName, ua = navigator.userAgent, tem;\r\n let match = ua.match(/(opera|chrome|safari|firefox|msie|trident|edge)\\/?\\s*(\\.?\\d+(\\.\\d+)*)/i);\r\n if (match && (tem = ua.match(/version\\/([\\.\\d]+)/i)) != null) match[2] = tem[1];\r\n match = match ? [match[1], match[2]] : [navigatorName, navigator.appVersion, '-?'];\r\n return match;\r\n}\r\n\r\nexport const getBrowser = () => {\r\n var M = getBrowserInfo();\r\n return M[0];\r\n}\r\n\r\nexport const getBrowserVersion = () => {\r\n var M = getBrowserInfo();\r\n return M[1];\r\n}\r\n\r\nexport const getOSNT = () => {\r\n var myNT = window.navigator.userAgent.match(/NT ([d+(\\.\\d{1,2})]*);/);\r\n if (myNT != null)\r\n return myNT[1];\r\n\r\n return false;\r\n}\r\n\r\nexport const getIEVersion = () => {\r\n var ua = window.navigator.userAgent;\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n}\r\n\r\nexport const popupWindowCheck = () => {\r\n const features = 'resizable=no,scrollbars=no,height=1,width=1';\r\n const popupWondow = window.open('/', \"_blank\", features);\r\n if (!popupWondow || popupWondow == null || typeof (popupWondow) == 'undefined')\r\n return TestResult.failed;\r\n popupWondow.close();\r\n return TestResult.ok;\r\n}\r\n\r\nexport const getAverageValueFromArray = (myArray: []) => {\r\n var avrg = 0;\r\n for (var i = 0, ii = myArray.length; i < ii; i++)\r\n avrg += myArray[i];\r\n\r\n avrg = avrg / myArray.length;\r\n return avrg;\r\n}\r\n\r\nconst isResolutionSupported = (supportedWidth: number, supportedHeight: number) => {\r\n return (screen.width >= supportedWidth && screen.height >= supportedHeight);\r\n}\r\n\r\nconst resolutionCheckBase = (supportedWidth: number, supportedHeight: number) => {\r\n const isSupported = isResolutionSupported(supportedWidth, supportedHeight);\r\n return {\r\n result: isSupported ? TestResult.ok : TestResult.failed,\r\n resolutionText: `${supportedWidth} x ${supportedHeight}`\r\n };\r\n}\r\n\r\nexport type ResolutionTestResult = {\r\n privateResult: TestResult;\r\n resolutionPrivateText: string;\r\n publicResult: TestResult;\r\n resolutionPublicText: string;\r\n}\r\n\r\nexport const getActualResolution = () => `${screen.width} x ${screen.height}`;\r\n\r\nexport const checkMinimalResulution = (): ResolutionTestResult => {\r\n const publicTest = resolutionCheckBase(360, 360);\r\n const privateTest = resolutionCheckBase(1280, 720);\r\n return {\r\n privateResult: privateTest.result,\r\n publicResult: publicTest.result,\r\n resolutionPrivateText: privateTest.resolutionText,\r\n resolutionPublicText: publicTest.resolutionText\r\n }\r\n}\r\n\r\nexport const checkRecommendedResulution = (): ResolutionTestResult => {\r\n const publicTest = resolutionCheckBase(1920, 1080);\r\n const privateTest = resolutionCheckBase(1920, 1080);\r\n return {\r\n privateResult: privateTest.result,\r\n publicResult: publicTest.result,\r\n resolutionPrivateText: privateTest.resolutionText,\r\n resolutionPublicText: publicTest.resolutionText\r\n }\r\n}\r\n\r\nexport type DateTimeDifferenceResult = {\r\n result: TestResult;\r\n timeSpan: string;\r\n}\r\n\r\nexport const getDateTimeDifferenceResult = (sysDateTimeString: string): DateTimeDifferenceResult => {\r\n const clientDateTime = new Date();\r\n const sysDateTime = new Date(sysDateTimeString);\r\n const diffInMs = clientDateTime.getTime() - sysDateTime.getTime();\r\n return {\r\n result: diffInMs > (inMs.minute * 5) ? TestResult.partially : TestResult.ok,\r\n timeSpan: timeSpanToString(diffInMs)\r\n }\r\n}\r\n\r\nexport type IndexedDBTestResult = {\r\n result: TestResult;\r\n messageLocKey?: string;\r\n}\r\n\r\nconst createIndexedDB = (dbName: string, onUpgradeNeeded: (db: IDBDatabase) => void) => new Promise<IDBDatabase>((resolve, reject) => {\r\n const request = indexedDB.open(dbName);\r\n request.onupgradeneeded = () => onUpgradeNeeded(request.result);\r\n request.onsuccess = () => resolve(request.result);\r\n request.onerror = error => reject(error);\r\n});\r\n\r\nconst deleteIndexedDB = (dbName: string) => new Promise<void>((resolve, reject) => {\r\n const request = indexedDB.deleteDatabase(dbName);\r\n request.onsuccess = () => resolve();\r\n request.onerror = error => reject(error);\r\n});\r\n\r\nconst setIDBValue = (objectStore: IDBObjectStore, key: string, value: string) => new Promise<void>((resolve, reject) => {\r\n const request = objectStore.put(value, key);\r\n request.onsuccess = () => resolve();\r\n request.onerror = error => reject(error);\r\n});\r\n\r\nconst getIDBValue = (objectStore: IDBObjectStore, key: string) => new Promise<string>((resolve, reject) => {\r\n const request = objectStore.get(key);\r\n request.onsuccess = () => resolve(request.result);\r\n request.onerror = error => reject(error);\r\n});\r\n\r\nexport const indexedDBTest = async (): Promise<IndexedDBTestResult> => {\r\n if (!indexedDB) {\r\n return {\r\n result: TestResult.failed\r\n };\r\n }\r\n\r\n const dbName = 'db-test';\r\n const objectStoreName = 'test';\r\n const testKey = 'testKey';\r\n const testValue = 'testValue';\r\n\r\n try {\r\n const db = await createIndexedDB(dbName, (db) => {\r\n const objStore = db.createObjectStore(objectStoreName);\r\n objStore.add(testValue, 1);\r\n });\r\n\r\n const transaction = db.transaction([objectStoreName], 'readwrite');\r\n const objectStore = transaction.objectStore(objectStoreName);\r\n await setIDBValue(objectStore, testKey, testValue);\r\n\r\n const valueInDb = await getIDBValue(objectStore, testKey);\r\n transaction.abort();\r\n return {\r\n result: valueInDb == testValue ? TestResult.ok : TestResult.failed\r\n };\r\n } catch (error) {\r\n console.error(error);\r\n let messageLocKey = undefined;\r\n const browser = detect();\r\n if (browser?.name == 'firefox' && compareVersions('44', browser.version)) {\r\n messageLocKey = 'NEN-747096';\r\n }\r\n return {\r\n result: TestResult.failed,\r\n messageLocKey\r\n };\r\n } finally {\r\n deleteIndexedDB(dbName);\r\n }\r\n}\r\n\r\nexport type SignTestResult = {\r\n signatureInfo?: ICryptographicInfo;\r\n result: TestResult;\r\n}\r\n\r\ntype SignTestProps = {\r\n instanceService: InstanceService;\r\n cryptoService: CryptoService;\r\n language?: string;\r\n};\r\n\r\nexport const signTest = async ({ instanceService, cryptoService, language }: SignTestProps): Promise<SignTestResult> => {\r\n try {\r\n const textForSign = 'Testovacà data';\r\n const instanceID = await instanceService.createObject({\r\n objectName: 'Test_podpis_LW',\r\n data: {\r\n 'DummyData': textForSign\r\n }\r\n });\r\n if (!instanceID) {\r\n return { result: TestResult.nonCheckable };\r\n }\r\n const signed = await signObject({ instanceID, cryptoService, language });\r\n if (!signed) {\r\n return { result: TestResult.failed };\r\n }\r\n const signatureInfo = await cryptoService.getCryptographicInfo({ instanceID });\r\n return {\r\n signatureInfo,\r\n result: TestResult.ok\r\n };\r\n } catch {\r\n return { result: TestResult.nonCheckable };\r\n }\r\n}\r\n","import { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nimport './_badges.scss';\r\n\r\nconst cn = setupCn('gov-badge');\r\n\r\nexport const booleanTestResult = (value: boolean | undefined | null, nullResult: TestResult = TestResult.notEvaluated, okResult: TestResult = TestResult.ok, failedResult: TestResult = TestResult.failed) => {\r\n return value == null ? nullResult :\r\n value ? okResult : failedResult;\r\n}\r\n\r\nexport type ResultBadgeProps = PropsWithChildren<{\r\n result: TestResult;\r\n spaceLeft?: boolean;\r\n onClick?: React.MouseEventHandler;\r\n okText?: ReactNode;\r\n failedText?: ReactNode;\r\n evaluatingText?: ReactNode;\r\n notEvaluatedText?: ReactNode;\r\n partiallyText?: ReactNode;\r\n nonCheckableText?: ReactNode;\r\n clickable?: boolean;\r\n noSpace?: boolean;\r\n}>;\r\n\r\nconst ResultBadge: FC<ResultBadgeProps> = ({\r\n okText,\r\n failedText,\r\n evaluatingText,\r\n notEvaluatedText,\r\n partiallyText,\r\n nonCheckableText,\r\n clickable,\r\n onClick,\r\n result,\r\n noSpace,\r\n spaceLeft,\r\n children\r\n}) => {\r\n let info: [string, ReactNode];\r\n const { ts } = useLocalization();\r\n switch (result) {\r\n case TestResult.ok:\r\n info = [cn('--success'), okText ?? 'OK'];\r\n break;\r\n case TestResult.failed:\r\n info = [cn('--error'), failedText ?? ts('NEN-746907')];\r\n break;\r\n case TestResult.evaluating:\r\n info = [cn('--light'), evaluatingText ?? ts('NEN-746908')];\r\n break;\r\n case TestResult.notEvaluated:\r\n info = [cn('--dark'), notEvaluatedText ?? ts('NEN-747754')];\r\n break;\r\n case TestResult.partially:\r\n info = [cn('--warning'), partiallyText ?? ts('NEN-746910')];\r\n break;\r\n case TestResult.nonCheckable:\r\n default:\r\n info = [cn('--inversed'), nonCheckableText ?? ts('NEN-746909')]\r\n }\r\n\r\n const mainClassName = cn.with(info[0]).main({\r\n '--no-space': noSpace,\r\n '--space-left': !noSpace && spaceLeft,\r\n '--space-right': !noSpace && !spaceLeft\r\n });\r\n\r\n return (\r\n clickable ?\r\n <button onClick={onClick} className={mainClassName}>{children ?? info[1]}</button> :\r\n <span onClick={onClick} className={mainClassName}>{children ?? info[1]}</span>\r\n )\r\n}\r\n\r\nResultBadge.displayName = 'ResultBadge';\r\n\r\nexport default React.memo(ResultBadge);\r\n","import CertificateDetail from \"crypto/CertificateDetail/CertificateDetail\";\r\nimport CryptoPart from \"crypto/CryptoPart/CryptoPart\";\r\nimport { ISignatureInfo, SignatureInfoType } from \"crypto/interface/ISignatureInfo\";\r\nimport { updateSignatureValidationMessage, formatDistinguishedNamePart, getSignatureState, hasSignatureWarning, isEncrypted } from \"crypto/SignatureUtils\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport ResultBadge from \"@components/CompatibilityTest/Components/ResultBadge/ResultBadge\";\r\nimport { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport { MdLockOutline, MdAccessTime, MdWorkspacePremium, MdWarning, MdCheckCircle } from 'react-icons/md';\r\nimport Icon from \"@components/Icon\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport './SignatureInfo.scss';\r\nimport Note from \"@components/Note/Note\";\r\n\r\nconst cn = setupCn('signature-info');\r\n\r\nexport type SignatureInfoProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n signatureInfo: ISignatureInfo;\r\n}>;\r\n\r\nconst SignatureInfo: FC<SignatureInfoProps> = ({\r\n id,\r\n className,\r\n signatureInfo,\r\n}) => {\r\n const localization = useLocalization();\r\n const { ts } = localization;\r\n\r\n let icon = undefined;\r\n switch (signatureInfo.type) {\r\n case SignatureInfoType.digitalSignature:\r\n icon = MdWorkspacePremium;\r\n break;\r\n case SignatureInfoType.timeStamp:\r\n icon = MdAccessTime;\r\n break;\r\n case SignatureInfoType.digitalMark:\r\n icon = MdLockOutline;\r\n break;\r\n }\r\n\r\n updateSignatureValidationMessage(signatureInfo);\r\n\r\n const caption = signatureInfo.certificate ? formatDistinguishedNamePart(signatureInfo.certificate.subject, 'CN') : '';\r\n const date = signatureInfo.time ? new Date(signatureInfo.time.toString()).toLocaleDateString() + ', ' + new Date(signatureInfo.time.toString()).toLocaleTimeString() : \"\";\r\n const hasWarning = hasSignatureWarning(signatureInfo, false);\r\n const warningText = hasWarning ? getSignatureState(signatureInfo, localization) : null;\r\n const showWarningIcon = (hasWarning || isEncrypted({ signatureInfo }));\r\n\r\n return (\r\n <CryptoPart\r\n id={id}\r\n className={cn.with(className)()}\r\n caption={caption}\r\n captionIcon={icon}\r\n captionDescription={<>\r\n {date}\r\n {\r\n !warningText ? null :\r\n <>\r\n <br />\r\n <ResultBadge result={TestResult.partially}>{warningText}</ResultBadge>\r\n </>\r\n }\r\n </>}\r\n toggleButtonContent={<Icon className={cn('__validity-icon')} icon={showWarningIcon ? MdWarning : MdCheckCircle} />}>\r\n <FlexBox direction='column' gap='16px' align='start'>\r\n <Note>{ts('GUI-653208')}</Note>\r\n <CertificateDetail\r\n className={cn('__certificate-detail')}\r\n certificate={signatureInfo.certificate} />\r\n </FlexBox>\r\n </CryptoPart >\r\n );\r\n};\r\n\r\nSignatureInfo.displayName = 'SignatureInfo';\r\n\r\nexport default React.memo(SignatureInfo);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport ResultBadge from \"@components/CompatibilityTest/Components/ResultBadge/ResultBadge\";\r\nimport { getSignatureStateTooltip, hasSignatureWarning, isEncrypted, isSignatureEmpty } from \"crypto/SignatureUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { ISignatureInfo } from \"crypto/interface/ISignatureInfo\";\r\n\r\nexport type CryptoDetailSummaryBadgeProps = PropsWithChildren<{\r\n signatureInfo: ISignatureInfo | undefined;\r\n}>;\r\n\r\nconst CryptoDetailSummaryBadge: FC<CryptoDetailSummaryBadgeProps> = ({\r\n signatureInfo,\r\n}) => {\r\n const localization = useLocalization();\r\n\r\n if (!signatureInfo) {\r\n return null;\r\n }\r\n\r\n const signatureState = getSignatureStateTooltip(signatureInfo, localization);\r\n\r\n const headerClass = hasSignatureWarning(signatureInfo) || isEncrypted({ signatureInfo }) ? TestResult.partially :\r\n !isSignatureEmpty(signatureInfo) ? TestResult.ok : null;\r\n\r\n return (\r\n <ResultBadge\r\n noSpace\r\n result={headerClass ?? TestResult.notEvaluated}>\r\n {signatureState}\r\n </ResultBadge>\r\n );\r\n};\r\n\r\nCryptoDetailSummaryBadge.displayName = 'CryptoDetailSummaryBadge';\r\n\r\nexport default React.memo(CryptoDetailSummaryBadge);\r\n","import EncryptionInfo from \"crypto/EncryptionInfo/EncryptionInfo\";\r\nimport { ICryptographicInfo } from \"crypto/interface/ICryptographicInfo\";\r\nimport { ISignatureInfo } from \"crypto/interface/ISignatureInfo\";\r\nimport SignatureInfo from \"crypto/SignatureInfo/SignatureInfo\";\r\nimport { isSigned } from \"crypto/SignatureUtils\";\r\nimport React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Accordion from \"@components/Accordion\";\r\nimport './CryptoDetail.scss';\r\nimport CryptoDetailSummaryBadge from \"crypto/CryptoDetailSummaryBadge\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport CryptoPart from \"crypto/CryptoPart/CryptoPart\";\r\nimport { MdDraw } from \"react-icons/md\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport Note from \"@components/Note/Note\";\r\n\r\nconst cn = setupCn('crypto-detail');\r\n\r\nexport type CryptoDetailProps = PropsWithChildren<{\r\n className?: Classes;\r\n id: string;\r\n cryptoInfo: ICryptographicInfo;\r\n withModalPaddig?: boolean;\r\n withoutSummary?: boolean;\r\n signatureDownloadLink?: string;\r\n signatureDataDescription?: ReactNode;\r\n}>;\r\n\r\nconst CryptoDetail: FC<CryptoDetailProps> = ({\r\n className,\r\n id,\r\n cryptoInfo,\r\n withoutSummary,\r\n withModalPaddig,\r\n signatureDownloadLink,\r\n signatureDataDescription,\r\n}) => {\r\n const { ts } = useLocalization();\r\n const { signatureInfo, encryptionInfo } = cryptoInfo;\r\n\r\n const hasSignature = signatureInfo && isSigned(signatureInfo);\r\n\r\n const signatruresDetails: ReactNode[] = [];\r\n const createSignaturesTree = (actualSignature: ISignatureInfo) => {\r\n if (actualSignature) {\r\n signatruresDetails.push(\r\n <SignatureInfo\r\n key={signatruresDetails.length}\r\n id={signatruresDetails.length.toString()}\r\n signatureInfo={actualSignature} />\r\n );\r\n actualSignature.counterSignature?.forEach(createSignaturesTree);\r\n }\r\n }\r\n createSignaturesTree(signatureInfo);\r\n\r\n return (\r\n <div className={cn.with(className).main()}>\r\n {renderIf(!withoutSummary, () =>\r\n <div className={cn('__caption')}>\r\n {ts('GUI-462916')}<br />\r\n <CryptoDetailSummaryBadge signatureInfo={signatureInfo} />\r\n </div>\r\n )}\r\n <Accordion id={id} withModalPadding={withModalPaddig} noInnerXOffset>\r\n {renderIf(signatureInfo?.signedData, signedData => <>\r\n <CryptoPart id='signature-data' caption={ts('GUI-481348')} captionDescription={signatureDataDescription} captionIcon={MdDraw}>\r\n {renderIf(signatureInfo?.signatureInsideDocument,\r\n () => <Note isBold>{ts('NEN-808533')}</Note>,\r\n () => <Note>{signedData}</Note>\r\n )}\r\n {renderIf(signatureDownloadLink, signatureDownloadLink =>\r\n <FlexBox className={cn('__download-button')} justify='center'>\r\n <ButtonLink to={signatureDownloadLink} target='_blank' isFlat>{ts('NEN-808532')}</ButtonLink>\r\n </FlexBox>\r\n )}\r\n </CryptoPart >\r\n </>)}\r\n {renderIf(encryptionInfo?.encrypted,\r\n <EncryptionInfo encryptionInfo={encryptionInfo!} />\r\n )}\r\n {renderIf(hasSignature,\r\n signatruresDetails\r\n )}\r\n </Accordion>\r\n </div >\r\n );\r\n}\r\n\r\nCryptoDetail.displayName = 'CryptoDetail';\r\n\r\nexport default React.memo(CryptoDetail);\r\n","import classNames from \"classnames\";\r\nimport { FC } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport './LoaderOverlay.scss';\r\n\r\nconst cn = setupCn('loader-overlay');\r\n\r\nexport type LoaderOverlayProps = {\r\n className?: Classes;\r\n}\r\n\r\nconst LoaderOverlay: FC<LoaderOverlayProps> = ({\r\n children,\r\n className\r\n}) => (\r\n <div className={classNames(cn(), className)}>\r\n {children}\r\n </div>\r\n)\r\n\r\nexport default LoaderOverlay;\r\n","import React, { FC, PropsWithChildren, useMemo } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport './Loader.scss';\r\nimport LoaderOverlay from \"./LoaderOverlay\";\r\n\r\nconst cn = setupCn('gov-loader');\r\n\r\nexport type LoaderProps = PropsWithChildren<{\r\n className?: Classes;\r\n isBlock?: boolean;\r\n isInversed?: boolean;\r\n withOverlay?: boolean;\r\n}>;\r\n\r\nconst Loader: FC<LoaderProps> = ({\r\n className,\r\n isBlock,\r\n isInversed,\r\n withOverlay\r\n}) => {\r\n const elements = useMemo(() => {\r\n const elementsCount = isBlock ? 8 : 3;\r\n return Array.from({ length: elementsCount }, (_, index) => <span key={index}> </span>);\r\n }, [isBlock]);\r\n\r\n const Wrapper = withOverlay ? LoaderOverlay : React.Fragment;\r\n\r\n return (\r\n <Wrapper>\r\n <div className={cn.with(className).main({\r\n '--block': isBlock,\r\n '--inversed': isInversed\r\n })}>\r\n {elements}\r\n </div>\r\n </Wrapper>\r\n );\r\n};\r\n\r\nLoader.displayName = 'Loader';\r\n\r\nexport default React.memo(Loader);\r\n","import React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Modal, { ModalProps } from \"@components/Modal/Modal\";\r\nimport { useCryptoService } from \"@store/nodeContextStore\";\r\nimport { useAsyncValueWithState } from \"@utils/ReactUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport CryptoDetail from \"crypto/CryptoDetail/CryptoDetail\";\r\nimport { useCurrentLanguage, useLocalization } from \"@store/localizationStore\";\r\nimport Loader from \"@components/Loader/Loader\";\r\nimport CryptoDetailSummaryBadge from \"crypto/CryptoDetailSummaryBadge\";\r\nimport Note from \"@components/Note/Note\";\r\nimport { useNanoid } from \"@utils/UseId\";\r\n\r\nconst cn = setupCn('document-signature-modal');\r\n\r\nexport type SignatureModalProps = PropsWithChildren<{\r\n className?: Classes;\r\n objectName: string;\r\n id: string;\r\n attrName: string;\r\n fileName?: ReactNode;\r\n}> & Pick<ModalProps, 'onClose'>;\r\n\r\nconst DocumentSignatureModal: FC<SignatureModalProps> = ({\r\n className,\r\n objectName,\r\n id,\r\n attrName,\r\n fileName,\r\n ...modalProps\r\n}) => {\r\n const { ts } = useLocalization();\r\n const language = useCurrentLanguage();\r\n const cryptoService = useCryptoService();\r\n\r\n const { controlId } = useNanoid();\r\n\r\n const {\r\n isLoaded,\r\n value: signatureInfo,\r\n } = useAsyncValueWithState(() => cryptoService.getDocumentSignatureInfo({ objectName, id, attrName }));\r\n\r\n const signatureDownloadLink = signatureInfo?.signatureInsideDocument ? undefined :\r\n `/api/crypto/getDocumentSignature?objectName=${objectName}&id=${id}&attrName=${attrName}&language=${language}`;\r\n\r\n return (\r\n <Modal {...modalProps} noContentOffset={isLoaded} headerText={<>\r\n {ts('NEN-808325')}\r\n {renderIf(isLoaded, <div><CryptoDetailSummaryBadge signatureInfo={signatureInfo} /></div>)}\r\n </>}>\r\n <div className={cn.with(className).main()}>\r\n {renderIf(!isLoaded,\r\n <Loader />\r\n )}\r\n {renderIf(isLoaded && signatureInfo, signatureInfo =>\r\n <CryptoDetail\r\n id={controlId}\r\n cryptoInfo={{ signatureInfo }}\r\n signatureDownloadLink={signatureDownloadLink}\r\n signatureDataDescription={fileName}\r\n withoutSummary\r\n withModalPaddig />\r\n )}\r\n {renderIf(isLoaded && !signatureInfo, () =>\r\n <Note>{ts('NEN-808326')}</Note>\r\n )}\r\n </div>\r\n </Modal>\r\n );\r\n};\r\n\r\nDocumentSignatureModal.displayName = 'DocumentSignatureModal';\r\n\r\nexport default React.memo(DocumentSignatureModal);\r\n","import { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { useCallback, useState } from \"react\";\r\n\r\nexport const useToggleState = (defaultValue: boolean = false) => {\r\n const [state, setState] = useState(defaultValue);\r\n const toggleState = useCallback(() => setState(prevState => !prevState), [setState]);\r\n return [state, toggleState, setState] as const;\r\n}\r\n\r\nexport const useLoadState = (timeout?: number) => {\r\n const [isLoaded, setLoaded] = useState(false);\r\n const { appSettings } = useAppSettings();\r\n\r\n const onLoad = useCallback(() => {\r\n setTimeout(() => setLoaded(true), timeout ?? appSettings.externalWidgets.loaderTimeout ?? 0);\r\n }, [timeout, appSettings.externalWidgets.loaderTimeout]);\r\n\r\n return { isLoaded, setLoaded, onLoad };\r\n}\r\n\r\nexport const useRefreshState = () => {\r\n const [state, setState] = useState<number>();\r\n return [\r\n () => setState(state => ((state ?? 0) + 1) % (Number.MAX_SAFE_INTEGER - 1)),\r\n state\r\n ] as const;\r\n}\r\n","import React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Icon from \"@components/Icon\";\r\nimport { MdWorkspacePremium } from \"react-icons/md\";\r\nimport Button from \"@components/Button/Button\";\r\nimport DocumentSignatureModal from \"@components/DocumentSignatureModal\";\r\nimport { useToggleState } from \"@utils/StateUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nconst cn = setupCn('document-signature-button');\r\n\r\nexport type SignatureButtonProps = PropsWithChildren<{\r\n className?: Classes;\r\n objectName: string;\r\n id: string;\r\n attrName: string;\r\n fileName?: ReactNode;\r\n}>;\r\n\r\nconst DocumentSignatureButton: FC<SignatureButtonProps> = ({\r\n className,\r\n ...signatureModalParams\r\n}) => {\r\n const { t } = useLocalization();\r\n const [isSignatureShown, toggleSignatureShown] = useToggleState();\r\n\r\n return (\r\n <>\r\n <Button\r\n className={cn.with(className).main()}\r\n title={t('NEN-808699')}\r\n hasIconOnly\r\n isFlat\r\n onClick={toggleSignatureShown}>\r\n <Icon\r\n icon={MdWorkspacePremium}\r\n size='16' />\r\n </Button>\r\n {renderIf(isSignatureShown,\r\n <DocumentSignatureModal\r\n {...signatureModalParams}\r\n onClose={toggleSignatureShown} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nDocumentSignatureButton.displayName = 'DocumentSignatureButton';\r\n\r\nexport default React.memo(DocumentSignatureButton);\r\n","import { FC, ReactNode } from \"react\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useEnumDescriptions, UseEnumDescriptionsType } from \"@store/enumDescriptionsStore\";\r\nimport { useLocalization, UseLocalizationType } from \"@store/localizationStore\";\r\nimport { AttrType, EnumConverterParam, FileConverterParam, IBasicData } from \"./AttrMapping\";\r\nimport { renderIf } from \"./RenderUtils\";\r\nimport { setupCn } from \"./BemUtils\";\r\nimport \"./AttrConverter.scss\";\r\nimport DocumentSignatureButton from \"@components/DocumentSignatureButton\";\r\n\r\nexport type AttrConverterRequirements = {\r\n localization: UseLocalizationType;\r\n enumDescriptions: UseEnumDescriptionsType;\r\n}\r\n\r\nexport type AttrConverter<T = any> = (props: ConvertAttrValueParams & AttrConverterRequirements & ConvertAttrParams<T>) => ReactNode;\r\nexport type AttrStringConverter<T = any> = (props: ConvertAttrValueParams & AttrConverterRequirements & ConvertAttrParams<T>) => string | null;\r\n\r\nconst stringConverter: AttrStringConverter = ({ value }) => (value as object)?.toString() ?? null;\r\n\r\nconst convertDate = (value: unknown, options: Intl.DateTimeFormatOptions) => value instanceof Date ? value.toLocaleString([], options) :\r\n typeof value === 'string' && !isNaN(Date.parse(value)) ? new Date(value).toLocaleString([], options) : null;\r\n\r\nconst dateOptions: Intl.DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };\r\nconst dateTimeOptions: Intl.DateTimeFormatOptions = { ...dateOptions, hour: '2-digit', minute: '2-digit' };\r\nconst dateConverter: AttrStringConverter = ({ value }) => convertDate(value, dateOptions);\r\nconst dateTimeConverter: AttrStringConverter = ({ value }) => convertDate(value, dateTimeOptions);\r\n\r\nconst boolConverter: AttrStringConverter = ({ value, localization }) => value == null ? null : localization.t(value ? 'NEN-738573' : 'NEN-738574');\r\n\r\nconst enumStringConverter: AttrStringConverter<EnumConverterParam> = ({ value, localization, enumDescriptions, formatParam }) => {\r\n if (value == null) {\r\n return null;\r\n }\r\n const { getEnumDescription } = enumDescriptions;\r\n const enumDescription = formatParam && getEnumDescription(formatParam);\r\n if (!enumDescription) {\r\n return '';\r\n }\r\n const locKey = enumDescription.items.find(item => item.name == value || item.intValue == value)?.locKey;\r\n return locKey ? localization.t(locKey) : '';\r\n}\r\n\r\nconst enumNodeConverter: AttrConverter<EnumConverterParam> = ({ value, localization, enumDescriptions, formatParam }) => {\r\n if (value == null) {\r\n return null;\r\n }\r\n const { getEnumDescription } = enumDescriptions;\r\n const enumDescription = formatParam && getEnumDescription(formatParam);\r\n if (!enumDescription) {\r\n return <Skeleton />;\r\n }\r\n const locKey = enumDescription.items.find(item => item.name == value || item.intValue == value)?.locKey;\r\n return locKey ? localization.ts(locKey) : '';\r\n}\r\n\r\nconst fileCn = setupCn('file-value');\r\n\r\nconst fileNodeConverter: AttrConverter<FileConverterParam<{}>> = (prms) => {\r\n const { value, data, formatParam, objectName, serverAttrName } = prms;\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n const fileName = (value as string)?.split(':')[2];\r\n const linkText = fileStringConverter(prms);\r\n\r\n let hasSignature = false;\r\n if (formatParam && typeof formatParam == 'object') {\r\n hasSignature = formatParam.hasDigitalSignarue?.(data ?? undefined) ?? false;\r\n }\r\n\r\n return (\r\n <span className={fileCn.main()}>\r\n <Link className={fileCn('__file')} to={'/file?id=' + data?.id} target='_blank' rel='nofollow'>{linkText}</Link>\r\n {renderIf(hasSignature && objectName && serverAttrName && data?.id, id => \r\n <DocumentSignatureButton\r\n className={fileCn('__file-signature')}\r\n id={id.toString()}\r\n fileName={fileName}\r\n objectName={objectName!}\r\n attrName={serverAttrName!} />)}\r\n </span>\r\n );\r\n}\r\n\r\nconst fileStringConverter: AttrStringConverter<FileConverterParam<{}>> = ({ value, data, formatParam }) => {\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n let linkText = (value as string)?.split(':')[2];\r\n\r\n if (formatParam && typeof formatParam == 'object') {\r\n linkText = formatParam.getFileName?.(data ?? undefined, linkText) ?? linkText;\r\n }\r\n\r\n return linkText;\r\n}\r\n\r\nconst moneyConverter: AttrStringConverter = ({ value }) => (value as number)?.toLocaleString([], { minimumFractionDigits: 2 }) ?? null;\r\n\r\nconst attrNodeConverters = new Map<AttrType, AttrConverter<any>>();\r\nattrNodeConverters.set('string', stringConverter);\r\nattrNodeConverters.set('text', stringConverter);\r\nattrNodeConverters.set('number', stringConverter);\r\nattrNodeConverters.set('date', dateConverter);\r\nattrNodeConverters.set('dateTime', dateTimeConverter);\r\nattrNodeConverters.set('bool', boolConverter);\r\nattrNodeConverters.set('money', moneyConverter);\r\nattrNodeConverters.set('enum', enumNodeConverter);\r\nattrNodeConverters.set('file', fileNodeConverter);\r\n\r\nconst attrToStringConverters = new Map<AttrType, AttrStringConverter<any>>();\r\nattrToStringConverters.set('string', stringConverter);\r\nattrToStringConverters.set('text', stringConverter);\r\nattrToStringConverters.set('number', stringConverter);\r\nattrToStringConverters.set('date', dateConverter);\r\nattrToStringConverters.set('dateTime', dateTimeConverter);\r\nattrToStringConverters.set('bool', boolConverter);\r\nattrToStringConverters.set('money', moneyConverter);\r\nattrToStringConverters.set('enum', enumStringConverter);\r\nattrToStringConverters.set('file', fileStringConverter);\r\n\r\nexport type CovertAttrFormatParams<T = unknown> = {\r\n format: AttrType;\r\n formatParam?: T;\r\n}\r\n\r\nexport type ConvertAttrParams<T = unknown> = CovertAttrFormatParams<T> & {\r\n objectName?: string;\r\n serverAttrName?: string;\r\n}\r\n\r\nexport type ConvertAttrValueParams = {\r\n value: unknown;\r\n data?: IBasicData | null\r\n}\r\n\r\nexport type ConvertStringAttrValueParams = ConvertAttrValueParams & {\r\n emptyValue?: string;\r\n}\r\n\r\nexport type ConvertNodeAttrValueParams = ConvertAttrValueParams & {\r\n emptyValue?: FC;\r\n}\r\n\r\nexport function stringAttrValue({\r\n emptyValue,\r\n ...params\r\n}: ConvertStringAttrValueParams & AttrConverterRequirements & ConvertAttrParams): string {\r\n const toStringConverter = attrToStringConverters.get(params.format) || stringConverter;\r\n return (toStringConverter(params) ?? emptyValue) || '';\r\n}\r\n\r\nexport function nodeAttrValue({\r\n emptyValue: EmptyValue,\r\n ...params\r\n}: ConvertNodeAttrValueParams & AttrConverterRequirements & ConvertAttrParams): ReactNode {\r\n const nodeConverter = attrNodeConverters.get(params.format) || stringConverter;\r\n return nodeConverter(params) ?? (EmptyValue && <EmptyValue />) ?? null;\r\n}\r\n\r\nexport const useAttrConverter = () => {\r\n const requiredParams: AttrConverterRequirements = {\r\n localization: useLocalization(),\r\n enumDescriptions: useEnumDescriptions(),\r\n };\r\n\r\n const withFormat = (formatParams: ConvertAttrParams) => {\r\n return {\r\n nodeAttrValue: (params: ConvertNodeAttrValueParams) => nodeAttrValue({ ...requiredParams, ...formatParams, ...params }),\r\n stringAttrValue: (params: ConvertStringAttrValueParams) => stringAttrValue({ ...requiredParams, ...formatParams, ...params })\r\n };\r\n }\r\n\r\n return {\r\n nodeAttrValue: (params: ConvertNodeAttrValueParams & ConvertAttrParams) => nodeAttrValue({ ...params, ...requiredParams }),\r\n stringAttrValue: (params: ConvertStringAttrValueParams & ConvertAttrParams) => stringAttrValue({ ...params, ...requiredParams }),\r\n withFormat\r\n };\r\n}\r\n","import React, { PropsWithChildren, FC } from \"react\";\r\nimport { AttrName, IData } from \"@utils/AttrMapping\";\r\nimport { useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport GovLink from \"@components/GovLink\";\r\nimport DataLabelComponent, { DataLabelComponentProps } from \"./DataLabelComponent\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useAttrConverter } from \"@utils/AttrConverter\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport { Classes } from \"@utils/BemUtils\";\r\n\r\ntype DataLabelProps<T extends IData> = PropsWithChildren<{\r\n className?: Classes;\r\n showIf?: string | boolean;\r\n detailLinkShowIf?: string | boolean;\r\n attrName: AttrName<T>;\r\n lockey: string;\r\n detailLink?: string;\r\n}> & Pick<DataLabelComponentProps, 'valueTitle' | 'fillGrid' | 'rawText'>;\r\n\r\ntype DataLabelType<T extends IData> = FC<DataLabelProps<T>>;\r\n\r\nconst DataLabel: DataLabelType<any> = ({\r\n className,\r\n showIf,\r\n detailLinkShowIf,\r\n attrName,\r\n lockey,\r\n children,\r\n detailLink,\r\n fillGrid,\r\n rawText,\r\n valueTitle,\r\n}) => {\r\n const { getAttr, evaluateCondition } = useDetailFrameContext();\r\n\r\n const evalCond = (cond: string | boolean | undefined) =>\r\n cond === undefined || cond === true || (typeof cond === 'string' && evaluateCondition(cond))\r\n\r\n const {\r\n isFetching = true,\r\n value,\r\n attrInfo,\r\n data: objectData,\r\n objectName\r\n } = getAttr(attrName);\r\n\r\n const { d, ts } = useLocalization();\r\n\r\n const { nodeAttrValue, stringAttrValue } = useAttrConverter().withFormat({\r\n format: attrInfo?.defaultFormat ?? attrInfo?.type ?? 'string',\r\n formatParam: attrInfo?.typeParam,\r\n objectName,\r\n serverAttrName: attrInfo?.serverName,\r\n });\r\n\r\n if (evalCond(showIf) === false) {\r\n return null;\r\n }\r\n\r\n let content = children;\r\n if (children == null) {\r\n const data = objectData ?? { id: getAttr('id')?.value ?? 0 };\r\n content = isFetching ? <Skeleton /> : nodeAttrValue({ value, data });\r\n valueTitle ??= isFetching ? undefined : stringAttrValue({ value, data });\r\n }\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n const showLink = detailLink && evalCond(detailLinkShowIf) === true;\r\n const detailElement = value != null && showLink ?\r\n <GovLink\r\n to={{ pathname: detailLink }}>\r\n {content}\r\n </GovLink>\r\n : null;\r\n\r\n return (\r\n <DataLabelComponent\r\n className={className}\r\n caption={ts(lockey)}\r\n captionTitle={d(lockey)}\r\n valueTitle={valueTitle}\r\n fillGrid={fillGrid}\r\n notWrapValue={!!detailElement}\r\n rawText={rawText}>\r\n {detailElement || content}\r\n </DataLabelComponent>\r\n );\r\n}\r\n\r\nexport const DataLabelTyped = <T extends IData>() => DataLabel as DataLabelType<T>;\r\n\r\nexport default React.memo(DataLabel);","import React, { FC, ReactNode } from \"react\";\r\nimport { TableColumn } from \"./Table\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { Classes } from \"@utils/BemUtils\";\r\nimport classNames from \"classnames\";\r\nimport Skeleton from 'react-loading-skeleton';\r\nimport { AttrMapping, IData } from \"@utils/AttrMapping\";\r\nimport { useAttrConverter } from \"@utils/AttrConverter\";\r\n\r\nexport type TableCellProps = {\r\n attrMapping: AttrMapping;\r\n column: TableColumn;\r\n data: IData | null;\r\n isSkeleton?: boolean;\r\n className?: Classes;\r\n}\r\n\r\nconst cellPadding = 10;\r\nexport const getColumnCSSWidth = (width?: number | null | string) => width ? (typeof width == 'string' ? width : `${width + cellPadding}px`) : '100%';\r\n\r\nconst TableCell: FC<TableCellProps> = ({\r\n attrMapping,\r\n column,\r\n data,\r\n isSkeleton,\r\n className\r\n}) => {\r\n const { t } = useLocalization();\r\n const attrInfo = attrMapping.getByClientName(column.attrName);\r\n const format = column.format ?? attrInfo?.defaultFormat ?? attrInfo?.type ?? 'string';\r\n const formatParam = column.formatParam ?? attrInfo?.typeParam;\r\n const { nodeAttrValue, stringAttrValue } = useAttrConverter().withFormat({\r\n format,\r\n formatParam,\r\n objectName: attrMapping.objectName,\r\n serverAttrName: attrInfo?.serverName,\r\n });\r\n let content: ReactNode = null;\r\n let title: string | undefined = undefined;\r\n if (isSkeleton) {\r\n content = <Skeleton />;\r\n } else {\r\n content = nodeAttrValue({ value: data?.[column.attrName], data: data });\r\n title = stringAttrValue({ value: data?.[column.attrName], data: data });\r\n }\r\n\r\n return (\r\n <td\r\n className={classNames(className)}\r\n title={title}\r\n style={{\r\n width: getColumnCSSWidth(column.width)\r\n }}\r\n data-title={t(column.locKey)}>\r\n {content}\r\n </td>\r\n );\r\n};\r\n\r\nexport default React.memo(TableCell);\r\n","import GovLink from \"@components/GovLink/GovLink\";\r\nimport { CSSProperties, FC } from \"react\";\r\nimport Skeleton from \"react-loading-skeleton\"\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\"\r\nimport { DetailLink } from \"@components/ListFrame\";\r\n\r\nconst cn = setupCn('gov-table');\r\n\r\nexport type TableDetailLinkProps = {\r\n isSkeleton?: boolean;\r\n detailLink: DetailLink | null;\r\n className?: Classes;\r\n alignRight?: boolean;\r\n withArrow?: boolean;\r\n style?: CSSProperties;\r\n}\r\n\r\nconst TableDetailCell: FC<TableDetailLinkProps> = ({\r\n isSkeleton,\r\n detailLink,\r\n withArrow,\r\n children,\r\n className,\r\n alignRight,\r\n style\r\n}) => {\r\n return (\r\n <td\r\n className={cn.with(className, cn('__row-controls'), { 'u-align--right': alignRight }).subCn('__cell', {\r\n '--narrow': withArrow\r\n })}\r\n style={style}>\r\n {renderIf(isSkeleton, <Skeleton />)}\r\n {\r\n detailLink?.url && !isSkeleton &&\r\n <GovLink\r\n to={{ pathname: detailLink.url }}\r\n aria-label={detailLink.title}\r\n hasArrow={withArrow}>\r\n <span className={cn('__row-button-text')}>{children}</span>\r\n </GovLink>\r\n }\r\n </td>\r\n )\r\n}\r\n\r\nexport default TableDetailCell;\r\n","import { ArrayValues, EnumFromKeys, WithPrefix } from \"@utils/TypeUtils\";\r\n\r\nconst breakpoints = ['portable', 'tablet-landscape', 'tablet', 'mobile-landscape', 'mobile', 'palm'] as const;\r\nconst breakpointsPrefixes = ['u-hide--', 'u-hide--from-'] as const;\r\n\r\nexport type Breakpoints = ArrayValues<typeof breakpoints>;\r\n\r\nconst displays = ['block', 'flex'] as const;\r\n\r\ntype ResponsibilityClasses =\r\n WithPrefix<typeof breakpoints, ArrayValues<typeof breakpointsPrefixes>> |\r\n WithPrefix<typeof displays, 'u-display-'>;\r\n\r\ntype ResponsibilityClassesEnum = EnumFromKeys<ResponsibilityClasses>;\r\n\r\nconst responsibility: Record<string, string> = {};\r\nbreakpointsPrefixes.forEach(prefix => breakpoints.forEach(breakpoint => {\r\n const className = `${prefix}${breakpoint}`;\r\n responsibility[className] = className;\r\n}));\r\n\r\ndisplays.forEach(display => {\r\n const className = `u-display-${display}`;\r\n responsibility[className] = className;\r\n});\r\n\r\nexport default (responsibility as ResponsibilityClassesEnum);\r\n","import React, { CSSProperties, FC } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { AttrMapping, IBasicData, IData } from \"@utils/AttrMapping\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { TableColumn } from \"./Table\";\r\nimport TableCell from './TableCell';\r\nimport TableDetailCell from \"./TableDetailCell\";\r\nimport responsibility from \"@styles/responsibility\";\r\nimport { DetailLink } from \"@components/ListFrame\";\r\n\r\nconst cn = setupCn('gov-table');\r\nconst cnCell = cn.setupSubCn('__cell');\r\n\r\nexport type DetailLinkFactory = (data: IBasicData) => DetailLink;\r\n\r\nexport type TableRowProps = {\r\n columns: TableColumn[];\r\n data: IData | null;\r\n attrMapping: AttrMapping;\r\n isSkeleton?: boolean;\r\n detailLinkFactory?: DetailLinkFactory;\r\n}\r\n\r\nconst displayNoneStyles: CSSProperties = {\r\n display: 'none',\r\n visibility: 'hidden'\r\n};\r\n\r\nconst TableRow: FC<TableRowProps> = ({\r\n attrMapping,\r\n columns,\r\n data,\r\n isSkeleton,\r\n detailLinkFactory\r\n}) => {\r\n const detailLink = !detailLinkFactory ? null :\r\n data ? detailLinkFactory(data) : null;\r\n const { ts } = useLocalization();\r\n return (\r\n <tr className={cn('__row')}>\r\n {\r\n renderIf(detailLinkFactory,\r\n <TableDetailCell\r\n className={cnCell.with(responsibility['u-hide--tablet'])()}\r\n isSkeleton={isSkeleton}\r\n detailLink={detailLink}>\r\n {ts('NEN-748837')}\r\n </TableDetailCell>\r\n )\r\n }\r\n {\r\n columns.map((column, index) => <TableCell\r\n className={cnCell.main({\r\n '--second': index == 0,\r\n '--last': index == columns.length - 1,\r\n '--is-skeleton': isSkeleton,\r\n '--wide': column.isWide\r\n })}\r\n key={index}\r\n attrMapping={attrMapping}\r\n isSkeleton={isSkeleton}\r\n data={data}\r\n column={column}\r\n />)\r\n }\r\n {\r\n renderIf(detailLinkFactory,\r\n <TableDetailCell\r\n style={displayNoneStyles}\r\n className={cnCell.with(\r\n responsibility['u-display-block'],\r\n responsibility['u-hide--from-tablet']\r\n )()}\r\n withArrow\r\n isSkeleton={isSkeleton}\r\n detailLink={detailLink}>\r\n {ts('NEN-748837')}\r\n </TableDetailCell>\r\n )\r\n }\r\n </tr>\r\n )\r\n};\r\n\r\nexport default React.memo(TableRow);\r\n","import React, { FC } from \"react\"\r\nimport { AttrMapping, IData } from \"@utils/AttrMapping\";\r\nimport { TableColumn } from \"./Table\";\r\nimport TableRow, { DetailLinkFactory } from \"./TableRow\";\r\n\r\nexport type TableRowsProps = {\r\n attrMapping: AttrMapping;\r\n skeletonCount?: number;\r\n isLoading?: boolean;\r\n isNext?: boolean;\r\n data?: IData[];\r\n columns: TableColumn[];\r\n detailLinkFactory?: DetailLinkFactory;\r\n}\r\n\r\nconst TableRows: FC<TableRowsProps> = ({\r\n attrMapping,\r\n skeletonCount,\r\n isLoading,\r\n isNext,\r\n data,\r\n columns,\r\n detailLinkFactory\r\n}) => {\r\n const dataCount = data?.length ?? 0;\r\n skeletonCount ??= 0;\r\n return (\r\n <>\r\n {\r\n data?.map(row =>\r\n <TableRow\r\n key={row.id}\r\n isSkeleton={isLoading && !isNext}\r\n detailLinkFactory={detailLinkFactory}\r\n columns={columns}\r\n attrMapping={attrMapping}\r\n data={row} />\r\n )\r\n }\r\n {\r\n !isLoading ? null :\r\n [...Array(Math.max(skeletonCount - dataCount, 0)).keys()]?.map(index =>\r\n <TableRow\r\n key={`skeleton${index}`}\r\n isSkeleton\r\n detailLinkFactory={detailLinkFactory}\r\n columns={columns}\r\n attrMapping={attrMapping}\r\n data={null} />\r\n )\r\n }\r\n </>\r\n );\r\n};\r\n\r\nexport default React.memo(TableRows);\r\n","import { MutableRefObject, Ref } from \"react\";\r\n\r\n/**\r\n * Vytvořà callback pro nastavenà reference. Callback nastavà referenci do výstupnÃ\r\n * reference i vnitÅ™nà reference. Podporuje RefObject i callback.\r\n * @param innerRef Reference pro vnitÅ™nà užità v komponentÄ›.\r\n * @param forwardRef Reference pro pÅ™eposlánà mimo komponentu.\r\n */\r\nexport const combineRefs = <T>(...refs: (Ref<T> | undefined)[]) => {\r\n const refCallback = (instance: T) => {\r\n refs.forEach((ref) => {\r\n if (!ref) {\r\n return;\r\n } else if (typeof ref === \"function\") {\r\n ref(instance);\r\n } else {\r\n (ref as MutableRefObject<T>).current = instance;\r\n }\r\n });\r\n };\r\n return refCallback;\r\n};\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('table-empty-message');\r\n\r\nexport type TableEmptyMessageProps = PropsWithChildren<{\r\n className?: Classes;\r\n isTooGeneralQuery?: boolean;\r\n}>;\r\n\r\nconst TableEmptyMessage: FC<TableEmptyMessageProps> = ({\r\n className,\r\n isTooGeneralQuery,\r\n}) => {\r\n const { ts } = useLocalization();\r\n return (\r\n <div className={cn.with(className)()}>\r\n {ts(isTooGeneralQuery ? 'NEN-821272' : 'NEN-747722')}\r\n </div>\r\n );\r\n};\r\n\r\nTableEmptyMessage.displayName = 'TableEmptyMessage';\r\n\r\nexport default React.memo(TableEmptyMessage);\r\n","import { FC, MouseEventHandler } from \"react\";\r\nimport { Cn } from \"@utils/BemUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nexport type TableHeadCellProps = {\r\n cn: Cn;\r\n isSortable: boolean;\r\n onSortClick?: MouseEventHandler<HTMLButtonElement>;\r\n asc?: boolean;\r\n desc?: boolean;\r\n locKey: string;\r\n}\r\nconst TableHeadCell: FC<TableHeadCellProps> = ({\r\n isSortable,\r\n onSortClick,\r\n cn,\r\n locKey,\r\n asc,\r\n desc\r\n}) => {\r\n const { t, ts } = useLocalization();\r\n if (isSortable) {\r\n let title = '';\r\n if (asc || desc) {\r\n title = `${t(locKey)} ${asc ? t('GUI-280054') : t('GUI-280052')}`;\r\n }\r\n return (\r\n <button\r\n aria-label={title}\r\n className={cn.main({\r\n '--asc': asc,\r\n '--dsc': desc,\r\n })}\r\n onClick={onSortClick}>\r\n <div>\r\n {ts(locKey)}\r\n </div>\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <div>\r\n {ts(locKey)}\r\n </div>\r\n );\r\n};\r\n\r\nTableHeadCell.displayName = 'TableHeadCell';\r\n\r\nexport default TableHeadCell;","import React, { CSSProperties, ReactNode, RefObject, useLayoutEffect, useRef, useState } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { AttrType, AttrMapping, IData, AttrName } from \"@utils/AttrMapping\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport classNames from \"classnames\";\r\nimport TableRows from \"./TableRows\";\r\nimport { PaginatorComponent } from \"@components/Pagination\";\r\nimport { CollectionType } from \"@store/collectionStore\";\r\nimport { getColumnCSSWidth } from \"./TableCell\";\r\nimport { DetailLinkFactory } from \"./TableRow\";\r\nimport { FilterParamsNames } from \"@constants/urlConstants\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { combineRefs } from \"@utils/CombineRefs\";\r\nimport { TableEmptyMessage } from \"@components/Table\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport './Table.scss';\r\nimport { AttrModel } from \"@components/ListFrame\";\r\nimport { OrderBy, getOrderByColumnSort } from \"@utils/OrderByUtils\";\r\nimport { MaybeArray } from \"@utils/ArrayHelper\";\r\nimport TableHeadCell from \"@components/Table/TableHeadCell\";\r\n\r\nconst cn = setupCn('gov-table');\r\nconst cnSortable = setupCn('gov-sortable-table');\r\nconst cnSortableTrigger = cnSortable.setupSubCn('__trigger');\r\nconst cnHeadCell = cn.setupSubCn('__head-cell');\r\n\r\nexport type TableColumn<TData extends IData = IData> = {\r\n attrName: AttrName<TData>;\r\n width?: number | string;\r\n format?: AttrType;\r\n formatParam?: unknown;\r\n isWide?: boolean;\r\n} & ({\r\n hidden: true;\r\n locKey?: string;\r\n} | {\r\n hidden?: boolean;\r\n locKey: string;\r\n});\r\n\r\nexport type OnSortClickEventParams<Mapping extends AttrMapping> = {\r\n column: TableColumn<AttrModel<Mapping>>;\r\n event: React.MouseEvent;\r\n};\r\n\r\nexport type OnSortClickEventHandler<Mapping extends AttrMapping> = (params: OnSortClickEventParams<Mapping>) => void;\r\n\r\nexport type TableProps<Mapping extends AttrMapping> = {\r\n columns: TableColumn<AttrModel<Mapping>>[];\r\n attrMapping: Mapping;\r\n skeletonCount?: number;\r\n detailLinkFactory?: DetailLinkFactory;\r\n collectionInfo?: CollectionType;\r\n onPageCount?: number | null;\r\n paramNames?: FilterParamsNames;\r\n lightVersion?: boolean;\r\n onSortClick?: OnSortClickEventHandler<Mapping>;\r\n isSortable?: boolean;\r\n extraButtons?: ReactNode[];\r\n withPaginator?: boolean;\r\n containerRef?: RefObject<HTMLDivElement | null>;\r\n orderBy?: MaybeArray<OrderBy>\r\n}\r\n\r\nfunction Table<Mapping extends AttrMapping>({\r\n attrMapping,\r\n columns,\r\n detailLinkFactory,\r\n skeletonCount,\r\n onPageCount,\r\n onSortClick,\r\n collectionInfo,\r\n paramNames,\r\n lightVersion,\r\n isSortable = true,\r\n extraButtons,\r\n containerRef,\r\n withPaginator,\r\n orderBy,\r\n}: TableProps<Mapping>) {\r\n const { d, t } = useLocalization();\r\n\r\n const containerInnerRef = useRef<HTMLDivElement>(null);\r\n const headRowRef = useRef<HTMLTableRowElement>(null);\r\n\r\n const sortableCn = isSortable ? cnSortable : (() => undefined);\r\n\r\n const {\r\n isFetching,\r\n isFetchedOnce,\r\n isLoadMore: isNext,\r\n count,\r\n collection,\r\n isTooGeneralQuery,\r\n } = collectionInfo ?? {};\r\n\r\n const [loadingInfo, setLoadingInfo] = useState({\r\n firstColumnWidth: 0,\r\n widths: [] as number[]\r\n });\r\n\r\n useLayoutEffect(() => {\r\n const ths = Array.from<HTMLElement>(headRowRef.current?.children as any);\r\n const allWidths = ths.map(td => td.offsetWidth);\r\n setLoadingInfo({\r\n firstColumnWidth: allWidths[0],\r\n widths: allWidths.slice(1)\r\n })\r\n }, [isFetching]);\r\n\r\n const getLoadingMinWidth = (width?: number): CSSProperties | undefined =>\r\n (isFetching || !isFetchedOnce) && width != null ?\r\n { minWidth: `${width}px` } :\r\n undefined;\r\n\r\n const isLoading = isFetching || !isFetchedOnce;\r\n const isEmpty = (collection == null || !collection.length) && !isLoading;\r\n\r\n return (\r\n <>\r\n {renderIf(isEmpty, () =>\r\n <TableEmptyMessage isTooGeneralQuery={isTooGeneralQuery} />\r\n )}\r\n <div ref={combineRefs(containerInnerRef, containerRef)} className={cn('-cover')} style={{ display: isEmpty ? 'none' : '' }}>\r\n <table className={cn.with(sortableCn()).main('--tablet-block')}>\r\n <thead className={cn('__head')}>\r\n <tr className={cn('__head-row')} ref={headRowRef}>\r\n {\r\n detailLinkFactory &&\r\n <th\r\n className={classNames(cnHeadCell.main('--first'), cn('__head-row-controls'))}\r\n style={getLoadingMinWidth(loadingInfo.firstColumnWidth)}>\r\n <span className='u-sr-only'>{t('NEN-748840')}</span>\r\n </th>\r\n }\r\n {columns.map((column, index) => (\r\n <th\r\n key={index}\r\n className={cnHeadCell.main()}\r\n title={d(column.locKey)}\r\n style={{\r\n ...getLoadingMinWidth(loadingInfo.widths?.[index]),\r\n width: getColumnCSSWidth(column.width)\r\n }}>\r\n <TableHeadCell\r\n cn={cnSortableTrigger}\r\n locKey={column.locKey!}\r\n asc={getOrderByColumnSort(orderBy, column) == 'asc'}\r\n desc={getOrderByColumnSort(orderBy, column) == 'desc'}\r\n onSortClick={event => onSortClick?.({ event, column })}\r\n isSortable={\r\n isSortable\r\n && attrMapping.getByClientName(column.attrName)?.type != 'text'\r\n } />\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody className={cn('__body')}>\r\n <TableRows\r\n data={collection}\r\n detailLinkFactory={detailLinkFactory}\r\n columns={columns as TableColumn[]}\r\n attrMapping={attrMapping}\r\n isNext={isNext}\r\n skeletonCount={skeletonCount}\r\n isLoading={isLoading} />\r\n </tbody>\r\n </table>\r\n </div>\r\n {\r\n (withPaginator || lightVersion && onPageCount !== null) && paramNames ?\r\n <PaginatorComponent\r\n loadMoreButton={!lightVersion}\r\n scrollToRef={containerInnerRef}\r\n paramNames={paramNames as FilterParamsNames}\r\n onPageCount={onPageCount}\r\n totalCount={count}\r\n isLoading={isLoading}\r\n extraButtons={extraButtons} /> :\r\n extraButtons && !isEmpty ?\r\n <FlexBox className=\"paginator__container\">\r\n <div className=\"paginator__container__buttons\">\r\n {extraButtons}\r\n </div>\r\n </FlexBox> : null\r\n }\r\n </>\r\n );\r\n}\r\n\r\nexport default React.memo(Table);\r\n","import { FC, ReactElement, ReactNode, useMemo } from \"react\"\r\nimport { useDependentCollectionManager, useListFrameBase } from \"@store/collectionStore\";\r\nimport Table from \"@components/Table/Table\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailLinkFactory } from \"@components/Table/TableRow\";\r\nimport React from \"react\";\r\nimport { ListFrameBaseProps } from \"./Types\";\r\nimport { AttrMapping, AttrName, IData } from \"@utils/AttrMapping\";\r\nimport { useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport { useArrayMemo } from \"@utils/ReactUtils\";\r\nimport { ListFrameButton } from \"@components/Table/Buttons/Types\";\r\nimport { MaybeArray, toArray } from \"@utils/ArrayHelper\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nexport type DependentListFrameProps<T extends IData, Mapping extends AttrMapping = AttrMapping> = ListFrameBaseProps<Mapping> & {\r\n conditionParams: MaybeArray<AttrName<T>>;\r\n}\r\n\r\nconst DependentListFrameBase = <T extends IData = IData, Mapping extends AttrMapping = AttrMapping>({\r\n condition,\r\n conditionParams,\r\n listFrameKey,\r\n orderBy,\r\n fulltextAttributes,\r\n onPageCount,\r\n skeletonCount,\r\n detailLinkFactory,\r\n extraButtons,\r\n columns,\r\n ...restProps\r\n}: DependentListFrameProps<T, Mapping>) => {\r\n const { t } = useLocalization();\r\n const { attrMapping, paramNames } = restProps;\r\n const { getAttr } = useDetailFrameContext();\r\n if (onPageCount === undefined)\r\n onPageCount = 10;\r\n onPageCount ??= undefined;\r\n\r\n const params = useArrayMemo(toArray(conditionParams).map(p => getAttr(p)?.value));\r\n const { orderBy: newOrderBy, filterHiddenColumns, onSortClickCallback } = useListFrameBase({ paramNames, orderBy, columns, mapping: restProps.attrMapping });\r\n\r\n const {\r\n collectionInfo,\r\n fetchCount,\r\n condition: finalCondition,\r\n conditionParams: finalConditionParams\r\n } = useDependentCollectionManager({\r\n attrMapping,\r\n condition,\r\n conditionParams: params,\r\n attributes: [\r\n ...columns.map(col => col.attrName.toString()),\r\n ...detailLinkFactory?.additionalAttriubtes ?? []\r\n ],\r\n key: listFrameKey,\r\n onPage: onPageCount,\r\n paramNames,\r\n fulltextAttributes,\r\n orderBy: newOrderBy,\r\n });\r\n\r\n const match = useRouteMatch();\r\n\r\n const newDetailLinkFactory = useMemo<DetailLinkFactory | undefined>(\r\n () => detailLinkFactory ? data => detailLinkFactory({ data, match, t }) : undefined,\r\n [detailLinkFactory, match, t]);\r\n\r\n const extraButtonNodes = useMemo<ReactNode[] | undefined>(() => extraButtons?.map((ToolbarButton: ListFrameButton, i) => (\r\n <ToolbarButton\r\n key={i}\r\n condition={finalCondition}\r\n conditionParams={finalConditionParams}\r\n classname={attrMapping.objectName} />\r\n )), [finalCondition, finalConditionParams]);\r\n\r\n skeletonCount ??= 1;\r\n\r\n if (collectionInfo?.isLoadMore) {\r\n skeletonCount = fetchCount;\r\n }\r\n\r\n return (\r\n <Table\r\n {...restProps}\r\n columns={filterHiddenColumns}\r\n collectionInfo={collectionInfo}\r\n skeletonCount={skeletonCount}\r\n onPageCount={onPageCount}\r\n extraButtons={extraButtonNodes}\r\n detailLinkFactory={newDetailLinkFactory}\r\n onSortClick={onSortClickCallback}\r\n orderBy={newOrderBy} />\r\n );\r\n};\r\n\r\n(DependentListFrameBase as FC).displayName = 'DependentListFrame';\r\nconst DependentListFrame = React.memo(DependentListFrameBase) as typeof DependentListFrameBase;\r\n\r\nexport const DependentListFrameTyped = <T extends IData>() => DependentListFrame as <Mapping extends AttrMapping>(props: DependentListFrameProps<T, Mapping>) => ReactElement;\r\n\r\nexport default DependentListFrame;","import { UseLocalizationTextType } from \"@store/localizationStore\";\r\nimport { IData } from \"@utils/AttrMapping\";\r\nimport { useCallback } from \"react\";\r\nimport { ListFrameDetailLinkFactory } from \"./Types\";\r\n\r\nexport const getDetailIdLink =\r\n <TData extends IData = IData>(url: string, titleFactory?: (data: TData, t: UseLocalizationTextType) => string): ListFrameDetailLinkFactory<TData> =>\r\n ({ data, match, t }) => {\r\n return {\r\n url: `${match?.url}/${url}/${data.id}`,\r\n title: titleFactory?.(data, t) ?? ''\r\n }\r\n };\r\n\r\nexport const useDetailIdLink = <TData extends IData = IData>(url: string, titleFactory?: (data: TData, t: UseLocalizationTextType) => string) =>\r\n useCallback(getDetailIdLink(url, titleFactory), []);\r\n","import { TableColumn, TableProps } from \"@components/Table/Table\";\r\nimport { ListFrameButton } from \"@components/Table/Buttons/Types\";\r\nimport { match } from \"react-router\";\r\nimport { MaybeArray } from \"@utils/ArrayHelper\";\r\nimport { AttrMapping, AttrName, IData } from \"@utils/AttrMapping\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { OrderBy } from \"@utils/OrderByUtils\";\r\nimport { UseLocalizationTextType } from \"@store/localizationStore\";\r\nimport { FulltextAttr } from \"@utils/FilterCondition\";\r\n\r\nexport type ListFrameColumn<TData extends IData = IData> = TableColumn<TData>;\r\nexport type ListFrameColumns<TData extends IData = IData> = ListFrameColumn<TData>[];\r\n\r\nexport const columnWidths = {\r\n dateTime: 140,\r\n date: 120,\r\n ico: 80,\r\n zpCode: 155,\r\n stat: 100\r\n} as const;\r\n\r\nexport type DetailLink = {\r\n url: string | null | undefined;\r\n title?: string;\r\n}\r\n\r\nexport type ListFrameDetailLinkFactoryProps<T extends IData = IData> = {\r\n data: T;\r\n match: match<UrlParamObject>;\r\n t: UseLocalizationTextType;\r\n}\r\nexport type ListFrameDetailLinkFactory<T extends IData = IData> = {\r\n (props: ListFrameDetailLinkFactoryProps<T>): DetailLink;\r\n additionalAttriubtes?: AttrName<T>[];\r\n};\r\n\r\nexport type AttrModel<Model> = Model extends AttrMapping<infer T> ? T : IData;\r\n\r\nexport type ListFrameBaseProps<Mapping extends AttrMapping> = Omit<TableProps<Mapping>, 'collectionInfo' | 'detailLinkFactory' | 'toolbarButtons'> & {\r\n condition?: string;\r\n listFrameKey: string;\r\n detailLinkFactory?: Mapping extends AttrMapping<infer T> ? ListFrameDetailLinkFactory<T> : ListFrameDetailLinkFactory<any>;\r\n extraButtons?: ListFrameButton[];\r\n orderBy?: MaybeArray<OrderBy<AttrName<AttrModel<Mapping>>>>;\r\n fulltextAttributes?: FulltextAttr[];\r\n}\r\n","import { ReactNode, useMemo } from \"react\"\r\nimport { useCollectionManager, useListFrameBase } from \"@store/collectionStore\";\r\nimport Table, { TableProps, DetailLinkFactory } from \"@components/Table\";\r\nimport { ListFrameBaseProps } from \"./Types\";\r\nimport { ListFrameButton } from \"@components/Table/Buttons/Types\";\r\nimport { AttrMapping } from \"@utils/AttrMapping\";\r\nimport React from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nexport type ListFrameProps<Mapping extends AttrMapping = AttrMapping> = ListFrameBaseProps<Mapping> &\r\n Required<Pick<TableProps<Mapping>, 'paramNames'>> & Pick<TableProps<Mapping>, 'onPageCount'>;\r\n\r\nconst ListFrame = <Mapping extends AttrMapping = AttrMapping>({\r\n condition,\r\n listFrameKey,\r\n orderBy,\r\n fulltextAttributes,\r\n skeletonCount,\r\n detailLinkFactory,\r\n extraButtons,\r\n onPageCount,\r\n columns,\r\n ...restProps\r\n}: ListFrameProps<Mapping>) => {\r\n const { t } = useLocalization();\r\n const { attrMapping, paramNames } = restProps;\r\n if (onPageCount === undefined) {\r\n onPageCount = 10;\r\n }\r\n onPageCount ??= undefined;\r\n \r\n const { orderBy: newOrderBy, filterHiddenColumns, onSortClickCallback } = useListFrameBase({ paramNames, orderBy, columns, mapping: restProps.attrMapping });\r\n\r\n const {\r\n collectionInfo,\r\n fetchCount,\r\n condition: finalCondition,\r\n conditionParams: finalConditionParams,\r\n match\r\n } = useCollectionManager({\r\n attrMapping,\r\n condition,\r\n attributes: [\r\n ...columns.map(col => col.attrName.toString()),\r\n ...detailLinkFactory?.additionalAttriubtes ?? []\r\n ],\r\n key: listFrameKey,\r\n onPage: onPageCount,\r\n paramNames,\r\n fulltextAttributes,\r\n orderBy: newOrderBy\r\n });\r\n\r\n const newDetailLinkFactory = useMemo<DetailLinkFactory | undefined>(\r\n () => detailLinkFactory ? data => detailLinkFactory({ data, match, t }) : undefined,\r\n [detailLinkFactory, match, t]);\r\n\r\n const extraButtonsNodes = useMemo<ReactNode[] | undefined>(() => extraButtons?.map((ToolbarButton: ListFrameButton, i) => (\r\n <ToolbarButton\r\n key={i}\r\n condition={finalCondition}\r\n conditionParams={finalConditionParams as string[]}\r\n classname={attrMapping.objectName} />\r\n )), [finalCondition, finalConditionParams]);\r\n\r\n if (skeletonCount == null || collectionInfo?.isLoadMore) {\r\n skeletonCount = fetchCount;\r\n }\r\n\r\n return (\r\n <Table\r\n {...restProps}\r\n columns={filterHiddenColumns}\r\n collectionInfo={collectionInfo}\r\n skeletonCount={skeletonCount}\r\n detailLinkFactory={newDetailLinkFactory}\r\n extraButtons={extraButtonsNodes}\r\n onSortClick={onSortClickCallback}\r\n orderBy={newOrderBy}\r\n />\r\n );\r\n};\r\n\r\nexport default React.memo(ListFrame) as typeof ListFrame;\r\n","import { getDetailIdLink, ListFrameDetailLinkFactory } from \"@components/ListFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { IDNSystemiModel } from \"@models/IDNSystemModel\";\r\nimport { IInfoUverejneniModel } from \"@models/IInfoUVerejneniModel\";\r\nimport { IPolozkaPredmetuHistModel } from \"@models/IPolozkaPredmetuHistModel\";\r\nimport { IProfilZadavateleModel } from \"@models/IProfilZadavateleModel\";\r\nimport { ISubjektModel } from \"@models/ISubjektModel\";\r\nimport { ISystemKvalifikaceModel } from \"@models/ISystemKvalifikaceModel\";\r\nimport { IUverejnenyDokumModel } from \"@models/IUverejnenyDokumModel\";\r\nimport { IZpModel } from \"@models/IZpModelHist\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { match } from \"react-router\";\r\n\r\nconst getZPUrl = (kod: string | null, isCast?: boolean) => `${isCast ? urlConstants.verejneZakazkyCastiDetail.url : urlConstants.verejneZakazkyDetail.url}/${kod?.replace(/\\//g, '-')}`\r\n\r\nconst getZpDetailUrl = (zpKod: string | null, match: match<UrlParamObject>, excludeLoop?: boolean, isCast?: boolean) => {\r\n const isFromVZ = excludeLoop && ((match?.url.includes(urlConstants.verejneZakazkyDetail.url)\r\n || match?.url.includes(urlConstants.verejneZakazkyCastiDetail.url)) ?? false);\r\n return `${isFromVZ ? urlConstants.verejneZakazky.url(match) : match?.url}/${getZPUrl(zpKod, isCast)}`;\r\n};\r\n\r\nconst getDnsDetailUrl = (dnsId: number | null, match: match<UrlParamObject>, excludeLoop?: boolean) => {\r\n const isFromDNS = excludeLoop && (match?.url.includes(urlConstants.registrDnsDetail.url) ?? false);\r\n return `${(isFromDNS ? urlConstants.registrDns.url(match) : match?.url)}/${urlConstants.registrDnsDetail.url}/${dnsId}`;\r\n};\r\n\r\nconst getSubjektDetailUrl = (subjId: number | null, match: match<UrlParamObject>, excludeLoop?: boolean) => {\r\n const isFromSubjekt = excludeLoop && (match?.url.includes(urlConstants.subjektDetail.url) ?? false);\r\n return `${(isFromSubjekt ? urlConstants.registrZadavatelu.url(match) : match?.url)}/${urlConstants.subjektDetail.url}/${subjId}`;\r\n};\r\n\r\nconst getProfilDetailUrl = (profId: number | string | null, match: match<UrlParamObject>, excludeLoop?: boolean, replaceProfil?: boolean) => {\r\n const isFromProfil = excludeLoop && (match?.url.includes(urlConstants.profilZadavateleDetail.url) ?? false);\r\n return !replaceProfil\r\n ? `${(isFromProfil ? urlConstants.profilyZadavateluPlatne.url(match) : match?.url)}/${urlConstants.profilZadavateleDetail.url}/${profId}`\r\n : `${match?.url.substring(0, match?.url.lastIndexOf(urlConstants.profilZadavateleDetail.url) + urlConstants.profilZadavateleDetail.url.length)}/${profId}`\r\n};\r\n\r\nconst getLfZpDetailLinkFactory = (excludeLoop?: boolean, isCast?: boolean): ListFrameDetailLinkFactory<IZpModel> =>\r\n ({ data, match, t }) => {\r\n return {\r\n url: getZpDetailUrl(data?.kod, match, excludeLoop, isCast),\r\n title: `${t('NEN-748840')} ${data.nazev}`\r\n };\r\n };\r\n\r\nconst getDnsDetailLinkFactory = (excludeLoop?: boolean): ListFrameDetailLinkFactory<IDNSystemiModel> =>\r\n ({ data, match, t }) => {\r\n return {\r\n url: getDnsDetailUrl(data?.id, match, excludeLoop),\r\n title: `${t('NEN-748840')} ${data.nazev}`\r\n };\r\n };\r\n\r\nconst getDetailInfoUverejneniLinkFactory = (excludeLoop?: boolean): ListFrameDetailLinkFactory<IInfoUverejneniModel> => \r\n ({ data, match, t }) => {\r\n const isFromInfo = excludeLoop && (match?.url.includes(urlConstants.detailInfoUver.url) ?? false);\r\n return {\r\n url: `${(isFromInfo ? urlConstants.vestnik.url(match) : match?.url)}/${urlConstants.detailInfoUver.url}/${data.id}`,\r\n title: `${t('NEN-748840')} ${data.nazev} ${data.text}`\r\n };\r\n };\r\n\r\nconst getSkDetailLinkFactory = () =>\r\n getDetailIdLink<ISystemKvalifikaceModel>(urlConstants.registrSKDetail.url, (data, t) => `${t('NEN-748840')} ${data.skNazev}`);\r\n\r\nconst getDetailUverejneniLinkFactory = () =>\r\n getDetailIdLink<IDetailUverejneniModel>(urlConstants.detailDetailUver.url, (data, t) => `${t('NEN-748840')} ${data.textVysvetleni || data.uredniNazev}`);\r\n\r\nconst getUverDokumLinkFactory = () =>\r\n getDetailIdLink<IUverejnenyDokumModel>(urlConstants.detailUverDokum.url, (data, t) => `${t('NEN-748840')} ${data.nazev}`);\r\n\r\nconst getDetailExtPodpisLinkFactory = () =>\r\n getDetailIdLink<IUverejnenyDokumModel>(urlConstants.detailExtPodpis.url, (data, t) => `${t('NEN-748840')} ${data.nazev}`);\r\n\r\nconst getDetailPolozkaPredmetuLinkFactory = () =>\r\n getDetailIdLink<IPolozkaPredmetuHistModel>(urlConstants.detailDetailPolozkaPredm.url, (data, t) => `${t('NEN-748840')} ${data.nazevPolozky}`);\r\n\r\nconst getDetailDodInfoLinkFactory = () =>\r\n getDetailIdLink<IInfoUverejneniModel>(urlConstants.detailDodInfo.url, (data, t) => `${t('NEN-748840')} ${data.predmet}`);\r\n\r\nconst getDetailUdajePodaniLinkFactory = () =>\r\n getDetailIdLink<IInfoUverejneniModel>(urlConstants.detailUdajePod.url, (data, t) => `${t('NEN-748840')} ${data.predmet}`);\r\n\r\nconst getDetailSubjektLinkFactory = () =>\r\n getDetailIdLink<ISubjektModel>(urlConstants.subjektDetail.url, (data, t) => `${t('NEN-748840')} ${data.nazevOrganizace}`);\r\n\r\nconst getDetailDodInfoSonLinkFactory: ListFrameDetailLinkFactory<IDetailUverejneniModel> = ({ data, match, t }) => {\r\n return {\r\n url: `${match?.url}/${urlConstants.detailDodInfo.url}/${data.idInfoUver}`,\r\n title: `${t('NEN-748840')} ${data.predmetInfo}`\r\n };\r\n};\r\n\r\nconst getProfilZadavateleDetailLinkFactory = (excludeLoop?: boolean, replaceProfil?: boolean): ListFrameDetailLinkFactory<IProfilZadavateleModel> => {\r\n const factory: ListFrameDetailLinkFactory<IProfilZadavateleModel> = ({ data, match, t }) => {\r\n return {\r\n url: getProfilDetailUrl(data.adresaProfilu?.split('/').pop() ?? '', match, excludeLoop, replaceProfil),\r\n title: `${t('NEN-748840')} ${data.nazevOrganizace}`\r\n };\r\n }\r\n factory.additionalAttriubtes = ['adresaProfilu'];\r\n return factory;\r\n};\r\n\r\nexport const detailLinks = {\r\n getZpDetailUrl,\r\n getDnsDetailUrl,\r\n getSubjektDetailUrl,\r\n getProfilDetailUrl,\r\n getLfZpDetailLinkFactory,\r\n getDnsDetailLinkFactory,\r\n getDetailInfoUverejneniLinkFactory,\r\n getSkDetailLinkFactory,\r\n getDetailUverejneniLinkFactory,\r\n getUverDokumLinkFactory,\r\n getDetailPolozkaPredmetuLinkFactory,\r\n getDetailDodInfoLinkFactory,\r\n getDetailUdajePodaniLinkFactory,\r\n getDetailDodInfoSonLinkFactory,\r\n getProfilZadavateleDetailLinkFactory,\r\n getDetailSubjektLinkFactory,\r\n getDetailExtPodpisLinkFactory\r\n};","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IPolozkyDNSModel = IData & {\r\n nazevPolozky: string;\r\n mnozstvi: number;\r\n vlastniJednotka: number;\r\n}\r\n\r\nexport const PolozkyDNSAttrMap = new AttrMapping<IPolozkyDNSModel>('Polozky_DNS', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'mnozstvi', serverName: 'Mnozstvi', type: 'number' },\r\n { clientName: 'nazevPolozky', serverName: 'Nazev_polozky', type: 'string' },\r\n { clientName: 'vlastniJednotka', serverName: 'Vlastni_jednotka', type: 'number' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IDodavateleDNSModel = IData & {\r\n dodICO: string;\r\n dodNazev: string;\r\n}\r\n\r\nexport const DodavateleDNSAttrMap = new AttrMapping<IDodavateleDNSModel>('Registrovany_dodav', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'dodICO', serverName: 'Dodavatel.ICO', type: 'string' },\r\n { clientName: 'dodNazev', serverName: 'Dodavatel.Nazev', type: 'string' },\r\n]);\r\n","import { useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useDescriptionManager } from \"@store/nodeContextStore\";\r\nimport { AttrName, IData } from \"@utils/AttrMapping\";\r\n\r\nexport const useDescription = (text: string) => {\r\n useDescriptionManager().content = text;\r\n}\r\n\r\nexport type DetailDescriptionParams<T extends IData> = {\r\n lockey: string,\r\n attrName?: AttrName<T>\r\n}\r\nexport const useDetailDescription = <T extends IData>(prms: DetailDescriptionParams<T>[]) => {\r\n const { t } = useLocalization();\r\n const { getAttr } = useDetailFrameContext<T>();\r\n const text = prms.reduce((acc, curr) =>\r\n `${acc} ${t(curr.lockey)}${curr.attrName ? ': ' + getAttr(curr.attrName)?.value : ''}.`,\r\n '').trim();\r\n\r\n useDescription(text);\r\n}\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IInfoUverejneniModel = IData & {\r\n blizsiOduvod: string;\r\n cpvKod: string;\r\n datumUverejneni: Date;\r\n datumOduver: Date;\r\n datumZrus: Date;\r\n dnsDny: number;\r\n dnsMesic: number;\r\n dnsNazev: string;\r\n dnsPocetDod: number;\r\n dnsPredmet: string;\r\n dnsRok: number;\r\n dodinfo: number;\r\n druhZRNazev: string;\r\n ico: string;\r\n kod: string;\r\n kodDI: string;\r\n nazev: string;\r\n nazevDI: string;\r\n oduvod: string;\r\n oduvodZrus: string;\r\n oduverejnil: string;\r\n predmet: string;\r\n strukturovanaPZ: boolean;\r\n terminUkonceni: Date;\r\n text: string;\r\n uredniNazev: string;\r\n ustanoveni: string;\r\n zadavatelNazev: string;\r\n zadavatelID: number;\r\n zakazka: string;\r\n fullTextFiltr: string;\r\n}\r\n\r\nexport const InfoUverejneniAttrMap = new AttrMapping<IInfoUverejneniModel>('Info_uverejneni', [\r\n { clientName: 'blizsiOduvod', serverName: 'Blizsi_oduvodneni', type: 'string' },\r\n { clientName: 'cpvKod', serverName: 'Historie.CPV_predmetu.Kod', type: 'string' },\r\n { clientName: 'dodinfo', serverName: 'Dod_info', type: 'id' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'kod', serverName: 'Historie.Kod', type: 'string' },\r\n { clientName: 'kodDI', serverName: 'Dod_info.Kod', type: 'string' },\r\n { clientName: 'datumUverejneni', serverName: 'Datum_uverejneni', type: 'dateTime' },\r\n { clientName: 'datumOduver', serverName: 'Datum_oduverejneni', type: 'dateTime' },\r\n { clientName: 'datumZrus', serverName: 'Datum_zruseni_ZR', type: 'dateTime' },\r\n { clientName: 'dnsDny', serverName: 'Delka_trvani_dny', type: 'number' },\r\n { clientName: 'dnsMesic', serverName: 'Delka_trvani_mesice', type: 'number' },\r\n { clientName: 'dnsNazev', serverName: 'Nazev_DNS', type: 'string' },\r\n { clientName: 'dnsPocetDod', serverName: 'Pocet_dodavatelu', type: 'number' },\r\n { clientName: 'dnsPredmet', serverName: 'Predmet', type: 'text' },\r\n { clientName: 'dnsRok', serverName: 'Delka_trvani_roky', type: 'number' },\r\n { clientName: 'druhZRNazev', serverName: 'Historie.Druh_ZR.Nazev', type: 'string' },\r\n { clientName: 'ico', serverName: 'IC', type: 'string' },\r\n { clientName: 'nazev', serverName: 'Historie.Nazev', type: 'string' },\r\n { clientName: 'nazevDI', serverName: 'Dod_info.Nazev', type: 'string' },\r\n { clientName: 'oduvod', serverName: 'Duvod_zruseni.Oduvodneni', type: 'string' },\r\n { clientName: 'oduvodZrus', serverName: 'Oduvod_zruseni', type: 'string' },\r\n { clientName: 'oduverejnil', serverName: 'Oduverejnil', type: 'string' },\r\n { clientName: 'predmet', serverName: 'Predmet', type: 'string' },\r\n { clientName: 'strukturovanaPZ', serverName: 'Uver_pis_zprava', type: 'bool' },\r\n { clientName: 'terminUkonceni', serverName: 'Termin_ukonceni', type: 'date' },\r\n { clientName: 'text', serverName: 'Text', type: 'string' },\r\n { clientName: 'uredniNazev', serverName: 'Uredni_nazev', type: 'string' },\r\n { clientName: 'ustanoveni', serverName: 'Duvod_zruseni.Ustanoveni', type: 'string' },\r\n { clientName: 'zadavatelNazev', serverName: 'Historie.Zadavatel.Nazev', type: 'string' },\r\n { clientName: 'zadavatelID', serverName: 'Historie.Zadavatel', type: 'id' },\r\n { clientName: 'zakazka', serverName: 'Historie.Kod', type: 'string' },\r\n { clientName: 'fullTextFiltr', serverName: 'Fulltext_filtr', type: 'string' }\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IUverejnenyDokumModel = IData & {\r\n antivir: string;\r\n cisloSmlouva: string;\r\n datumUver: Date;\r\n datumOduverejneni: Date;\r\n datumVlozeni: Date;\r\n format: string;\r\n nazev: string;\r\n nazevPolozky: string;\r\n odkazLW: string;\r\n oduverejnil: string;\r\n podepsan: boolean;\r\n soubor: string;\r\n typDokument: string;\r\n uverejnil: string;\r\n velikost: number;\r\n podpisID: number;\r\n podpisDatumUver: Date;\r\n}\r\n\r\nexport const UverejnenyDokumAttrMap = new AttrMapping<IUverejnenyDokumModel>('Uverejneny_dokum', [\r\n { clientName: 'antivir', serverName: 'AntivirStatus', type: 'string' },\r\n { clientName: 'cisloSmlouva', serverName: 'Evidencni_cislo_sml', type: 'string' },\r\n { clientName: 'datumUver', serverName: 'Info_uver.Datum_uverejneni', type: 'dateTime' },\r\n { clientName: 'datumOduverejneni', serverName: 'Datum_oduverejneni', type: 'dateTime' },\r\n { clientName: 'podpisDatumUver', serverName: 'Podpis.Info_uver.Datum_uverejneni', type: 'dateTime' },\r\n { clientName: 'datumVlozeni', serverName: 'Datum_vlozeni', type: 'dateTime' },\r\n { clientName: 'format', serverName: 'Format', type: 'string' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'nazevPolozky', serverName: 'Polozka.Nazev_polozky', type: 'string' },\r\n { clientName: 'odkazLW', serverName: 'Odkaz_LW', type: 'string' },\r\n { clientName: 'oduverejnil', serverName: 'Oduverejnil', type: 'string' },\r\n { clientName: 'podepsan', serverName: 'Podepsan', type: 'bool' },\r\n { clientName: 'soubor', serverName: 'Soubor', type: 'file',\r\n requiredAttriubtes: ['nazev', 'podepsan'],\r\n typeParam: {\r\n getFileName: (data?, fileName?) => data?.nazev || fileName,\r\n hasDigitalSignarue: (data?) => data?.podepsan,\r\n },\r\n },\r\n { clientName: 'typDokument', serverName: 'typdokument.Nazev', type: 'string' },\r\n { clientName: 'uverejnil', serverName: 'Info_uver.Uverejnil', type: 'string' },\r\n { clientName: 'velikost', serverName: 'Velikost', type: 'number' },\r\n { clientName: 'podpisID', serverName: 'Podpis', type: 'id' },\r\n\r\n]);\r\n","import React from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { ListFrameButtonProps } from \"./Types\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\n\r\nimport './DownloadAllButton.scss';\r\n\r\nexport const DownloadAllButton: React.FC<ListFrameButtonProps> = ({ classname, condition, conditionParams }) => {\r\n const { ts } = useLocalization();\r\n\r\n return (\r\n <ButtonLink className=\"download-all\" to={'/file/getall?prms=' + btoa(JSON.stringify({\r\n classname: classname,\r\n condition: condition || '',\r\n conditionParams: JSON.stringify(conditionParams)\r\n }))} target='_blank' rel='nofollow' isOutlined>\r\n {ts('NEN-812847')}\r\n </ButtonLink>\r\n );\r\n}\r\n\r\nexport const downloadButtonOnly = [DownloadAllButton];\r\n","import React, { FC } from \"react\";\r\nimport { match, useRouteMatch } from \"react-router\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport Tabs from \"@components/Tabs\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { DNSystemAttrMap, IDNSystemiModel } from \"@models/IDNSystemModel\";\r\nimport { IZpModel, ZpAttrMap } from \"@models/IZpModelHist\";\r\nimport { DependentListFrameTyped } from \"@components/ListFrame/DependentListFrame\";\r\nimport { columnWidths, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { IPolozkyDNSModel, PolozkyDNSAttrMap } from \"@models/IPolozkyDNSModel\";\r\nimport { IDodavateleDNSModel, DodavateleDNSAttrMap } from \"@models/IDodavateleDNSModel\";\r\nimport { DetailDescriptionParams, useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { ParsedUrlCondition } from \"@store/breadcrumbTitleStore\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"../../models/IInfoUVerejneniModel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"../../models/IUverejnenyDokumModel\";\r\nimport { downloadButtonOnly } from \"../../components/Table/Buttons/DownloadAllToolbarButton\";\r\n\r\nconst DataLabel = DataLabelTyped<IDNSystemiModel>();\r\nconst DependentListFrame = DependentListFrameTyped<IDNSystemiModel>();\r\n\r\nconst registrDnsDetailLoadkey = 'detail-dns';\r\n\r\nexport const parseDnsUrl = (match: match<UrlParamObject> | null) => {\r\n return (match?.params[urlConstants.registrDnsDetail.detailIdParam] || '');\r\n}\r\n\r\nexport const prepareDnsCondition = (id: string): ParsedUrlCondition => {\r\n return {\r\n condition: 'ID=@0',\r\n conditionParams: [id]\r\n }\r\n}\r\n\r\nconst DetailDNSystem: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const { condition, conditionParams } = prepareDnsCondition(parseDnsUrl(match));\r\n\r\n return (\r\n <DetailFrame\r\n condition={condition}\r\n conditionParams={conditionParams}\r\n attrMapping={DNSystemAttrMap}\r\n loadKey={registrDnsDetailLoadkey}\r\n >\r\n <Tabs tabs={\r\n [\r\n {\r\n lockey: 'NEN-812702',\r\n path: urlConstants.registrDnsDetail.path,\r\n render: () => <DetailDNS />\r\n },\r\n {\r\n lockey: 'NEN-749348',\r\n path: urlConstants.registrDnsPostupy.path,\r\n render: () => <PostupyDNS />\r\n }\r\n ]\r\n } />\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst commonDescriptionParts: DetailDescriptionParams<IDNSystemiModel>[] = [\r\n {\r\n lockey: 'NEN-812716',\r\n attrName: 'nazev',\r\n },\r\n {\r\n lockey: 'NEN-812641',\r\n attrName: 'zadavatelNazev',\r\n },\r\n {\r\n lockey: 'NEN-812597',\r\n attrName: 'predmet',\r\n }\r\n]\r\n\r\nconst DetailDNS: React.FC = () => {\r\n const { getAttr } = useDetailFrameContext<IDNSystemiModel>();\r\n\r\n const match = useRouteMatch(); \r\n\r\n useDetailDescription<IDNSystemiModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812507'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-812716\" attrName='nazev' />\r\n <DataLabel lockey=\"NEN-812641\" attrName='zadavatelNazev' detailLink={detailLinks.getSubjektDetailUrl(getAttr('zadavatelID')?.value, match, true)} />\r\n <DataLabel lockey=\"NEN-812637\" attrName='stav' />\r\n <DataLabel lockey=\"NEN-812705\" attrName='zakazkaKod' detailLink={detailLinks.getZpDetailUrl(getAttr('zakazkaKod')?.value, match, true)} detailLinkShowIf=\"Exists(Zadavaci_postup_hist, Hist=&VZ and aktualni = true)\" />\r\n <DataLabel lockey=\"NEN-812638\" attrName='datumZavedeni' />\r\n <DataLabel lockey=\"NEN-812639\" attrName='terminUkonceni' />\r\n <DataLabel lockey=\"NEN-812840\" attrName='delkaMesic' showIf=\"Delka_trvani_mesice<>null\" />\r\n <DataLabel lockey=\"NEN-812841\" attrName='delkaRok' showIf=\"Delka_trvani_roky<>null\" />\r\n <DataLabel lockey=\"NEN-812640\" attrName='pocetDod' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812597\">\r\n <DataLabel lockey=\"NEN-812717\" attrName='predmet' fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812642\" fillContent>\r\n <ListFrameKomodity />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-825609\" fillContent showIf=\"Pristupnost_dodav = !Pristupnost_dodav.Vsichni\" >\r\n <ListFrameDodavatele />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-820438\" fillContent showIf=\"exists(Uverejneny_dokum, (ZP=&VZ or ZP.Hierarchie=&VZ) and Uverejnen=true and (Info_uver.Uverejneni IN['VYZ','JED','NAB','ZP','KD']))\">\r\n <ListFrameZadavaciDokumentace />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-820437\" fillContent showIf=\"exists(Info_uverejneni, ZP=&VZ and Uverejneni IN['DODINFO'] and Platny=true)\">\r\n <ListFrameVysvetleniZD />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst komodityModelColumns: ListFrameColumns<IPolozkyDNSModel> = [\r\n {\r\n attrName: 'nazevPolozky',\r\n locKey: 'NEN-812620'\r\n },\r\n {\r\n attrName: 'mnozstvi',\r\n locKey: 'NEN-812621',\r\n width: 100\r\n },\r\n {\r\n attrName: 'vlastniJednotka',\r\n locKey: 'NEN-812882',\r\n width: 200\r\n }\r\n];\r\n\r\nconst ListFrameKomodity: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={registrDnsDetailLoadkey + '-komodity'}\r\n condition=\"DNS=@0 and smazano <> true\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={PolozkyDNSAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'kom', routeParamName: urlConstants.registrDnsDetail.urlRouteParam })}\r\n columns={komodityModelColumns} />\r\n );\r\n}\r\n\r\nconst dodavateleModelColumns: ListFrameColumns<IDodavateleDNSModel> = [\r\n {\r\n attrName: 'dodNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'dodICO',\r\n locKey: 'NEN-812665',\r\n width: 260\r\n },\r\n];\r\n\r\nconst ListFrameDodavatele: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={registrDnsDetailLoadkey + '-dodavatele'}\r\n condition=\"DNS=@0 and Platny = true\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={DodavateleDNSAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dod', routeParamName: urlConstants.registrDnsDetail.urlRouteParam })}\r\n columns={dodavateleModelColumns} />\r\n );\r\n}\r\n\r\nconst PostupyDNS: React.FC = () => {\r\n useDetailDescription<IDNSystemiModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812718'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812718\" fillContent>\r\n <ListFrameZakazky />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst zakazkyModelColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812625',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812626'\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-812605',\r\n width: 120\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618'\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: 150\r\n }\r\n];\r\n\r\nconst ListFrameZakazky: FC = () => {\r\n\r\n return (\r\n <DependentListFrame\r\n condition=\"Hist <> null and Hierarchie = null and ((uver_profil = true and aktualni = true) or (uver_vestnik = true and aktualni = true and not exists(Zadavaci_postup_hist,Hist = &Hist and uver_profil = true and aktualni = true))) and not (Exists(DNSystem, VZ = &Hist)) and Hist|Verejna_zakazka.DNS.Existujici_DNS = @0\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IZpModel>({ desc: true, column: \"id\" })}\r\n listFrameKey={registrDnsDetailLoadkey + '-zavedene-zakazky'}\r\n lightVersion\r\n attrMapping={ZpAttrMap}\r\n detailLinkFactory={detailLinks.getLfZpDetailLinkFactory(true)}\r\n paramNames={useStaticObject({ filterParamName: 'zazak', routeParamName: urlConstants.registrDnsDetail.urlRouteParam })}\r\n columns={zakazkyModelColumns} />\r\n );\r\n}\r\nconst vysvetleniZDModelColumns: ListFrameColumns<IInfoUverejneniModel> = [\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'predmet',\r\n locKey: 'NEN-812643'\r\n }\r\n];\r\n\r\nconst ListFrameVysvetleniZD: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={registrDnsDetailLoadkey + '-vysvetleniZD'}\r\n condition=\"ZP = @0 and Uverejneni='DODINFO' and Platny=true\"\r\n conditionParams={['vz']}\r\n orderBy='datumUverejneni'\r\n lightVersion\r\n attrMapping={InfoUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vysvZD', routeParamName: urlConstants.registrDnsDetail.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailDodInfoLinkFactory()}\r\n columns={vysvetleniZDModelColumns} />\r\n );\r\n}\r\nconst zaddokumDNSModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\nconst ListFrameZadavaciDokumentace: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={registrDnsDetailLoadkey + '-zadavaci-dokum-dns'}\r\n condition=\"Info_uver.Uverejneni IN['VYZ','JED','NAB','ZP','KD'] and Uverejnen=true and (Info_uver.ZP=@0 or Info_uver.ZP.Hierarchie=@0) and Polozka=null\"\r\n conditionParams={['vz']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'zdDNS', routeParamName: urlConstants.registrDnsDetail.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={zaddokumDNSModelColumns}\r\n extraButtons={downloadButtonOnly}\r\n />\r\n );\r\n}\r\n\r\nexport default DetailDNSystem;","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IJinaInformaceSubjektuHist = IData & {\r\n poradi: number;\r\n popis: string;\r\n text: string;\r\n}\r\n\r\nexport const JinaInformaceSubjektuHistAttrMap = new AttrMapping<IJinaInformaceSubjektuHist>('Jina_infor_subj_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'poradi', serverName: 'Poradi', type: 'number' },\r\n { clientName: 'popis', serverName: 'Popis', type: 'string' },\r\n { clientName: 'text', serverName: 'Text_informace', type: 'text' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type ITrzisteHist = IData & {\r\n nazev: string;\r\n adresa: string;\r\n adresaProfilu: string;\r\n}\r\n\r\nexport const TrzisteHistAttrMap = new AttrMapping<ITrzisteHist>('Trziste_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'adresa', serverName: 'Internet_adresa', type: 'string' },\r\n { clientName: 'adresaProfilu', serverName: 'Profil_zadavatele', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IProfZadavModel = IData & {\r\n nazev: string;\r\n platiDo: Date;\r\n platiOd: Date;\r\n}\r\n\r\nexport const IProfZadavAttrMap = new AttrMapping<IProfZadavModel>('Profily_zadav', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'platiDo', serverName: 'Plati_DO', type: 'date' },\r\n { clientName: 'platiOd', serverName: 'Plati_OD', type: 'date' },\r\n]);\r\n","import { DataLabelTyped } from \"@components/DataLabel\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { IProfilZadavateleModel } from \"@models/IProfilZadavateleModel\";\r\nimport React from \"react\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { IJinaInformaceSubjektuHist, JinaInformaceSubjektuHistAttrMap } from \"@models/IJinaInformaceSubjektuHist\";\r\nimport { ITrzisteHist, TrzisteHistAttrMap } from \"@models/ITrzisteModelHist\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { IProfZadavAttrMap, IProfZadavModel } from \"@models/IProfZadavModel\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumn } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\n\r\nconst DataLabel = DataLabelTyped<IProfilZadavateleModel>();\r\nconst DependentListFrame = DependentListFrameTyped<IProfilZadavateleModel>();\r\n\r\nconst detailProfilZadavateleLoadKey = 'detail-profil-zadavatele';\r\n\r\nconst ZakladniInformacePage: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-812506\" attrName='nazevOrganizace' fillGrid/>\r\n <DataLabel lockey=\"NEN-812510\" attrName='doplnekKNazvu' />\r\n <DataLabel lockey=\"NEN-812511\" attrName='ico' />\r\n <DataLabel lockey=\"NEN-812512\" attrName='dic' />\r\n <DataLabel lockey=\"NEN-812513\" attrName='jinyIdentifikátor' />\r\n <DataLabel lockey=\"NEN-812514\" attrName='datumNarozeni' />\r\n <DataLabel lockey=\"NEN-812515\" attrName='rodneCislo' />\r\n <DataLabel lockey=\"NEN-812546\" attrName='pfNazev' />\r\n <DataLabel lockey=\"NEN-778515\" attrName='telefon1' />\r\n <DataLabel lockey=\"NEN-812551\" attrName='telefon2' />\r\n <DataLabel lockey=\"NEN-812552\" attrName='fax' />\r\n <DataLabel lockey=\"NEN-812554\" attrName='email' />\r\n <DataLabel lockey=\"NEN-812553\" attrName='www' />\r\n <DataLabel lockey=\"NEN-812700\" attrName='typSubjektu' />\r\n <DataLabel lockey=\"NEN-812532\" attrName='kategorieZadavatele' />\r\n <DataLabel lockey=\"NEN-812740\" attrName='obrana' />\r\n <DataLabel lockey=\"NEN-812741\" attrName='dominantniVliv' />\r\n <DataLabel lockey=\"NEN-812653\" attrName='relativniCinnost' />\r\n <DataLabel lockey=\"NEN-812742\" attrName='relativniCinnostJinak' />\r\n <DataLabel lockey=\"NEN-812603\" attrName='profilZadavatele' />\r\n <DataLabel lockey=\"NEN-812703\" attrName='dalsiProfil' />\r\n <DataLabel lockey=\"NEN-812666\" attrName='adresaProfilu' />\r\n <DataLabel lockey=\"NEN-812776\" attrName='datumUverejneniVVZ' />\r\n <DataLabel lockey=\"NEN-812774\" attrName='datumVytvoreni' />\r\n <DataLabel lockey=\"NEN-812698\" attrName='evidencniCisloVeVestniku' />\r\n <DataLabel lockey=\"NEN-812726\" attrName='multiprofil' showIf='Prof.Multiprofil = true' />\r\n <DataLabel lockey=\"NEN-812729\" attrName='nazevProfilu' showIf='Prof.Multiprofil = true' />\r\n <DataLabel lockey=\"NEN-769956\" attrName='adresaProfiluMulti' showIf='Prof.Multiprofil = true' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812516\">\r\n <DataLabel lockey=\"NEN-812517\" attrName='obec' />\r\n <DataLabel lockey=\"NEN-812518\" attrName='castObce' />\r\n <DataLabel lockey=\"NEN-812523\" attrName='ulice' />\r\n <DataLabel lockey=\"NEN-812524\" attrName='cisloPopisne' />\r\n <DataLabel lockey=\"NEN-812525\" attrName='cisloOrientacni' />\r\n <DataLabel lockey=\"NEN-812526\" attrName='psc' />\r\n <DataLabel lockey=\"NEN-812527\" attrName='stat' />\r\n <DataLabel lockey=\"NEN-812777\" attrName='nutsKod' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812704\" fillContent showIf=\"Exists(Uverejneny_dokum, Info_uver.misto = 'PROFIL' and Uverejnen = true and Info_uver.Prof = &prof and Info_uver.Subj = &subj)\">\r\n <ListFrameUverejneneDokumenty />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812528\" showIf='Subj.Nazev_uctu <> null or Subj.Predcisli_uctu <> null or Subj.cislo_uctu <> null or Subj.Banka_uctu.Kod<>null or Subj.IBAN<>null or Subj.Banka_uctu.SWIFT<>null'>\r\n <DataLabel lockey=\"NEN-812533\" attrName='nazevUctu' />\r\n <DataLabel lockey=\"NEN-812543\" attrName='predcisliUctu' />\r\n <DataLabel lockey=\"NEN-812544\" attrName='cisloUctu' />\r\n <DataLabel lockey=\"NEN-812503\" attrName='kodBanky' />\r\n <DataLabel lockey=\"NEN-812593\" attrName='iban' />\r\n <DataLabel lockey=\"XG-336210\" attrName='swift' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812696\" fillContent showIf='Exists(Trziste_hist, aktualni = true and Prof = &prof and Subj = &subj)'>\r\n <ListFrameTrziste />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812559\" fillContent showIf='Exists(Jina_infor_subj_hist, aktualni = true and Prof = &prof and Subj = &subj)'>\r\n <ListFrameJinaInformaceSubjektu />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812879\" fillContent showIf='Exists(Profily_zadav, Subj=&Subj)'>\r\n <ListFrameProfZadav />\r\n </GroupBox>\r\n </>\r\n )\r\n}\r\nconst IProfZadavModelColumns: ListFrameColumn<IProfZadavModel>[] = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812827'\r\n },\r\n {\r\n attrName: 'platiOd',\r\n locKey: 'NEN-812574',\r\n width: columnWidths.date,\r\n },\r\n {\r\n attrName: 'platiDo',\r\n locKey: 'NEN-812575',\r\n width: columnWidths.date\r\n }\r\n];\r\n\r\nconst ListFrameProfZadav: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-jiny-profil'}\r\n condition='Subj = @0'\r\n conditionParams={'subjID'}\r\n lightVersion\r\n attrMapping={IProfZadavAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pjprof', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={IProfZadavModelColumns} />\r\n );\r\n}\r\n\r\nconst jinaInformaceSubjektuModelColumns: ListFrameColumn<IJinaInformaceSubjektuHist>[] = [\r\n {\r\n attrName: 'popis',\r\n locKey: 'NEN-812545'\r\n },\r\n {\r\n attrName: 'text',\r\n locKey: 'NEN-812562'\r\n }\r\n];\r\n\r\nconst ListFrameJinaInformaceSubjektu: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-jina-informace-profil'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n lightVersion\r\n attrMapping={JinaInformaceSubjektuHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pjinfo', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={jinaInformaceSubjektuModelColumns} />\r\n );\r\n}\r\n\r\nconst trzisteModelColumns: ListFrameColumn<ITrzisteHist>[] = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812695',\r\n },\r\n {\r\n attrName: 'adresa',\r\n locKey: 'NEN-747452'\r\n },\r\n {\r\n attrName: 'adresaProfilu',\r\n locKey: 'NEN-747453'\r\n }\r\n];\r\n\r\nconst ListFrameTrziste: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-seznam-trzist-profil'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n lightVersion\r\n attrMapping={TrzisteHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'petrz', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={trzisteModelColumns} />\r\n );\r\n}\r\n\r\nconst uverejneneDokumentyModelColumns: ListFrameColumn<IUverejnenyDokumModel>[] = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFrameUverejneneDokumenty: React.FC = () => {\r\n\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-verejne-dokumenty-profil'}\r\n condition=\"Info_uver.misto = 'PROFIL' and Uverejnen = true and Info_uver.Prof = @0 and Info_uver.Subj = @1\"\r\n conditionParams={['profID', 'subjID']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>({desc: true, column: \"datumUver\"})}\r\n lightVersion\r\n paramNames={useStaticObject({ filterParamName: 'pvdok', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n attrMapping={UverejnenyDokumAttrMap}\r\n columns={uverejneneDokumentyModelColumns}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\n\r\n\r\nexport default ZakladniInformacePage;","import { DependencyList, EventHandler, SyntheticEvent, useCallback } from \"react\";\r\n\r\nexport const withPreventDefault = <E extends SyntheticEvent<unknown>, T extends EventHandler<E>>(eventHandler: T): EventHandler<E> => {\r\n return (event: E) => {\r\n event?.preventDefault();\r\n eventHandler?.(event);\r\n };\r\n}\r\n\r\nexport const usePreventDefaultCallback = <E extends SyntheticEvent<unknown>, T extends EventHandler<E>>(eventHandler: T | null | undefined, deps: DependencyList): EventHandler<E> => {\r\n return useCallback((event: E) => {\r\n event?.preventDefault();\r\n eventHandler?.(event);\r\n }, deps);\r\n}\r\n\r\nexport const useStopPropagationCallback = <E extends SyntheticEvent<unknown>, T extends EventHandler<E>>(eventHandler: T | null | undefined, deps: DependencyList): EventHandler<E> => {\r\n return useCallback((event: E) => {\r\n event?.stopPropagation();\r\n eventHandler?.(event);\r\n }, deps);\r\n}\r\n\r\nexport const stopPropagation: EventHandler<SyntheticEvent<unknown>> = (event) => event.stopPropagation();\r\n","import React, { createContext, FC, PropsWithChildren, ReactNode, useCallback, useContext, useEffect, useRef, useState } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { useToggleState } from \"@utils/StateUtils\";\r\nimport { usePreventDefaultCallback, useStopPropagationCallback } from \"@utils/EventUtils\";\r\nimport { useFilterManagerContext } from \"../FilterManager\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport Accordion from \"@components/Accordion\";\r\n\r\nconst cn = setupCn('filter-manager-group');\r\n\r\nexport type FilterManagerGroupProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n header?: ReactNode;\r\n defaultVisible?: boolean;\r\n noTopBorder?: boolean;\r\n}>;\r\n\r\nexport const FilterGroupContext = createContext<(filterName?: string) => void>(() => null);\r\n\r\nconst FilterManagerGroup: FC<FilterManagerGroupProps> = ({\r\n id,\r\n className,\r\n header,\r\n defaultVisible,\r\n noTopBorder,\r\n children\r\n}) => {\r\n const {\r\n filterValues\r\n } = useFilterManagerContext();\r\n const {\r\n handleContentToggle,\r\n isContentHidden,\r\n registerFilterName\r\n } = useFilterGroupExpandToggle({ filterValues, defaultVisible });\r\n return (\r\n <Accordion.Page\r\n id={id}\r\n className={cn.with(className)()}\r\n header={header}\r\n noTopBorder={noTopBorder}\r\n isExpanded={!isContentHidden}\r\n onToggle={handleContentToggle}>\r\n <FilterGroupContext.Provider value={registerFilterName}>\r\n {children}\r\n </FilterGroupContext.Provider>\r\n </Accordion.Page>\r\n );\r\n};\r\n\r\ntype UseFilterGroupExpandToggleProps = {\r\n filterValues: UrlParamObject;\r\n defaultVisible?: boolean;\r\n};\r\n\r\nexport const useFilterGroupExpandToggle = ({ filterValues, defaultVisible }: UseFilterGroupExpandToggleProps) => {\r\n const [isContentHidden, toggleIsContentHidden, setIsContentHidden] = useToggleState(!defaultVisible);\r\n const canAutotoggle = useRef<boolean>(!defaultVisible);\r\n const [filterNames, setFilterNames] = useState<string[]>([]);\r\n const filterGroupContext = useContext(FilterGroupContext);\r\n\r\n useEffect(() => {\r\n if (!canAutotoggle.current) {\r\n return;\r\n }\r\n const isVisible = filterNames.some(a => filterValues[a] != null && filterValues[a] != '');\r\n setIsContentHidden(!isVisible);\r\n }, [filterNames]);\r\n\r\n const registerFilterName = useCallback((filterName?: string) => {\r\n filterGroupContext?.(filterName);\r\n setFilterNames(prevFilterNames => {\r\n if (filterName && !prevFilterNames.includes(filterName)) {\r\n return [...prevFilterNames, filterName];\r\n }\r\n return prevFilterNames;\r\n })\r\n }, [filterGroupContext]);\r\n\r\n const handleContentToggle = useStopPropagationCallback(\r\n usePreventDefaultCallback(() => {\r\n canAutotoggle.current = false;\r\n toggleIsContentHidden();\r\n }, []),\r\n []);\r\n\r\n return { isContentHidden, registerFilterName, handleContentToggle };\r\n}\r\n\r\nexport const useFilterGroupRegister = (filterName?: string) => {\r\n const filterGroupContext = useContext(FilterGroupContext);\r\n useEffect(() => filterGroupContext(filterName), []);\r\n}\r\n\r\nexport default React.memo(FilterManagerGroup);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Button from \"@components/Button/Button\";\r\n\r\nconst cn = setupCn('filter-apply-button');\r\n\r\nexport type FilterApplyButtonProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n onMouseDown?: React.MouseEventHandler<HTMLButtonElement>;\r\n}>;\r\n\r\nconst FilterApplyButton: FC<FilterApplyButtonProps> = ({\r\n id,\r\n className,\r\n onClick,\r\n onMouseDown\r\n}) => {\r\n const { d, ts } = useLocalization();\r\n id = `${id}__search`\r\n return (\r\n <Button\r\n tabIndex={-1}\r\n className={cn.with(className)()}\r\n onMouseDown={onMouseDown}\r\n labelled-by={id}\r\n hasIconOnly\r\n title={d('NEN-765498')}\r\n onClick={onClick}>\r\n <span id={id} className=\"u-sr-only gov-button__label\">\r\n {ts('NEN-765498', { isPrimaryTheme: true })}\r\n </span>\r\n </Button>\r\n );\r\n};\r\n\r\nFilterApplyButton.displayName = 'FilterApplyButton';\r\n\r\nexport default React.memo(FilterApplyButton);\r\n","import React, { createContext, FC, KeyboardEventHandler, MouseEventHandler, PropsWithChildren, ReactElement, ReactNode, useContext } from \"react\";\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport './FormControl.scss';\r\n\r\nconst cn = setupCn('gov-form-control');\r\n\r\nconst NoContainer: FC = ({ children }) => children as ReactElement ?? null;\r\n\r\nexport type FormControlContextType = {\r\n labelClassName?: Classes;\r\n defaultPlaceholder?: string;\r\n isInputStandalone?: boolean;\r\n afterContainer?: ReactNode;\r\n};\r\n\r\nexport const FormControlContext = createContext<FormControlContextType>({});\r\n\r\nexport type FormControlBaseProps = {\r\n className?: Classes;\r\n headerText?: ReactNode;\r\n headerTitle?: string;\r\n hasError?: boolean;\r\n isInversed?: boolean;\r\n title?: string;\r\n onFormControlKeyUp?: KeyboardEventHandler<HTMLDivElement>;\r\n onFormControlClick?: MouseEventHandler<HTMLDivElement>;\r\n defaultBehaviorUnset?: boolean;\r\n}\r\n\r\nexport type FormControlProps = FormControlBaseProps & PropsWithChildren<{\r\n labelFor?: string;\r\n afterLabel?: ReactNode;\r\n isCustom?: boolean;\r\n container?: FC;\r\n notEmpty?: boolean;\r\n isTime?: boolean;\r\n isDate?: boolean;\r\n hidden?: boolean;\r\n}>;\r\n\r\nconst FormControl: FC<FormControlProps> = ({\r\n labelFor,\r\n headerText,\r\n headerTitle,\r\n notEmpty,\r\n title,\r\n afterLabel,\r\n className,\r\n container: ControlContainer,\r\n isCustom,\r\n hasError,\r\n isDate,\r\n isTime,\r\n onFormControlKeyUp,\r\n onFormControlClick,\r\n isInversed,\r\n defaultBehaviorUnset,\r\n hidden,\r\n children\r\n}) => {\r\n ControlContainer ??= NoContainer;\r\n const { labelClassName, afterContainer } = useContext(FormControlContext);\r\n headerTitle ??= typeof headerText == 'string' ? headerText : undefined;\r\n return (\r\n <div\r\n title={title}\r\n onKeyUp={onFormControlKeyUp}\r\n onClick={onFormControlClick}\r\n className={cn.with(className, {\r\n 'not-empty': notEmpty || isTime || isDate, // s novÄ›jÅ¡Ã verzà design-system, než 3.0 odstranit isTime || isDate\r\n 'default-behaviour-unset': defaultBehaviorUnset || isTime || isDate\r\n }).main({\r\n '--custom': isCustom,\r\n '--error': hasError,\r\n '--inversed': isInversed,\r\n '--hidden': hidden,\r\n '__timepicker': isTime,\r\n '__datepicker': isDate\r\n })}>\r\n <ControlContainer>\r\n {children}\r\n {\r\n headerText &&\r\n <label className={cn.with(labelClassName)('__label')} title={headerTitle} htmlFor={labelFor}>{headerText}</label>\r\n }\r\n {afterLabel}\r\n </ControlContainer>\r\n {afterContainer}\r\n </div>\r\n );\r\n};\r\n\r\nFormControl.displayName = 'FormControl';\r\n\r\nexport default React.memo(FormControl);\r\n","import React, { ChangeEventHandler, FC, FormEventHandler, KeyboardEventHandler, PropsWithChildren, ReactNode, RefObject, useCallback, useContext, useEffect, useRef, useState } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { ChangeDoneReason, FilterManagerChangeDoneEventHandler, FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport FilterApplyButton from \"@components/FilterManager/FilterApplyButton/FilterApplyButton\";\r\nimport FormControl, { FormControlBaseProps, FormControlContext } from \"@components/FormControl\";\r\nimport './FilterInput.scss';\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { combineRefs } from \"@utils/CombineRefs\";\r\nimport { SwitchByLanguage, useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nconst govCn = setupCn('gov-form-control__input');\r\nconst cn = setupCn('filter-input');\r\n\r\nconst dateInputSettings: SwitchByLanguage<{ lang: string; placeholder: string; }> = {\r\n cz: {\r\n lang: 'cs',\r\n placeholder: 'dd. mm. rrrr',\r\n },\r\n en: {\r\n lang: 'en',\r\n placeholder: 'dd. mm. yyyy',\r\n }\r\n}\r\n\r\nexport type FilterInputProps =\r\n Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, 'onFocus' | 'onBlur'> &\r\n FormControlBaseProps &\r\n PropsWithChildren<{\r\n id: string;\r\n onChange?: FilterManagerChangeEventHandler;\r\n onChangeDone?: FilterManagerChangeDoneEventHandler;\r\n onInputChange?: (sender: HTMLInputElement | undefined, value: string) => void;\r\n onInputChangeDone?: (sender: HTMLInputElement | undefined, value: string) => void;\r\n value?: string;\r\n name?: string;\r\n autoComplete?: string;\r\n onKeyUp?: KeyboardEventHandler<HTMLInputElement>;\r\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\r\n useApplyButton?: boolean;\r\n container?: FC;\r\n afterLabel?: ReactNode;\r\n type?: string;\r\n inputRef?: RefObject<HTMLInputElement>;\r\n placeholder?: string;\r\n buttons?: ReactNode[];\r\n isInline?: boolean;\r\n afterButtons?: ReactNode[];\r\n clearRequesting?: number;\r\n }>;\r\n\r\nconst FilterInput: FC<FilterInputProps> = ({\r\n id,\r\n onChange,\r\n onInputChange,\r\n onInputChangeDone,\r\n onChangeDone,\r\n onKeyUp,\r\n onKeyDown,\r\n autoComplete,\r\n useApplyButton,\r\n buttons,\r\n afterButtons,\r\n value,\r\n type,\r\n name,\r\n container,\r\n onFocus,\r\n onBlur,\r\n inputRef: inputRefProp,\r\n afterLabel,\r\n isInline,\r\n placeholder,\r\n children,\r\n className,\r\n clearRequesting,\r\n ...formControlProps\r\n}) => {\r\n value ??= '';\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n const [actualValue, setActualValue] = useState(value);\r\n const isEmpty = actualValue == '';\r\n\r\n const { defaultPlaceholder, isInputStandalone } = useContext(FormControlContext);\r\n placeholder ??= defaultPlaceholder;\r\n\r\n useEffect(() => {\r\n setActualValue(value ?? '');\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (clearRequesting != null && isEmpty && inputRef.current) {\r\n inputRef.current.value = '';\r\n }\r\n }, [clearRequesting, isEmpty]);\r\n\r\n const handleInput = useCallback<FormEventHandler<HTMLInputElement>>(event => {\r\n //ios clear button fix\r\n // https://github.com/facebook/react/issues/8938\r\n setTimeout(() => {\r\n if (event?.nativeEvent?.target instanceof HTMLInputElement)\r\n event.nativeEvent.target.defaultValue = ''\r\n }, 0);\r\n }, []);\r\n\r\n const handleChange = useCallback<ChangeEventHandler<HTMLInputElement>>(event => {\r\n setActualValue(event.target.value);\r\n onChange?.(event.target.name, event.target.value);\r\n onInputChange?.(event.target, event.target.value);\r\n }, [onChange, onInputChange]);\r\n\r\n const handleChangeDone = useCallback((reason: ChangeDoneReason) => {\r\n const newValue = inputRef.current?.value || '';\r\n setActualValue(newValue);\r\n onChangeDone?.(inputRef.current?.name || name, newValue, reason);\r\n onInputChangeDone?.(inputRef.current ?? undefined, newValue);\r\n }, [onChangeDone, onInputChangeDone, name]);\r\n\r\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(event => {\r\n if (event.key === 'Enter') {\r\n handleChangeDone('enter');\r\n }\r\n onKeyDown?.(event);\r\n }, [handleChangeDone, onKeyDown]);\r\n\r\n const handleApplyClick = useCallback<React.MouseEventHandler>(() => {\r\n handleChangeDone('enter');\r\n }, [handleChangeDone]);\r\n\r\n const handleBlur = useCallback<React.FocusEventHandler<HTMLInputElement>>((event) => {\r\n handleChangeDone('blur');\r\n onBlur?.(event);\r\n }, [handleChangeDone, onBlur]);\r\n\r\n const applyButton = renderIf(useApplyButton,\r\n <FilterApplyButton\r\n id={id}\r\n key='applyButton'\r\n onClick={handleApplyClick} />\r\n );\r\n\r\n const inputAttributes = type == 'date' ? switchByLanguage(dateInputSettings) :\r\n type == 'time' ? { placeholder: 'hh:mm' } :\r\n {};\r\n\r\n return (\r\n <FormControl\r\n {...formControlProps}\r\n container={container}\r\n className={cn.with(className).main({\r\n '--inline': isInline\r\n })}\r\n notEmpty={!isEmpty}\r\n isTime={type == 'time'}\r\n isDate={type == 'date'}\r\n afterLabel={<>\r\n {applyButton}\r\n {afterLabel}\r\n </>}\r\n labelFor={id}>\r\n <input\r\n id={id}\r\n className={govCn.with(cn('__input')).main({\r\n '--standalone': isInputStandalone\r\n })}\r\n ref={combineRefs(inputRef, inputRefProp)}\r\n name={name}\r\n onInput={handleInput}\r\n onFocus={onFocus}\r\n type={type || 'text'}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n onKeyUp={onKeyUp}\r\n autoComplete={autoComplete ?? 'off'}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n value={actualValue}\r\n {...inputAttributes} />\r\n </FormControl>\r\n );\r\n};\r\n\r\nFilterInput.displayName = 'FilterInput';\r\n\r\nexport default React.memo(FilterInput);\r\n","import React, { FC, PropsWithChildren, ReactNode, useEffect } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { useFilterManagerContext } from \"../FilterManager\";\r\nimport FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport { useChangingFilterValue } from \"..\";\r\n\r\nconst cn = setupCn('filter-manager-input');\r\n\r\nexport type FilterManagerInputProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n className?: Classes;\r\n headerText?: ReactNode;\r\n title?: string;\r\n name: TAttr;\r\n}>;\r\n\r\nexport type FilterManagerInputType<TAttr extends string = string> = FC<FilterManagerInputProps<TAttr>>;\r\n\r\nconst FilterManagerInput: FilterManagerInputType = ({\r\n id,\r\n headerText,\r\n className,\r\n title,\r\n name\r\n}) => {\r\n const {\r\n filterValues,\r\n onFilterValueChange,\r\n setIsChanged\r\n } = useFilterManagerContext(name);\r\n const filterValue = (name && filterValues[name]) ?? '';\r\n\r\n const { controlId } = useId({ id: `text-${id ?? name}` });\r\n const { isChanged, setValue, applyValue } = useChangingFilterValue(filterValue, onFilterValueChange);\r\n\r\n useEffect(() => {\r\n setIsChanged(name, isChanged);\r\n }, [name, isChanged, setIsChanged])\r\n\r\n return (\r\n <FilterInput\r\n id={controlId}\r\n headerText={headerText}\r\n title={title}\r\n onChange={setValue}\r\n className={cn.with(className).main()}\r\n name={name}\r\n isInline\r\n value={filterValue}\r\n onChangeDone={applyValue} />\r\n );\r\n};\r\n\r\nFilterManagerInput.displayName = 'FilterManagerInput';\r\n\r\nexport default React.memo(FilterManagerInput);\r\n","import { Stringable } from \"@store/localizationStore\";\r\nimport { Breakpoints } from \"styles/responsibility\";\r\nimport { notEmpty } from \"./ArrayHelper\";\r\n\r\nexport type BreakpointsClassParam = Breakpoints | 'none' |'low'\r\n\r\nexport const breakpointClass = (property: string, breakpoint: BreakpointsClassParam, value?: Stringable): string => {\r\n if (breakpoint == null || breakpoint == 'none') {\r\n return '';\r\n }\r\n const stringValue = value = value?.toString();\r\n const breakpointPart = breakpoint == 'low' ? '' : `-${breakpoint}`;\r\n const valuePart = notEmpty(stringValue) ? `-${stringValue}` : '';\r\n return `${property}${breakpointPart}${valuePart}`;\r\n}\r\n","import React, { ChangeEventHandler, FC, PropsWithChildren } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport FormControl, { FormControlBaseProps } from \"@components/FormControl\";\r\n\r\nconst cn = setupCn('gov-form-control');\r\nconst cnCheckBox = cn.setupSubCn('__checkbox');\r\n\r\nexport type CheckBoxProps = FormControlBaseProps & PropsWithChildren<{\r\n id: string;\r\n name?: string;\r\n isRequired?: boolean;\r\n isDisabled?: boolean;\r\n onChange?: ChangeEventHandler;\r\n value?: string;\r\n isChecked?: boolean;\r\n}>;\r\n\r\nconst CheckBox: FC<CheckBoxProps> = ({\r\n id,\r\n name,\r\n isRequired,\r\n isDisabled,\r\n isChecked,\r\n onChange,\r\n value,\r\n children,\r\n ...formControlProps\r\n}) => {\r\n return (\r\n <FormControl\r\n {...formControlProps}\r\n isCustom\r\n labelFor={id}\r\n afterLabel={<span className={cn('__indicator')} />}>\r\n <input\r\n id={id}\r\n className={cnCheckBox()}\r\n type=\"checkbox\"\r\n name={name}\r\n checked={isChecked}\r\n value={value}\r\n onChange={onChange}\r\n disabled={isDisabled}\r\n aria-required={isRequired}\r\n aria-disabled={isDisabled} />\r\n </FormControl>\r\n );\r\n};\r\n\r\nCheckBox.displayName = 'CheckBox';\r\n\r\nexport default React.memo(CheckBox);\r\n","import React, { ChangeEventHandler, FC, PropsWithChildren, useCallback, useMemo } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport { breakpointClass, BreakpointsClassParam } from \"@utils/ResponsibilityUtils\";\r\nimport Grid from \"@components/Grid\";\r\nimport CheckBox from \"@components/CheckBox\";\r\nimport { bottomSpaceClass } from \"@styles/offsets\";\r\n\r\nconst cn = setupCn('checks');\r\n\r\nexport const VALUES_SEPARATOR = ',';\r\n\r\nexport const checksColumns = ['oneColumn', 'twoColumns', 'threeColumns'] as const;\r\nexport type ChecksColumns = typeof checksColumns[number];\r\n\r\nexport type CheckOrder = { [breakpoint in ChecksColumns]?: number };\r\n\r\nexport type ChecksItem = {\r\n locKey: string;\r\n value: string;\r\n order?: CheckOrder;\r\n}\r\n\r\nexport type ChecksProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n items: ChecksItem[];\r\n oneColumn?: boolean;\r\n value?: string;\r\n onChange?: FilterManagerChangeEventHandler;\r\n name?: string;\r\n}>;\r\n\r\nconst columnsBreakpoints: { [columnsCount in ChecksColumns]: BreakpointsClassParam } = {\r\n oneColumn: 'low',\r\n twoColumns: 'low',\r\n threeColumns: 'mobile-landscape'\r\n};\r\n\r\nconst getItemOrderClasses = (item: ChecksItem) => {\r\n const order = item?.order;\r\n if (order == null) {\r\n return null;\r\n }\r\n return checksColumns.map(columnsCount => {\r\n if (order[columnsCount] != null) {\r\n return breakpointClass('u-order', columnsBreakpoints[columnsCount], order[columnsCount]);\r\n }\r\n });\r\n}\r\n\r\nconst Checks: FC<ChecksProps> = ({\r\n id,\r\n className,\r\n onChange,\r\n oneColumn,\r\n value,\r\n name,\r\n items\r\n}) => {\r\n const { ts, t } = useLocalization();\r\n\r\n const values = value?.split(VALUES_SEPARATOR).filter(v => v) || [];\r\n\r\n const handleCheck = useCallback<ChangeEventHandler<HTMLInputElement>>(event => {\r\n const enumValue = event.target.value;\r\n let newCheckedValues = [...values];\r\n if (event.target.checked) {\r\n if (!newCheckedValues.includes(enumValue)) {\r\n newCheckedValues = [...newCheckedValues, enumValue];\r\n }\r\n } else {\r\n newCheckedValues = newCheckedValues.filter(checkedValue => checkedValue != enumValue);\r\n }\r\n onChange?.(name, newCheckedValues.join(VALUES_SEPARATOR));\r\n }, [value, name, onChange]);\r\n\r\n const orderedItems = useMemo(() => [...items ?? []].sort((a, b) => (a.order?.oneColumn ?? 0) - (b.order?.oneColumn ?? 0)),\r\n [items]);\r\n\r\n return (\r\n <Grid className={cn.with(className)()} isPlain lowerRowSpaces bottomSpace='32' columns={oneColumn ? 1 : 3}>\r\n {\r\n orderedItems?.map((item, index) =>\r\n <CheckBox\r\n key={item.value}\r\n className={[getItemOrderClasses(item), bottomSpaceClass('unset')]}\r\n id={`${id}__${index}`}\r\n title={t(item.locKey)}\r\n headerText={ts(item.locKey)}\r\n value={item.value}\r\n onChange={handleCheck}\r\n isChecked={values.includes(item.value.toString())} />\r\n )\r\n }\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default React.memo(Checks);\r\n","import React, { FC, PropsWithChildren, useMemo } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport Checks, { CheckOrder, ChecksColumns, checksColumns, ChecksItem } from \"@components/Checks\";\r\nimport { useEnumDescriptions } from \"@store/enumDescriptionsStore\";\r\nimport { EnumItem } from \"services/EnumDescriptionService\";\r\nimport { transposeArray } from \"@utils/ArrayHelper\";\r\n\r\nconst cn = setupCn('enum-checks');\r\n\r\nexport type EnumOrder<T = string> = { [columnsCount in ChecksColumns]?: T[] }\r\n\r\nexport const createTransposeOrder = <T extends unknown>(...oneColumnOrder: T[]) => ({\r\n oneColumn: oneColumnOrder,\r\n twoColumns: transposeArray(oneColumnOrder, 2),\r\n threeColumns: transposeArray(oneColumnOrder, 3)\r\n});\r\n\r\nexport type EnumChecksProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n value?: string;\r\n enumName: string;\r\n oneColumn?: boolean;\r\n onChange?: FilterManagerChangeEventHandler;\r\n name?: string;\r\n hiddenValues?: string[];\r\n order?: EnumOrder;\r\n}>;\r\n\r\nconst EnumChecks: FC<EnumChecksProps> = ({\r\n id,\r\n className,\r\n name,\r\n oneColumn,\r\n value,\r\n enumName,\r\n order,\r\n hiddenValues,\r\n onChange\r\n}) => {\r\n const enumDesc = useEnumDescriptions().getEnumDescription(enumName);\r\n\r\n const hiddenValuesMemo = useMemo(\r\n () => (hiddenValues ?? []).map(value => value?.toLowerCase()),\r\n [hiddenValues?.join(',')]);\r\n\r\n const items = useMemo<ChecksItem[]>(\r\n () => {\r\n let filteredItems = enumDesc?.items.filter(item => !hiddenValuesMemo.includes(item.name?.toLowerCase()));\r\n if (!filteredItems) {\r\n return [];\r\n }\r\n const actualOrder = order || createTransposeOrder(...filteredItems.map(item => item.name));\r\n const getItemOrder = (item: EnumItem): CheckOrder => {\r\n const result: CheckOrder = {};\r\n checksColumns.forEach(columnsCount => {\r\n const index = actualOrder?.[columnsCount]?.indexOf(item.name);\r\n if (index != null && index > -1) {\r\n result[columnsCount] = index;\r\n }\r\n });\r\n return result;\r\n }\r\n return filteredItems.map(item => ({\r\n value: item.name,\r\n locKey: item.locKey,\r\n order: getItemOrder(item)\r\n }))\r\n },\r\n [enumDesc, hiddenValuesMemo, order]);\r\n\r\n return (\r\n <Checks\r\n id={id}\r\n className={cn.with(className)()}\r\n onChange={onChange}\r\n name={name}\r\n value={value}\r\n oneColumn={oneColumn}\r\n items={items} />\r\n );\r\n};\r\n\r\nEnumChecks.displayName = 'EnumChecks';\r\n\r\nexport default React.memo(EnumChecks);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport './FilterHeader.scss';\r\n\r\nconst cn = setupCn('filter-header');\r\n\r\nexport type FilterHeaderProps = PropsWithChildren<{\r\n className?: Classes;\r\n withSpace?: boolean;\r\n}>;\r\n\r\nconst FilterHeader: FC<FilterHeaderProps> = ({\r\n className,\r\n withSpace,\r\n children\r\n}) => {\r\n return (\r\n <h3 className={cn.with(className).main({\r\n '--with-space': withSpace\r\n })}>\r\n {children}\r\n </h3>\r\n );\r\n};\r\n\r\nFilterHeader.displayName = 'FilterHeader';\r\n\r\nexport default React.memo(FilterHeader);\r\n","import React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport EnumChecks, { EnumOrder } from \"@components/EnumChecks/EnumChecks\";\r\nimport { useFilterManagerContext } from \"../FilterManager\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport FilterHeader from \"../FilterHeader\";\r\n\r\nconst cn = setupCn('filter-manager-enum');\r\n\r\nexport type FilterManagerEnumProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n headerText?: ReactNode;\r\n className?: Classes;\r\n name: TAttr;\r\n oneColumn?: boolean;\r\n enumName: string;\r\n order?: EnumOrder;\r\n hiddenValues?: string[];\r\n}>;\r\n\r\nexport type FilterManagerEnumType<TAttr extends string = string> = FC<FilterManagerEnumProps<TAttr>>;\r\n\r\nconst FilterManagerEnum: FilterManagerEnumType = ({\r\n id,\r\n className,\r\n headerText,\r\n enumName,\r\n oneColumn,\r\n hiddenValues,\r\n order,\r\n name\r\n}) => {\r\n const {\r\n filterValues,\r\n onFilterValueChange\r\n } = useFilterManagerContext(name);\r\n const { controlId } = useId({ id: `enum-checks-${id ?? name}` });\r\n return (\r\n <div className={cn.with(className).main()}>\r\n <FilterHeader withSpace>{headerText}</FilterHeader>\r\n <EnumChecks\r\n id={controlId}\r\n name={name}\r\n enumName={enumName}\r\n onChange={onFilterValueChange}\r\n value={name && filterValues[name]}\r\n hiddenValues={hiddenValues}\r\n oneColumn={oneColumn}\r\n order={order} />\r\n </div>\r\n );\r\n};\r\n\r\nFilterManagerEnum.displayName = 'FilterManagerEnum';\r\n\r\nexport default React.memo(FilterManagerEnum);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Checks, { ChecksItem } from \"@components/Checks\";\r\nimport { FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\n\r\nconst cn = setupCn('bool-checks');\r\n\r\nconst items: ChecksItem[] = [\r\n {\r\n locKey: 'NEN-738573',\r\n value: 'ano'\r\n },\r\n {\r\n locKey: 'NEN-738574',\r\n value: 'ne'\r\n }\r\n];\r\n\r\nexport type BoolChecksProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n value?: string;\r\n oneColumn?: boolean;\r\n onChange?: FilterManagerChangeEventHandler;\r\n name?: string;\r\n}>;\r\n\r\nconst BoolChecks: FC<BoolChecksProps> = ({\r\n id,\r\n className,\r\n name,\r\n oneColumn,\r\n value,\r\n onChange\r\n}) => {\r\n return (\r\n <Checks\r\n id={id}\r\n className={cn.with(className)()}\r\n onChange={onChange}\r\n name={name}\r\n value={value}\r\n oneColumn={oneColumn}\r\n items={items} />\r\n );\r\n};\r\n\r\nBoolChecks.displayName = 'BoolChecks';\r\n\r\nexport default React.memo(BoolChecks);\r\n","import React, { FC, PropsWithChildren, ReactNode } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport BoolChecks from \"@components/BoolChecks/BoolChecks\";\r\nimport { useFilterManagerContext } from \"../FilterManager\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport FilterHeader from \"../FilterHeader\";\r\n\r\nconst cn = setupCn('filter-manager-bool');\r\n\r\nexport type FilterManagerBoolProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n headerText?: ReactNode;\r\n className?: Classes;\r\n moreColumns?: boolean;\r\n name: TAttr;\r\n}>;\r\n\r\nexport type FilterManagerBoolType<TAttr extends string = string> = FC<FilterManagerBoolProps<TAttr>>\r\n\r\nconst FilterManagerBool: FilterManagerBoolType = ({\r\n id,\r\n className,\r\n name,\r\n moreColumns,\r\n headerText\r\n}) => {\r\n const { controlId } = useId({ id: `date-${id ?? name}` });\r\n\r\n const {\r\n filterValues,\r\n onFilterValueChange\r\n } = useFilterManagerContext(name);\r\n return (\r\n <div className={cn.with(className)()}>\r\n <FilterHeader withSpace>{headerText}</FilterHeader>\r\n <BoolChecks id={controlId} name={name} onChange={onFilterValueChange} value={name && filterValues[name]} oneColumn={!moreColumns} />\r\n </div>\r\n );\r\n};\r\n\r\nFilterManagerBool.displayName = 'FilterManagerBool';\r\n\r\nexport default React.memo(FilterManagerBool);\r\n","import FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport React, { FC, PropsWithChildren, ReactNode, useCallback, useEffect, useState } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { isEmpty, notEmpty } from \"@utils/ArrayHelper\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { getCorrectTime, parseFromtoDateTime as parseFromToDateTime, updateFromToDateTimePart, UpdateFromToDateTimePartParams } from \"@utils/DateUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { ChangeDoneReason, FilterManagerChangeEventHandler, useFilterManagerContext } from \"../FilterManager\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport Grid from \"@components/Grid\";\r\nimport './FilterManagerDate.scss';\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport FilterHeader from \"../FilterHeader\";\r\n\r\nconst cn = setupCn('filter-manager-date');\r\n\r\nexport type FilterManagerDateProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n className?: Classes;\r\n headerText?: ReactNode;\r\n hideTime?: boolean;\r\n name: TAttr;\r\n}>;\r\n\r\nexport type FilterManagerDateType<TAttr extends string = string> = FC<FilterManagerDateProps<TAttr>>;\r\n\r\nconst getApplyValuePart = (date: string, time: string) => {\r\n if (isEmpty(date)) {\r\n return '';\r\n }\r\n time = getCorrectTime(time);\r\n if (notEmpty(time)) {\r\n return `${date}T${time}`;\r\n }\r\n return date;\r\n}\r\n\r\nconst getApplyValue = (value: string) => {\r\n const values = parseFromToDateTime(value);\r\n const from = getApplyValuePart(values.fromDate, values.fromTime);\r\n const to = getApplyValuePart(values.toDate, values.toTime);\r\n if (isEmpty(from) && isEmpty(to)) {\r\n return '';\r\n }\r\n return `${from},${to}`;\r\n}\r\n\r\nconst FilterManagerDate: FilterManagerDateType = ({\r\n id,\r\n className,\r\n name,\r\n hideTime,\r\n headerText\r\n}) => {\r\n const { generateId } = useId({ id: `date-${id ?? name}` });\r\n\r\n const {\r\n filterValues,\r\n onFilterValueChange,\r\n setIsChanged,\r\n clearRequesting,\r\n } = useFilterManagerContext(name);\r\n const { ts } = useLocalization();\r\n const oldValue = (name && filterValues[name]) ?? '';\r\n const [actualValue, setActualValue] = useState(oldValue);\r\n const values = parseFromToDateTime(actualValue);\r\n const actualApplyValue = getApplyValue(actualValue);\r\n const isChanged = oldValue != actualApplyValue;\r\n\r\n const processNewValue = useCallback((updateParams: UpdateFromToDateTimePartParams, reason?: ChangeDoneReason) => {\r\n const newVal = updateFromToDateTimePart(updateParams);\r\n if (reason == 'enter' || reason == 'blur') {\r\n onFilterValueChange(name, getApplyValue(newVal));\r\n }\r\n return newVal;\r\n }, [onFilterValueChange, name]);\r\n\r\n const handleChange = useCallback<FilterManagerChangeEventHandler>((inputName, value, reason?: ChangeDoneReason) => {\r\n switch (inputName) {\r\n case 'from-date':\r\n setActualValue(prevValue => processNewValue({ fromToString: prevValue, fromDate: value }, reason));\r\n return;\r\n case 'from-time':\r\n setActualValue(prevValue => processNewValue({ fromToString: prevValue, fromTime: value }, reason));\r\n return;\r\n case 'to-date':\r\n setActualValue(prevValue => processNewValue({ fromToString: prevValue, toDate: value }, reason));\r\n return;\r\n case 'to-time':\r\n setActualValue(prevValue => processNewValue({ fromToString: prevValue, toTime: value }, reason));\r\n return;\r\n }\r\n }, [processNewValue]);\r\n\r\n useEffect(() => setActualValue(oldValue || ''),\r\n [oldValue]);\r\n\r\n useEffect(() => {\r\n setIsChanged(name, isChanged);\r\n }, [name, isChanged, setIsChanged]);\r\n\r\n return (\r\n <div className={cn.with(className).main()}>\r\n <FilterHeader>{headerText}</FilterHeader>\r\n <Grid columns='3' isPlain>\r\n <FlexBox wrap>\r\n <FilterInput\r\n id={generateId('__from-date')}\r\n headerText={ts('NEN-742321')}\r\n className={cn('__date')}\r\n onChange={handleChange}\r\n onChangeDone={handleChange}\r\n isInline\r\n clearRequesting={clearRequesting}\r\n value={values.fromDate}\r\n name='from-date'\r\n type='date' />\r\n {\r\n renderIf(!hideTime,\r\n <FilterInput\r\n headerText={ts('NEN-765995')}\r\n id={generateId('__from-time')}\r\n className={cn('__time')}\r\n onChange={handleChange}\r\n onChangeDone={handleChange}\r\n isInline\r\n clearRequesting={clearRequesting}\r\n value={values.fromTime}\r\n name='from-time'\r\n type='time' />\r\n )\r\n }\r\n </FlexBox>\r\n <FlexBox wrap>\r\n <FilterInput\r\n headerText={ts('NEN-742322')}\r\n id={generateId('__to-date')}\r\n className={cn('__date')}\r\n onChange={handleChange}\r\n onChangeDone={handleChange}\r\n clearRequesting={clearRequesting}\r\n isInline\r\n value={values.toDate}\r\n name='to-date'\r\n type='date' />\r\n {\r\n renderIf(!hideTime,\r\n <FilterInput\r\n headerText={ts('NEN-765995')}\r\n id={generateId('__to-time')}\r\n className={cn('__time')}\r\n onChange={handleChange}\r\n onChangeDone={handleChange}\r\n clearRequesting={clearRequesting}\r\n isInline\r\n value={values.toTime}\r\n name='to-time'\r\n type='time' />\r\n )\r\n }\r\n </FlexBox>\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nFilterManagerDate.displayName = 'FilterManagerDate';\r\n\r\nexport default React.memo(FilterManagerDate);\r\n","import FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport React, { FC, PropsWithChildren, ReactNode, useCallback, useEffect } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { FilterManagerChangeEventHandler, useFilterManagerContext } from \"../FilterManager\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport Grid from \"@components/Grid\";\r\nimport FilterHeader from \"../FilterHeader\";\r\nimport { useChangingFilterValue } from \"..\";\r\n\r\nconst cn = setupCn('filter-manager-number');\r\n\r\nexport type FilterManagerNumberProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n headerText?: ReactNode;\r\n className?: Classes;\r\n name: TAttr;\r\n}>;\r\n\r\nexport type FilterManagerNumberType<TAttr extends string = string> = FC<FilterManagerNumberProps<TAttr>>;\r\n\r\nconst FilterManagerNumber: FilterManagerNumberType = ({\r\n id,\r\n className,\r\n name,\r\n headerText\r\n}) => {\r\n const { generateId } = useId({ id: `number-${id ?? name}` });\r\n\r\n const {\r\n filterValues,\r\n onFilterValueChange,\r\n setIsChanged\r\n } = useFilterManagerContext(name);\r\n const { ts } = useLocalization();\r\n const oldValue = (name && filterValues[name]) ?? '';\r\n const actualRawValue = oldValue.split(',');\r\n const from = actualRawValue[0];\r\n const to = actualRawValue[1] ?? '';\r\n\r\n const { \r\n isChanged: isFromChanged,\r\n setValue: setFromValue,\r\n } = useChangingFilterValue(from);\r\n\r\n const { \r\n isChanged: isToChanged,\r\n setValue: setToValue,\r\n } = useChangingFilterValue(to);\r\n\r\n const isChanged = isFromChanged || isToChanged;\r\n useEffect(() => {\r\n setIsChanged(name, isChanged);\r\n }, [name, isChanged, setIsChanged])\r\n\r\n const handleChangeDone = useCallback<FilterManagerChangeEventHandler>((inputName, value) => {\r\n const newValue = value.replace(/,/g, '.');\r\n let resultValue = oldValue;\r\n\r\n switch (inputName) {\r\n case 'from':\r\n resultValue = [newValue, oldValue.split(',')[1]].join(',');\r\n break;\r\n case 'to':\r\n resultValue = [oldValue.split(',')[0], newValue].join(',');\r\n break;\r\n }\r\n\r\n const applyValue = ['', ',', null, undefined].includes(resultValue) ? '' : resultValue;\r\n if (applyValue != oldValue) {\r\n onFilterValueChange(name, applyValue);\r\n }\r\n }, [oldValue, name, onFilterValueChange]);\r\n\r\n return (\r\n <div className={cn.with(className).main()}>\r\n <FilterHeader>{headerText}</FilterHeader>\r\n <Grid columns='3' isPlain>\r\n <FilterInput\r\n id={generateId('__from')}\r\n headerText={ts('NEN-742323')}\r\n className={cn('__input')}\r\n onChangeDone={handleChangeDone}\r\n onChange={setFromValue}\r\n isInline\r\n value={from}\r\n name='from'\r\n type='number' />\r\n <FilterInput\r\n headerText={ts('NEN-742324')}\r\n id={generateId('__to')}\r\n className={cn('__input')}\r\n onChangeDone={handleChangeDone}\r\n onChange={setToValue}\r\n isInline\r\n value={to}\r\n name='to'\r\n type='number' />\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nFilterManagerNumber.displayName = 'FilterManagerNumber';\r\n\r\nexport default React.memo(FilterManagerNumber);\r\n","export const isScrollDown = (element: HTMLElement, acceptedPixels = 0) => {\r\n return element.scrollTop + element.clientHeight >= element.scrollHeight - acceptedPixels;\r\n}\r\n\r\nexport const scrollToRef = (element: HTMLElement | null) => {\r\n const scrollContainer = element?.parentElement;\r\n if (!scrollContainer || !element) {\r\n return;\r\n }\r\n const itemHeight = element.offsetHeight;\r\n const itemTop = element.offsetTop;\r\n const itemBottom = itemTop + itemHeight;\r\n if (itemTop < scrollContainer.scrollTop) {\r\n scrollContainer.scrollTo(scrollContainer.scrollLeft, itemTop);\r\n return;\r\n }\r\n if (itemBottom > scrollContainer.scrollTop + scrollContainer.clientHeight) {\r\n scrollContainer.scrollTo(scrollContainer.scrollLeft, itemBottom - scrollContainer.clientHeight);\r\n }\r\n}\r\n","import React, { createContext, FC, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, PropsWithChildren, UIEventHandler, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport './WhispererInput.scss';\r\nimport FilterInput, { FilterInputProps } from \"@components/FilterInput/FilterInput\";\r\nimport { FormControlBaseProps } from \"@components/FormControl\";\r\nimport { useToggleState } from \"@utils/StateUtils\";\r\nimport { isScrollDown, scrollToRef } from \"@utils/ScrollUtils\";\r\nimport { stopPropagation } from \"@utils/EventUtils\";\r\n\r\nconst cn = setupCn('whisperer-input');\r\n\r\nexport type WhispererInputClasses = {\r\n whispererClass?: Classes;\r\n itemClass?: Classes;\r\n componentClass?: Classes;\r\n}\r\n\r\nexport type WhispererItem<T = any> = {\r\n id: string | number;\r\n text: string;\r\n data?: T;\r\n}\r\n\r\nexport type WhispererItemHandler = (item: WhispererItem) => void;\r\nexport type WhispererItemSelectedHandler = (item: WhispererItem | null) => void;\r\n\r\nexport type WhispererInputProps =\r\n FormControlBaseProps &\r\n Pick<FilterInputProps, 'onBlur' | 'onFocus' | 'value' | 'onChange' | 'name'> &\r\n PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n onWhispererScrollDown?: () => void;\r\n items?: WhispererItem[];\r\n onItemSelected?: WhispererItemSelectedHandler;\r\n classes: WhispererInputClasses;\r\n onWhispererShow?: (element: HTMLElement | null) => void;\r\n }>;\r\n\r\ntype WhispererInputContainerContextType = {\r\n whispererId?: string;\r\n isCollapsed: boolean;\r\n containerClass: Classes;\r\n onClick?: MouseEventHandler;\r\n}\r\n\r\nconst WhispererInputContainerContext = createContext<WhispererInputContainerContextType>({ whispererId: undefined, isCollapsed: true, containerClass: '' });\r\n\r\nconst WhispererInputContainer: FC = ({ children }) => {\r\n const { whispererId, isCollapsed, containerClass, onClick } = useContext(WhispererInputContainerContext);\r\n return (\r\n <div\r\n className={cn.raw(containerClass)}\r\n onClick={onClick}\r\n role='combobox'\r\n aria-haspopup='listbox'\r\n aria-owns={whispererId}\r\n aria-expanded={!isCollapsed}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nconst WhispererInput: FC<WhispererInputProps> = ({\r\n id,\r\n className,\r\n onWhispererShow,\r\n onWhispererScrollDown,\r\n onItemSelected,\r\n items,\r\n children,\r\n onBlur,\r\n onFocus,\r\n classes,\r\n ...rest\r\n}) => {\r\n const whispererId = `${id}__whisperer`;\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [isCollapsed, _, setIsCollapsed] = useToggleState(true);\r\n const [preselectedIndex, setPreselectedIndex] = useState(0);\r\n const whispererRef = useRef<HTMLUListElement>(null);\r\n\r\n const handleItemSelected: WhispererItemSelectedHandler = useCallback(item => {\r\n setIsCollapsed(true);\r\n onItemSelected?.(item);\r\n }, [onItemSelected]);\r\n\r\n const checkWhispererScroll = useCallback((container: HTMLElement | null) => {\r\n if (!isCollapsed && container && isScrollDown(container, 40)) {\r\n onWhispererScrollDown?.();\r\n }\r\n }, [isCollapsed, onWhispererScrollDown]);\r\n\r\n const handleWhispererScroll = useCallback<UIEventHandler>(event => {\r\n checkWhispererScroll(event.target as HTMLElement);\r\n }, [checkWhispererScroll]);\r\n\r\n const itemsMemo = useMemo(() => items?.map((item, index) => {\r\n const isSelected = preselectedIndex == index;\r\n return (\r\n <li\r\n key={item.id}\r\n ref={isSelected ? scrollToRef : undefined}\r\n title={item.text}\r\n className={cn.with(classes?.itemClass, {\r\n 'selected': isSelected\r\n })('__item')}\r\n aria-selected={isSelected}\r\n onMouseMove={() => setPreselectedIndex(index)}\r\n onMouseDown={() => handleItemSelected(item)}\r\n role='option'>\r\n {item.text}\r\n </li>\r\n );\r\n }), [items, handleItemSelected, preselectedIndex]);\r\n\r\n const whisperer = useMemo(() => (\r\n <ul ref={whispererRef} id={whispererId} role=\"listbox\" className={cn.with(classes?.whispererClass).subCn('__items', {\r\n '--is-collapsed': isCollapsed\r\n })} onScroll={handleWhispererScroll} onClick={stopPropagation}>\r\n {itemsMemo}\r\n </ul>\r\n ), [whispererId, isCollapsed, handleWhispererScroll, itemsMemo, whispererRef]);\r\n\r\n const handleContainerClick = useCallback<MouseEventHandler>(() => {\r\n setIsCollapsed(false);\r\n }, []);\r\n\r\n const containerContext = useMemo<WhispererInputContainerContextType>(() => ({\r\n isCollapsed,\r\n whispererId,\r\n containerClass: cn.with(classes?.componentClass)('__container'),\r\n onClick: handleContainerClick\r\n }), [isCollapsed, whispererId, classes?.componentClass, handleContainerClick]);\r\n\r\n const handeFormControlKeyUp: KeyboardEventHandler = useCallback(event => {\r\n event.stopPropagation();\r\n const itemsLength = items?.length ?? 0;\r\n switch (event.keyCode) {\r\n case 38:\r\n event.preventDefault();\r\n setPreselectedIndex(id => id <= 0 ? (itemsLength - 1) : (id - 1));\r\n if (isCollapsed) {\r\n setIsCollapsed(false);\r\n }\r\n break;\r\n case 40:\r\n event.preventDefault();\r\n setPreselectedIndex(id => (id + 1) % itemsLength);\r\n if (isCollapsed) {\r\n setIsCollapsed(false);\r\n }\r\n break;\r\n case 13:\r\n if (!isCollapsed) {\r\n onItemSelected?.(items?.[preselectedIndex] ?? null);\r\n setIsCollapsed(true);\r\n }\r\n event.preventDefault();\r\n break;\r\n case 27:\r\n if (!isCollapsed) {\r\n setIsCollapsed(true);\r\n }\r\n event.preventDefault();\r\n break;\r\n }\r\n }, [items, preselectedIndex, isCollapsed, onItemSelected]);\r\n\r\n const handleInputKeyDown: KeyboardEventHandler = useCallback(event => {\r\n switch (event.keyCode) {\r\n case 38:\r\n case 40:\r\n event.preventDefault();\r\n break;\r\n }\r\n }, []);\r\n\r\n const handleFocus: FocusEventHandler<HTMLInputElement> = useCallback(event => {\r\n setIsCollapsed(false);\r\n onFocus?.(event);\r\n }, [onFocus]);\r\n\r\n const handleBlur: FocusEventHandler<HTMLInputElement> = useCallback(event => {\r\n setIsCollapsed(true);\r\n onBlur?.(event);\r\n }, [onBlur]);\r\n\r\n useEffect(() => {\r\n setPreselectedIndex(0);\r\n }, [rest.value]);\r\n\r\n useEffect(() => {\r\n if (!isCollapsed) {\r\n onWhispererShow?.(whispererRef.current); \r\n checkWhispererScroll(whispererRef.current); \r\n }\r\n }, [isCollapsed, checkWhispererScroll]);\r\n\r\n return (\r\n <WhispererInputContainerContext.Provider value={containerContext}>\r\n <FilterInput\r\n {...rest}\r\n onFormControlKeyUp={handeFormControlKeyUp}\r\n className={cn.with(className).main()}\r\n id={id}\r\n inputRef={inputRef}\r\n isInline\r\n onKeyDown={handleInputKeyDown}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n container={WhispererInputContainer}\r\n afterLabel={whisperer}\r\n />\r\n </WhispererInputContainerContext.Provider>\r\n );\r\n};\r\n\r\nWhispererInput.displayName = 'WhispererInput';\r\n\r\nexport default React.memo(WhispererInput);\r\n","import React, { FC } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport WhispererInput, { WhispererInputClasses, WhispererInputProps } from \"@components/WhispererInput\";\r\n\r\nconst cn = setupCn('gov-multiselect');\r\n\r\nexport type SelectInputProps = Omit<WhispererInputProps, 'classes'>;\r\n\r\nexport const selectClasses: WhispererInputClasses = {\r\n componentClass: cn(),\r\n whispererClass: cn('__options'),\r\n itemClass: cn('__option')\r\n}\r\n\r\nconst SelectInput: FC<SelectInputProps> = (props) => {\r\n return (\r\n <WhispererInput\r\n {...props}\r\n classes={selectClasses} />\r\n );\r\n};\r\n\r\nSelectInput.displayName = 'SelectInput';\r\n\r\nexport default React.memo(SelectInput);\r\n","import { WhispererItem } from \"@components/WhispererInput\";\r\nimport DataRowsService from \"@services/DataRowsService\";\r\nimport { getErrorStoreActions } from \"@store/errorStore\";\r\nimport { AppDispatch } from \"@store/index\";\r\nimport { toArray } from \"./ArrayHelper\";\r\nimport { AttrMapping, IBasicData } from \"./AttrMapping\";\r\nimport { joinConditionsByAnd, joinConditionsByOr, toSplittedLinguisticLike } from \"./FilterCondition\";\r\n\r\nexport const getLovText = (lovData: IBasicData | null, showAttrs: string[]) => lovData ? showAttrs.map(showAttr => lovData[showAttr]).join(' | ') : '';\r\n\r\nexport type GetLovItemsParams = {\r\n dataRowsService: DataRowsService;\r\n dispatch: AppDispatch;\r\n actualValue: string;\r\n condition?: string | null;\r\n conditionParams: any[];\r\n showAttrs: string[];\r\n attrMapping: AttrMapping;\r\n maxCount?: number;\r\n abortController?: AbortController\r\n}\r\n\r\nexport const getLovItems = async ({\r\n dataRowsService,\r\n dispatch,\r\n condition,\r\n maxCount,\r\n showAttrs,\r\n attrMapping,\r\n conditionParams,\r\n abortController\r\n}: GetLovItemsParams) => {\r\n const fullCondition = joinConditionsByAnd(\r\n 'ID > 0',\r\n condition\r\n );\r\n const result = await dataRowsService.loadDataWithCount({\r\n className: attrMapping.objectName,\r\n attributes: attrMapping.getDataRowAttributes('id', ...showAttrs),\r\n condition: fullCondition || undefined,\r\n conditionParams: conditionParams,\r\n count: maxCount,\r\n abortSignal: abortController?.signal\r\n });\r\n if (result.hasErrors) {\r\n dispatch(getErrorStoreActions().push(result.errors));\r\n }\r\n return result?.value;\r\n}\r\n\r\nexport const getLovLikeItems = async (params: GetLovItemsParams) => {\r\n const { actualValue, showAttrs, attrMapping, condition, conditionParams } = params;\r\n const likeCondition = joinConditionsByOr(...showAttrs\r\n .map(clientName => attrMapping.getByClientName(clientName)?.serverName || null)\r\n .map(serverName => serverName && toSplittedLinguisticLike(serverName, actualValue, conditionParams)));\r\n const fullCondition = joinConditionsByAnd(\r\n likeCondition,\r\n condition\r\n );\r\n return await getLovItems({\r\n ...params,\r\n condition: fullCondition,\r\n conditionParams: conditionParams\r\n })\r\n}\r\n\r\nexport const getExactLovValue = async (params: Omit<GetLovItemsParams, 'maxCount'>) => {\r\n const { actualValue, condition, showAttrs } = params;\r\n const attrsValues = actualValue.split('|').map(attrValue => attrValue.trim());\r\n try {\r\n const exactFullCondition = joinConditionsByAnd(\r\n condition,\r\n ...toArray(showAttrs).map((attr, index) => `${attr}='${attrsValues[index] || ''}'`)\r\n );\r\n const exactResult = await getLovItems({\r\n ...params,\r\n condition: exactFullCondition,\r\n maxCount: 1\r\n });\r\n if (exactResult?.count == 1) {\r\n return exactResult.collection[0];\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const likeResult = await getLovLikeItems({\r\n ...params,\r\n maxCount: 1\r\n });\r\n if (likeResult?.count == 1) {\r\n return likeResult.collection[0];\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n return null;\r\n}\r\n\r\nexport const lovToWhispererItem = (data: IBasicData, showAttrs: string[]): WhispererItem<IBasicData> => ({\r\n id: data.id,\r\n text: getLovText(data, showAttrs),\r\n data\r\n});\r\n","import { FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport { FormControlBaseProps } from \"@components/FormControl\";\r\nimport { WhispererItem } from \"@components/WhispererInput\";\r\nimport { useDataRowsService } from \"@store/nodeContextStore\";\r\nimport { MaybeArray, notEmpty, notNull, toArray, toMap } from \"@utils/ArrayHelper\";\r\nimport { AttrMapping, IBasicData } from \"@utils/AttrMapping\";\r\nimport { Classes } from \"@utils/BemUtils\";\r\nimport { joinConditionsByAnd } from \"@utils/FilterCondition\";\r\nimport { getLovItems, getLovLikeItems, lovToWhispererItem } from \"@utils/LovUtils\";\r\nimport { useArrayMemo } from \"@utils/ReactUtils\";\r\nimport { PropsWithChildren, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\nexport type LovBaseProps<T> = FormControlBaseProps & PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n showAttrs: MaybeArray<string>;\r\n condition?: string;\r\n attrMapping: AttrMapping;\r\n onChangeDone?: FilterManagerChangeEventHandler<T>;\r\n value: T;\r\n name?: string;\r\n maxItems?: number | null;\r\n clearRequesting?: number;\r\n}>\r\n\r\nexport type LovImplementationProps = {\r\n filterDefaultText: string;\r\n selectedItemsAreInWhiperer: boolean;\r\n}\r\n\r\nexport const useLovBase = <T extends MaybeArray<(string | number)>>({\r\n id,\r\n className,\r\n showAttrs,\r\n attrMapping,\r\n onChangeDone,\r\n maxItems,\r\n hasError,\r\n condition,\r\n value,\r\n name,\r\n clearRequesting,\r\n children,\r\n ...formControlProps\r\n}: LovBaseProps<T>, {\r\n filterDefaultText,\r\n selectedItemsAreInWhiperer\r\n}: LovImplementationProps) => {\r\n const dispatch = useDispatch();\r\n const showAttrsArray = useArrayMemo(toArray(showAttrs));\r\n const dataRowsService = useDataRowsService();\r\n const [filterText, setFilterText] = useState(filterDefaultText);\r\n const [whispererData, setWhispererData] = useState<{ data: IBasicData[], isAll: boolean }>({\r\n data: [],\r\n isAll: false\r\n });\r\n const [actualValue, setActualValue] = useState('');\r\n const [itemsNextCount, setItemsNextCount] = useState(0);\r\n const [selectedItems, setSelectedItems] = useState<WhispererItem[]>([]);\r\n\r\n useEffect(() => {\r\n if (clearRequesting != null) {\r\n setActualValue('');\r\n }\r\n }, [clearRequesting]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n\r\n let cancel = false;\r\n const timeout = setTimeout(() => {\r\n if (cancel) {\r\n return;\r\n }\r\n const fetchSelectedCount = selectedItemsAreInWhiperer ? 0 : selectedItems.length;\r\n const fetchCount = maxItems == null ? undefined : (maxItems + itemsNextCount + fetchSelectedCount);\r\n getLovLikeItems({\r\n attrMapping, actualValue, dataRowsService, dispatch, condition,\r\n showAttrs: showAttrsArray,\r\n maxCount: fetchCount,\r\n conditionParams: [],\r\n abortController: controller\r\n }).then(result => {\r\n if (!cancel) {\r\n setWhispererData({\r\n data: result?.collection ?? [],\r\n isAll: fetchCount == null || (result?.count != null && fetchCount >= result?.count)\r\n });\r\n }\r\n });\r\n }, 50);\r\n return () => {\r\n controller?.abort();\r\n cancel = true;\r\n clearTimeout(timeout);\r\n };\r\n }, [filterText, condition, maxItems && itemsNextCount, maxItems]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n\r\n const valueIds = toArray(value).filter(notEmpty).map(Number).filter(id => !isNaN(id));\r\n if (!valueIds?.length) {\r\n setSelectedItems([]);\r\n return;\r\n }\r\n if (selectedItems?.length && selectedItems.map(item => Number(item.id)).join(';') == valueIds.join(';')) {\r\n return;\r\n }\r\n let cancel = false;\r\n const fullCondition = joinConditionsByAnd(\r\n `(ID in [${valueIds.join(', ')}])`,\r\n condition\r\n );\r\n getLovItems({\r\n actualValue, attrMapping, dataRowsService, dispatch,\r\n showAttrs: showAttrsArray,\r\n condition: fullCondition,\r\n maxCount: valueIds.length,\r\n conditionParams: [],\r\n abortController: controller\r\n }).then(result => {\r\n const resultValues = toMap(item => item.id, result?.collection);\r\n if (!cancel && resultValues) {\r\n const items = valueIds.map(id => resultValues.get(id)).filter(notNull) as IBasicData[];\r\n setSelectedItems(items.map(item => lovToWhispererItem(item, showAttrsArray)));\r\n }\r\n });\r\n\r\n return () => {\r\n controller?.abort();\r\n cancel = true;\r\n };\r\n }, [value])\r\n\r\n\r\n\r\n const handleWhispererScrollDown = useCallback(() => {\r\n if (!whispererData.isAll && (whispererData.data?.length ?? 0) >= itemsNextCount) {\r\n setItemsNextCount(prev => prev + 20);\r\n }\r\n }, [whispererData, itemsNextCount]);\r\n\r\n const handleFilterChange = useCallback((value: string) => {\r\n setItemsNextCount(0);\r\n setFilterText(value ?? '');\r\n }, []);\r\n\r\n const handleValueChange: FilterManagerChangeEventHandler = useCallback((_, value: string) => {\r\n setActualValue(value);\r\n handleFilterChange(value);\r\n }, [handleFilterChange]);\r\n\r\n const items = useMemo<WhispererItem[]>(() => whispererData?.data?.map(item => lovToWhispererItem(item, showAttrsArray)),\r\n [whispererData?.data, showAttrsArray.join('|')]);\r\n\r\n const handleChangeDone = useCallback((value: T) => {\r\n onChangeDone?.(name, value);\r\n }, [onChangeDone, name])\r\n\r\n return {\r\n actualValue,\r\n selectedItems,\r\n setSelectedItems,\r\n setFilterText,\r\n showAttrsArray,\r\n handleWhispererScrollDown,\r\n handleValueChange,\r\n handleFilterChange,\r\n setActualValue,\r\n items,\r\n dataRowsService,\r\n handleChangeDone,\r\n controlProps: {\r\n ...formControlProps,\r\n id,\r\n hasError,\r\n items,\r\n onWhispererScrollDown: handleWhispererScrollDown,\r\n onChange: handleValueChange,\r\n value: actualValue,\r\n }\r\n };\r\n}\r\n","import React, { FC, useCallback, useEffect, useState } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { WhispererItem } from \"@components/WhispererInput\";\r\nimport SelectInput from \"@components/SelectInput\";\r\nimport { getExactLovValue, getLovText, lovToWhispererItem } from \"@utils/LovUtils\";\r\nimport { LovBaseProps, useLovBase } from \"./LovBase\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\nconst cn = setupCn('lov-input');\r\n\r\nexport type LovInputProps = LovBaseProps<string>;\r\n\r\nconst LovInput: FC<LovInputProps> = (props) => {\r\n const dispatch = useDispatch();\r\n const [validateCounter, setValidateCounter] = useState(0);\r\n const [isInvalid, setIsInvalid] = useState(false);\r\n\r\n const {\r\n className,\r\n attrMapping,\r\n hasError,\r\n condition,\r\n value,\r\n } = props;\r\n const {\r\n selectedItems,\r\n setSelectedItems,\r\n actualValue,\r\n showAttrsArray,\r\n dataRowsService,\r\n setFilterText,\r\n setActualValue,\r\n controlProps,\r\n handleChangeDone\r\n } = useLovBase(props, {\r\n filterDefaultText: value,\r\n selectedItemsAreInWhiperer: true\r\n });\r\n\r\n const isEmpty = actualValue == '';\r\n const selectedItem: WhispererItem | null = selectedItems[0]?.data;\r\n const setSelectedItem = useCallback((value: WhispererItem | null) => setSelectedItems(value ? [value] : []), [setSelectedItems]);\r\n\r\n useEffect(() => {\r\n if (selectedItem && actualValue != getLovText(selectedItem?.data, showAttrsArray)) {\r\n setSelectedItem(null);\r\n }\r\n }, [actualValue]);\r\n\r\n useEffect(() => {\r\n setIsInvalid(false);\r\n }, [isEmpty]);\r\n\r\n useEffect(() => {\r\n let cancel = false;\r\n const isEmpty = actualValue == null || actualValue == '';\r\n if (isEmpty) {\r\n handleChangeDone('');\r\n }\r\n const isInvalid = !isEmpty && selectedItem == null;\r\n if (!isInvalid) {\r\n setIsInvalid(false);\r\n return;\r\n }\r\n getExactLovValue({\r\n dataRowsService,\r\n dispatch,\r\n condition,\r\n actualValue,\r\n attrMapping,\r\n showAttrs: showAttrsArray,\r\n conditionParams: [Number.parseInt(actualValue)]\r\n }).then(exactValue => {\r\n if (exactValue == null || cancel) {\r\n setIsInvalid(true);\r\n handleChangeDone('');\r\n return;\r\n }\r\n setSelectedItem(lovToWhispererItem(exactValue, showAttrsArray));\r\n setActualValue(getLovText(exactValue, showAttrsArray));\r\n handleChangeDone(exactValue.id?.toString() ?? '');\r\n setIsInvalid(false);\r\n }).catch(() => setIsInvalid(true));\r\n return () => { cancel = true };\r\n }, [validateCounter]);\r\n\r\n const handleItemSelected = useCallback((item: WhispererItem | null) => {\r\n const itemText = getLovText(item?.data, showAttrsArray);\r\n setActualValue(itemText);\r\n setSelectedItem(item);\r\n setIsInvalid(false);\r\n setFilterText(itemText);\r\n handleChangeDone(item?.data?.id?.toString());\r\n }, [handleChangeDone, showAttrsArray]);\r\n\r\n const handleBlur = useCallback(() => {\r\n setValidateCounter(prev => prev + 1);\r\n }, [setValidateCounter]);\r\n\r\n return (\r\n <SelectInput\r\n {...controlProps}\r\n className={cn.with(className).main()}\r\n hasError={hasError || isInvalid}\r\n onItemSelected={handleItemSelected}\r\n onBlur={handleBlur} />\r\n );\r\n};\r\n\r\nLovInput.displayName = 'LovInput';\r\nLovInput.defaultProps = {\r\n maxItems: 10\r\n}\r\n\r\nexport default React.memo(LovInput);\r\n","import React, { FC, PropsWithChildren, useMemo } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { WhispererItem } from \"@components/WhispererInput\";\r\nimport Button from \"@components/Button/Button\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { stopPropagation } from \"@utils/EventUtils\";\r\n\r\nconst cn = setupCn('gov-multiselect');\r\n\r\nexport type MultiselectTagsProps = PropsWithChildren<{\r\n className?: Classes;\r\n items?: WhispererItem[];\r\n onRemove?: (item: WhispererItem) => void;\r\n}>;\r\n\r\nconst MultiselectTags: FC<MultiselectTagsProps> = ({\r\n items,\r\n onRemove,\r\n className\r\n}) => {\r\n const { t } = useLocalization();\r\n const renderedItems = useMemo(() => items?.map(item => (\r\n <li className={cn('__tag')} multiselect-id={item.id} key={item.id}>\r\n <span>{item.text}</span>\r\n <Button onClick={() => onRemove?.(item)} isFlat aria-label={t('NEN-765694')} hasIconOnly />\r\n </li>\r\n )), [items, onRemove]);\r\n\r\n return (\r\n <ul className={cn.with(className)('__tags')} onClick={stopPropagation}>\r\n {renderedItems}\r\n </ul>\r\n );\r\n};\r\n\r\nMultiselectTags.displayName = 'MultiselectTags';\r\n\r\nexport default React.memo(MultiselectTags);\r\n","import React, { FC, useCallback, useMemo } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport WhispererInput, { WhispererInputClasses, WhispererInputProps, WhispererItem, WhispererItemHandler, WhispererItemSelectedHandler } from \"@components/WhispererInput\";\r\nimport { FormControlContext, FormControlContextType } from \"@components/FormControl\";\r\nimport MultiselectTags from \"./MultiselectTags\";\r\nimport \"./Multiselect.scss\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\n\r\nconst cn = setupCn('gov-multiselect');\r\n\r\nexport type MultiselectProps = Omit<WhispererInputProps, 'classes'> & {\r\n onSelectedItemsChanged?: (selectedItems: WhispererItem[]) => void;\r\n selectedItems?: WhispererItem[];\r\n};\r\n\r\nexport const multiselectClasses: WhispererInputClasses = {\r\n componentClass: cn(),\r\n whispererClass: cn('__options'),\r\n itemClass: cn('__option')\r\n}\r\n\r\nconst Multiselect: FC<MultiselectProps> = ({\r\n onItemSelected,\r\n onSelectedItemsChanged,\r\n selectedItems,\r\n items,\r\n ...restProps\r\n}) => {\r\n const { name, onChange } = restProps;\r\n\r\n const handleItemRemove = useCallback<WhispererItemHandler>(itemToRemove => {\r\n onSelectedItemsChanged?.(selectedItems?.filter(item => item.id != itemToRemove.id) ?? []);\r\n }, [onSelectedItemsChanged, selectedItems]);\r\n\r\n const selectedIds = useMemo(() => new Set(selectedItems?.map(item => item.id)),\r\n [selectedItems]);\r\n\r\n const handleItemSelected = useCallback<WhispererItemSelectedHandler>(itemToAdd => {\r\n if (itemToAdd && !selectedIds.has(itemToAdd.id)) {\r\n onSelectedItemsChanged?.([...selectedItems ?? [], itemToAdd]);\r\n }\r\n onItemSelected?.(itemToAdd);\r\n onChange?.(name, '');\r\n }, [onItemSelected, onSelectedItemsChanged, name, onChange, selectedItems, selectedIds]);\r\n\r\n const selectedItemsNode = useMemo(() => renderIf(selectedItems?.length,\r\n <MultiselectTags\r\n onRemove={handleItemRemove}\r\n items={selectedItems} />\r\n ), [handleItemRemove, selectedItems]);\r\n\r\n const formControlContext: FormControlContextType = useMemo(() => ({\r\n afterContainer: selectedItemsNode\r\n }), [selectedItemsNode]);\r\n\r\n const notSelectedItems = useMemo(() => items?.filter(item => !selectedIds.has(item.id)),\r\n [items, selectedIds]);\r\n\r\n return (\r\n <FormControlContext.Provider value={formControlContext}>\r\n <WhispererInput\r\n {...restProps}\r\n items={notSelectedItems}\r\n onItemSelected={handleItemSelected}\r\n classes={multiselectClasses} />\r\n </FormControlContext.Provider>\r\n );\r\n};\r\n\r\nMultiselect.displayName = 'Multiselect';\r\n\r\nexport default React.memo(Multiselect);\r\n","import React, { FC, useCallback } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { WhispererItem } from \"@components/WhispererInput\";\r\nimport Multiselect from \"@components/Multiselect\";\r\nimport { LovBaseProps, useLovBase } from \"./LovBase\";\r\n\r\nconst cn = setupCn('lov-multiselect');\r\n\r\nexport type LovMultiselectProps = LovBaseProps<(string | number)[]>;\r\n\r\nconst LovMultiselect: FC<LovMultiselectProps> = (props) => {\r\n const { className } = props;\r\n const {\r\n selectedItems,\r\n setSelectedItems,\r\n handleChangeDone,\r\n controlProps\r\n } = useLovBase(props, {\r\n filterDefaultText: '',\r\n selectedItemsAreInWhiperer: false\r\n });\r\n\r\n const handleSelectedItemsChange = useCallback((value: WhispererItem[]) => {\r\n setSelectedItems(value);\r\n handleChangeDone(value.map(item => item.id));\r\n }, [handleChangeDone, setSelectedItems]);\r\n\r\n return (\r\n <Multiselect\r\n {...controlProps}\r\n className={cn.with(className).main()}\r\n selectedItems={selectedItems}\r\n onSelectedItemsChanged={handleSelectedItemsChange} />\r\n );\r\n};\r\n\r\nLovMultiselect.displayName = 'LovMultiselect';\r\nLovMultiselect.defaultProps = {\r\n maxItems: 10\r\n}\r\n\r\nexport default React.memo(LovMultiselect);\r\n","import React, { FC, PropsWithChildren, ReactNode, useCallback, useMemo } from \"react\"\r\nimport { AttrMapping } from \"@utils/AttrMapping\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { FilterManagerChangeEventHandler, useFilterManagerContext } from \"../FilterManager\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport { LovMultiselect } from \"@components/LOV\";\r\n\r\nconst cn = setupCn('filter-manager-lov');\r\n\r\nexport type FilterManagerLovConditionFactory = (conditionParams?: UrlParamObject) => string;\r\nexport type FilterManagerLovCondition = string | FilterManagerLovConditionFactory;\r\n\r\nexport type FilterManagerLovProps<TAttr extends string = string> = PropsWithChildren<{\r\n id?: string;\r\n className?: Classes;\r\n headerText?: ReactNode;\r\n attrMapping: AttrMapping;\r\n title?: string;\r\n showAttrs: string[] | string;\r\n maxItems?: number | null;\r\n condition?: FilterManagerLovCondition;\r\n name: TAttr;\r\n}>;\r\n\r\nexport type FilterManagerLovType<TAttr extends string = string> = FC<FilterManagerLovProps<TAttr>>;\r\n\r\nconst FilterManagerLov: FC<FilterManagerLovProps> = ({\r\n id,\r\n headerText,\r\n className,\r\n attrMapping,\r\n maxItems,\r\n condition,\r\n showAttrs,\r\n title,\r\n name\r\n}) => {\r\n const { controlId } = useId({ id: `lov-${id ?? name}` });\r\n\r\n const {\r\n filterValues,\r\n onFilterValueChange,\r\n clearRequesting,\r\n } = useFilterManagerContext(name);\r\n\r\n const filterValue = (name && filterValues[name]) ?? '';\r\n\r\n const actualCondition = useMemo(() => {\r\n if (condition == null) {\r\n return undefined;\r\n }\r\n if (typeof condition == 'string') {\r\n return condition;\r\n }\r\n if (typeof condition == 'function') {\r\n return (condition as FilterManagerLovConditionFactory)?.(filterValues);\r\n }\r\n return undefined;\r\n }, [condition, filterValues]);\r\n\r\n const handleChangeDone = useCallback<FilterManagerChangeEventHandler<(string | number)[]>>((_, value) => {\r\n onFilterValueChange(name, value?.join(','));\r\n }, [onFilterValueChange, name]);\r\n\r\n return (\r\n <LovMultiselect\r\n id={controlId}\r\n headerText={headerText}\r\n title={title}\r\n clearRequesting={clearRequesting}\r\n className={cn.with(className).main()}\r\n maxItems={maxItems}\r\n value={filterValue?.split(',')}\r\n name={name}\r\n onChangeDone={handleChangeDone}\r\n attrMapping={attrMapping}\r\n showAttrs={showAttrs}\r\n condition={actualCondition} />\r\n );\r\n};\r\n\r\nFilterManagerLov.displayName = 'FilterManagerLov';\r\n\r\nexport default React.memo(FilterManagerLov);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Grid from \"@components/Grid\";\r\nimport './FilterManagerRow.scss';\r\n\r\nconst cn = setupCn('filter-manager-row');\r\n\r\nexport type FilterManagerRowProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\nconst FilterManagerRow: FC<FilterManagerRowProps> = ({\r\n className,\r\n children\r\n}) => {\r\n return (\r\n <Grid className={cn.with(className).main()} columns='3' isPlain alignItems='start'>\r\n {children}\r\n </Grid>\r\n );\r\n};\r\n\r\nFilterManagerRow.displayName = 'FilterManagerRow';\r\n\r\nexport default React.memo(FilterManagerRow);\r\n","import React, { FC, PropsWithChildren, useCallback, useEffect, useState } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport Button, { ButtonProps } from \"@components/Button/Button\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useId } from \"@utils/UseId\";\r\nimport { FormControlContext } from \"@components/FormControl\";\r\nimport FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport { FilterManagerChangeDoneEventHandler, FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\n\r\nimport './InputWithButton.scss';\r\n\r\nconst cn = setupCn('input-with-button');\r\nconst cnSearch = setupCn('gov-search');\r\n\r\nexport type InputWithButtonProps =\r\n Pick<ButtonProps, 'onMouseDown' | 'onClick'> & PropsWithChildren<\r\n {\r\n placeholderLocKey: string;\r\n buttonTextLocKey: string;\r\n buttonTitleLocKey: string;\r\n id: string;\r\n className?: Classes;\r\n isWide?: boolean;\r\n disableButton?: boolean | { disabledIfEmpty: boolean, disable: boolean };\r\n hasError?: boolean;\r\n inputType?: string;\r\n onInputChange?: FilterManagerChangeEventHandler;\r\n onInputChangeDone?: FilterManagerChangeDoneEventHandler;\r\n headerText?: string;\r\n shouldClearInput?: boolean;\r\n }>;\r\n\r\nconst InputWithButton: FC<InputWithButtonProps> = ({\r\n id,\r\n className,\r\n isWide,\r\n onMouseDown,\r\n onClick,\r\n placeholderLocKey,\r\n buttonTextLocKey,\r\n buttonTitleLocKey,\r\n disableButton,\r\n inputType,\r\n onInputChange,\r\n onInputChangeDone,\r\n hasError,\r\n headerText,\r\n shouldClearInput,\r\n children\r\n}) => {\r\n const [inputValue, setInputValue] = useState('');\r\n const { ts, d, t } = useLocalization();\r\n\r\n useEffect(() => {\r\n if (shouldClearInput) {\r\n setInputValue('');\r\n }\r\n }, [shouldClearInput, setInputValue]);\r\n\r\n disableButton = typeof disableButton === 'object'\r\n ? disableButton.disable || (disableButton.disabledIfEmpty && !inputValue.length)\r\n : disableButton;\r\n\r\n const { generateId } = useId({ id: `inputwithbutton-${id}` });\r\n const buttontextId = generateId('button-text');\r\n const buttonContent = isWide ? ts(buttonTextLocKey, { isPrimaryTheme: true }) : (\r\n <span id={buttontextId} className=\"u-sr-only gov-button__label\">\r\n {ts(buttonTextLocKey)}\r\n </span>\r\n );\r\n\r\n const handleChange = useCallback<FilterManagerChangeEventHandler>((name, newValue) => {\r\n setInputValue(newValue);\r\n onInputChange?.(name, newValue);\r\n }, [onInputChange]);\r\n\r\n const handleChangeDone = useCallback<FilterManagerChangeDoneEventHandler>((name, newValue, reason) => {\r\n if (disableButton) {\r\n return;\r\n }\r\n\r\n onInputChangeDone?.(name, newValue, reason);\r\n }, [onInputChangeDone, disableButton]);\r\n\r\n const handleButtonClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\r\n handleChangeDone(event.currentTarget.name, inputValue, 'buttonClick')\r\n }, [handleChangeDone, inputValue]);\r\n\r\n const inputElement = children ?? <FilterInput\r\n id={id}\r\n headerText={ts(headerText)}\r\n className={cn.main('__input', { '--error': hasError })}\r\n type={inputType}\r\n value={inputValue}\r\n onChange={handleChange}\r\n onChangeDone={handleChangeDone} />\r\n\r\n const buttonOnclick = onClick ?? handleButtonClick;\r\n return (\r\n <div className={cn.with(className, cnSearch()).main({\r\n '--wide': isWide\r\n })}>\r\n <div className={cnSearch('__inner')}>\r\n <FormControlContext.Provider value={{\r\n labelClassName: 'u-sr-only',\r\n defaultPlaceholder: t(placeholderLocKey),\r\n isInputStandalone: true\r\n }}>\r\n {inputElement}\r\n </FormControlContext.Provider>\r\n <Button\r\n tabIndex={-1}\r\n className={cnSearch('__submit')}\r\n onMouseDown={onMouseDown}\r\n onClick={buttonOnclick}\r\n labelled-by={isWide ? undefined : buttontextId}\r\n hasIconOnly={!isWide}\r\n disabled={disableButton}\r\n title={d(buttonTitleLocKey)}>\r\n {buttonContent}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nInputWithButton.displayName = 'InputWithButton';\r\n\r\nexport default React.memo(InputWithButton);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport InputWithButton, { InputWithButtonProps } from \"@components/InputWithButton/InputWithButton\";\r\nimport { ButtonProps } from \"@components/Button/Button\";\r\n\r\nexport type SearchProps = PropsWithChildren<\r\n Pick<ButtonProps, 'onMouseDown' | 'onClick'> &\r\n Pick<InputWithButtonProps, 'isWide' | 'className' | 'id'>>;\r\n\r\nconst Search: FC<SearchProps> = ({\r\n id,\r\n className,\r\n isWide,\r\n onMouseDown,\r\n onClick,\r\n children\r\n}) => {\r\n return (\r\n <InputWithButton\r\n className={className}\r\n id={`search-${id}`}\r\n buttonTextLocKey=\"NEN-765498\"\r\n buttonTitleLocKey=\"NEN-765498\"\r\n placeholderLocKey=\"NEN-765498\"\r\n onMouseDown={onMouseDown}\r\n onClick={onClick}\r\n isWide={isWide}>\r\n {children}\r\n </InputWithButton>\r\n )\r\n};\r\n\r\nSearch.displayName = 'Search';\r\n\r\nexport default React.memo(Search);\r\n","import React, { FC, PropsWithChildren, useCallback, useContext, useEffect, useMemo, useState } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport FilterManagerGroup, { FilterGroupContext, useFilterGroupExpandToggle, useFilterGroupRegister } from \"./FilterManagerGroup/FilterManagerGroup\";\r\nimport FilterManagerInput, { FilterManagerInputType } from \"./FilterManagerInput/FilterManagerInput\";\r\nimport FilterManagerEnum, { FilterManagerEnumType } from \"./FilterManagerEnum/FilterManagerEnum\";\r\nimport { UrlParamObject, useUrlParamsExtended } from \"@utils/QueryHook\";\r\nimport FilterManagerBool, { FilterManagerBoolType } from \"./FilterManagerBool/FilterManagerBool\";\r\nimport FilterManagerDate, { FilterManagerDateType } from \"./FilterManagerDate/FilterManagerDate\";\r\nimport FilterManagerNumber, { FilterManagerNumberType } from \"./FilterManagerNumber/FilterManagerNumber\";\r\nimport FilterManagerLov, { FilterManagerLovType } from \"./FilterManagerLov/FilterManagerLov\";\r\nimport FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { FilterParamsNames } from \"@constants/urlConstants\";\r\nimport Accordion from \"@components/Accordion\";\r\nimport Button from \"@components/Button/Button\";\r\nimport './FilterManager.scss';\r\nimport FilterManagerRow from \"./FilterManagerRow/FilterManagerRow\";\r\nimport offsets from \"@styles/offsets\";\r\nimport { IdContext } from \"@utils/UseId\";\r\nimport Search from \"@components/Search\";\r\nimport { iaddToArray, iremoveFromArray, notEmpty } from \"@utils/ArrayHelper\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { useRefreshState } from \"@utils/StateUtils\";\r\n\r\nconst cn = setupCn('filter-manager');\r\n\r\nexport type ChangeDoneReason = 'blur' | 'enter' | 'buttonClick';\r\n\r\nexport type FilterManagerChangeEventHandler<TValue = string> = (name: string | undefined, value: TValue) => void;\r\nexport type FilterManagerChangeDoneEventHandler = (name: string | undefined, value: string, reason: ChangeDoneReason) => void;\r\n\r\nexport const useChangingFilterValue = (filterValue: string, onChangeDone?: FilterManagerChangeEventHandler) => {\r\n const [value, setValue] = useState('');\r\n\r\n useEffect(() => {\r\n setValue(filterValue);\r\n }, [filterValue]);\r\n\r\n const handleFilterValueChange = useCallback<FilterManagerChangeEventHandler>((_, newValue) => {\r\n setValue(newValue);\r\n }, []);\r\n\r\n const isChanged = filterValue != value;\r\n\r\n const applyValue = useCallback<FilterManagerChangeEventHandler>((name, value) => {\r\n if (isChanged) {\r\n onChangeDone?.(name, value);\r\n }\r\n }, [onChangeDone, isChanged]);\r\n\r\n return { value, setValue: handleFilterValueChange, isChanged, applyValue };\r\n}\r\n\r\nexport type FilterManagerProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n paramNames: FilterParamsNames;\r\n}>;\r\n\r\nexport type FilterManagerType<TAttr extends string = string> = FC<FilterManagerProps> & {\r\n GroupsContainer: typeof Accordion;\r\n Group: typeof FilterManagerGroup;\r\n Row: typeof FilterManagerRow;\r\n Input: FilterManagerInputType<TAttr>;\r\n Enum: FilterManagerEnumType<TAttr>;\r\n Bool: FilterManagerBoolType<TAttr>;\r\n Date: FilterManagerDateType<TAttr>;\r\n Number: FilterManagerNumberType<TAttr>;\r\n Lov: FilterManagerLovType<TAttr>;\r\n}\r\n\r\ntype FilterManagerContextType = {\r\n onFilterValueChange: FilterManagerChangeEventHandler;\r\n filterValues: UrlParamObject;\r\n setIsChanged: (name: string, isChanged: boolean) => void;\r\n clearRequesting: number | undefined;\r\n}\r\n\r\nconst FilterManagerContext = React.createContext<FilterManagerContextType>({\r\n filterValues: {},\r\n onFilterValueChange: () => null,\r\n setIsChanged: () => null,\r\n clearRequesting: undefined,\r\n});\r\n\r\nconst FilterManager: FilterManagerType = React.memo(({\r\n id,\r\n className,\r\n paramNames,\r\n children\r\n}: FilterManagerProps) => {\r\n const { ts } = useLocalization();\r\n id = `${id}-filter`;\r\n\r\n const {\r\n filterParams,\r\n updateFilterUrl,\r\n replaceFilterUrlParams\r\n } = useUrlParamsExtended({ paramNames });\r\n\r\n const isAppliedFilter = filterParams && Object.entries(filterParams)\r\n .some(([k, v]) => !k.includes('sort') && k !== 'page' && notEmpty(v));\r\n\r\n const [changedNames, setChangedNames] = useState<string[]>([]);\r\n const [requestClear, clearRequesting] = useRefreshState();\r\n\r\n const handleClearAll = useCallback(() => {\r\n requestClear();\r\n replaceFilterUrlParams({ update: undefined });\r\n }, [replaceFilterUrlParams, requestClear]);\r\n\r\n const changeUrlValue = useCallback((name: string | undefined, value: string) => name && updateFilterUrl({\r\n update: {\r\n [name]: value == '' ? undefined : value,\r\n page: undefined\r\n }\r\n }), [updateFilterUrl]);\r\n\r\n const handleIsChangedUpdate = useCallback((name: string, isChanged: boolean) => {\r\n setChangedNames(changedNames => isChanged ? iaddToArray(changedNames, name) : iremoveFromArray(changedNames, name));\r\n }, []);\r\n\r\n const filterManagerContext = useMemo<FilterManagerContextType>(() => ({\r\n filterValues: filterParams ?? {},\r\n onFilterValueChange: changeUrlValue,\r\n setIsChanged: handleIsChangedUpdate,\r\n clearRequesting,\r\n }), [filterParams, changeUrlValue, clearRequesting, handleIsChangedUpdate]);\r\n\r\n const {\r\n handleContentToggle,\r\n isContentHidden,\r\n registerFilterName\r\n } = useFilterGroupExpandToggle({ defaultVisible: false, filterValues: filterManagerContext.filterValues })\r\n\r\n const query = filterManagerContext.filterValues['query'];\r\n const { isChanged: isQueryChanged, setValue: setQueryValue, applyValue: applyQueryValue } = useChangingFilterValue(query ?? '', changeUrlValue);\r\n\r\n const withAdvanced = !!children;\r\n return (\r\n <IdContext.Provider value={id}>\r\n <div id={id} className={cn.with(className).main({\r\n '--with-advanced': withAdvanced\r\n })}>\r\n <div className={cn('__head')}>\r\n <Search id={id} isWide className={offsets['u-mb--unset']}>\r\n <FilterInput\r\n id={`${id}__fast-search`}\r\n headerText={ts('NEN-742948')}\r\n className={cn.with(offsets['u-mb--unset'])('__search-input')}\r\n name='query'\r\n isInline\r\n value={query}\r\n onChange={setQueryValue}\r\n onChangeDone={applyQueryValue} />\r\n </Search>\r\n {\r\n !withAdvanced ? null :\r\n <Button\r\n className={cn.with('flat')('__advanced-toggle')}\r\n onClick={handleContentToggle}\r\n isOutlined>\r\n {ts('NEN-747766')}\r\n </Button>\r\n }\r\n </div>\r\n {\r\n renderIf(withAdvanced,\r\n <>\r\n <div className={cn.subCn('__advanced', {\r\n '--hidden': isContentHidden\r\n })}>\r\n <FilterManagerContext.Provider value={filterManagerContext}>\r\n <FilterGroupContext.Provider value={registerFilterName}>\r\n {children}\r\n </FilterGroupContext.Provider>\r\n </FilterManagerContext.Provider>\r\n </div>\r\n <div className={cn('__buttons')}>\r\n {\r\n renderIf(isAppliedFilter,\r\n <div className={offsets['u-pt--20']}>\r\n <Button isOutlined onClick={handleClearAll}>{ts('NEN-768417')}</Button>\r\n {' '}\r\n </div>\r\n )\r\n }\r\n {\r\n renderIf(!isContentHidden && (changedNames?.length || isQueryChanged),\r\n <div className={offsets['u-pt--20']}>\r\n <Button>{ts('NEN-768418')}</Button>\r\n </div>\r\n )\r\n }\r\n </div>\r\n </>\r\n )\r\n }\r\n </div>\r\n </IdContext.Provider >\r\n );\r\n}) as unknown as FilterManagerType;\r\n\r\nexport const useFilterManagerContext = (filterName?: string) => {\r\n useFilterGroupRegister(filterName);\r\n return useContext(FilterManagerContext);\r\n}\r\n\r\nFilterManager.displayName = 'FilterManager';\r\nFilterManager.GroupsContainer = Accordion;\r\nFilterManager.Group = FilterManagerGroup;\r\nFilterManager.Row = FilterManagerRow;\r\nFilterManager.Input = FilterManagerInput;\r\nFilterManager.Enum = FilterManagerEnum;\r\nFilterManager.Bool = FilterManagerBool;\r\nFilterManager.Date = FilterManagerDate;\r\nFilterManager.Number = FilterManagerNumber;\r\nFilterManager.Lov = FilterManagerLov;\r\n\r\nexport default FilterManager;\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IEnumeratorModel = IData & {\r\n kod: string;\r\n nazev: string;\r\n}\r\n\r\nexport const createEnumeratorAttrMap = (objectName: string) => new AttrMapping<IEnumeratorModel>(objectName, [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'kod', serverName: 'Kod', type: 'string' },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' }\r\n]);\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type IDruhZadavacihoRizeni = IEnumeratorModel;\r\nexport const DruhZadavacihoRizeniAttrMap = createEnumeratorAttrMap('Druh_zadavac_rizeni');\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type INUTSModel = IEnumeratorModel;\r\nexport const NUTSModelAttrMap = createEnumeratorAttrMap('NUTS');\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type INIPEZModel = IEnumeratorModel;\r\nexport const NIPEZModelAttrMap = createEnumeratorAttrMap('NIPEZ');\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type ICPVModel = IEnumeratorModel;\r\nexport const CPVModelAttrMap = createEnumeratorAttrMap('CPV');\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type IHlavniPredmetCinnostiModel = IEnumeratorModel;\r\nexport const HlavniPredmetCinnostiAttrMap = createEnumeratorAttrMap('Hlavni_predmet_cin');\r\n","import { createEnumeratorAttrMap, IEnumeratorModel } from \"./IEnumeratorModel\";\r\n\r\nexport type IPravniFormaModel = IEnumeratorModel;\r\nexport const PravniFormaAttrMap = createEnumeratorAttrMap('Pravni_forma');\r\n","import { FilterManagerLovConditionFactory } from \"@components/FilterManager/FilterManagerLov/FilterManagerLov\";\r\nimport { createIn, joinConditionsByAnd } from \"@utils/FilterCondition\";\r\n\r\n\r\nexport const kodNazevAttrs = ['kod', 'nazev'];\r\n\r\nexport const lovCPVConditionFactory = (paramName: string): FilterManagerLovConditionFactory => (urlParams) => {\r\n const cpv = urlParams?.[paramName];\r\n const condition = joinConditionsByAnd(\r\n 'Plati_DO = null',\r\n cpv ? `EXISTS(NIPEZ,${createIn('ID', cpv)} AND CPV_NIPEZU=&ID)` : null\r\n );\r\n return condition as string;\r\n}\r\n\r\nexport const lovNIPEZConditionFactory = (paramName: string): FilterManagerLovConditionFactory => (urlParams) => {\r\n const nipez = urlParams?.[paramName];\r\n const condition = joinConditionsByAnd(\r\n 'Plati_DO = null AND CPV_NIPEZu <> null',\r\n createIn('CPV_NIPEZU', nipez)\r\n );\r\n return condition as string;\r\n}","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { default as FilterManagerBase, FilterManagerType } from \"@components/FilterManager\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { DruhZadavacihoRizeniAttrMap } from \"@models/enumerators/IDruhZadavacihoRizeni\";\r\nimport { NUTSModelAttrMap } from \"@models/enumerators/INUTSModel\";\r\nimport { NIPEZModelAttrMap } from \"@models/enumerators/INIPEZModel\";\r\nimport { CPVModelAttrMap } from \"@models/enumerators/ICPVModel\";\r\nimport { FilterParamsNames, urlConstants } from \"@constants/urlConstants\";\r\nimport { createTransposeOrder } from \"@components/EnumChecks/EnumChecks\";\r\nimport { Druh_VZEnum } from \"@models/staticEnumerators/Druh_VZEnum\";\r\nimport { Typ_VZEnum } from \"@models/staticEnumerators/Typ_VZEnum\";\r\nimport { HlavniPredmetCinnostiAttrMap } from \"@models/enumerators/IHlavniPredmetCinnostiModel\";\r\nimport { PravniFormaAttrMap } from \"@models/enumerators/IPravniFormaModel\";\r\nimport { Stav_postupuEnum } from \"@models/staticEnumerators/Stav_postupuEnum\";\r\nimport { IZpModel } from \"@models/IZpModelHist\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { useNewArrayMemo } from \"@utils/ReactUtils\";\r\nimport { kodNazevAttrs, lovCPVConditionFactory, lovNIPEZConditionFactory } from \"@models/filters/NipezFilters\";\r\n\r\nconst cn = setupCn('verejne-zakazky-filter');\r\n\r\nexport type VerejneZakazkyFilterProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n paramNames?: FilterParamsNames;\r\n hideActualState?: boolean;\r\n actualStateHiddenValues?: Stav_postupuEnum[];\r\n}>;\r\n\r\nconst FilterManager = FilterManagerBase as FilterManagerType<keyof IZpModel>;\r\n\r\nconst druhVZHiddenValues: Druh_VZEnum[] = ['Sluz', 'Staveb', 'Dodav'];\r\nconst druhVZOrder = createTransposeOrder<Druh_VZEnum>('Dodavky', 'Sluzby', 'Stavebni_prace', 'Koncese_na_sluzby', 'Koncese_na_stavebni_prace');\r\nconst typVZOrder = createTransposeOrder<Typ_VZEnum>('Maly_rozsah', 'Podlimitni', 'Podlimitni_mimo_ZVZ', 'Nadlimitni', 'Podlimitni_SoN', 'Nadlimitni_Son', 'Koncese_maleho_rozsahu', 'Koncese');\r\nconst stavZPHiddenValues: Stav_postupuEnum[] = ['ukonceno_ve_spec'];\r\nconst stavZPOrder = createTransposeOrder<Stav_postupuEnum>('planovana', 'neukoncena', 'zadana', 'plneni', 'zrusena');\r\n\r\nconst lovNipezConditonFactoryFunction = lovNIPEZConditionFactory('cpvPredmetu');\r\nconst lovCPVConditonFactoryFunction = lovCPVConditionFactory('nipezPredmetu');\r\n\r\nconst VerejneZakazkyFilter: FC<VerejneZakazkyFilterProps> = ({\r\n id,\r\n className,\r\n paramNames,\r\n hideActualState,\r\n actualStateHiddenValues\r\n}) => {\r\n const { ts } = useLocalization();\r\n const actualStateHiddenValuesMemo = useNewArrayMemo(...stavZPHiddenValues, ...actualStateHiddenValues ?? []);\r\n return (\r\n <FilterManager\r\n id={id}\r\n className={cn.with(className)()}\r\n paramNames={paramNames ?? urlConstants.verejneZakazky.paramNames}>\r\n <FilterManager.GroupsContainer id='groups' size='small'>\r\n <FilterManager.Group id='general' header={ts('NEN-812859')} defaultVisible noTopBorder>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='nazev' headerText={ts('NEN-742282')} />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812690')}\r\n maxItems={null}\r\n name='druhZR'\r\n attrMapping={DruhZadavacihoRizeniAttrMap}\r\n showAttrs='nazev' />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-743013')}\r\n name='mistoNUTS'\r\n attrMapping={NUTSModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition='(Plati_od=NULL OR Plati_od <= DB.getDateTime()) AND (Plati_do=NULL OR Plati_do >= DB.getDateTime())' />\r\n </FilterManager.Row>\r\n <FilterManager.Enum name='druhVZ' headerText={ts('NEN-812860')} enumName='Druh_VZ' hiddenValues={druhVZHiddenValues} order={druhVZOrder} />\r\n <FilterManager.Enum name='typVZ' headerText={ts('NEN-812689')} enumName='Typ_VZ' order={typVZOrder} />\r\n {renderIf(!hideActualState, () =>\r\n <FilterManager.Enum name='stavZP' headerText={ts('NEN-751267')} enumName='Stav_postupu' hiddenValues={actualStateHiddenValuesMemo} order={stavZPOrder} />\r\n )} \r\n <FilterManager.Number name='predpokladHodnotaCZK' headerText={ts('NEN-742286')} />\r\n <FilterManager.Date name='podaniLhuta' headerText={ts('NEN-742285')} />\r\n <FilterManager.Date name='datumPrvniUver' headerText={ts('NEN-794420')} />\r\n <FilterManager.Date name='datumPosledniUver' headerText={ts('NEN-794423')} />\r\n </FilterManager.Group>\r\n <FilterManager.Group id='item' header={ts('NEN-743014')}>\r\n <FilterManager.Row>\r\n <FilterManager.Lov\r\n headerText={ts('NEN-743015')}\r\n name='nipezPredmetu'\r\n attrMapping={NIPEZModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition={lovNipezConditonFactoryFunction} />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-743016')}\r\n name='cpvPredmetu'\r\n attrMapping={CPVModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition={lovCPVConditonFactoryFunction} />\r\n <FilterManager.Input name='mistoPlneni' headerText={ts('NEN-743017')} />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='popisPredmet' headerText={ts('NEN-751268')} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n <FilterManager.Group id='contractor' header={ts('NEN-751972')}>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='dodavatelNazev' headerText={ts('NEN-812861')} />\r\n <FilterManager.Input name='dodavatelICO' headerText={ts('NEN-812693')} />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='ucastnikNazev' headerText={ts('NEN-812862')} />\r\n <FilterManager.Input name='ucastnikICO' headerText={ts('NEN-812863')} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n <FilterManager.Group id='authority' header={ts('NEN-751471')}>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='zadavatelNazev' headerText={ts('NEN-742292')} />\r\n <FilterManager.Input name='zadavatelICO' headerText={ts('NEN-742293')} />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812505')}\r\n name='zadavatelHlavniPredmet'\r\n attrMapping={HlavniPredmetCinnostiAttrMap}\r\n showAttrs='nazev'\r\n condition='(Plati_od=null or Plati_od <= DB.getDate()) and (Plati_do=null or DB.getDate() <= Plati_do)' />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812869')}\r\n name='zadavatelPravniForma'\r\n attrMapping={PravniFormaAttrMap}\r\n showAttrs='nazev'\r\n condition='(Plati_od=null or Plati_od <= DB.getDate()) and (Plati_do=null or DB.getDate() <= Plati_do)' />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812868')}\r\n name='zadavatelNUTS'\r\n attrMapping={NUTSModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition='(Plati_od=NULL OR Plati_od <= DB.getDateTime()) AND (Plati_do=NULL OR Plati_do >= DB.getDateTime())' />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='zadavatelObec' headerText={ts('NEN-812866')} />\r\n <FilterManager.Input name='zadavatelCastObce' headerText={ts('NEN-812865')} />\r\n <FilterManager.Input name='zadavatelUlice' headerText={ts('NEN-812867')} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n <FilterManager.Group id='code' header={ts('NEN-742295')}>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='kod' headerText={ts('NEN-742283')} />\r\n <FilterManager.Input name='kodVestnik' headerText={ts('NEN-812731')} />\r\n <FilterManager.Input name='kodEU' headerText={ts('NEN-812691')} />\r\n <FilterManager.Input name='kodET' headerText={ts('NEN-812630')} />\r\n <FilterManager.Input name='kodIEN' headerText={ts('NEN-812692')} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n </FilterManager.GroupsContainer>\r\n </FilterManager>\r\n );\r\n};\r\n\r\nexport default React.memo(VerejneZakazkyFilter);\r\n","import { FC } from \"react\";\r\nimport { FilterParamsNames } from \"@constants/urlConstants\";\r\nimport { IProfilZadavateleModel } from \"@models/IProfilZadavateleModel\";\r\nimport { IZpModel, ZpAttrMap } from \"@models/IZpModelHist\";\r\nimport VerejneZakazkyFilter from \"../../verejneZakazky/verejneZakazky/VerejneZakazkyFilter\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { Stav_postupuEnum } from \"@models/staticEnumerators/Stav_postupuEnum\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { FulltextAttr } from \"@utils/FilterCondition\";\r\n\r\nconst DependentListFrame = DependentListFrameTyped<IProfilZadavateleModel>();\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst detailProfilZadavateleLoadKey = 'detail-profil-zadavatele';\r\nconst fulltextAttributes: FulltextAttr[] = [{ attrName: 'fullTextFiltr', type: 'contains' }, 'hlavniMistoNUTS', 'nipezPredmetuNazev'];\r\n\r\nconst defaultColumns: ListFrameColumns<IZpModel> = [ // default pokud neni predan parametr se sloupci\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 120\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618',\r\n width: 200\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: columnWidths.dateTime\r\n }\r\n];\r\n\r\nconst ListFrameZakazky: FC<{\r\n condition: string,\r\n loadKey: string,\r\n paramNames?: FilterParamsNames,\r\n columns?: ListFrameColumns<IZpModel>,\r\n hideActualState?: boolean,\r\n actualStateHiddenValues?: Stav_postupuEnum[]\r\n}> = ({\r\n condition,\r\n loadKey,\r\n paramNames,\r\n columns,\r\n hideActualState,\r\n actualStateHiddenValues\r\n}) => {\r\n columns ??= defaultColumns;\r\n return (\r\n <>\r\n <VerejneZakazkyFilter\r\n id={detailProfilZadavateleLoadKey + loadKey}\r\n paramNames={paramNames}\r\n hideActualState={hideActualState}\r\n actualStateHiddenValues={actualStateHiddenValues}\r\n />\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + loadKey}\r\n withPaginator\r\n detailLinkFactory={detailLinks.getLfZpDetailLinkFactory(true)}\r\n condition={condition}\r\n conditionParams={'profID'}\r\n fulltextAttributes={fulltextAttributes}\r\n orderBy={useOrderByMemo<IZpModel>({ desc: true, column: \"id\" })}\r\n onPageCount={ON_PAGE_ROWS}\r\n attrMapping={ZpAttrMap}\r\n skeletonCount={ON_PAGE_ROWS}\r\n columns={columns}\r\n paramNames={paramNames}\r\n />\r\n </>\r\n );\r\n }\r\n\r\nexport default ListFrameZakazky;","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type ICinnostSubjektuHist = IData & {\r\n hlavniPredmetCinnosti: string;\r\n jinaCinnost: string;\r\n}\r\n\r\nexport const CinnostSubjektuHistAttrMap = new AttrMapping<ICinnostSubjektuHist>('Cinnost_subj_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'hlavniPredmetCinnosti', serverName: 'Predmet_cinnosti.Nazev', type: 'string' },\r\n { clientName: 'jinaCinnost', serverName: 'Jina_cinnost', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IJinaAdresaSubjektuHist = IData & {\r\n nazev: string;\r\n obec: string;\r\n castObce: string;\r\n ulice: string;\r\n cisloPopisne: string;\r\n cisloOrientacni: string;\r\n psc: string;\r\n}\r\n\r\nexport const JinaAdresaSubjektuHistAttrMap = new AttrMapping<IJinaAdresaSubjektuHist>('Jina_adresa_sub_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazev', serverName: 'Nazev_Subjektu', type: 'string' },\r\n { clientName: 'obec', serverName: 'Obec', type: 'string' },\r\n { clientName: 'castObce', serverName: 'Cast_obce', type: 'string' },\r\n { clientName: 'ulice', serverName: 'Ulice', type: 'string' },\r\n { clientName: 'cisloPopisne', serverName: 'Cislo_popisne', type: 'string' },\r\n { clientName: 'cisloOrientacni', serverName: 'Cislo_orientacni', type: 'string' },\r\n { clientName: 'psc', serverName: 'PSC', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IOsobaHist = IData & {\r\n nazev: string;\r\n pracovniPozice: string;\r\n titulPred: string;\r\n jmeno: string;\r\n prijmeni: string;\r\n titulZa: string;\r\n email: string;\r\n mobil: string;\r\n telefonZamestnani: string;\r\n}\r\n\r\nexport const OsobaHistAttrMap = new AttrMapping<IOsobaHist>('Osoba_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'pracovniPozice', serverName: 'Pracovni_pozice', type: 'string' },\r\n { clientName: 'titulPred', serverName: 'Titul_pred', type: 'string' },\r\n { clientName: 'jmeno', serverName: 'Jmeno', type: 'string' },\r\n { clientName: 'prijmeni', serverName: 'Prijmeni', type: 'string' },\r\n { clientName: 'titulZa', serverName: 'Titul_za', type: 'string' },\r\n { clientName: 'email', serverName: 'Email', type: 'string' },\r\n { clientName: 'mobil', serverName: 'Mobil', type: 'string' },\r\n { clientName: 'telefonZamestnani', serverName: 'Telefon_zam', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IRelevantniCinnostSubjektuHist = IData & {\r\n druhRelevantniCinnosti: string;\r\n jinaCinnost: string;\r\n}\r\n\r\nexport const RelevantniCinnostSubjektuHistAttrMap = new AttrMapping<IRelevantniCinnostSubjektuHist>('Rel_cinnost_sub_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'druhRelevantniCinnosti', serverName: 'Rel_cinnost.Nazev', type: 'string' },\r\n { clientName: 'jinaCinnost', serverName: 'Jina_cinnost', type: 'string' },\r\n]);\r\n","import React from \"react\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { CinnostSubjektuHistAttrMap, ICinnostSubjektuHist } from \"@models/ICinnostSubjektuHist\";\r\nimport { IJinaAdresaSubjektuHist, JinaAdresaSubjektuHistAttrMap } from \"@models/IJinaAdresaSubjektuHist\";\r\nimport { IOsobaHist, OsobaHistAttrMap } from \"@models/IOsobaModelHist\";\r\nimport { IProfilZadavateleModel, ProfilZadavateleAttrMap } from \"@models/IProfilZadavateleModel\";\r\nimport { IRelevantniCinnostSubjektuHist, RelevantniCinnostSubjektuHistAttrMap } from \"@models/IRelevantniCinnostSubjektuHist\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\n\r\nconst DependentListFrame = DependentListFrameTyped<IProfilZadavateleModel>();\r\n\r\nconst DalsiInformacePage: React.FC = () => {\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812588\" fillContent showIf='Exists(Cinnost_subj_hist, aktualni = true and Prof = &prof and Subj = &subj)'>\r\n <ListFrameHlavniPredmetCinnosti />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812648\" fillContent showIf='Exists(Rel_cinnost_sub_hist, aktualni = true and Prof = &prof and Subj = &subj)'>\r\n <ListFrameDruhRelevantniCinnosti />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-609792\" fillContent showIf='Prof.Multiprofil=true'>\r\n <ListFrameZadavateleMultiprofilu />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812856\" fillContent showIf='Exists(Jina_adresa_sub_hist, aktualni = true and Prof = &prof and Subj = &subj)'>\r\n <ListFrameJinaAdresa />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-603539\" fillContent>\r\n <ListFrameKontaktniOsoby />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst jinaAdresaModelColumns: ListFrameColumns<IJinaAdresaSubjektuHist> = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812600',\r\n width: 250\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n },\r\n {\r\n attrName: 'castObce',\r\n locKey: 'NEN-812518'\r\n },\r\n {\r\n attrName: 'ulice',\r\n locKey: 'NEN-812523'\r\n },\r\n {\r\n attrName: 'cisloPopisne',\r\n locKey: 'NEN-812524'\r\n },\r\n {\r\n attrName: 'cisloOrientacni',\r\n locKey: 'NEN-812525'\r\n },\r\n {\r\n attrName: 'psc',\r\n locKey: 'NEN-812526',\r\n width: 50\r\n },\r\n];\r\nconst detailProfilZadavateleLoadKey = 'detail-profil-zadavatele';\r\n\r\nconst ListFrameJinaAdresa: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-jina-adresa'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n orderBy={useOrderByMemo<IJinaAdresaSubjektuHist>('cisloPopisne', 'obec')}\r\n lightVersion\r\n attrMapping={JinaAdresaSubjektuHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'padr', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={jinaAdresaModelColumns} />\r\n );\r\n}\r\n\r\n\r\nconst osobaModelColumns: ListFrameColumns<IOsobaHist> = [\r\n {\r\n attrName: 'titulPred',\r\n locKey: 'NEN-812568',\r\n width: 75\r\n },\r\n {\r\n attrName: 'jmeno',\r\n locKey: 'NEN-812567',\r\n },\r\n {\r\n attrName: 'prijmeni',\r\n locKey: 'NEN-812566',\r\n width: 130\r\n },\r\n {\r\n attrName: 'titulZa',\r\n locKey: 'NEN-812569',\r\n width: 75\r\n },\r\n {\r\n attrName: 'email',\r\n locKey: 'NEN-812580',\r\n width: 250\r\n },\r\n {\r\n attrName: 'telefonZamestnani',\r\n locKey: 'NEN-812550'\r\n },\r\n {\r\n attrName: 'mobil',\r\n locKey: 'NEN-812551',\r\n width: 130\r\n }\r\n];\r\n\r\nconst ListFrameKontaktniOsoby: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-kontaktni-osoba'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n orderBy={useOrderByMemo<IOsobaHist>('prijmeni', 'jmeno')}\r\n lightVersion\r\n attrMapping={OsobaHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pkoo', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={osobaModelColumns} />\r\n );\r\n}\r\n\r\nconst hlavniPredmetCinnostiModelColumns: ListFrameColumns<ICinnostSubjektuHist> = [\r\n {\r\n attrName: 'hlavniPredmetCinnosti',\r\n locKey: 'NEN-812505',\r\n width: 800\r\n },\r\n {\r\n attrName: 'jinaCinnost',\r\n locKey: 'NEN-812530'\r\n }\r\n];\r\n\r\nconst ListFrameHlavniPredmetCinnosti: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-hlavni-predmet-cinnosti-profil'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n orderBy='hlavniPredmetCinnosti'\r\n lightVersion\r\n attrMapping={CinnostSubjektuHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'phpc', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={hlavniPredmetCinnostiModelColumns} />\r\n );\r\n}\r\n\r\n\r\n\r\nconst druhRelevantniCinnostiModelColumns: ListFrameColumns<IRelevantniCinnostSubjektuHist> = [\r\n {\r\n attrName: 'druhRelevantniCinnosti',\r\n locKey: 'NEN-812650',\r\n width: 800\r\n },\r\n {\r\n attrName: 'jinaCinnost',\r\n locKey: 'NEN-812651'\r\n }\r\n];\r\n\r\nconst ListFrameDruhRelevantniCinnosti: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-druh-relevantni-cinnosti-profil'}\r\n condition='aktualni = true and Prof = @0 and Subj = @1'\r\n conditionParams={['profID', 'subjID']}\r\n lightVersion\r\n attrMapping={RelevantniCinnostSubjektuHistAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'prc', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={druhRelevantniCinnostiModelColumns} />\r\n );\r\n}\r\n\r\n\r\nconst zadavateleMultiprofiluModelColumns: ListFrameColumns<IProfilZadavateleModel> = [\r\n {\r\n attrName: 'platnyZruseny',\r\n locKey: 'NEN-770732',\r\n width: 100\r\n },\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812769'\r\n\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'nazevProfilu',\r\n locKey: 'NEN-812725',\r\n width: 200\r\n },\r\n];\r\n\r\nconst ListFrameZadavateleMultiprofilu: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-zadavatele-multiprofilu-profil'}\r\n condition='Prof = @0'\r\n conditionParams={['profID']}\r\n orderBy={useOrderByMemo<IProfilZadavateleModel>('platnyZruseny', { desc: true, column: 'datumVytvoreni' })}\r\n lightVersion\r\n detailLinkFactory={detailLinks.getProfilZadavateleDetailLinkFactory(false, true)}\r\n attrMapping={ProfilZadavateleAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pmulti', routeParamName: urlConstants.profilZadavateleDetail.urlRouteParam })}\r\n columns={zadavateleMultiprofiluModelColumns} />\r\n );\r\n}\r\n\r\nexport default DalsiInformacePage;","import { useLocalizationText } from \"@store/localizationStore\";\r\nimport { useTitleManager } from \"@store/nodeContextStore\";\r\n\r\nexport const usePageTitle = (title?: string) => {\r\n const t = useLocalizationText();\r\n const headerText = t('NEN-644069');\r\n const newTitle = title ? `${title} | ${headerText}` : headerText;\r\n useTitleManager().title = newTitle;\r\n}\r\n","import { columnWidths, ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport FilterManager from \"@components/FilterManager\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { DNSystemAttrMap, IDNSystemiModel } from \"@models/IDNSystemModel\";\r\nimport React, { FC, useRef } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { AttrNames } from \"@utils/AttrMapping\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<IDNSystemiModel> = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812716'\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812641'\r\n },\r\n {\r\n attrName: 'cpvKod',\r\n locKey: 'NEN-812701',\r\n width: 120\r\n },\r\n {\r\n attrName: 'stav',\r\n locKey: 'NEN-812623',\r\n width: 80\r\n },\r\n {\r\n attrName: 'datumZavedeni',\r\n locKey: 'NEN-812638',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'terminUkonceni',\r\n locKey: 'NEN-812624',\r\n width: columnWidths.date\r\n }\r\n];\r\n\r\nconst paramNames = urlConstants.registrDns.paramNames;\r\nconst registrDnsLoadKey = 'registr-dns-seznam';\r\nconst fulltextAttributes: AttrNames<IDNSystemiModel> = ['nazev', 'zadavatelNazev', 'cpvKod'];\r\n\r\nconst RegistrDns: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-744123'));\r\n useDescription(t('NEN-789438'));\r\n\r\n const listFrameRef = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-744020')}</h2>\r\n <ContentBlock>\r\n <FilterManager id='registr-dns-filter' paramNames={paramNames} />\r\n <ListFrame\r\n containerRef={listFrameRef}\r\n listFrameKey={registrDnsLoadKey}\r\n paramNames={paramNames}\r\n skeletonCount={ON_PAGE_ROWS}\r\n onPageCount={ON_PAGE_ROWS}\r\n attrMapping={DNSystemAttrMap}\r\n fulltextAttributes={fulltextAttributes}\r\n orderBy={useOrderByMemo<IDNSystemiModel>({ desc: false, column: 'stav' }, { desc: true, column: 'datumZavedeni' })}\r\n detailLinkFactory={detailLinks.getDnsDetailLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n collectionKey={registrDnsLoadKey}\r\n scrollToRef={listFrameRef} />\r\n </>\r\n );\r\n}\r\n\r\nexport default React.memo(RegistrDns);\r\n","import { match, useRouteMatch } from \"react-router\";\r\nimport ZakladniInformacePage from \"./page/ZakladniInformace\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { FilterParamsNames, urlConstants } from \"@constants/urlConstants\";\r\nimport { IProfilZadavateleModel, ProfilZadavateleAttrMap } from \"@models/IProfilZadavateleModel\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame/DetailFrame\";\r\nimport Tabs from \"@components/Tabs\";\r\nimport ListFrameZakazky from \"./page/PUTINZakazky\";\r\nimport { IZpModel } from \"@models/IZpModelHist\";\r\nimport DalsiInformacePage from \"./page/DalsiInformace\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport { Stav_postupuEnum } from \"@models/staticEnumerators/Stav_postupuEnum\";\r\nimport { joinConditionsByOr } from \"@utils/FilterCondition\";\r\nimport { ParsedUrlCondition } from \"@store/breadcrumbTitleStore\";\r\nimport { DNSystemAttrMap, IDNSystemiModel } from \"../../models/IDNSystemModel\";\r\nimport { AttrNames } from \"../../utils/AttrMapping\";\r\nimport React, { FC } from \"react\";\r\nimport { ON_PAGE_ROWS } from \"../verejneZakazky/registrDns/RegistrDns\";\r\nimport { detailLinks } from \"../../constants/detailLinks\";\r\nimport { useOrderByMemo } from \"../../utils/OrderByUtils\";\r\nimport { DetailDescriptionParams, useDetailDescription } from \"../../utils/DescriptionHook\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"../../components/ListFrame\";\r\nimport FilterManager from \"../../components/FilterManager\";\r\n\r\nconst detailProfilZadavateleLoadKey = 'detail-profil-zadavatele';\r\nconst DependentListFrame = DependentListFrameTyped<IProfilZadavateleModel>();\r\n\r\nexport const parseProfilUrl = (match: match<UrlParamObject> | null) => {\r\n var param = match?.params[urlConstants.profilZadavateleDetail.detailIdParam] || '';\r\n let kodProfilu = param;\r\n let idSubj = \"\";\r\n if (/^\\d+$/.test(param)) {\r\n idSubj = param;\r\n }\r\n return { idSubj, kodProfilu };\r\n}\r\n\r\nexport const prepareProfilCondition = ({ idSubj, kodProfilu }: { idSubj: string, kodProfilu: string }): ParsedUrlCondition => {\r\n return {\r\n condition: joinConditionsByOr(\r\n idSubj != \"\" && 'subj=@0 and Platny=true',\r\n kodProfilu != \"\" && `DB.Upper(Adresa_profil_NEN) like '%/${kodProfilu.toUpperCase().replace('_', '\\\\_')}'`,\r\n ) ?? '1=0',\r\n conditionParams: [idSubj]\r\n }\r\n}\r\n\r\nconst routeParamNameMulti = urlConstants.profilZadavateleDetail.urlRouteParam;\r\nconst zahajeneZakazkyParamNames = { filterParamName: 'pzvz', routeParamName: routeParamNameMulti };\r\nconst uzavreneZakazkyParamNames = { filterParamName: 'puvz', routeParamName: routeParamNameMulti };\r\nconst planovaneZakazkyParamNames = { filterParamName: 'ppvz', routeParamName: routeParamNameMulti };\r\nconst dnsProfilParamNames = { filterParamName: 'sdns', routeParamName: routeParamNameMulti };\r\n\r\nconst DetailProfilZadavatele: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n\r\n const { condition, conditionParams } = prepareProfilCondition(parseProfilUrl(match));\r\n\r\n return (\r\n <DetailFrame\r\n condition={condition}\r\n conditionParams={conditionParams}\r\n attrMapping={ProfilZadavateleAttrMap}\r\n loadKey={detailProfilZadavateleLoadKey}>\r\n <PageDetailuProfiluZadavatele />\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst commonDescriptionParts: DetailDescriptionParams<IProfilZadavateleModel>[] = [\r\n {\r\n lockey: 'NEN-812506',\r\n attrName: 'nazevOrganizace',\r\n },\r\n {\r\n lockey: 'NEN-812510',\r\n attrName: 'doplnekKNazvu',\r\n },\r\n {\r\n lockey: 'NEN-812698',\r\n attrName: 'evidencniCisloVeVestniku',\r\n },\r\n {\r\n lockey: 'NEN-812546',\r\n attrName: 'pfNazev',\r\n },\r\n {\r\n lockey: 'NEN-812517',\r\n attrName: 'obec',\r\n },\r\n {\r\n lockey: 'NEN-812518',\r\n attrName: 'castObce',\r\n },\r\n {\r\n lockey: 'NEN-812523',\r\n attrName: 'ulice',\r\n },\r\n {\r\n lockey: 'NEN-812525',\r\n attrName: 'cisloOrientacni',\r\n },\r\n {\r\n lockey: 'NEN-812527',\r\n attrName: 'stat',\r\n }\r\n]\r\n\r\nconst actualStateHiddenUkonceneZakazky: Stav_postupuEnum[] = ['planovana', 'neukoncena'];\r\nconst PageDetailuProfiluZadavatele: React.FC = () => {\r\n const { getAttr } = useDetailFrameContext<IProfilZadavateleModel>();\r\n const { ts } = useLocalization();\r\n\r\n useDetailDescription<IProfilZadavateleModel>(commonDescriptionParts);\r\n\r\n const id = getAttr('nazevOrganizace');\r\n if (!id.isFetching && !id.value) {\r\n return (\r\n <ContentBlock>\r\n <FlexBox direction='column' style={{ padding: '16px' }}>\r\n <h2>{ts('NEN-770247')}</h2>\r\n <p>{ts('NEN-770248')}</p>\r\n </FlexBox>\r\n </ContentBlock>\r\n );\r\n }\r\n return (\r\n <Tabs tabs={\r\n [\r\n {\r\n lockey: 'NEN-812507',\r\n path: urlConstants.profilZadavateleDetail.path,\r\n render: () => <ZakladniInformacePage routeParamName={routeParamNameMulti} />\r\n },\r\n {\r\n lockey: 'NEN-812542',\r\n path: urlConstants.profilZadavateleDetailKontakty.path,\r\n render: () => <DalsiInformacePage />\r\n },\r\n {\r\n lockey: 'NEN-812853',\r\n path: urlConstants.profilZadavateleDetailZahajeneZakazky.path,\r\n render: () =>\r\n <ContentBlock>\r\n <ListFrameZakazky\r\n condition='hierarchie = null and Stav_zp = !Stav_postupu.Neukoncena and aktualni = true and uver_profil = true and Prof=@0'\r\n loadKey='-zahajene-zakazky'\r\n paramNames={zahajeneZakazkyParamNames}\r\n columns={zpZahajeneColumns}\r\n hideActualState\r\n />\r\n </ContentBlock>\r\n },\r\n {\r\n lockey: 'NEN-812854',\r\n path: urlConstants.profilZadavateleDetailUzavreneZakazky.path,\r\n render: () =>\r\n <ContentBlock>\r\n <ListFrameZakazky\r\n condition='hierarchie = null and Stav_zp <> !Stav_postupu.Neukoncena and Stav_zp <> !Stav_postupu.Planovana and aktualni = true and uver_profil = true and Prof = @0'\r\n loadKey='-ukoncene-zakazky'\r\n paramNames={uzavreneZakazkyParamNames}\r\n columns={zpUkonceneColumns}\r\n actualStateHiddenValues={actualStateHiddenUkonceneZakazky}\r\n />\r\n </ContentBlock>\r\n },\r\n {\r\n lockey: 'NEN-812855',\r\n path: urlConstants.profilZadavateleDetailPlanovaneZakazky.path,\r\n render: () =>\r\n <ContentBlock>\r\n <ListFrameZakazky\r\n condition='hierarchie = null and Stav_zp = !Stav_postupu.Planovana and aktualni = true and uver_profil = true and Prof = @0'\r\n loadKey='-planovane-zakazky'\r\n paramNames={planovaneZakazkyParamNames}\r\n columns={zpPlanovaneColumns}\r\n hideActualState\r\n />\r\n </ContentBlock>\r\n },\r\n {\r\n lockey: 'NEN-814485',\r\n path: urlConstants.profilZadavateleDetailSeznamDns.path,\r\n render: () =>\r\n <ContentBlock>\r\n <FilterManager id='seznam-dns-filter' paramNames={dnsProfilParamNames} />\r\n <ListFrameDnsProfil\r\n condition='Zadavatel=@0'\r\n loadKey='-seznam-dns'\r\n paramNames={dnsProfilParamNames}\r\n columns={seznamDnsProfilColumns}\r\n hideActualState\r\n />\r\n </ContentBlock>\r\n },\r\n ]\r\n } />\r\n );\r\n}\r\n\r\nconst zpZahajeneColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 120\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618',\r\n width: 200\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: columnWidths.dateTime\r\n }\r\n];\r\n\r\nconst zpUkonceneColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 120\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618',\r\n width: 200\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: columnWidths.dateTime\r\n }\r\n];\r\n\r\nconst zpPlanovaneColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618',\r\n width: 200\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: columnWidths.dateTime\r\n }\r\n];\r\nconst seznamDnsProfilColumns: ListFrameColumns<IDNSystemiModel> = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812716'\r\n },\r\n {\r\n attrName: 'cpvKod',\r\n locKey: 'NEN-812701',\r\n width: 120\r\n },\r\n {\r\n attrName: 'stav',\r\n locKey: 'NEN-812623',\r\n width: 80\r\n },\r\n {\r\n attrName: 'datumZavedeni',\r\n locKey: 'NEN-812638',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'terminUkonceni',\r\n locKey: 'NEN-812624',\r\n width: columnWidths.date\r\n }\r\n];\r\n\r\nconst fulltextAttributes: AttrNames<IDNSystemiModel> = ['nazev', 'zadavatelNazev', 'cpvKod'];\r\n\r\nconst ListFrameDnsProfil: FC<{\r\n condition: string,\r\n loadKey: string,\r\n columns?: ListFrameColumns<IDNSystemiModel>,\r\n paramNames?: FilterParamsNames,\r\n hideActualState?: boolean\r\n}> = ({\r\n condition,\r\n loadKey,\r\n columns,\r\n paramNames,\r\n hideActualState\r\n}) => (\r\n <DependentListFrame\r\n listFrameKey={detailProfilZadavateleLoadKey + '-dns-seznam'}\r\n condition={condition}\r\n conditionParams={'subjID'}\r\n orderBy={useOrderByMemo<IDNSystemiModel>({ desc: false, column: 'stav' }, { desc: true, column: 'datumZavedeni' })}\r\n fulltextAttributes={fulltextAttributes}\r\n paramNames={dnsProfilParamNames}\r\n skeletonCount={ON_PAGE_ROWS}\r\n onPageCount={ON_PAGE_ROWS}\r\n attrMapping={DNSystemAttrMap}\r\n columns={seznamDnsProfilColumns}\r\n detailLinkFactory={detailLinks.getDnsDetailLinkFactory(true)}\r\n />\r\n);\r\n\r\n\r\nexport default DetailProfilZadavatele;","import React from \"react\";\r\nimport { match, useRouteMatch } from \"react-router\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { ISystemKvalifikaceModel, SystemKvalifikaceAttrMap } from \"@models/ISystemKvalifikaceModel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumn } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { ParsedUrlCondition } from \"@store/breadcrumbTitleStore\";\r\n\r\nconst DataLabel = DataLabelTyped<ISystemKvalifikaceModel>();\r\n\r\nconst registrSKDetailLoadkey = 'detail-sk';\r\n\r\nexport const parseSkUrl = (match: match<UrlParamObject> | null) => {\r\n return (match?.params[urlConstants.registrSKDetail.detailIdParam] || '');\r\n}\r\n\r\nexport const prepareSkCondition = (id: string): ParsedUrlCondition => {\r\n return {\r\n condition: 'ID=@0',\r\n conditionParams: [id]\r\n }\r\n}\r\n\r\nconst DetailSystemKvalifikace: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const { condition, conditionParams } = prepareSkCondition(parseSkUrl(match));\r\n\r\n return (\r\n <DetailFrame\r\n condition={condition}\r\n conditionParams={conditionParams}\r\n attrMapping={SystemKvalifikaceAttrMap}\r\n loadKey={registrSKDetailLoadkey}\r\n >\r\n <DetailSK />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailSK: React.FC = () => {\r\n const { getAttr } = useDetailFrameContext<ISystemKvalifikaceModel>();\r\n const match = useRouteMatch();\r\n\r\n useDetailDescription<ISystemKvalifikaceModel>([\r\n {\r\n lockey: 'NEN-812763',\r\n attrName: 'skNazev',\r\n },\r\n {\r\n lockey: 'NEN-812764',\r\n attrName: 'skPredmet',\r\n },\r\n {\r\n lockey: 'NEN-812768',\r\n attrName: 'skUcel',\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-812763\" attrName='skNazev' fillGrid />\r\n <DataLabel lockey=\"NEN-812641\" attrName='skZadavatelNazev' detailLink={detailLinks.getSubjektDetailUrl(getAttr('skZadavatelID')?.value, match, true)} />\r\n <DataLabel lockey=\"NEN-812765\" attrName='skKod' />\r\n <DataLabel lockey=\"NEN-812766\" attrName='skStav' />\r\n <DataLabel lockey=\"NEN-812759\" attrName='obdobiOd' />\r\n <DataLabel lockey=\"NEN-812762\" attrName='obdobiDo' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812597\" showIf=\"Predmet<>null or Ucel<>null\">\r\n <DataLabel lockey=\"NEN-812764\" attrName='skPredmet' fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812768\" attrName='skUcel' fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812832\" fillContent>\r\n <ListFrameDokum />\r\n </GroupBox>\r\n </>\r\n );\r\n\r\n}\r\nconst dokumModelColumns: ListFrameColumn<IUverejnenyDokumModel>[] = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFrameDokum: React.FC = () => {\r\n const DependentListFrame = DependentListFrameTyped<ISystemKvalifikaceModel>();\r\n\r\n return (\r\n <DependentListFrame\r\n listFrameKey={registrSKDetailLoadkey + '-dokum-SK'}\r\n condition=\"Info_uver.SK=@0 and Uverejnen = true\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dokSK', routeParamName: urlConstants.registrSKDetail.urlRouteParam })}\r\n columns={dokumModelColumns}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\n\r\nexport default DetailSystemKvalifikace;\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IEvidUverVVZModel = IData & {\r\n datumPotvrzeni: Date;\r\n datumUverejneni: Date;\r\n druhForm: string;\r\n evidCisloForm: string;\r\n histId: number;\r\n kodForm: string;\r\n odkaz: string;\r\n profId: number;\r\n typForm: string;\r\n \r\n}\r\n\r\n\r\n\r\nexport const EvidUverVVZAttrMap = new AttrMapping<IEvidUverVVZModel>('VW_Evidence_VVZ', [\r\n { clientName: 'datumPotvrzeni', serverName: 'Datum_potvrzeni', type: 'dateTime' },\r\n { clientName: 'datumUverejneni', serverName: 'Datum_uver', type: 'dateTime' },\r\n { clientName: 'druhForm', serverName: 'Typ_form.Nazev', type: 'string' },\r\n { clientName: 'evidCisloForm', serverName: 'Evid_c_Form', type: 'string' },\r\n { clientName: 'histId', serverName: 'Info_uver.Historie', type: 'id' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'kodForm', serverName: 'Typ_form.Kod', type: 'string' },\r\n { clientName: 'odkaz', serverName: 'Odkaz', type: 'string' },\r\n { clientName: 'profId', serverName: 'Info_uver.Historie', type: 'id' },\r\n { clientName: 'typForm', serverName: 'Typ_formulare', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IDetailUverejneniModel = IData & {\r\n castObce: string;\r\n cislo: number;\r\n cisloOrient: string;\r\n cisloPop: number;\r\n cisloSmlouva: string;\r\n datumOdeslani: Date;\r\n datumPodpisu: Date;\r\n datumPotvrz: Date;\r\n datumUver: Date;\r\n datumUverInfo: Date;\r\n datumUzavreni: Date;\r\n datumVyber: Date;\r\n dic: string;\r\n emailAdresa: string;\r\n formKod: string;\r\n formNazev: string;\r\n formTyp: string;\r\n ico: string;\r\n icoVed: string;\r\n idInfoUver: number;\r\n menaUverKod: string;\r\n menaUverNazev: string;\r\n mnnc: boolean;\r\n mnncDuvod: string;\r\n nabCenaBez: number;\r\n nabCenaS: number;\r\n nazev: string;\r\n nazevDodPoddod: string;\r\n nazevVed: string;\r\n obec: string;\r\n odkaz: string;\r\n odkazSmlouva: string;\r\n odstoupeni: boolean;\r\n odstoupeniDuvod: string;\r\n oduvodVyberuDod: string;\r\n oduvodKomunProstredky: string;\r\n oduvodNerozdeleni: string;\r\n oduvodPouziti: string;\r\n oduvodPouzitiJRBU: string;\r\n oduvodPouzitiJRSU: string;\r\n oduvodStanoveniPozadav: string;\r\n plneniRok: number;\r\n plneniCenaS: number;\r\n plneniCenaBez: number;\r\n pravFormaNazev: string;\r\n predmetInfo: string;\r\n predmetZprava: string;\r\n prijataOpatreni: string;\r\n psc: string;\r\n ulice: string;\r\n uredniNazev: string;\r\n sdruzDod: boolean;\r\n smluvniCenaBez: number;\r\n smluvniCenaBezAkt: number;\r\n smluvniCenaS: number;\r\n smluvniCenaSAkt: number;\r\n soutezCenaBez: number;\r\n statKod: string;\r\n statNazev: string;\r\n text: string;\r\n textDotaz: string;\r\n textVysvetleni: string;\r\n uzavrenaSmlouva: boolean;\r\n vylouc: boolean;\r\n vyloucDuvod: string;\r\n zaklPopisPlneni: string;\r\n}\r\n\r\n\r\n\r\nexport const DetailUverejneniAttrMap = new AttrMapping<IDetailUverejneniModel>('Detail_uverejneni', [\r\n { clientName: 'castObce', serverName: 'Cast_obce', type: 'string' },\r\n { clientName: 'cislo', serverName: 'Cislo', type: 'number' },\r\n { clientName: 'cisloOrient', serverName: 'Cislo_orientacni', type: 'string' },\r\n { clientName: 'cisloPop', serverName: 'Cislo_popisne', type: 'number' },\r\n { clientName: 'cisloSmlouva', serverName: 'Evidencni_cislo_sml', type: 'string' },\r\n { clientName: 'datumOdeslani', serverName: 'Datum_odeslani', type: 'dateTime' },\r\n { clientName: 'datumPodpisu', serverName: 'Datum_zmeny', type: 'date' },\r\n { clientName: 'datumPotvrz', serverName: 'Datum_potvrzeni', type: 'dateTime' },\r\n { clientName: 'datumUver', serverName: 'Datum_uverejneni', type: 'dateTime' },\r\n { clientName: 'datumUverInfo', serverName: 'Info_uver.Datum_uverejneni', type: 'dateTime' },\r\n { clientName: 'datumUzavreni', serverName: 'Datum_uzavreni', type: 'date' },\r\n { clientName: 'datumVyber', serverName: 'Datum_vyberu', type: 'date' },\r\n { clientName: 'dic', serverName: 'DIC', type: 'string' },\r\n { clientName: 'emailAdresa', serverName: 'Email_adresa', type: 'string' },\r\n { clientName: 'formKod', serverName: 'Typ_form.Kod_VVZ', type: 'string' },\r\n { clientName: 'formNazev', serverName: 'Typ_form.Nazev', type: 'string' },\r\n { clientName: 'formTyp', serverName: 'Typ_formulare', type: 'enum', typeParam: 'Typ_formulare' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'idInfoUver', serverName: 'Info_uver', type: 'id' },\r\n { clientName: 'ico', serverName: 'IC', type: 'string' },\r\n { clientName: 'icoVed', serverName: 'ICO_vedouciho', type: 'string' },\r\n { clientName: 'menaUverKod', serverName: 'Mena_uver.Kod', type: 'string' },\r\n { clientName: 'menaUverNazev', serverName: 'Mena_uver.Nazev', type: 'string' },\r\n { clientName: 'mnnc', serverName: 'Vyrazena_pro_MNNC', type: 'bool' },\r\n { clientName: 'mnncDuvod', serverName: 'Duvod_MNNC', type: 'string' },\r\n { clientName: 'nabCenaBez', serverName: 'Nab_cena_bez_DPH', type: 'money', },\r\n { clientName: 'nabCenaS', serverName: 'Nabidkova_cena', type: 'money', },\r\n { clientName: 'nazev', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'nazevDodPoddod', serverName: 'Nazev_dod_poddod', type: 'string' },\r\n { clientName: 'nazevVed', serverName: 'Nazev_vedouciho', type: 'string' },\r\n { clientName: 'obec', serverName: 'Obec', type: 'string' },\r\n { clientName: 'odkaz', serverName: 'Odkaz', type: 'string' },\r\n { clientName: 'odkazSmlouva', serverName: 'Info_uver.Historie.Odkaz_na_smlouvu', type: 'string' },\r\n { clientName: 'odstoupeni', serverName: 'Odstoupeni', type: 'bool' },\r\n { clientName: 'odstoupeniDuvod', serverName: 'Duvod_odstoupeni', type: 'string' },\r\n { clientName: 'oduvodVyberuDod', serverName: 'Oduv_vyberu_dodavatele', type: 'text' },\r\n { clientName: 'oduvodKomunProstredky', serverName: 'Oduv_komunikace', type: 'text' },\r\n { clientName: 'oduvodNerozdeleni', serverName: 'Oduv_nadlimit_casti', type: 'text' },\r\n { clientName: 'oduvodPouziti', serverName: 'Oduv_JRBU_ZR', type: 'text' },\r\n { clientName: 'oduvodPouzitiJRBU', serverName: 'Oduv_JRBU', type: 'text' },\r\n { clientName: 'oduvodPouzitiJRSU', serverName: 'Oduv_JRSU', type: 'text' },\r\n { clientName: 'oduvodStanoveniPozadav', serverName: 'Oduv_obratu', type: 'text' },\r\n { clientName: 'plneniRok', serverName: 'Rok', type: 'number' },\r\n { clientName: 'plneniCenaS', serverName: 'Skutecna_cena', type: 'money', },\r\n { clientName: 'plneniCenaBez', serverName: 'Cena_bez_PDH', type: 'money', },\r\n { clientName: 'pravFormaNazev', serverName: 'PF.Nazev', type: 'string' },\r\n { clientName: 'predmetInfo', serverName: 'Info_uver.Predmet', type: 'string' },\r\n { clientName: 'predmetZprava', serverName: 'Nazev', type: 'string' },\r\n { clientName: 'prijataOpatreni', serverName: 'Prijata_opatreni', type: 'text' },\r\n { clientName: 'psc', serverName: 'PSC', type: 'string' },\r\n { clientName: 'ulice', serverName: 'Ulice', type: 'string' },\r\n { clientName: 'uredniNazev', serverName: 'Uredni_nazev', type: 'string' },\r\n { clientName: 'sdruzDod', serverName: 'Sdruzeni_dodavatelu', type: 'bool' },\r\n { clientName: 'smluvniCenaBez', serverName: 'Smluvni_cena_bez_DPH', type: 'money', },\r\n { clientName: 'smluvniCenaBezAkt', serverName: 'Sml_cena_bez_DPH_akt', type: 'money', },\r\n { clientName: 'smluvniCenaS', serverName: 'Smluvni_cena_s_DPH', type: 'money', },\r\n { clientName: 'smluvniCenaSAkt', serverName: 'Sml_cena_s_DPH_akt', type: 'money', },\r\n { clientName: 'soutezCenaBez', serverName: 'Soutez_cena_bez_DPH', type: 'money', },\r\n { clientName: 'statKod', serverName: 'Stat_uver.Kod', type: 'string' },\r\n { clientName: 'statNazev', serverName: 'Stat_uver.Nazev', type: 'string' },\r\n { clientName: 'text', serverName: 'Info_uver.Text', type: 'string' },\r\n { clientName: 'textDotaz', serverName: 'Text_dotazu', type: 'string' },\r\n { clientName: 'textVysvetleni', serverName: 'Informace', type: 'text' },\r\n { clientName: 'uzavrenaSmlouva', serverName: 'Uzavrena_smlouva', type: 'bool' },\r\n { clientName: 'vylouc', serverName: 'Vylouceni', type: 'bool' },\r\n { clientName: 'vyloucDuvod', serverName: 'Duvod_vylouceni', type: 'text' },\r\n { clientName: 'zaklPopisPlneni', serverName: 'Zakl_popis_plneni', type: 'text' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IPolozkaPredmetuHistModel = IData & {\r\n cpvPolozkyNazev: string;\r\n cpvPolozkyKod: string;\r\n createCas: Date;\r\n jednotkaKod: string;\r\n mernaJednotkaNazev: string;\r\n mernaJednotkaKod: string;\r\n mnozstvi: number;\r\n nazevPolozky: string;\r\n nipezPolozkyNazev: string;\r\n nipezPolozkyKod: string;\r\n plniDod: boolean;\r\n popisPolozky: string;\r\n popisMistoPlneni: string;\r\n predpoklHodnota: number;\r\n predpoklHodnotaMJ: number;\r\n puvodniID: number;\r\n zpID: number;\r\n}\r\n\r\nexport const PolozkaPredmetuHistAttrMap = new AttrMapping<IPolozkaPredmetuHistModel>('Polozka_predm_hist', [\r\n { clientName: 'cpvPolozkyNazev', serverName: 'CPV_polozky.Nazev', type: 'string' },\r\n { clientName: 'cpvPolozkyKod', serverName: 'CPV_polozky.Kod', type: 'string' },\r\n { clientName: 'createCas', serverName: 'create_cas', type: 'dateTime' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'jednotkaKod', serverName: 'Vlastni_jednotka', type: 'string' },\r\n { clientName: 'mernaJednotkaNazev', serverName: 'MJ.Nazev', type: 'string' },\r\n { clientName: 'mernaJednotkaKod', serverName: 'MJ.Kod', type: 'string' },\r\n { clientName: 'mnozstvi', serverName: 'Mnozstvi', type: 'number' },\r\n { clientName: 'nazevPolozky', serverName: 'Nazev_polozky', type: 'string' },\r\n { clientName: 'nipezPolozkyNazev', serverName: 'NIPEZ_polozky.Nazev', type: 'string' },\r\n { clientName: 'nipezPolozkyKod', serverName: 'NIPEZ_polozky.Kod', type: 'string' },\r\n { clientName: 'plniDod', serverName: 'Musi_plnit_dod', type: 'bool' },\r\n { clientName: 'popisPolozky', serverName: 'Popis_polozky', type: 'text' },\r\n { clientName: 'popisMistoPlneni', serverName: 'Misto_plneni', type: 'string' },\r\n { clientName: 'predpoklHodnota', serverName: 'Predpokl_hodnota', type: 'number' },\r\n { clientName: 'predpoklHodnotaMJ', serverName: 'Predpokl_hodnota_MJ', type: 'number' },\r\n { clientName: 'puvodniID', serverName: 'Puvodni_ID', type: 'number' },\r\n { clientName: 'zpID', serverName: 'ZP', type: 'id' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IMistoNUTSModel = IData & {\r\n cpvPolozkyKod: string;\r\n createCas: Date;\r\n nazevPolozky: string;\r\n nutsKod: string;\r\n nutsNazev: string;\r\n nipezPolozkyKod: string;\r\n}\r\n\r\nexport const MistoNUTSAttrMap = new AttrMapping<IMistoNUTSModel>('Misto_NUTS_hist', [\r\n { clientName: 'cpvPolozkyKod', serverName: 'CPV_polozky.Kod', type: 'string' },\r\n { clientName: 'createCas', serverName: 'create_cas', type: 'dateTime' },\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazevPolozky', serverName: 'Nazev_polozky', type: 'string' },\r\n { clientName: 'nutsKod', serverName: 'vazba_NUTS.Kod', type: 'string' },\r\n { clientName: 'nutsNazev', serverName: 'vazba_NUTS.Nazev', type: 'string' },\r\n { clientName: 'nipezPolozkyKod', serverName: 'NIPEZ_polozky.Kod', type: 'string' },\r\n]);\r\n","import React, { FC, PropsWithChildren } from 'react'\r\nimport { setupCn, Classes } from '@utils/BemUtils';\r\nimport { useDetailFrameContext } from '@components/DetailFrame';\r\n\r\nimport './InfoText.scss';\r\nimport Note from '@components/Note/Note';\r\n\r\nconst cn = setupCn('info-text');\r\n\r\nexport type InfoTextProps = PropsWithChildren<{\r\n className?: Classes;\r\n fillGrid?: boolean;\r\n}>;\r\n\r\nconst InfoText: FC<InfoTextProps & { showIf?: string | boolean }> = ({\r\n className,\r\n children,\r\n showIf,\r\n fillGrid\r\n}) => {\r\n const { evaluateCondition } = useDetailFrameContext();\r\n\r\n if (showIf === false)\r\n return null;\r\n\r\n if (typeof showIf === 'string' && evaluateCondition(showIf) === false)\r\n return null;\r\n\r\n return (\r\n <div className={cn.with(className).main({\r\n '--fill-grid': fillGrid\r\n })}>\r\n <Note>{children}</Note>\r\n </div>\r\n );\r\n};\r\n\r\nInfoText.displayName = 'InfoText';\r\n\r\nexport default React.memo(InfoText);\r\n","import { Fragment, ReactNode, useMemo } from \"react\";\r\nimport { renderIf } from \"./RenderUtils\";\r\n\r\nconst newLineToBr = (text: string): ReactNode => {\r\n return text?.split('\\n').map((line, index) =>\r\n <Fragment key={index}>\r\n {renderIf(index != 0, <br />)}\r\n {line}\r\n </Fragment>\r\n ) ?? null;\r\n}\r\n\r\nexport const formatText = (textToFormat: string): ReactNode => {\r\n if (!textToFormat) {\r\n return '';\r\n }\r\n const tokens = textToFormat.split(/(\\[[^\\[\\]]*?\\])/g);\r\n if (!tokens) {\r\n return newLineToBr(textToFormat) ?? '';\r\n }\r\n return tokens?.map((token, index) => {\r\n if (/^\\[.*\\]$/.test(token)) {\r\n return <b key={index}>{newLineToBr(token.slice(1, -1))}</b>;\r\n }\r\n return newLineToBr(token);\r\n });\r\n}\r\n\r\nexport const useFormatText = (textToFormat: string) => {\r\n return useMemo(() => formatText(textToFormat), [textToFormat]);\r\n}\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { useFormatText } from \"@utils/FormatTextUtils\";\r\n\r\nconst cn = setupCn('formated-text');\r\n\r\nexport type FormatedTextProps = PropsWithChildren<{\r\n className?: Classes;\r\n boldPrimaryColor?: boolean;\r\n}>;\r\n\r\nconst FormatedText: FC<FormatedTextProps> = ({\r\n className,\r\n boldPrimaryColor,\r\n children\r\n}) => {\r\n const formatedText = useFormatText(typeof children == 'string' ? children : '');\r\n return (\r\n <span className={cn.with(className).main({\r\n '--bold-primary-color': boldPrimaryColor\r\n })}>\r\n {typeof children == 'string' ? formatedText : children}\r\n </span>\r\n );\r\n};\r\n\r\nFormatedText.displayName = 'FormatedText';\r\n\r\nexport default React.memo(FormatedText);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport * as qs from 'query-string';\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport { usePrivatePortal } from \"@store/nodeContextStore\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nconst cn = setupCn('multiweb-link');\r\n\r\nexport type MultiwebLinkProps = PropsWithChildren<{\r\n className?: Classes;\r\n urlParams: UrlParamObject;\r\n}>;\r\n\r\nconst MultiwebLink: FC<MultiwebLinkProps> = ({\r\n urlParams,\r\n className,\r\n children\r\n}) => {\r\n const { t } = useLocalization();\r\n const privatePortal = usePrivatePortal();\r\n const history = useHistory();\r\n\r\n const urlParamsString = qs.stringify(urlParams);\r\n\r\n const hasPrivatePortal = !!privatePortal.url;\r\n\r\n const url = !privatePortal.url ? '#' : history.createHref({\r\n pathname: privatePortal.url,\r\n search: urlParamsString\r\n });\r\n\r\n return (\r\n <ButtonLink\r\n isAnchor\r\n size='small'\r\n isOutlined\r\n className={cn.with(className)()}\r\n to={url}\r\n title={t(hasPrivatePortal ? 'NEN-768242' : 'NEN-768241')}\r\n disabled={!hasPrivatePortal}\r\n target={hasPrivatePortal ? '_blank' : undefined}>\r\n {children}\r\n </ButtonLink>\r\n );\r\n};\r\n\r\nMultiwebLink.displayName = 'MultiwebLink';\r\n\r\nexport default React.memo(MultiwebLink);\r\n","import React from \"react\";\r\nimport { match, useRouteMatch } from \"react-router\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { IZpModel, ZpAttrMap } from \"@models/IZpModelHist\";\r\nimport Tabs, { TabType } from \"@components/Tabs\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame/DetailFrame\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"@models/IInfoUVerejneniModel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { EvidUverVVZAttrMap, IEvidUverVVZModel } from \"@models/IEvidUverVVZModel\";\r\nimport { DetailUverejneniAttrMap, IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { IPolozkaPredmetuHistModel, PolozkaPredmetuHistAttrMap } from \"@models/IPolozkaPredmetuHistModel\";\r\nimport { IMistoNUTSModel, MistoNUTSAttrMap } from \"@models/IMistoNUTSModelHist\";\r\nimport InfoText from \"@components/InfoText/InfoText\";\r\nimport FormatedText from \"@components/FormatedText/FormatedText\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport MultiwebLink from \"@components/MultiwebLink/MultiwebLink\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { DependentListFrameTyped } from \"@components/ListFrame/DependentListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { columnWidths, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { DetailDescriptionParams, useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { ParsedUrlCondition } from \"@store/breadcrumbTitleStore\";\r\n\r\nconst DataLabel = DataLabelTyped<IZpModel>();\r\nconst DependentListFrame = DependentListFrameTyped<IZpModel>();\r\n\r\nconst detailVerejneZakazkyLoadKey = 'detail-verejne-zakazky'\r\n\r\nexport const parseVZUrl = (match: match<UrlParamObject> | null) => {\r\n const isCast = !!match?.params[urlConstants.verejneZakazkyCastiDetail.detailIdParam];\r\n const urlCode = (isCast ? match?.params[urlConstants.verejneZakazkyCastiDetail.detailIdParam] : match?.params[urlConstants.verejneZakazkyDetail.detailIdParam]) || '';\r\n const code = urlCode.replace(/-/g, '/');\r\n const isVerejnaZakazka = /.+\\/V\\d+/.test(code);\r\n return { code, isCast, urlCode, isVerejnaZakazka };\r\n}\r\n\r\nexport const prepareVZCondition = (code: string): ParsedUrlCondition => {\r\n return {\r\n condition: 'Kod=@0 AND aktualni = true and not exists(Zadavaci_postup_hist,Hist = &Hist and create_cas>&create_cas and aktualni = true)',\r\n conditionParams: [code]\r\n }\r\n}\r\n\r\nconst DetailVerejneZakazky: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const { ts } = useLocalization();\r\n const { code, isCast, urlCode, isVerejnaZakazka } = parseVZUrl(match);\r\n const { condition, conditionParams } = prepareVZCondition(code);\r\n const routeParamName = isCast ? urlConstants.verejneZakazkyCastiDetail.urlRouteParam : urlConstants.verejneZakazkyDetail.urlRouteParam;\r\n const tabs: TabType[] = [\r\n {\r\n lockey: 'NEN-812829',\r\n path: isCast ? urlConstants.verejneZakazkyCastiDetail.path : urlConstants.verejneZakazkyDetail.path,\r\n render: () => <ZakladInfo routeParamName={routeParamName} isVerejnaZakazka={isVerejnaZakazka} />\r\n },\r\n {\r\n lockey: 'NEN-770284',\r\n showIf: \"exists(Uverejneny_dokum, (ZP=&Hist or ZP.Hierarchie=&Hist or DNS.VZ=&Hist or DNS.VZ.Hierarchie=&Hist) and Uverejnen=true and (Info_uver.Uverejneni IN['VYZ','JED','NAB','ZP','KD','VYLOUC','NEJ','DNS','DNSAKTUAL'] or Info_uver.Uverejneni=null))\",\r\n path: isCast ? urlConstants.verejneZakazkyDetailCastiZadavaciDokumentace.path : urlConstants.verejneZakazkyDetailZadavaciDokumentace.path,\r\n render: () => <ZadavaciDokumentace routeParamName={routeParamName} />\r\n },\r\n {\r\n lockey: 'NEN-812732',\r\n showIf: \"not(Druh_ZR.Kod in['ZP25','ZP26','ZP27','ZP28']) and exists(Info_uverejneni, ZP=&Hist and Uverejneni IN['DODINFO'] and Platny=true)\",\r\n path: isCast ? urlConstants.verejneZakazkyDetailCastiVysvetleniDokumentace.path : urlConstants.verejneZakazkyDetailVysvetleniDokumentace.path,\r\n render: () => <VysvetleniDokumentace routeParamName={routeParamName} />\r\n },\r\n {\r\n lockey: 'NEN-812771',\r\n showIf: \"Druh_ZR.Kod in['ZP25','ZP26'] and exists(Info_uverejneni, ZP=&Hist and Uverejneni IN['DODINFO'] and Platny=true)\",\r\n path: isCast ? urlConstants.verejneZakazkyDetailCastiVysvetleniDokumentace.path : urlConstants.verejneZakazkyDetailVysvetleniDokumentace.path,\r\n render: () => <VysvetleniDokumentaceSON routeParamName={routeParamName} />\r\n },\r\n {\r\n lockey: 'NEN-812831',\r\n showIf: \"exists(Info_uverejneni, ZP=&Hist and Uverejneni IN['VYS','PZ','PLN','SUB','UCH','ZRUS','ZMENASML','DNS'] and Platny=true)\",\r\n path: isCast ? urlConstants.verejneZakazkyDetailCastiVysledek.path : urlConstants.verejneZakazkyDetailVysledek.path,\r\n render: () => <Vysledek routeParamName={routeParamName} />\r\n }\r\n ]\r\n\r\n if (!isCast) {\r\n tabs.splice(1, 0, {\r\n lockey: 'NEN-812636',\r\n showIf: 'Rozdeleni_na_casti = true or Exists(VPropojene_casti, ZP_ID = &ID)',\r\n path: urlConstants.VerejneZakazkyCasti.path,\r\n render: () => <Casti routeParamName={routeParamName} />\r\n })\r\n }\r\n\r\n return (\r\n <DetailFrame\r\n condition={condition}\r\n conditionParams={conditionParams}\r\n attrMapping={ZpAttrMap}\r\n loadKey={detailVerejneZakazkyLoadKey}\r\n >\r\n <Tabs tabs={tabs} headerRight={\r\n <div className='text-right'>\r\n <MultiwebLink\r\n urlParams={{ zp: urlCode }}>\r\n {ts('NEN-750892')}\r\n </MultiwebLink>\r\n </div>\r\n } />\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst commonDescriptionParts: DetailDescriptionParams<IZpModel>[] = [\r\n {\r\n lockey: 'NEN-812694',\r\n attrName: 'nazev',\r\n },\r\n {\r\n lockey: 'NEN-812618',\r\n attrName: 'zadavatelNazev',\r\n },\r\n {\r\n lockey: 'NEN-812570',\r\n attrName: 'popisPredmet',\r\n }\r\n]\r\n\r\nconst ZakladInfo: React.FC<{ routeParamName: string, isVerejnaZakazka: boolean }> = ({\r\n routeParamName,\r\n isVerejnaZakazka\r\n}) => {\r\n const { getAttr } = useDetailFrameContext<IZpModel>();\r\n const { ts } = useLocalization();\r\n const match = useRouteMatch<UrlParamObject>();\r\n let dnsDetailLink = '';\r\n let zakazkaDetailLink = '';\r\n if (isVerejnaZakazka) {\r\n dnsDetailLink = detailLinks.getDnsDetailUrl(getAttr('dnsZavedeneID')?.value, match, true);\r\n zakazkaDetailLink = detailLinks.getZpDetailUrl(getAttr('vzDnsZavedeneKod')?.value, match, true);\r\n }\r\n\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812507'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-812694\" attrName='nazev' fillGrid />\r\n <DataLabel lockey=\"NEN-812618\" attrName='zadavatelNazev' detailLink={detailLinks.getSubjektDetailUrl(getAttr('zadavatelID')?.value, match, true)} />\r\n <DataLabel lockey=\"NEN-812594\" attrName='kod' />\r\n <DataLabel lockey=\"NEN-812605\" attrName='stavZP' />\r\n {\r\n renderIf(isVerejnaZakazka,\r\n <>\r\n <DataLabel lockey=\"NEN-773253\" attrName='dnsZavedeneNazev' detailLink={dnsDetailLink} showIf=\"Zalozena_z_DNS <> NULL AND Druh_ZR.Kod ='ZP8'\" />\r\n <DataLabel lockey=\"NEN-812705\" attrName='vzDnsZavedeneKod' detailLink={zakazkaDetailLink} showIf=\"Zalozena_z_DNS <> NULL AND Druh_ZR.Kod ='ZP9'\" />\r\n </>\r\n )\r\n }\r\n <DataLabel lockey=\"NEN-812743\" attrName='rozdeleniNaCasti' showIf=\"not(Druh_ZR.Kod IN['ZP25','ZP26','ZP27','ZP28'])\" />\r\n <DataLabel lockey=\"NEN-812731\" attrName='kodVestnik' showIf='Evid_c_ve_Vestniku<>null' />\r\n <DataLabel lockey=\"NEN-812687\" attrName='kodZakazkaProfil' showIf='Uverejneni.Datum_uverejneni>$Novela2016 and Datum_uver_profil<>null and Kod_na_profil<>null' />\r\n <DataLabel lockey=\"NEN-812756\" attrName='typVZ' showIf=\"not(Druh_ZR.Kod IN['ZP25','ZP26','ZP27','ZP28'])\" />\r\n <DataLabel lockey=\"NEN-812622\" attrName='druhZRNazev' />\r\n <DataLabel lockey=\"NEN-812826\" attrName='specifZRNazev' />\r\n <DataLabel lockey=\"NEN-812678\" attrName='druhVZ' />\r\n <DataLabel lockey=\"NEN-812707\" attrName='predpokladHodnota' showIf='Hodnota_uverejnena = true' />\r\n <DataLabel lockey=\"NEN-812587\" attrName='predpokladMenaNazev' showIf='Hodnota_uverejnena = true' />\r\n <DataLabel lockey=\"NEN-812744\" attrName='datumZruseni' showIf='Uverejneni.Datum_uverejneni>$Novela2016 and Datum_zruseni_ZR<>null' />\r\n <DataLabel lockey=\"NEN-812746\" attrName='datumProfil' showIf='Uverejneni.Datum_uverejneni>$Novela2016 and Datum_uver_profil<>null' />\r\n <DataLabel lockey=\"NEN-812817\" attrName='datumVestnik' showIf='Uverejneni.Datum_uverejneni>$Novela2016 and Datum_uver_profil=null and Datum_uver_vestnik<>null' />\r\n <DataLabel lockey=\"NEN-824098\" attrName='datumUkonceni' showIf=\"Druh_ZR.Kod IN['ZP25','ZP26'] and Datum_ukonceni<>null\" />\r\n <DataLabel lockey=\"NEN-824104\" attrName='identifEU' showIf=\"Identifikator_EU<>null\" />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812595\" showIf=\"Podani_projeveni.Lhuta<>null or Podani_zadost.Lhuta<>null or Podani_predb_nab.Lhuta<>null or Podani_nabidka.Lhuta<>null or Podani_navrh.Lhuta<>null or Podani_informace.Lhuta<>null\">\r\n <InfoText showIf='Hist.Rozdeleni_na_casti = true and Hist.Lhuty_na_castech = true' fillGrid>\r\n <FormatedText>{ts('NEN-749962')}</FormatedText>\r\n </InfoText>\r\n <DataLabel lockey=\"NEN-812822\" attrName='podaniPredZajemLhuta' showIf=\"Druh_ZR.Kod in ['ZP10','ZP12','ZP19','ZP33'] and Podani_projeveni.Lhuta<>null\" />\r\n <DataLabel lockey=\"NEN-812818\" attrName='podaniZadostLhuta' showIf=\"Druh_ZR.Kod in ['ZP8','ZP10','ZP12','ZP16','ZP19','ZP26','ZP34','ZP35'] and Podani_zadost.Lhuta<>null\" />\r\n <DataLabel lockey=\"NEN-812819\" attrName='podaniPredNabLhuta' showIf=\"Druh_ZR.Kod in ['ZP12','ZP13','ZP19','ZP34'] and Podani_predb_nab.Lhuta<>null\" />\r\n <DataLabel lockey=\"NEN-812619\" attrName='podaniLhuta' showIf=\"Druh_ZR.Kod IN['ZP1','ZP2','ZP3','ZP4','ZP5','ZP6','ZP7','ZP8','ZP9','ZP10','ZP11','ZP12','ZP13','ZP14','ZP15','ZP16','ZP17','ZP18','ZP19','ZP20','ZP21','ZP22','ZP23','ZP24','ZP29','ZP30','ZP31','ZP32','ZP33','ZP34'] and Podani_nabidka.Lhuta<>null\" />\r\n <DataLabel lockey=\"NEN-812670\" attrName='podaniNavrhLhuta' showIf=\"Druh_ZR.Kod IN['ZP25','ZP26'] and Podani_navrh.Lhuta<>null\" />\r\n <DataLabel lockey=\"NEN-812671\" attrName='podaniInformaceLhuta' showIf=\"Druh_ZR.Kod IN['ZP27','ZP28'] and Podani_informace.Lhuta<>null\" />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812534\" showIf=\"Hist.Hierarchie = NULL\">\r\n <DataLabel lockey=\"NEN-812535\" attrName='osobaTitPred' showIf='Osoba_zadavat.Titul_pred<>null' />\r\n <DataLabel lockey=\"NEN-812536\" attrName='osobaJmeno' showIf='Osoba_zadavat.Jmeno<>null' />\r\n <DataLabel lockey=\"NEN-812537\" attrName='osobaPrijmeni' showIf='Osoba_zadavat.Prijmeni<>null' />\r\n <DataLabel lockey=\"NEN-812538\" attrName='osobaTitZa' showIf='Osoba_zadavat.Titul_za<>null' />\r\n <DataLabel lockey=\"NEN-812540\" attrName='osobaFunkce' showIf='Osoba_zadavat.Funkce<>null' />\r\n <DataLabel lockey=\"NEN-812541\" attrName='osobaEmail' showIf='Osoba_zadavat.Email<>null' />\r\n <DataLabel lockey=\"NEN-812550\" attrName='osobaTelefon' showIf='Osoba_zadavat.Telefon_zam<>null' />\r\n <DataLabel lockey=\"NEN-812551\" attrName='osobaMobil' showIf='Osoba_zadavat.Mobil<>null' />\r\n <DataLabel lockey=\"NEN-812708\" attrName='osobaFax' showIf='Osoba_zadavat.Fax<>null' />\r\n <DataLabel lockey=\"NEN-812542\" attrName='osobaDalsiInfo' showIf='Osoba_zadavat.Dalsi_informace<>null' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812597\">\r\n <DataLabel lockey=\"NEN-812570\" attrName='popisPredmet' fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812683\" attrName='nipezPredmetuKod' />\r\n <DataLabel lockey=\"NEN-812684\" attrName='nipezPredmetuNazev' />\r\n <DataLabel lockey=\"NEN-812846\" attrName='hlavniMistoNUTS' />\r\n <DataLabel lockey=\"NEN-812685\" attrName='cpvPredmetuKod' />\r\n <DataLabel lockey=\"NEN-812686\" attrName='cpvPredmetuNazev' />\r\n <DataLabel lockey=\"NEN-812502\" attrName='nazevPredmetu' />\r\n <DataLabel lockey=\"NEN-812584\" attrName='mistoPlneni' showIf='Misto_plneni<>null' fillGrid />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812581\" fillContent>\r\n <ListFramePolozky routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812677\" fillContent showIf=\"Misto_k_celku=true\">\r\n <ListFrameMistoPol routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812677\" fillContent showIf=\"Misto_k_celku<>true\">\r\n <ListFrameMisto routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812833\">\r\n <DataLabel lockey=\"NEN-812735\" attrName='naZakladeRSRD' showIf='Uverejneni.Datum_uverejneni>$Novela2016' />\r\n <DataLabel lockey=\"NEN-812736\" attrName='nazevRSRD' showIf='Na_zaklade_RS=true' />\r\n <DataLabel lockey=\"NEN-812561\" attrName='zadavanaDNS' showIf='Uverejneni.Datum_uverejneni>$Novela2016' />\r\n <DataLabel lockey=\"NEN-812560\" attrName='identifDNS' showIf='Zadavana_v_DNS=true' />\r\n <DataLabel lockey=\"NEN-812529\" attrName='zavedeniDNS' showIf='Uverejneni.Datum_uverejneni>$Novela2016' />\r\n <DataLabel lockey=\"NEN-812755\" attrName='jeToRD' showIf='Jedna_se_o_RD<>null' />\r\n <DataLabel lockey=\"NEN-769974\" attrName='importovanaZakazka' />\r\n <DataLabel lockey=\"NEN-812752\" attrName='identifSouvis' showIf='Identif_ZP_z_DNS<>null' />\r\n <DataLabel lockey=\"NEN-812730\" attrName='identifZP' showIf='Identifikator_ZP<>null' />\r\n <DataLabel lockey=\"NEN-812824\" attrName='profilMimo' showIf='www_profil_mimo<>null' />\r\n <DataLabel lockey=\"NEN-812751\" attrName='kodPuvodniProfil' showIf='Puvodni_kod_profilu<>null' />\r\n <DataLabel lockey=\"NEN-812629\" attrName='kodEU' showIf='Evid_c_Uv_EU<>null' />\r\n <DataLabel lockey=\"NEN-812630\" attrName='kodET' showIf='System_c_ET<>null' />\r\n <DataLabel lockey=\"NEN-812631\" attrName='kodIEN' showIf='System_c_IEN<>null' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812747\" fillContent>\r\n <ListFrameEvidenceUver routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812720\" fillContent showIf=\"Exists(VW_Evidence_VVZ, ZP=&Hist and datum_uver<>null)\">\r\n <ListFrameEvidUverVVZ routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst mistoModelColumns: ListFrameColumns<IMistoNUTSModel> = [\r\n {\r\n attrName: 'nutsKod',\r\n locKey: 'NEN-812680',\r\n },\r\n {\r\n attrName: 'nutsNazev',\r\n locKey: 'NEN-812679',\r\n }\r\n];\r\n\r\nconst ListFrameMisto: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n lightVersion\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-misto'}\r\n condition='ZP = @0 and Hist.Prof = @1 and aktualni=true'\r\n conditionParams={['histId', 'profId']}\r\n attrMapping={MistoNUTSAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'mis', routeParamName })}\r\n orderBy={useOrderByMemo<IMistoNUTSModel>({ desc: false, column: \"nutsKod\" })}\r\n columns={mistoModelColumns} />\r\n );\r\n}\r\n\r\nconst mistoPolModelColumns: ListFrameColumns<IMistoNUTSModel> = [\r\n {\r\n attrName: 'nutsKod',\r\n locKey: 'NEN-812680',\r\n },\r\n {\r\n attrName: 'nutsNazev',\r\n locKey: 'NEN-812679',\r\n },\r\n {\r\n attrName: 'nipezPolozkyKod',\r\n locKey: 'NEN-812585'\r\n },\r\n {\r\n attrName: 'cpvPolozkyKod',\r\n locKey: 'NEN-812586'\r\n },\r\n {\r\n attrName: 'nazevPolozky',\r\n locKey: 'NEN-812571'\r\n }\r\n];\r\n\r\nconst ListFrameMistoPol: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-misto-polozka'}\r\n condition='ZP = @0 and Hist.Prof = @1 and aktualni=true'\r\n conditionParams={['histId', 'profId']}\r\n orderBy={useOrderByMemo<IMistoNUTSModel>({ desc: false, column: \"nutsKod\" })}\r\n lightVersion\r\n attrMapping={MistoNUTSAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'mispol', routeParamName })}\r\n columns={mistoPolModelColumns} />\r\n );\r\n}\r\nconst polozkyPredmetuModelColumns: ListFrameColumns<IPolozkaPredmetuHistModel> = [\r\n {\r\n attrName: 'nazevPolozky',\r\n locKey: 'NEN-812571',\r\n },\r\n {\r\n attrName: 'cpvPolozkyKod',\r\n locKey: 'NEN-812586'\r\n },\r\n {\r\n attrName: 'cpvPolozkyNazev',\r\n locKey: 'NEN-812583'\r\n },\r\n {\r\n attrName: 'popisPolozky',\r\n locKey: 'NEN-812572'\r\n }\r\n];\r\n\r\nconst ListFramePolozky: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n lightVersion\r\n listFrameKey={`${detailVerejneZakazkyLoadKey}-polozky-predmetu`}\r\n attrMapping={PolozkaPredmetuHistAttrMap}\r\n conditionParams={['histId', 'profId']}\r\n paramNames={useStaticObject({ filterParamName: 'polp', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailPolozkaPredmetuLinkFactory()}\r\n condition='ZP = @0 and Hist.Prof = @1 and aktualni=true'\r\n columns={polozkyPredmetuModelColumns}\r\n orderBy={useOrderByMemo<IPolozkaPredmetuHistModel>({ desc: false, column: \"nazevPolozky\" })} />\r\n );\r\n}\r\nconst evidUverVVZModelColumns: ListFrameColumns<IEvidUverVVZModel> = [\r\n {\r\n attrName: 'datumPotvrzeni',\r\n locKey: 'NEN-812709',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-781265',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'evidCisloForm',\r\n locKey: 'NEN-812710',\r\n width: 150\r\n },\r\n {\r\n attrName: 'druhForm',\r\n locKey: 'NEN-812713'\r\n }\r\n];\r\n\r\nconst ListFrameEvidUverVVZ: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={`${detailVerejneZakazkyLoadKey}-evidence-vvz`}\r\n lightVersion\r\n attrMapping={EvidUverVVZAttrMap}\r\n condition='ZP = @0 and datum_uver<>null'\r\n conditionParams={'histId'}\r\n orderBy={useOrderByMemo<IEvidUverVVZModel>({ desc: true, column: \"datumUverejneni\" })}\r\n paramNames={useStaticObject({ filterParamName: 'pvvz', routeParamName })}\r\n columns={evidUverVVZModelColumns} />\r\n );\r\n}\r\nconst evidenceUverModelColumns: ListFrameColumns<IInfoUverejneniModel> = [\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'text',\r\n locKey: 'NEN-812643'\r\n },\r\n {\r\n attrName: 'datumOduver',\r\n locKey: 'NEN-812722',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'oduverejnil',\r\n locKey: 'NEN-812721'\r\n }\r\n];\r\n\r\nconst ListFrameEvidenceUver: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-evidence-uver'}\r\n lightVersion\r\n condition='ZP = @0'\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IInfoUverejneniModel>({ desc: true, column: \"datumUverejneni\" })}\r\n paramNames={useStaticObject({ filterParamName: 'peu', routeParamName })}\r\n attrMapping={InfoUverejneniAttrMap}\r\n detailLinkFactory={detailLinks.getDetailInfoUverejneniLinkFactory(true)}\r\n columns={evidenceUverModelColumns} />\r\n );\r\n}\r\nconst Casti: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812636'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812636\" showIf=\"Rozdeleni_na_casti = true\" fillContent>\r\n <ListFrameCasti routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-613664\" showIf=\"Exists(VPropojene_casti, ZP_ID = &ID)\" fillContent>\r\n <ListFramePropojeneCasti routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst castiModelColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812564',\r\n width: 200\r\n\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812565'\r\n },\r\n {\r\n attrName: 'nipezPredmetuNazev',\r\n locKey: 'NEN-812830',\r\n width: 250\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 150\r\n }\r\n];\r\n\r\nconst ListFrameCasti: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-casti'}\r\n condition=\"aktualni = true and Hist.Hierarchie = @0 and Prof = @1\"\r\n conditionParams={['histId', 'profId']}\r\n orderBy='kod'\r\n lightVersion\r\n attrMapping={ZpAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'cast', routeParamName })}\r\n detailLinkFactory={detailLinks.getLfZpDetailLinkFactory(false, true)}\r\n columns={castiModelColumns} />\r\n );\r\n}\r\nconst propojeneCastiModelColumns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812564',\r\n width: 200\r\n\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812565'\r\n },\r\n {\r\n attrName: 'nipezPredmetuNazev',\r\n locKey: 'NEN-812830',\r\n width: 250\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 150\r\n }\r\n];\r\n\r\nconst ListFramePropojeneCasti: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-propojene-casti'}\r\n condition=\"Exists(VPropojene_casti, ZP_ID = @0 AND ZP_ID > 0 and Kod_ZP = &Kod) and aktualni = true\"\r\n conditionParams={['id']}\r\n orderBy='kod'\r\n lightVersion\r\n attrMapping={ZpAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'procast', routeParamName })}\r\n detailLinkFactory={detailLinks.getLfZpDetailLinkFactory(false, true)}\r\n columns={propojeneCastiModelColumns} />\r\n );\r\n}\r\nconst ZadavaciDokumentace: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812616'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812616\" fillContent showIf=\"exists(Uverejneny_dokum, Info_uver.ZP=&Hist and Uverejnen=true and Polozka=null and Info_uver.Uverejneni IN['VYZ','JED','NAB','ZP','KD'])\">\r\n <ListFrameZadDokum routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812881\" fillContent showIf=\"exists(Uverejneny_dokum, ZP=&Hist and Uverejnen=true and Polozka<>null)\">\r\n <ListFramePrilohaPoloz routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812724\" fillContent showIf=\"exists(Uverejneny_dokum, (ZP=&Hist or DNS.VZ=&Hist) and Uverejnen=true and (Info_uver.Uverejneni=null or Info_uver.Uverejneni IN['VYLOUC','NEJ','DNS','DNSAKTUAL']) and Polozka=null)\">\r\n <ListFrameOstatDokum routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807150\" fillContent showIf=\"exists(Info_uverejneni, ZP=&Hist and Platny=true and Uverejneni = 'UDAJNAB')\">\r\n <ListFrameUdajePodani routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst udajPodModelColumns: ListFrameColumns<IInfoUverejneniModel> = [\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'predmet',\r\n locKey: 'NEN-812643'\r\n }\r\n];\r\n\r\nconst ListFrameUdajePodani: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-udaje-podani'}\r\n condition=\"ZP = @0 and Uverejneni='UDAJNAB' and Platny=true\"\r\n conditionParams={['histId']}\r\n orderBy='datumUverejneni'\r\n lightVersion\r\n attrMapping={InfoUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'upod', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUdajePodaniLinkFactory()}\r\n columns={udajPodModelColumns} />\r\n );\r\n}\r\nconst zaddokumModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\nconst ListFrameZadDokum: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-zadavaci-dokum'}\r\n condition=\"Info_uver.Uverejneni IN['VYZ','JED','NAB','ZP','KD'] and Uverejnen=true and (Info_uver.ZP=@0 or Info_uver.ZP.Hierarchie=@0) and Polozka=null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pzd', routeParamName })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={zaddokumModelColumns}\r\n extraButtons={downloadButtonOnly}\r\n />\r\n );\r\n}\r\nconst prilohaPolozkyModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'nazevPolozky',\r\n locKey: 'NEN-812571',\r\n },\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\nconst ListFramePrilohaPoloz: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-prilohy-polozky'}\r\n condition=\"Uverejnen=true and ZP=@0 and Polozka<>null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pod', routeParamName })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={prilohaPolozkyModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\nconst ostatdokumModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\nconst ListFrameOstatDokum: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-ostatni-dokum'}\r\n condition=\"(not(Info_uver.Uverejneni IN['PZ','VYS','VYZ','JED','NAB','ZP','DODINFO','KD','ZRUS','ZMENASML','UDAJNAB']) or Info_uver.Uverejneni=null) and Uverejnen=true and (Info_uver.ZP=@0 or Info_uver.DNS.VZ=@0) and Polozka=null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pod', routeParamName })}\r\n columns={ostatdokumModelColumns}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\n\r\nconst VysvetleniDokumentace: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812732'\r\n }\r\n ]);\r\n\r\n return (\r\n <GroupBox lockey=\"NEN-812732\" fillContent>\r\n <ListFrameVysvetleni routeParamName={routeParamName} />\r\n </GroupBox>\r\n );\r\n}\r\nconst vysvetleniModelColumns: ListFrameColumns<IInfoUverejneniModel> = [\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'predmet',\r\n locKey: 'NEN-812643'\r\n }\r\n];\r\n\r\nconst ListFrameVysvetleni: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-vysvetleni'}\r\n condition=\"ZP = @0 and Uverejneni='DODINFO' and Platny=true\"\r\n conditionParams={['histId']}\r\n orderBy='datumUverejneni'\r\n lightVersion\r\n attrMapping={InfoUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vysv', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailDodInfoLinkFactory()}\r\n columns={vysvetleniModelColumns} />\r\n );\r\n}\r\n\r\nconst VysvetleniDokumentaceSON: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812771'\r\n }\r\n ]);\r\n\r\n return (\r\n <GroupBox lockey=\"NEN-812771\" fillContent>\r\n <ListFrameVysvetleniSON routeParamName={routeParamName} />\r\n </GroupBox>\r\n );\r\n}\r\nconst vysvetleniSONModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'datumUverInfo',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'predmetInfo',\r\n locKey: 'NEN-812643'\r\n }\r\n ,\r\n {\r\n attrName: 'idInfoUver',\r\n locKey: 'NEN-812643',\r\n hidden: true\r\n }\r\n];\r\n\r\nconst ListFrameVysvetleniSON: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-vysvetleni-SoN'}\r\n condition=\"Info_uver.ZP = @0 and Info_uver.Uverejneni='DODINFO' and Uverejnen=true\"\r\n conditionParams={['histId']}\r\n orderBy='datumUverInfo'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vysvson', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailDodInfoSonLinkFactory}\r\n columns={vysvetleniSONModelColumns} />\r\n );\r\n}\r\nconst Vysledek: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IZpModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812831'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812608\" fillContent showIf=\"not(Druh_ZR.Kod in['ZP25','ZP26','ZP27','ZP28']) and exists(Info_uverejneni, ZP=&Hist and Platny = true and Uverejneni IN['VYS'])\">\r\n <ListFrameVysledek routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812608\" fillContent showIf=\"Druh_ZR.Kod in['ZP25','ZP26'] and exists(Info_uverejneni, ZP=&Hist and Platny = true and Uverejneni IN['VYS'])\">\r\n <ListFramevysledekSON routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812832\" fillContent showIf=\"exists(Info_uverejneni, ZP=&Hist and Platny=true and Uverejneni IN['VYS','PZ','ZRUS','ZMENASML','DNS'])\">\r\n <ListFrameVysledekDokum routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812875\" fillContent showIf=\"exists(Info_uverejneni, ZP=&Hist and Platny=true and Uverejneni IN['ZMENASML'])\">\r\n <ListFrameDodatek routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812745\" fillContent showIf=\"not(Druh_ZR.Kod in['ZP27','ZP28']) and exists(Info_uverejneni, ZP=&Hist and Platny = true and Uverejneni IN['UCH'])\">\r\n <ListFrameUcast routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812745\" fillContent showIf=\"Druh_ZR.Kod in['ZP27','ZP28'] and exists(Info_uverejneni, ZP=&Hist and Platny = true and Uverejneni IN['UCH'])\">\r\n <ListFrameUcastPT routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812673\" fillContent showIf=\"not(Druh_ZR.Kod in['ZP27','ZP28']) and exists(Info_uverejneni, ZP=&Hist and Platny = true and Uverejneni IN['PLN'])\">\r\n <ListFramePlneni routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807738\" fillContent showIf=\"exists(Info_uverejneni, ZP<>null and ZP=&Hist and Platny = true and Uverejneni = 'PZ' and Uver_pis_zprava=true and exists(Detail_uverejneni, Info_uver.ZP=&&Hist and Info_uver<>null and Uverejnen=true and Osoba_stret=null and Subdod=null and Uredni_nazev=null))\">\r\n <ListFrameDetailPZ routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-825137\" fillContent showIf=\"exists(Info_uverejneni, ZP<>null and ZP=&Hist and Platny = true and Detail = 'SON' and exists(Detail_uverejneni, Info_uver.ZP=&&Hist and Info_uver<>null and Uverejnen=true and Osoba_stret=null and Subdod=null and Pod = null))\">\r\n <ListFrameOduvodSON routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807292\" fillContent showIf=\"exists(Info_uverejneni, ZP<>null and ZP=&Hist and Platny = true and ((Uverejneni = 'PZ' and Uver_pis_zprava=true) or Detail = 'SON') and exists(Detail_uverejneni, Info_uver.ZP=&&Hist and Info_uver<>null and Uverejnen=true and Osoba_stret<>null))\">\r\n <ListFrameOsoby routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812734\" fillContent showIf=\"not(Druh_ZR.Kod in['ZP27','ZP28']) and exists(Info_uverejneni, ZP=&Hist and Platny = true and (Uverejneni in ['SUB'] or (Uverejneni = 'PZ' and Uver_pis_zprava=true)) and exists(Detail_uverejneni, Info_uver.ZP=&&Hist and Info_uver<>null and Uverejnen=true and Subdod <>null))\">\r\n <ListFrameSubdod routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst vysledekdokumModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812880',\r\n width: 120\r\n },\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\nconst ListFrameVysledekDokum: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-vysledek-dokum'}\r\n condition=\"(Info_uver.Uverejneni IN['VYS','PZ','ZRUS','ZMENASML','DNS']) and Uverejnen = true and Info_uver.ZP = @0\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vysdok', routeParamName })}\r\n columns={vysledekdokumModelColumns}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\nconst vysledekModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812606',\r\n width: 120\r\n },\r\n {\r\n attrName: 'datumUzavreni',\r\n locKey: 'NEN-812601',\r\n width: columnWidths.date\r\n },\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'smluvniCenaS',\r\n locKey: 'NEN-812633'\r\n },\r\n {\r\n attrName: 'smluvniCenaBez',\r\n locKey: 'NEN-812632'\r\n },\r\n {\r\n attrName: 'smluvniCenaSAkt',\r\n locKey: 'NEN-812872'\r\n },\r\n {\r\n attrName: 'smluvniCenaBezAkt',\r\n locKey: 'NEN-812873'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n }\r\n];\r\n\r\nconst ListFrameVysledek: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-vysledek'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'VYS' and Info_uver.ZP = @0\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vys', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={vysledekModelColumns} />\r\n );\r\n}\r\nconst VysledekSONModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'datumVyber',\r\n locKey: 'NEN-812663',\r\n width: columnWidths.date\r\n },\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'soutezCenaBez',\r\n locKey: 'NEN-812664'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n }\r\n];\r\n\r\nconst ListFramevysledekSON: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-vysledek-SON'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'VYS' and Info_uver.ZP = @0 and Pod<>null\"\r\n conditionParams={['histId']}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'vysson', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={VysledekSONModelColumns} />\r\n );\r\n}\r\n\r\nconst ucastModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506',\r\n\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n },\r\n {\r\n attrName: 'nabCenaS',\r\n locKey: 'NEN-812850'\r\n },\r\n {\r\n attrName: 'nabCenaBez',\r\n locKey: 'NEN-812851'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n },\r\n {\r\n attrName: 'uzavrenaSmlouva',\r\n locKey: 'NEN-824859'\r\n }\r\n];\r\n\r\nconst ListFrameUcast: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-ucast'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'UCH' and Info_uver.ZP = @0\"\r\n conditionParams={'histId'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'uca', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={ucastModelColumns} />\r\n );\r\n}\r\nconst ucastPTModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506',\r\n\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n }\r\n];\r\n\r\nconst ListFrameUcastPT: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-ucast-IoT'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'UCH' and Info_uver.ZP = @0\"\r\n conditionParams={'histId'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'ucaPT', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={ucastPTModelColumns} />\r\n );\r\n}\r\nconst dodatekModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cislo',\r\n locKey: 'NEN-812668',\r\n width: 100\r\n\r\n },\r\n {\r\n attrName: 'datumPodpisu',\r\n locKey: 'NEN-812669',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'emailAdresa',\r\n locKey: 'NEN-812874'\r\n },\r\n {\r\n attrName: 'smluvniCenaS',\r\n locKey: 'NEN-812871',\r\n width: 220\r\n },\r\n {\r\n attrName: 'smluvniCenaBez',\r\n locKey: 'NEN-812870',\r\n width: 220\r\n }\r\n];\r\n\r\nconst ListFrameDodatek: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-dodatek'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'ZMENASML' and Info_uver.ZP = @0\"\r\n conditionParams={'histId'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dodat', routeParamName })}\r\n columns={dodatekModelColumns} />\r\n );\r\n}\r\n\r\nconst plneniModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812606',\r\n width: 120\r\n },\r\n {\r\n attrName: 'plneniRok',\r\n locKey: 'NEN-812674',\r\n width: 100\r\n\r\n },\r\n {\r\n attrName: 'plneniCenaS',\r\n locKey: 'NEN-812676'\r\n },\r\n {\r\n attrName: 'plneniCenaBez',\r\n locKey: 'NEN-812675'\r\n }\r\n];\r\n\r\nconst ListFramePlneni: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-plneni'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'PLN' and Info_uver.ZP = @0\"\r\n conditionParams={'histId'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: 'plneniRok' })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pln', routeParamName })}\r\n columns={plneniModelColumns} />\r\n );\r\n}\r\n\r\nconst DetailPZModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'oduvodVyberuDod',\r\n locKey: 'NEN-821548'\r\n },\r\n {\r\n attrName: 'oduvodKomunProstredky',\r\n locKey: 'NEN-812886',\r\n },\r\n {\r\n attrName: 'oduvodNerozdeleni',\r\n locKey: 'NEN-812888',\r\n },\r\n {\r\n attrName: 'oduvodStanoveniPozadav',\r\n locKey: 'NEN-812889',\r\n }\r\n];\r\n\r\nconst ListFrameDetailPZ: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-detail-pz'}\r\n condition=\"Uverejnen = true and Info_uver.Uverejneni = 'PZ' and Info_uver.ZP = @0 and Osoba_stret=null and Subdod=null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detailpz', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={DetailPZModelColumns} />\r\n );\r\n}\r\nconst DetailOduvodSONModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n\r\n {\r\n attrName: 'oduvodKomunProstredky',\r\n locKey: 'NEN-812886',\r\n }\r\n];\r\n\r\nconst ListFrameOduvodSON: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-detail-duvod'}\r\n condition=\"Uverejnen = true and Info_uver.Detail = 'SON' and Info_uver.ZP = @0 and Osoba_stret=null and Subdod=null and Pod=null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detailduvson', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={DetailOduvodSONModelColumns} />\r\n );\r\n}\r\n\r\nconst OsobyModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812890'\r\n },\r\n {\r\n attrName: 'prijataOpatreni',\r\n locKey: 'NEN-812883',\r\n }\r\n];\r\n\r\nconst ListFrameOsoby: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-detail-osoba'}\r\n condition=\"Uverejnen = true and (Info_uver.Uverejneni = 'PZ' or Info_uver.Detail = 'SON') and Info_uver.ZP = @0 and Osoba_stret<>null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'osob', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={OsobyModelColumns} />\r\n );\r\n}\r\n\r\nconst subdodModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506',\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n }\r\n];\r\nconst ListFrameSubdod: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailVerejneZakazkyLoadKey + '-subdod'}\r\n condition=\"Uverejnen = true and (Info_uver.Uverejneni in ['SUB'] or (Info_uver.Uverejneni = 'PZ' and Info_uver.Uver_pis_zprava=true)) and Info_uver.ZP = @0 and Subdod <>null\"\r\n conditionParams={['histId']}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'sub', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={subdodModelColumns} />\r\n );\r\n}\r\n\r\nexport default DetailVerejneZakazky;","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type ICinnostSubjektuModel = IData & {\r\n id: number;\r\n predmetCinnostiNazev: string;\r\n jinaCinnost: string;\r\n}\r\n\r\nexport const CinnostSubjektuAttrMap = new AttrMapping<ICinnostSubjektuModel>('Cinnost_subj', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'predmetCinnostiNazev', serverName: 'Predmet_cinnosti.Nazev', type: 'string' },\r\n { clientName: 'jinaCinnost', serverName: 'Jina_cinnost', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type ICpvNipezSubjektuModel = IData & {\r\n id: number;\r\n nipezKod: string;\r\n nipezNazev: string;\r\n cpvKod: string;\r\n cpvNazev: string;\r\n}\r\n\r\nexport const CpvNipezSubjektuAttrMap = new AttrMapping<ICpvNipezSubjektuModel>('CPVNIPEZ_subjektu', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nipezKod', serverName: 'NIPEZ_subjekt.Kod', type: 'string' },\r\n { clientName: 'nipezNazev', serverName: 'NIPEZ_subjekt.Nazev', type: 'string' },\r\n { clientName: 'cpvKod', serverName: 'CPV_subjekt.Kod', type: 'string' },\r\n { clientName: 'cpvNazev', serverName: 'CPV_subjekt.Nazev', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IJinaAdresaSubjektuModel = IData & {\r\n id: number;\r\n nazevSubjektu: string;\r\n obec: string;\r\n castObce: string;\r\n ulice: string;\r\n cisloPopisne: string;\r\n cisloOrientacni: string;\r\n psc: string;\r\n statAdresyKod: string;\r\n}\r\n\r\nexport const JinaAdresaSubjektuAttrMap = new AttrMapping<IJinaAdresaSubjektuModel>('Jina_adresa_subj', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'nazevSubjektu', serverName: 'Nazev_subjektu', type: 'string' },\r\n { clientName: 'obec', serverName: 'Obec', type: 'string' },\r\n { clientName: 'castObce', serverName: 'Cast_obce', type: 'string' },\r\n { clientName: 'ulice', serverName: 'Ulice', type: 'string' },\r\n { clientName: 'cisloPopisne', serverName: 'Cislo_popisne', type: 'string' },\r\n { clientName: 'cisloOrientacni', serverName: 'Cislo_orientacni', type: 'string' },\r\n { clientName: 'psc', serverName: 'PSC', type: 'string' },\r\n { clientName: 'statAdresyKod', serverName: 'Stat_adresy.Kod', type: 'string' }\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IJinaInformaceSubjektu = IData & {\r\n poradi: number;\r\n popis: string;\r\n text: string;\r\n}\r\n\r\nexport const JinaInformaceSubjektuAttrMap = new AttrMapping<IJinaInformaceSubjektu>('Jina_informace_subj', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'poradi', serverName: 'Poradi', type: 'number' },\r\n { clientName: 'popis', serverName: 'Popis', type: 'string' },\r\n { clientName: 'text', serverName: 'Text_informace', type: 'text' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IOsobaModel = IData & {\r\n nazev: string;\r\n pracovniPozice: string;\r\n titulPred: string;\r\n jmeno: string;\r\n prijmeni: string;\r\n titulZa: string;\r\n email: string;\r\n mobil: string;\r\n telefonZamestnani: string;\r\n}\r\n\r\nexport const OsobaAttrMap = new AttrMapping<IOsobaModel>('Osoba', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'pracovniPozice', serverName: 'Nahled_ext.Pracovni_pozice', type: 'string' },\r\n { clientName: 'titulPred', serverName: 'Nahled_ext.Titul_pred', type: 'string' },\r\n { clientName: 'jmeno', serverName: 'Nahled_ext.Jmeno', type: 'string' },\r\n { clientName: 'prijmeni', serverName: 'Nahled_ext.Prijmeni', type: 'string' },\r\n { clientName: 'titulZa', serverName: 'Nahled_ext.Titul_za', type: 'string' },\r\n { clientName: 'email', serverName: 'Nahled_ext.Email', type: 'string' },\r\n { clientName: 'mobil', serverName: 'Nahled_ext.Mobil', type: 'string' },\r\n { clientName: 'telefonZamestnani', serverName: 'Nahled_ext.Telefon_zam', type: 'string' },\r\n]);\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IRelevantniCinnostSubjektuModel = IData & {\r\n id: number;\r\n relevantniCinnostNazev: string;\r\n jinaCinnost: string;\r\n}\r\n\r\nexport const RelevantniCinnostSubjektuAttrMap = new AttrMapping<IRelevantniCinnostSubjektuModel>('Rel_cinnost_subj', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'relevantniCinnostNazev', serverName: 'Rel_cinnost.Nazev', type: 'string' },\r\n { clientName: 'jinaCinnost', serverName: 'Jina_cinnost', type: 'string' },\r\n]);\r\n","import React from \"react\"\r\nimport { match, useRouteMatch } from \"react-router\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame/DetailFrame\"\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport Tabs from \"@components/Tabs\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { CinnostSubjektuAttrMap, ICinnostSubjektuModel } from \"@models/ICinnostSubjektuModel\";\r\nimport { CpvNipezSubjektuAttrMap, ICpvNipezSubjektuModel } from \"@models/ICpvNipezSubjektuModel\";\r\nimport { IJinaAdresaSubjektuModel, JinaAdresaSubjektuAttrMap } from \"@models/IJinaAdresaSubjektuModel\";\r\nimport { IJinaInformaceSubjektu, JinaInformaceSubjektuAttrMap } from \"@models/IJinaInformaceSubjektu\";\r\nimport { IOsobaModel, OsobaAttrMap } from \"@models/IOsobaModel\";\r\nimport { IRelevantniCinnostSubjektuModel, RelevantniCinnostSubjektuAttrMap } from \"@models/IRelevantniCinnostSubjektuModel\";\r\nimport { ISubjektModel, SubjektAttrMap } from \"@models/ISubjektModel\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { DetailDescriptionParams, useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { ParsedUrlCondition } from \"@store/breadcrumbTitleStore\";\r\n\r\nconst DataLabel = DataLabelTyped<ISubjektModel>();\r\nconst DependentListFrame = DependentListFrameTyped<ISubjektModel>();\r\n\r\nconst detailSubjektuLoadkey = 'detail-subjektu';\r\n\r\nexport const parseSubjektUrl = (match: match<UrlParamObject> | null) => {\r\n return (match?.params[urlConstants.subjektDetail.detailIdParam] || '');\r\n}\r\n\r\nexport const prepareSubjektCondition = (id: string): ParsedUrlCondition => {\r\n return {\r\n condition: 'ID=@0 and Plati_DO = null',\r\n conditionParams: [id]\r\n }\r\n}\r\n\r\nconst DetailSubjektu: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const { condition, conditionParams } = prepareSubjektCondition(parseSubjektUrl(match));\r\n const routeParamName = urlConstants.subjektDetail.urlRouteParam;\r\n\r\n return (\r\n <DetailFrame\r\n condition={condition}\r\n conditionParams={conditionParams}\r\n attrMapping={SubjektAttrMap}\r\n loadKey={detailSubjektuLoadkey}\r\n >\r\n <Tabs tabs={\r\n [\r\n {\r\n lockey: 'NEN-812656',\r\n path: urlConstants.subjektDetail.path,\r\n render: () => <ZakladniInformace routeParamName={routeParamName} />\r\n },\r\n {\r\n lockey: 'NEN-812662',\r\n path: urlConstants.subjektDetailDalsiInformace.path,\r\n render: () => <DalsiInformace routeParamName={routeParamName} />\r\n }\r\n ]\r\n } />\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst commonDescriptionParts: DetailDescriptionParams<ISubjektModel>[] = [\r\n {\r\n lockey: 'NEN-812506',\r\n attrName: 'nazevOrganizace',\r\n },\r\n {\r\n lockey: 'NEN-812510',\r\n attrName: 'doplnekKNazvu',\r\n },\r\n {\r\n lockey: 'NEN-812698',\r\n attrName: 'evidencniCisloVeVestniku',\r\n },\r\n {\r\n lockey: 'NEN-812546',\r\n attrName: 'pfNazev',\r\n },\r\n {\r\n lockey: 'NEN-812517',\r\n attrName: 'obec',\r\n },\r\n {\r\n lockey: 'NEN-812518',\r\n attrName: 'castObce',\r\n },\r\n {\r\n lockey: 'NEN-812523',\r\n attrName: 'ulice',\r\n },\r\n {\r\n lockey: 'NEN-812525',\r\n attrName: 'cisloOrientacni',\r\n },\r\n {\r\n lockey: 'NEN-812527',\r\n attrName: 'stat',\r\n }\r\n]\r\n\r\nconst ZakladniInformace: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const { getAttr } = useDetailFrameContext<ISubjektModel>();\r\n const match = useRouteMatch();\r\n\r\n useDetailDescription<ISubjektModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812656'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-812506\" attrName='nazevOrganizace' fillGrid />\r\n <DataLabel lockey=\"NEN-812757\" attrName='adresaProfilNEN' detailLink={detailLinks.getProfilDetailUrl(getAttr('id')?.value, match, true)} detailLinkShowIf='exists(Profil_LW, Subj = &ID and Platny = true)' fillGrid/>\r\n <DataLabel lockey=\"NEN-812510\" attrName='doplnekKNazvu' />\r\n <DataLabel lockey=\"NEN-812511\" attrName='ico' />\r\n <DataLabel lockey=\"NEN-812512\" attrName='dic' />\r\n <DataLabel lockey=\"NEN-812513\" attrName='jinyIdentifikátor' />\r\n <DataLabel lockey=\"NEN-812514\" attrName='datumNarozeni' showIf=\"PF.Kod in['101','102','105','106','107','108','421','950','999']\" />\r\n <DataLabel lockey=\"NEN-812615\" attrName='pfNazev' />\r\n <DataLabel lockey=\"NEN-778515\" attrName='telefon1' />\r\n <DataLabel lockey=\"NEN-812551\" attrName='telefon2' />\r\n <DataLabel lockey=\"NEN-812552\" attrName='fax' />\r\n <DataLabel lockey=\"NEN-812553\" attrName='www' />\r\n <DataLabel lockey=\"NEN-812554\" attrName='email' />\r\n <DataLabel lockey=\"NEN-812532\" attrName='kategorieZadavatele' showIf=\"Zadavatel=true or Sdruzeni_zadav = True\" />\r\n <DataLabel lockey=\"NEN-812654\" attrName='relativniCinnost' showIf=\"Zadavatel=true or Sdruzeni_zadav = True\" />\r\n <DataLabel lockey=\"NEN-812737\" attrName='relativniCinnostJinak' showIf=\"Zadavatel=true or Sdruzeni_zadav = True\" />\r\n <DataLabel lockey=\"NEN-812738\" attrName='dominantniVliv' showIf=\"Zadavatel=true or Sdruzeni_zadav = True\" />\r\n <DataLabel lockey=\"NEN-812739\" attrName='obrana' showIf=\"Zadavatel=true or Sdruzeni_zadav = True\" />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812555\" showIf=\"Sdruzeni_zadav = True and (Nazev_sdruz_zad<>null OR Zpusob_jednani <>null OR Vedouci_clen_sdruz<>null)\">\r\n <DataLabel lockey=\"NEN-812556\" attrName='nazevSdruzZadav' />\r\n <DataLabel lockey=\"NEN-812557\" attrName='zpusobJednani' />\r\n <DataLabel lockey=\"NEN-812558\" attrName='vedouciClenSdruz' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812516\">\r\n <DataLabel lockey=\"NEN-812517\" attrName='obec' />\r\n <DataLabel lockey=\"NEN-812518\" attrName='castObce' />\r\n <DataLabel lockey=\"NEN-812523\" attrName='ulice' />\r\n <DataLabel lockey=\"NEN-812524\" attrName='cisloPopisne' />\r\n <DataLabel lockey=\"NEN-812525\" attrName='cisloOrientacni' />\r\n <DataLabel lockey=\"NEN-812526\" attrName='psc' />\r\n <DataLabel lockey=\"NEN-812527\" attrName='stat' />\r\n <DataLabel lockey=\"NEN-812777\" attrName='nutsKod' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812528\" showIf=\"Nazev_uctu <> null or IBAN <> null or Predcisli_uctu <> null or Cislo_uctu <> null or Banka_uctu.Kod <> null or Banka_uctu.SWIFT <> null\">\r\n <DataLabel lockey=\"NEN-812533\" attrName='nazevUctu' />\r\n <DataLabel lockey=\"NEN-812543\" attrName='predcisliUctu' />\r\n <DataLabel lockey=\"NEN-812544\" attrName='cisloUctu' />\r\n <DataLabel lockey=\"NEN-812503\" attrName='kodBanky' />\r\n <DataLabel lockey=\"NEN-812593\" attrName='iban' />\r\n <DataLabel lockey=\"NEN-812504\" attrName='swift' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812681\" fillContent showIf=\"(Dodavatel = True or Predregistrovany = True) and (Predmet_cinnosti_org <> null or Rocni_obrat <> null or Rok_vzniku_org <> null or Pocet_zam <> null)\">\r\n <DataLabel lockey=\"NEN-812531\" attrName='predmetCinnostiOrg' fillGrid rawText/>\r\n <DataLabel lockey=\"NEN-812548\" attrName='rocniObrat' />\r\n <DataLabel lockey=\"NEN-812547\" attrName='rokVznikuOrg' />\r\n <DataLabel lockey=\"NEN-812549\" attrName='pocetZam' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812596\" fillContent showIf=\"Sdruzeni_zadav = true and Vedouci_sdruzeni=null\">\r\n <ListFrameClen routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812848\" fillContent showIf=\"(Dodavatel = True or Predregistrovany = True) and Exists(CPVNIPEZ_subjektu, Subj = &ID)\">\r\n <ListFrameNipez routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812658\" fillContent showIf=\"(Zadavatel = True or Sdruzeni_zadav = True) and Exists(Cinnost_subj, Subj = &ID)\">\r\n <ListFrameHlavniPredmetCinnosti routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812659\" fillContent showIf=\"(Zadavatel = True or Sdruzeni_zadav = True) and Exists(Rel_cinnost_subj, Subj = &ID)\">\r\n <ListFrameRelevantniCinnost routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst clenSdruzeniColumns: ListFrameColumns<ISubjektModel> = [\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812506',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'kategorieZadavatele',\r\n locKey: 'NEN-812532',\r\n },\r\n {\r\n attrName: 'nutsKod',\r\n locKey: 'NEN-812777',\r\n }\r\n];\r\n\r\nconst ListFrameClen: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'csd', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-clen-sdruzeni' }\r\n condition=\"Vedouci_sdruzeni=@0\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={SubjektAttrMap}\r\n columns={clenSdruzeniColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst cpvNipezSubjektuModelColumns: ListFrameColumns<ICpvNipezSubjektuModel> = [\r\n {\r\n attrName: 'nipezKod',\r\n locKey: 'NEN-812585',\r\n width: 100\r\n },\r\n {\r\n attrName: 'nipezNazev',\r\n locKey: 'NEN-812582',\r\n width: 150\r\n },\r\n {\r\n attrName: 'cpvKod',\r\n locKey: 'NEN-812586',\r\n width: 100\r\n },\r\n {\r\n attrName: 'cpvNazev',\r\n locKey: 'NEN-812583',\r\n width: 150\r\n }\r\n];\r\n\r\nconst ListFrameNipez: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'snpz', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-cpv-nipez'}\r\n lightVersion\r\n condition=\"Subj=@0\"\r\n conditionParams={'id'}\r\n attrMapping={CpvNipezSubjektuAttrMap}\r\n columns={cpvNipezSubjektuModelColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst cinnostSubjektuColumns: ListFrameColumns<ICinnostSubjektuModel> = [\r\n {\r\n attrName: 'predmetCinnostiNazev',\r\n locKey: 'NEN-812505',\r\n width: 800\r\n },\r\n {\r\n attrName: 'jinaCinnost',\r\n locKey: 'NEN-812530',\r\n }\r\n];\r\n\r\nconst ListFrameHlavniPredmetCinnosti: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'shpc', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-predmet-cinnosti'}\r\n condition=\"Subj=@0\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={CinnostSubjektuAttrMap}\r\n columns={cinnostSubjektuColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst relevantniCinnostSubjektuColumns: ListFrameColumns<IRelevantniCinnostSubjektuModel> = [\r\n {\r\n attrName: 'relevantniCinnostNazev',\r\n locKey: 'NEN-812650',\r\n width: 800\r\n },\r\n {\r\n attrName: 'jinaCinnost',\r\n locKey: 'NEN-812530',\r\n }\r\n];\r\n\r\nconst ListFrameRelevantniCinnost: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'srcs', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-relevantni-cinnost'}\r\n condition=\"Subj=@0\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={RelevantniCinnostSubjektuAttrMap}\r\n columns={relevantniCinnostSubjektuColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst DalsiInformace: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n useDetailDescription<ISubjektModel>([\r\n ...commonDescriptionParts,\r\n {\r\n lockey: 'NEN-812662'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812660\" fillContent showIf='Exists(Jina_adresa_subj, Subj = &ID)'>\r\n <ListFrameJineAdresy routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812661\" fillContent>\r\n <ListFrameKontaktniOsoby routeParamName={routeParamName} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812559\" fillContent showIf='Exists(Jina_informace_subj, Subj = &ID)'>\r\n <ListFrameDalsiInformace routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst jineAdresySubjektuColumns: ListFrameColumns<IJinaAdresaSubjektuModel> = [\r\n {\r\n attrName: 'nazevSubjektu',\r\n locKey: 'NEN-812600',\r\n width: 200\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517',\r\n width: 100\r\n },\r\n {\r\n attrName: 'castObce',\r\n locKey: 'NEN-812518',\r\n width: 100\r\n },\r\n {\r\n attrName: 'ulice',\r\n locKey: 'NEN-812523',\r\n width: 100\r\n },\r\n {\r\n attrName: 'cisloPopisne',\r\n locKey: 'NEN-812524',\r\n width: 100\r\n },\r\n {\r\n attrName: 'cisloOrientacni',\r\n locKey: 'NEN-812525',\r\n width: 100\r\n },\r\n {\r\n attrName: 'psc',\r\n locKey: 'NEN-812526',\r\n width: 50\r\n },\r\n {\r\n attrName: 'statAdresyKod',\r\n locKey: 'NEN-812527',\r\n width: 50\r\n }\r\n];\r\n\r\nconst ListFrameJineAdresy: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'sjao', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-jine-adresy'}\r\n condition=\"Subj=@0\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={JinaAdresaSubjektuAttrMap}\r\n columns={jineAdresySubjektuColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst kontaktniOsobySubjektuColumns: ListFrameColumns<IOsobaModel> = [\r\n {\r\n attrName: 'titulPred',\r\n locKey: 'NEN-812568',\r\n width: 75\r\n },\r\n {\r\n attrName: 'jmeno',\r\n locKey: 'NEN-812567',\r\n },\r\n {\r\n attrName: 'prijmeni',\r\n locKey: 'NEN-812566',\r\n width: 130\r\n },\r\n {\r\n attrName: 'titulZa',\r\n locKey: 'NEN-812569',\r\n width: 75\r\n },\r\n {\r\n attrName: 'email',\r\n locKey: 'NEN-812580',\r\n width: 250\r\n },\r\n {\r\n attrName: 'telefonZamestnani',\r\n locKey: 'NEN-812550',\r\n },\r\n {\r\n attrName: 'mobil',\r\n locKey: 'NEN-812551',\r\n width: 130\r\n }\r\n\r\n];\r\n\r\nconst ListFrameKontaktniOsoby: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'skoo', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-kontaktni-osoby'}\r\n condition=\"Patri_do=@0 AND Kontakt = true AND Aktivni_uzivatel = true\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={OsobaAttrMap}\r\n columns={kontaktniOsobySubjektuColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nconst dalsiInformaceSubjektuColumns: ListFrameColumns<IJinaInformaceSubjektu> = [\r\n {\r\n attrName: 'popis',\r\n locKey: 'NEN-812545',\r\n },\r\n {\r\n attrName: 'text',\r\n locKey: 'NEN-812562'\r\n }\r\n];\r\n\r\nconst ListFrameDalsiInformace: React.FC<{ routeParamName: string }> = ({\r\n routeParamName\r\n}) => {\r\n const params = useStaticObject({ filterParamName: 'sdio', routeParamName });\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailSubjektuLoadkey + '-dalsi-informace'}\r\n condition=\"Subj=@0\"\r\n conditionParams={'id'}\r\n lightVersion\r\n attrMapping={JinaInformaceSubjektuAttrMap}\r\n columns={dalsiInformaceSubjektuColumns}\r\n paramNames={params} />\r\n );\r\n}\r\n\r\nexport default React.memo(DetailSubjektu);\r\n","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { useCallback, useEffect, useMemo } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { match, useLocation } from 'react-router';\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from '.';\r\nimport { DNSystemAttrMap } from '../models/IDNSystemModel';\r\nimport { ProfilZadavateleAttrMap } from '../models/IProfilZadavateleModel';\r\nimport { SubjektAttrMap } from '../models/ISubjektModel';\r\nimport { SystemKvalifikaceAttrMap } from '../models/ISystemKvalifikaceModel';\r\nimport { ZpAttrMap } from '../models/IZpModelHist';\r\nimport { parseDnsUrl, prepareDnsCondition } from '../pages/detailDNSystem/DetailDNSystem';\r\nimport { parseProfilUrl, prepareProfilCondition } from '../pages/detailProfilZadavatele/DetailProfilZadavatele';\r\nimport { parseSkUrl, prepareSkCondition } from '../pages/detailSystemKvalifikace/DetailSystemKvalifikace';\r\nimport { parseVZUrl, prepareVZCondition } from '../pages/detailVerejneZakazky/DetailVerejneZakazky';\r\nimport { parseSubjektUrl, prepareSubjektCondition } from '../pages/registry/registrySubjektu/detailRegistru/DetailSubjektu';\r\nimport { IGetDataRowsParams } from '../services/DataRowsService';\r\nimport { AttrMapping, AttrName, IData } from '../utils/AttrMapping';\r\nimport { Deferred, PromiseUtils } from '../utils/PromiseUtils';\r\nimport { UrlParamObject } from '../utils/QueryHook';\r\nimport { getErrorStoreActions } from './errorStore';\r\nimport { useLocalization } from './localizationStore';\r\nimport { getDataRowsService, useTaskManager } from './nodeContextStore';\r\n\r\nexport const name = 'breadcrumbTitles';\r\n\r\nexport type BreadcrumbTitleStoreState = {\r\n objectTitles: {\r\n [key: string]: { isFetching: boolean, value: string | null };\r\n }\r\n}\r\n\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n objectTitles: {}\r\n } as BreadcrumbTitleStoreState,\r\n reducers: {\r\n setObjectTitle: (state, action: PayloadAction<{ key: string, value: string | null, isFetching: boolean }>) => {\r\n return {\r\n ...state,\r\n objectTitles: {\r\n ...state.objectTitles,\r\n [action.payload.key]: {\r\n isFetching: action.payload.isFetching,\r\n value: action.payload.value\r\n }\r\n }\r\n } as BreadcrumbTitleStoreState\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getBreadcrumbState = (state: ApplicationState) => state[name];\r\n\r\nexport const getBreadcrumbObjectTitles = createSelector([getBreadcrumbState],\r\n (breadcrumbTitleStore) => breadcrumbTitleStore?.objectTitles\r\n);\r\n\r\nexport const getBreadcrumbObjectTitle = createSelector(\r\n getBreadcrumbObjectTitles,\r\n (_: unknown, key: string) => key,\r\n (objects, key) => objects[key]\r\n);\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n load: (key: string, params: IGetDataRowsParams) =>\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector): Promise<any> => {\r\n const actions = slice.actions;\r\n\r\n dispatch(actions.setObjectTitle({ key: key, value: null, isFetching: true }));\r\n\r\n const attrName = params.attributes?.[0].clientName as string ?? ''\r\n const appState = getState();\r\n const service = getDataRowsService(appState);\r\n\r\n const promise = service.loadData({\r\n ...params\r\n });\r\n\r\n const result = await promise;\r\n\r\n if (!result.hasErrors && result.value.length == 1) {\r\n dispatch(actions.setObjectTitle({ key: key, value: result.value[0][attrName] as string, isFetching: false }));\r\n } else {\r\n dispatch(actions.setObjectTitle({ key: key, value: null, isFetching: false }));\r\n dispatch(getErrorStoreActions().push(result.errors || ['Obj not found!']));\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport type useBreadcrumbTitleGetterType<T extends IData> = (fallbackLockey?: string) =>\r\n (match: match<UrlParamObject> | null, lockey?: string) =>\r\n string | null;\r\n\r\ntype AttrToLoadType<T extends IData> = {\r\n attrMapping: AttrMapping<T>,\r\n attrName: AttrName<T>,\r\n condition: string,\r\n conditionParams: string[]\r\n}\r\n\r\nexport type ParsedUrlCondition = {\r\n condition: string;\r\n conditionParams: string[];\r\n}\r\n\r\nexport type UrlConditionParser = (match: match<UrlParamObject> | null) => ParsedUrlCondition;\r\n\r\nconst useTitleFactory = <T extends IData>(\r\n attrMapping: AttrMapping<T>,\r\n attrName: AttrName<T>,\r\n attrsToLoad: Map<string, AttrToLoadType<T>>,\r\n parser: UrlConditionParser): useBreadcrumbTitleGetterType<T> => {\r\n const state = useSelector(getBreadcrumbState);\r\n const { t } = useLocalization();\r\n\r\n const callback = useCallback((match, fallbackLockey?: string): string | null => {\r\n const attrInfo = attrMapping.getByClientName(attrName);\r\n if (attrInfo) {\r\n const { condition, conditionParams } = parser(match);\r\n const key = `${attrMapping.objectName}-${condition}-${conditionParams.join('-')}`;\r\n const title = state.objectTitles[key];\r\n if (!title) {\r\n attrsToLoad.set(key, { attrMapping, attrName, condition, conditionParams: conditionParams })\r\n return null;\r\n } else if (title.isFetching) {\r\n return null\r\n }\r\n return title.value || ((fallbackLockey && t(fallbackLockey)) || null);\r\n } else {\r\n console.error(attrName + \" not found!\");\r\n }\r\n return null;\r\n }, [attrMapping, attrName, parser, state.objectTitles, t, attrsToLoad]);\r\n\r\n return ((fallbackLockey?: string) => {\r\n return (match: match<UrlParamObject> | null) => callback(match, fallbackLockey);\r\n });\r\n}\r\n\r\nexport const useBreadcrumbTitle = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const attrsToLoad = useMemo(() => new Map<string, AttrToLoadType<any>>(), []);\r\n const location = useLocation();\r\n const taskManager = useTaskManager();\r\n const key = `bread-title-render-${location.pathname}`\r\n\r\n const getVZTitle = useTitleFactory(\r\n ZpAttrMap,\r\n 'nazev',\r\n attrsToLoad,\r\n (match) => prepareVZCondition(parseVZUrl(match).code)\r\n );\r\n\r\n const getProfilTitle = useTitleFactory(\r\n ProfilZadavateleAttrMap,\r\n 'nazevOrganizace',\r\n attrsToLoad,\r\n (match) => prepareProfilCondition(parseProfilUrl(match))\r\n );\r\n\r\n const getDnsTitle = useTitleFactory(\r\n DNSystemAttrMap,\r\n 'nazev',\r\n attrsToLoad,\r\n (match) => prepareDnsCondition(parseDnsUrl(match))\r\n );\r\n\r\n const getSkTitle = useTitleFactory(\r\n SystemKvalifikaceAttrMap,\r\n 'skNazev',\r\n attrsToLoad,\r\n (match) => prepareSkCondition(parseSkUrl(match))\r\n );\r\n\r\n const getSubjektTitle = useTitleFactory(\r\n SubjektAttrMap,\r\n 'nazevOrganizace',\r\n attrsToLoad,\r\n (match) => prepareSubjektCondition(parseSubjektUrl(match))\r\n );\r\n\r\n const loadData = useCallback(async (controller?: AbortController) => {\r\n if (attrsToLoad.size > 0) {\r\n for (const [key, val] of attrsToLoad) {\r\n await dispatch(actionCreators.load(key, {\r\n className: val.attrMapping.objectName,\r\n condition: val.condition,\r\n conditionParams: val.conditionParams,\r\n attributes: val.attrMapping.getDataRowAttributes(val.attrName),\r\n abortSignal: controller?.signal\r\n }));\r\n }\r\n attrsToLoad.clear();\r\n }\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n\r\n if (taskManager.isTaskCompleted(key)) {\r\n taskManager.removeTaskFromCompleted(key);\r\n } else {\r\n loadData(controller);\r\n }\r\n\r\n return () => {\r\n controller?.abort();\r\n }\r\n }, [location.pathname]);\r\n\r\n let setAttrPromise: Deferred<void>;\r\n\r\n taskManager.add(key + '-title-set', () => {\r\n setAttrPromise = PromiseUtils.defer();\r\n\r\n setAttrPromise.promise.then(() => {\r\n taskManager.add(key, loadData);\r\n });\r\n\r\n setAttrPromise?.resolve();\r\n return setAttrPromise.promise;\r\n });\r\n\r\n return { getVZTitle, getProfilTitle, getDnsTitle, getSubjektTitle, getSkTitle };\r\n}\r\n\r\nexport type UseBreadcrumbTitle = ReturnType<typeof useBreadcrumbTitle>;","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { StatisticsData } from '@services/NENService';\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from '.';\r\nimport { getErrorStoreActions } from './errorStore';\r\nimport { getNodeContext } from './nodeContextStore';\r\n\r\nexport const name = 'statisticsStore';\r\n\r\n// Declare an interface of the store's state.\r\nexport type StatisticsState = {\r\n statisticsData: StatisticsData | null;\r\n fetchingStarted: boolean;\r\n};\r\n\r\n// Create the slice.\r\nexport const slice = createSlice({\r\n name,\r\n initialState: {\r\n fetchingStarted: false,\r\n statisticsData: null\r\n } as StatisticsState,\r\n reducers: {\r\n setStatistisc: (state, action: PayloadAction<StatisticsData | null>) => {\r\n return { ...state, statisticsData: action.payload };\r\n },\r\n setFetchingStarted: (state) => {\r\n return { ...state, fetchingStarted: true };\r\n }\r\n }\r\n});\r\n\r\n// Export reducer from the slice.\r\nexport const { reducer } = slice;\r\n\r\n// Selectors\r\nexport const getStatistics = (state: ApplicationState) => state[name];\r\nexport const getStatisticsData = createSelector(getStatistics, statistics => statistics.statisticsData);\r\n\r\nconst getStatisticsTaskKey = 'get-statistics';\r\n\r\n// Define action creators.\r\nexport const actionCreators = {\r\n getStatistics: () =>\r\n (dispatch: AppDispatch, getState: ApplicationStateSelector): StatisticsData | null => {\r\n const appState = getState();\r\n const statistics = getStatistics(appState);\r\n if (statistics.statisticsData) {\r\n return statistics.statisticsData;\r\n }\r\n\r\n if (statistics.fetchingStarted) {\r\n return null;\r\n }\r\n\r\n dispatch(slice.actions.setFetchingStarted());\r\n\r\n const nodeContext = getNodeContext(appState);\r\n \r\n if (nodeContext.taskManager.isTaskCompleted(getStatisticsTaskKey)) {\r\n nodeContext.taskManager.removeTaskFromCompleted(getStatisticsTaskKey);\r\n return null;\r\n }\r\n\r\n const promise = nodeContext.nenService.getStatistics()\r\n .then(result => dispatch(slice.actions.setStatistisc(result)));\r\n\r\n promise.catch(e => {\r\n dispatch(getErrorStoreActions().push(e))\r\n })\r\n\r\n nodeContext.taskManager.add(getStatisticsTaskKey, () => promise);\r\n\r\n return null;\r\n }\r\n};\r\n\r\nexport const useStatistics = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const statistics = useSelector(getStatisticsData);\r\n return statistics ?? dispatch(actionCreators.getStatistics());\r\n}\r\n\r\nexport type UseStatisticsType = ReturnType<typeof useStatistics>;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { WidgetItem, WidgetStoreState } from \"@store/WidgetStore/widgetStore\";\r\n\r\n\r\nexport const createWidgetItemsSlice = <TItem extends WidgetItem>(name: string) => createSlice({\r\n name,\r\n initialState: {\r\n items: [] as TItem[],\r\n errors: [] as string[]\r\n } as WidgetStoreState<TItem>,\r\n reducers: {\r\n setItems: (state, action: PayloadAction<TItem[]>) => {\r\n return {\r\n ...state,\r\n items: action.payload\r\n };\r\n },\r\n setErrors: (state, action: PayloadAction<string[]>) => {\r\n state.errors = action.payload;\r\n }\r\n }\r\n});\r\n\r\n","import { createWidgetItemsSlice } from './widgetItemsHelpers';\r\nimport { WidgetItem } from './widgetStore';\r\n\r\n\r\nexport const newsStoreName = 'newsStore';\r\n\r\nexport type NewsItem = WidgetItem & {\r\n description: string\r\n description_html: string\r\n}\r\n\r\nexport const slice = createWidgetItemsSlice<NewsItem>(newsStoreName);\r\n\r\nexport const { reducer } = slice;","import { WidgetItem } from \"@store/WidgetStore/widgetStore\";\r\nimport { createWidgetItemsSlice } from './widgetItemsHelpers';\r\n\r\nexport const trainingStoreName = 'trainingStore';\r\n\r\nexport type TrainingItem = WidgetItem & {\r\n u_training_date: Date,\r\n u_training_time_from: string,\r\n u_training_time_to: string,\r\n u_training_address: string,\r\n u_training_for: string\r\n}\r\n\r\nexport const slice = createWidgetItemsSlice<TrainingItem>(trainingStoreName);\r\n\r\nexport const { reducer } = slice;\r\n","import { ActionCreatorWithPayload, combineReducers, createSelector, Reducer, Slice } from \"@reduxjs/toolkit\";\r\nimport { AppDispatch, ApplicationState, ApplicationStateSelector } from \"../\";\r\nimport { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport * as NewsWidgetStore from './newsWidgetStore';\r\nimport * as TrainingWidgetStore from './trainingWidgetStore';\r\nimport { getWidgetService, useTaskManager } from \"@store/nodeContextStore\";\r\nimport { getErrorStoreActions } from \"@store/errorStore\";\r\nimport { WidgetLanguage } from \"@services/WidgetService\";\r\nimport { useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nexport const name = 'widgetStore'; \r\n\r\nexport type WidgetStoreState<TItem extends WidgetItem> = {\r\n items: TItem[];\r\n errors: string[];\r\n}\r\n\r\nexport type WidgetItem = {\r\n id: string,\r\n short_description: string\r\n updated: string\r\n url: string\r\n}\r\n\r\nconst slices = {\r\n [NewsWidgetStore.newsStoreName]: NewsWidgetStore.slice,\r\n [TrainingWidgetStore.trainingStoreName]: TrainingWidgetStore.slice\r\n};\r\n\r\ntype ReducerKeys = keyof typeof slices;\r\n\r\nconst widgetRootReducer = combineReducers(\r\n Object.entries(slices)\r\n .map(([key, slice]) => [key, slice] as [ReducerKeys, Slice<WidgetStoreState<WidgetItem>>])\r\n .reduce((obj, [key, slice]) => {\r\n obj[key] = slice.reducer;\r\n return obj\r\n }, {} as { [x in ReducerKeys]: Reducer<WidgetStoreState<WidgetItem>> }\r\n )\r\n);\r\n\r\nexport type WidgetStore = ReturnType<typeof widgetRootReducer>\r\n\r\nexport { widgetRootReducer };\r\n\r\nexport const getWidgetStoreState = (state: ApplicationState) => state.widgetStore;\r\n\r\nexport const getWitgetItems = createSelector(\r\n getWidgetStoreState,\r\n (_: unknown, sliceKey: keyof WidgetStore) => sliceKey,\r\n (widgetStore, sliceKey) => widgetStore?.[sliceKey]?.items\r\n);\r\n\r\nexport type APIEndPoints = \"news\" | \"trainings\";\r\n\r\nexport const useWidgetItems = <TItem extends WidgetItem>(\r\n keyOfSlice: Extract<keyof WidgetStore, string>,\r\n queryFilter: string = \"\") => {\r\n\r\n const dispatch: AppDispatch = useDispatch();\r\n const state = useSelector(getWidgetStoreState);\r\n const items = useSelector((state: ApplicationState) => getWitgetItems(state, keyOfSlice)) as TItem[];\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n const taskManager = useTaskManager();\r\n\r\n const slice = slices[keyOfSlice];\r\n\r\n if (slice == null) {\r\n throw new Error(`There is no corresponding slice key - ${keyOfSlice} in WidgetStore.`);\r\n }\r\n\r\n let controllerEndPoint: APIEndPoints;\r\n\r\n switch (keyOfSlice) {\r\n case \"newsStore\":\r\n controllerEndPoint = \"news\";\r\n break;\r\n case \"trainingStore\":\r\n controllerEndPoint = \"trainings\";\r\n break;\r\n }\r\n\r\n const loadData = useCallback(async (controller?: AbortController) => {\r\n await dispatch(loadItems<TItem>(\r\n slice.actions.setItems as any as ActionCreatorWithPayload<TItem[]>,\r\n controllerEndPoint,\r\n switchByLanguage({ cz: 'cs', en: 'en' }),\r\n queryFilter,\r\n controller\r\n ));\r\n }, [controllerEndPoint, slice, dispatch, queryFilter, switchByLanguage]);\r\n\r\n useEffect(() => {\r\n const controller = new AbortController();\r\n\r\n if (taskManager.isTaskCompleted(keyOfSlice)) {\r\n taskManager.removeTaskFromCompleted(keyOfSlice);\r\n }\r\n else {\r\n loadData(controller);\r\n }\r\n\r\n return () => {\r\n controller?.abort();\r\n }\r\n }, [switchByLanguage, dispatch, keyOfSlice, queryFilter, taskManager, slice.actions.setItems, controllerEndPoint, loadData]);\r\n\r\n taskManager.add(keyOfSlice, loadData);\r\n\r\n return { items, state };\r\n}\r\n\r\n\r\nexport const loadItems = <TItem extends WidgetItem>(\r\n setItems: ActionCreatorWithPayload<TItem[]>,\r\n endPoint: APIEndPoints,\r\n language: WidgetLanguage = \"cs\",\r\n queryFilter: string = \"\",\r\n controller?: AbortController) =>\r\n\r\n async (dispatch: AppDispatch, getState: ApplicationStateSelector): Promise<any> => {\r\n const service = getWidgetService(getState());\r\n const result = await service.loadData<TItem[]>(endPoint, queryFilter, language, controller);\r\n\r\n dispatch(result.hasErrors\r\n ? getErrorStoreActions().push(result.errors)\r\n : setItems(result.value));\r\n\r\n return result;\r\n }\r\n","import { JsEvent } from \"@utils/Events\";\r\nimport { PromisesStacker, PromiseStackerItems } from \"@utils/PromisesStacker\";\r\nimport { ServiceBase } from \"./ServiceBase\";\r\n\r\nexport type GetDescriptionParams = string[];\r\n\r\nexport type EnumItem = {\r\n intValue: number;\r\n name: string;\r\n description: string;\r\n locKey: string;\r\n}\r\n\r\nexport type EnumDescription = {\r\n enumName: string;\r\n items: EnumItem[];\r\n}\r\n\r\nexport default class EnumDescriptionService extends ServiceBase {\r\n public static enumDescriptionsLoaded = new JsEvent<EnumDescriptionService, EnumDescription[]>();\r\n\r\n private static _promiseStacker?: PromisesStacker<EnumDescription>;\r\n\r\n public getEnumsDescriptions(...enumNames: GetDescriptionParams) {\r\n const stacker = EnumDescriptionService._promiseStacker ??= new PromisesStacker<EnumDescription>({});\r\n stacker.onTick = items => this._getEnumsDescriptions(items);\r\n return Promise.all(enumNames.map(enumName => stacker.request(enumName)));\r\n }\r\n\r\n public static getAllDescriptions(): EnumDescription[] {\r\n return EnumDescriptionService._promiseStacker?.getAllResolved() ?? [];\r\n }\r\n\r\n private async _getEnumsDescriptions(items: PromiseStackerItems<EnumDescription>): Promise<void> {\r\n const response = await this.requestJson<EnumDescription[]>({\r\n url: '/api/enum/descriptions',\r\n method: 'POST',\r\n data: [...items.keys()]\r\n });\r\n if (response.hasErrors) {\r\n [...items.values()].forEach((itemPromise) => {\r\n itemPromise.reject(response.errors);\r\n });\r\n EnumDescriptionService._promiseStacker = undefined;\r\n EnumDescriptionService.enumDescriptionsLoaded.trigger(this, []);\r\n return;\r\n }\r\n EnumDescriptionService.enumDescriptionsLoaded.trigger(this, response.value);\r\n const result = new Map(response.value.map(enumDesc => [enumDesc.enumName, enumDesc]));\r\n [...items.entries()].forEach(([enumName, itemPromise]) => {\r\n const enumDesc = result.get(enumName);\r\n if (enumDesc) {\r\n itemPromise.resolve(enumDesc);\r\n return;\r\n }\r\n itemPromise.resolve();\r\n });\r\n }\r\n}","import * as CollectionStore from './collectionStore';\r\nimport * as DetailObjecStore from './detailObjectStore';\r\nimport * as Localization from './localizationStore';\r\nimport * as NodeContextStore from './nodeContextStore';\r\nimport * as BreadcrumbStore from './breadcrumbStore';\r\nimport * as BreadcrumbTitleStore from './breadcrumbTitleStore';\r\nimport * as EnumDescriptionsStore from './enumDescriptionsStore';\r\nimport * as ErrorsStore from './errorStore';\r\nimport * as StatisticsStore from './statisticsStore';\r\nimport * as UserCookieSettingsStore from './userCookieSettingsStore';\r\nimport * as WidgetStore from './WidgetStore/widgetStore';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { AnyAction, Store } from 'redux';\r\nimport LocalizationService, { Language } from '@services/LocalizationService';\r\nimport { isNode } from '@utils/node-utils';\r\nimport EnumDescriptionService, { EnumDescription } from '@services/EnumDescriptionService';\r\nimport { EventCallback } from '@utils/Events';\r\nimport { LocalizationItem } from './localizationStore';\r\n\r\n\r\n// The top-level state object\r\nexport type ApplicationState = {\r\n [Localization.name]: Localization.LocalizationStoreState;\r\n [NodeContextStore.name]: NodeContextStore.NodeContextState;\r\n [BreadcrumbStore.name]: BreadcrumbStore.BreadcrumbStoreState;\r\n [EnumDescriptionsStore.name]: EnumDescriptionsStore.EnumDescriptionsState;\r\n [ErrorsStore.name]: ErrorsStore.ErrorStoreState;\r\n [CollectionStore.name]: CollectionStore.CollectionStoreState,\r\n [DetailObjecStore.name]: DetailObjecStore.DetailObjectStoreState,\r\n [StatisticsStore.name]: StatisticsStore.StatisticsState,\r\n [BreadcrumbTitleStore.name]: BreadcrumbTitleStore.BreadcrumbTitleStoreState,\r\n [UserCookieSettingsStore.name]: UserCookieSettingsStore.UserCookieSettingsState,\r\n [WidgetStore.name]: WidgetStore.WidgetStore,\r\n}\r\n\r\nexport type ApplicationStateSelector = () => ApplicationState;\r\n\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexport const reducers = {\r\n [Localization.name]: Localization.reducer,\r\n [NodeContextStore.name]: NodeContextStore.reducer,\r\n [BreadcrumbStore.name]: BreadcrumbStore.reducer,\r\n [EnumDescriptionsStore.name]: EnumDescriptionsStore.reducer,\r\n [ErrorsStore.name]: ErrorsStore.reducer,\r\n [CollectionStore.name]: CollectionStore.reducer,\r\n [DetailObjecStore.name]: DetailObjecStore.reducer,\r\n [StatisticsStore.name]: StatisticsStore.reducer,\r\n [BreadcrumbTitleStore.name]: BreadcrumbTitleStore.reducer,\r\n [UserCookieSettingsStore.name]: UserCookieSettingsStore.reducer,\r\n [WidgetStore.name]: WidgetStore.widgetRootReducer\r\n};\r\n\r\nexport const initStore = (dispatch: AppDispatch, nodeContext: NodeContextStore.NodeContextState) => {\r\n dispatch(NodeContextStore.slice.actions.init(nodeContext));\r\n dispatch(UserCookieSettingsStore.slice.actions.setUserCookieSettings(UserCookieSettingsStore.getUserCookieSettingsFromCookie(nodeContext.http)));\r\n const language = nodeContext.localizationService.getLanguageFromCookie();\r\n dispatch(Localization.slice.actions.init(language));\r\n\r\n const onLocLoaded: EventCallback<LocalizationService, { language: Language; locItems: LocalizationItem[] }> = (_, payload) => {\r\n dispatch(Localization.slice.actions.addLanguageData(payload));\r\n };\r\n LocalizationService.localizationsLoaded.add(onLocLoaded);\r\n\r\n const onEnumDescriptionLoaded: EventCallback<EnumDescriptionService, EnumDescription[]> = (_, payload) => {\r\n dispatch(EnumDescriptionsStore.slice.actions.addDescriptions(payload));\r\n };\r\n EnumDescriptionService.enumDescriptionsLoaded.add(onEnumDescriptionLoaded);\r\n if (isNode) {\r\n dispatch(Localization.slice.actions.addLanguageData({\r\n language,\r\n locItems: LocalizationService.getAllLocItems(language)\r\n }));\r\n dispatch(EnumDescriptionsStore.slice.actions.addDescriptions(EnumDescriptionService.getAllDescriptions()));\r\n }\r\n\r\n return () => {\r\n LocalizationService.localizationsLoaded.remove(onLocLoaded);\r\n EnumDescriptionService.enumDescriptionsLoaded.remove(onEnumDescriptionLoaded);\r\n }\r\n}\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport type AppDispatch = ThunkDispatch<ApplicationState, any, AnyAction>;\r\nexport type AppThunkAction = (dispatch: AppDispatch, getState: ApplicationStateSelector) => void;\r\nexport type AppStore = Store<ApplicationState>;\r\n\r\nexport function withStore<TStoreState, TActionCreators, TComponent extends React.ComponentType<TStoreState & TActionCreators & any>>(\r\n component: TComponent,\r\n stateSelector: (state: ApplicationState) => TStoreState,\r\n actionCreators: TActionCreators\r\n): TComponent {\r\n return connect(stateSelector, actionCreators)(component) as any as TComponent;\r\n}","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { routerMiddleware, LOCATION_CHANGE } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, initStore, reducers } from './';\r\nimport { NodeContextState } from './nodeContextStore';\r\n\r\nexport default function configureStore(history: History, nodeContext: NodeContextState, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: routerReducer(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n const store = createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n\r\n const disposeStore = initStore(store.dispatch, nodeContext);\r\n\r\n return { store, disposeStore };\r\n}\r\n\r\n//Force initial state from SSR\r\nconst routerReducer = (history: History) => {\r\n const initialState = {\r\n location: history.location,\r\n action: history.action,\r\n };\r\n return (state = initialState, arg: any = {}) => {\r\n if (arg.type === LOCATION_CHANGE) {\r\n return { ...state, ...arg.payload };\r\n }\r\n return state;\r\n }\r\n};\r\n","import React, { FC } from \"react\";\r\nimport GovLink from \"../GovLink\";\r\nimport GovLinkBase, { GovLinkBaseProps } from \"../GovLink/GovLinkBase\";\r\n\r\nexport type UniversalLinkTo = {\r\n to: string,\r\n sameTarget?: boolean\r\n}\r\nexport type UniversalLinkProps = React.PropsWithChildren<Omit<GovLinkBaseProps, \"href\" | \"to\"> & UniversalLinkTo>;\r\n\r\nconst AnchorLink: React.FC<UniversalLinkTo> = ({ sameTarget, ...props }) => <a {...props} target={sameTarget ? '' : '_blank'} />\r\n\r\nconst UniversalLink: FC<UniversalLinkProps> = props => {\r\n const { isExternal, ...linkProps } = props;\r\n if (isExternal) {\r\n const { to, ...aProps } = {\r\n ...linkProps,\r\n href: props.to\r\n };\r\n return (\r\n <GovLinkBase\r\n element={AnchorLink}\r\n {...aProps} />\r\n\r\n );\r\n }\r\n return (\r\n <GovLink {...props} />\r\n );\r\n}\r\n\r\nexport default React.memo(UniversalLink);","import { FC } from \"react\";\r\nimport { useLocalization } from 'store/localizationStore';\r\nimport { Classes } from \"@utils/BemUtils\";\r\nimport UniversalLink, { UniversalLinkProps } from \"../UniversalLink/UniversalLink\";\r\n\r\ntype FooterMenuProps = {\r\n locKey: string;\r\n className: Classes\r\n}\r\n\r\ntype FooterMenuType = FC<FooterMenuProps> & {\r\n Link: typeof FooterLink;\r\n}\r\n\r\nconst FooterMenu: FooterMenuType = (({\r\n locKey,\r\n children,\r\n className\r\n}) => {\r\n const { ts } = useLocalization();\r\n return (\r\n <div className={`${className}__col`}>\r\n <h3 className={`${className}__headline`}>\r\n {ts(locKey)}\r\n </h3>\r\n <ul className=\"gov-list--plain\">\r\n {children}\r\n </ul>\r\n </div >\r\n );\r\n}) as FooterMenuType;\r\n\r\nexport type FooterLinkProps = UniversalLinkProps & {\r\n locKey: string;\r\n className?: string;\r\n}\r\n\r\nconst FooterLink: FC<FooterLinkProps> = ({\r\n locKey,\r\n to,\r\n isExternal,\r\n className\r\n}) => {\r\n const { d, ts } = useLocalization();\r\n return (\r\n <li className={className}>\r\n <UniversalLink isStandalone isInversed isExternal={isExternal} to={to} title={d(locKey)}>{ts(locKey)}</UniversalLink>\r\n </li>\r\n );\r\n}\r\n\r\nFooterMenu.Link = FooterLink;\r\n\r\nexport default FooterMenu;","import React, { FC, HTMLAttributes, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('gov-container');\r\n\r\nexport type ContainerProps = PropsWithChildren<{\r\n className?: Classes;\r\n noYOffset?: boolean;\r\n asPage?: boolean;\r\n branded?: boolean;\r\n} & HTMLAttributes<HTMLElement>>;\r\n\r\nconst defaultElement: FC<any> = (props) => <div {...props} />;\r\n\r\nconst Container: FC<ContainerProps & {\r\n element?: React.FC<any>,\r\n}> = ({\r\n className,\r\n asPage,\r\n branded,\r\n noYOffset,\r\n element: Element,\r\n children,\r\n ...rest\r\n}) => {\r\n Element ??= defaultElement\r\n return (\r\n <Element className={cn.with(className).main({\r\n '--no-y-offset': noYOffset,\r\n '--as-page': asPage,\r\n '--branded': branded,\r\n })} {...rest}>\r\n <div className={cn('__content')}>\r\n {children}\r\n </div>\r\n </Element>\r\n );\r\n };\r\n\r\nexport default React.memo(Container);\r\n","import React, { FC } from \"react\"\r\nimport Container, { ContainerProps } from \"./Container\";\r\n\r\nconst Footer: React.FC = ({ ...props }) => <footer tabIndex={-1} {...props} />\r\n\r\nconst FooterContainer: FC<ContainerProps> = (props) => {\r\n return (\r\n <Container\r\n element={Footer}\r\n {...props} />\r\n );\r\n};\r\n\r\nexport default React.memo(FooterContainer);","export type PageIds = {\r\n [key in 'menu' | 'content' | 'footer']: string;\r\n};\r\n\r\nexport const pageIds: PageIds = {\r\n menu: 'menu-navigation',\r\n content: 'main-content',\r\n footer: 'footer'\r\n};","import React, { useCallback } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport FooterMenu from \"@components/FooterMenu/FooterMenu\";\r\nimport Icon from \"@components/Icon/Icon\";\r\nimport FooterContainer from \"@components/Container/FooterContainer\";\r\nimport Button from \"@components/Button/Button\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport { BsPencilSquare } from \"react-icons/bs\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { pageIds } from \"@components/Accessibility/pageIds\";\r\n\r\nimport './Footer.scss'\r\nimport Note from \"@components/Note/Note\";\r\n\r\nconst cn = setupCn('gov-footer');\r\n\r\nexport const Footer: React.FC = () => {\r\n const { d, ts, t } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const scrollUp = useCallback(() => {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, [])\r\n\r\n const { appSettings, getManuals, getFaqUrl } = useAppSettings();\r\n const { anotherEnvironment, serviceDesk } = appSettings;\r\n const manualsSettings = getManuals();\r\n const faqUrl = getFaqUrl();\r\n\r\n const tel = t(\"NEN-767512\");\r\n const telNoSpace = tel?.replace(/\\s/g, '');\r\n\r\n return (\r\n <FooterContainer className={cn.with(\"u-bg-color--grey-dark\")()} id={pageIds.footer}>\r\n <section className={cn.with(\"u-screen--only\")(\"__upper\")}>\r\n <FooterMenu locKey=\"NEN-767472\" className={cn()}>\r\n <li>\r\n <FlexBox justify=\"start\" className={cn(\"__row--inversed\")}>\r\n <Icon icon={BsPencilSquare} size=\"24\" className={cn(\"__icon\")} />\r\n <UniversalLink\r\n className={cn(\"__link\")}\r\n isInversed\r\n isExternal\r\n to={serviceDesk?.url}\r\n title={d(\"NEN-749124\")}>\r\n {ts(\"NEN-749124\")}\r\n </UniversalLink>\r\n </FlexBox>\r\n </li>\r\n <li>\r\n <FlexBox justify=\"start\" className={cn(\"__row--inversed\")} title={t('NEN-645478')}>\r\n <Icon iconName='phone' className={cn(\"__icon\")} />\r\n <div>\r\n <UniversalLink\r\n className={cn([\"__link\", \"__note\"])}\r\n isInversed\r\n isExternal\r\n sameTarget\r\n to={'tel:' + telNoSpace}>\r\n <span aria-hidden='true' title={t('NEN-645446')}>{tel}</span>\r\n <span className='u-sr-only'>{telNoSpace}</span>\r\n </UniversalLink>\r\n <Note className={cn('__note')} aria-hidden='true'>{ts('NEN-767513')}</Note>\r\n <span className='u-sr-only'>{t('NEN-786806')}</span>\r\n </div>\r\n </FlexBox>\r\n </li>\r\n <li>\r\n <FlexBox justify=\"start\" className={cn(\"__row--inversed\")} title={t('NEN-645476')}>\r\n <Icon iconName='mail' className={cn(\"__icon\")} />\r\n <UniversalLink className={cn(\"__link\")} isInversed isExternal sameTarget to=\"mailto:hotline@nipez.cz\" title={d(\"NEN-767356\")}>{ts(\"NEN-767356\")}</UniversalLink>\r\n </FlexBox>\r\n </li>\r\n </FooterMenu>\r\n <FooterMenu locKey=\"NEN-767460\" className={cn()}>\r\n <FooterMenu.Link isExternal to=\"https://portal-vz.cz/info-forum-vzdelavani/skoleni/\" locKey=\"NEN-767461\" />\r\n <FooterMenu.Link to={getUrl('osobniUdajeACookies')} locKey=\"NEN-770159\" />\r\n <FooterMenu.Link isExternal to={manualsSettings.showAllUrl} locKey=\"NEN-767462\" />\r\n <FooterMenu.Link to={faqUrl} locKey=\"NEN-767463\" isExternal />\r\n <FooterMenu.Link to={getUrl('prohlaseniOPristupnosti')} locKey=\"NEN-767354\" />\r\n <FooterMenu.Link to=\"https://isvz.nipez.cz/reporty\" locKey=\"NEN-767368\" isExternal />\r\n </FooterMenu>\r\n <FooterMenu locKey=\"NEN-767464\" className={cn()}>\r\n {\r\n anotherEnvironment?.linkLocKey && anotherEnvironment.url &&\r\n <FooterMenu.Link isExternal to={anotherEnvironment.url} locKey={anotherEnvironment.linkLocKey} />\r\n }\r\n <FooterMenu.Link isExternal to=\"https://portal-vz.cz/\" locKey=\"NEN-767467\" />\r\n <FooterMenu.Link isExternal to=\"https://eur-lex.europa.eu/oj/direct-access.html\" locKey=\"NEN-767468\" />\r\n <FooterMenu.Link isExternal to=\"https://vvz.nipez.cz/\" locKey=\"NEN-767469\" />\r\n <FooterMenu.Link isExternal to=\"https://isvz.nipez.cz/\" locKey=\"NEN-767471\" />\r\n <FooterMenu.Link isExternal to=\"https://skd.nipez.cz\" locKey=\"NEN-754139\" />\r\n <FooterMenu.Link isExternal to=\"https://download.tescosw.cz/crypto/\" locKey=\"NEN-660632\" />\r\n </FooterMenu>\r\n </section>\r\n <hr />\r\n <section className={cn(\"__lower\")}>\r\n <p className=\"gov-footnote\">\r\n {ts(\"NEN-767362\")}\r\n </p>\r\n <p className=\"gov-footnote\">\r\n {ts(\"NEN-767361\")}\r\n </p>\r\n </section>\r\n <Button\r\n onClick={scrollUp}\r\n isOutlined\r\n isInversed\r\n className={cn(\"__scroll-up\")}\r\n aria-label={t(\"NEN-767360\")}\r\n title={t(\"NEN-767360\")} />\r\n </FooterContainer>\r\n );\r\n}","export default __webpack_public_path__ + \"static/media/nen_logo_white.a8fd86f0.svg\";","import { setupCn } from \"@utils/BemUtils\";\r\nimport nenlogo from 'images/nen_logo_white.svg';\r\nimport './Pictogram.scss'\r\n\r\nconst cn = setupCn('gov-pictogram');\r\n\r\nconst Pictogram: React.FC = () => {\r\n return (\r\n <div className={cn.main('--inversed')}>\r\n <img src={nenlogo} alt=\"logo NEN\"/>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Pictogram;","import { createContext, FC, FocusEventHandler, KeyboardEventHandler, PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { setupCn } from '@utils/BemUtils';\r\nimport GovNavLink, { GovNavLinkProps } from '@components/GovLink/GovNavLink';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport Pictogram from '@components/Pictogram/Pictogram';\r\nimport { pageIds } from '@components/Accessibility/pageIds';\r\n\r\nimport './GovMenu.scss';\r\n\r\nconst cn = setupCn('gov-header');\r\n\r\ntype MenuTabIndexContext = {\r\n links?: Set<HTMLAnchorElement>;\r\n handleFocus?: FocusEventHandler;\r\n}\r\nconst MenuTabIndexContext = createContext<MenuTabIndexContext>({});\r\n\r\nexport type GovMenuType = FC<PropsWithChildren<{\r\n links: JSX.Element[];\r\n isActive: boolean;\r\n onLinkClick: () => void;\r\n}>> & { Link: typeof Link }\r\n\r\n\r\nconst GovMenu: GovMenuType = ({ links, isActive, onLinkClick }) => {\r\n const refs = useRef(new Set<HTMLAnchorElement>()).current;\r\n const [tabIndex, setTabIndex] = useState<number>(0);\r\n const [initial, setInitial] = useState<boolean>(true);\r\n\r\n const handleFocus = useCallback<FocusEventHandler<HTMLAnchorElement>>(e => {\r\n const index = [...refs].filter(r => r.clientHeight).indexOf(e.target);\r\n if (index >= 0) {\r\n setTabIndex(index);\r\n } else {\r\n setTabIndex(0);\r\n }\r\n }, [refs, setTabIndex]);\r\n\r\n const keys = useMemo(() => [37, 38, 39, 40], [])\r\n\r\n const onKeyDown = useCallback<KeyboardEventHandler>(e => {\r\n const { keyCode } = e;\r\n const visibleRefs = [...refs].filter(r => r.clientHeight);\r\n if (keys?.includes(keyCode)) {\r\n e.preventDefault();\r\n if (keyCode === (isActive ? 40 : 39)) {\r\n setTabIndex(index => {\r\n index ??= 0;\r\n return (index + 1) >= visibleRefs.length ? 0 : (index + 1)\r\n });\r\n } else if (keyCode === (isActive ? 38 : 37)) {\r\n setTabIndex(index => {\r\n index ??= 0;\r\n return (index - 1) < 0 ? (visibleRefs.length - 1) : (index - 1)\r\n });\r\n }\r\n if (initial) {\r\n setInitial(false);\r\n }\r\n }\r\n }, [setTabIndex, refs, setInitial, initial, isActive, keys]);\r\n\r\n useEffect(() => {\r\n refs?.forEach(r => r.setAttribute('tabindex', '-1'));\r\n\r\n const visibleRefs = [...refs].filter(r => r.clientHeight);\r\n const current = visibleRefs[tabIndex] ?? visibleRefs[0];\r\n current?.setAttribute('tabindex', '0');\r\n if (!initial) {\r\n current?.focus();\r\n }\r\n }, [tabIndex, refs, initial]);\r\n\r\n return (\r\n <nav\r\n id={pageIds.menu}\r\n role='menubar'\r\n className={cn.with({ 'active': isActive })('__nav')}\r\n aria-orientation={isActive ? 'vertical' : 'horizontal'}>\r\n <div className={cn.with({ 'active': isActive })('__nav-logo')} aria-hidden='true'>\r\n <Pictogram />\r\n </div>\r\n <div className={cn(' __nav-holder')} onKeyDown={onKeyDown}>\r\n <MenuTabIndexContext.Provider value={{ links: refs, handleFocus: handleFocus }}>\r\n {\r\n links.map((link, i) =>\r\n <div key={i} className={cn.with(link.props.className)('__link')} onClick={onLinkClick}>\r\n {link}\r\n </div>\r\n )\r\n }\r\n </MenuTabIndexContext.Provider>\r\n </div>\r\n </nav>\r\n );\r\n}\r\n\r\nconst Link: React.FC<PropsWithChildren<GovNavLinkProps & { lockey: string }>> = ({ lockey, ...rest }) => {\r\n const { ts } = useLocalization();\r\n const { links, handleFocus } = useContext(MenuTabIndexContext);\r\n const linkHref = useRef<HTMLAnchorElement>(null);\r\n\r\n useEffect(() => {\r\n const item = linkHref.current;\r\n if (item) {\r\n links?.add(item);\r\n }\r\n\r\n return () => {\r\n if (item) {\r\n links?.delete(item)\r\n }\r\n };\r\n }, [links]);\r\n\r\n return <GovNavLink\r\n role='menuitem'\r\n isInversed\r\n isStandalone\r\n linkRef={linkHref}\r\n onFocus={handleFocus}\r\n size={'large'} {...rest}>\r\n {ts(lockey, { isPrimaryTheme: true })}\r\n </GovNavLink>\r\n}\r\n\r\nGovMenu.Link = Link;\r\n\r\nexport default GovMenu;","import React, { FC } from \"react\"\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Container, { ContainerProps } from \"./Container\";\r\n\r\nconst cn = setupCn('gov-header');\r\n\r\nconst ContainerElement: React.FC<any> = (props) => <header tabIndex={-1} {...props} />;\r\n\r\nconst HeaderContainer: FC<ContainerProps & {\r\n isNavigationActive?: boolean,\r\n}> = ({ isNavigationActive, ...restProps }) => {\r\n return (\r\n <Container\r\n className={cn.with({\r\n 'is-fixed': isNavigationActive\r\n }).main()}\r\n element={ContainerElement}\r\n {...restProps} />\r\n );\r\n};\r\n\r\nexport default React.memo(HeaderContainer);\r\n","import { FC, FormEventHandler, PropsWithChildren, useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport LocalizationService, { Language } from \"services/LocalizationService\";\r\nimport { AppDispatch } from \"store\";\r\nimport { getCurrentLanguage, actionCreators, useLocalization } from '@store/localizationStore';\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { useHistory, useLocation } from \"react-router\";\r\n\r\nconst cn = setupCn('gov-lang-switch');\r\n\r\nconst enRegExp = new RegExp(/^\\/en\\//);\r\n\r\nconst LanguageSwitcher: FC<PropsWithChildren<{ id: string }>> = ({ id }) => {\r\n const { ts } = useLocalization();\r\n const dispatch: AppDispatch = useDispatch();\r\n const currentLanguage = useSelector(getCurrentLanguage);\r\n const allLanguages = LocalizationService.supportedLanguages;\r\n const location = useLocation();\r\n const { push } = useHistory();\r\n\r\n const onChange = useCallback<FormEventHandler<HTMLSelectElement>>(event => {\r\n dispatch(actionCreators.changeLanguage(event.currentTarget.value as Language));\r\n const url = location.pathname + location.search + location.hash;\r\n const isEnInUrl = enRegExp.test(location.pathname);\r\n if (event.currentTarget.value == 'EN' && !isEnInUrl) {\r\n push('/en' + url);\r\n } else if (event.currentTarget.value != 'EN' && isEnInUrl) {\r\n push(url.replace(/^\\/en/, ''));\r\n }\r\n }, [dispatch, push, location]);\r\n\r\n useEffect(() => {\r\n if (enRegExp.test(location.pathname)) {\r\n dispatch(actionCreators.changeLanguage('EN'));\r\n } else {\r\n dispatch(actionCreators.changeLanguage('CZ'));\r\n }\r\n }, [dispatch, location]);\r\n\r\n useEffect(() => {\r\n const altLink = document.querySelector<HTMLLinkElement>('link[rel=\"alternate\"]');\r\n if (altLink) {\r\n const url = location.pathname + location.search + location.hash;\r\n let base = window.location.href;\r\n if (location.pathname.length > 1) {\r\n base = base\r\n .substring(0, window.location.href.indexOf(location.pathname));\r\n }\r\n base = base.replace(/\\/$/, '');\r\n\r\n altLink.hreflang = currentLanguage == 'EN' ? 'cs' : 'en';\r\n const isEnInUrl = enRegExp.test(location.pathname);\r\n if (currentLanguage == 'EN' && isEnInUrl) {\r\n altLink.href = base + url.replace('/en', '');\r\n } else if (currentLanguage != 'EN' && !isEnInUrl) {\r\n altLink.href = base + '/en' + url;\r\n }\r\n }\r\n }, [currentLanguage, location]);\r\n\r\n return (\r\n <div className={cn.main()}>\r\n <select\r\n id={id}\r\n className={cn('__select')}\r\n value={currentLanguage}\r\n onChange={onChange}>\r\n {\r\n allLanguages.map(lang =>\r\n <option key={lang} value={lang}>\r\n {lang}\r\n </option>\r\n )\r\n }\r\n </select>\r\n <label className=\"u-sr-only\" htmlFor={id}>\r\n {ts(\"NEN-463236\", { isPrimaryTheme: true })}\r\n </label>\r\n </div>\r\n )\r\n}\r\n\r\nLanguageSwitcher.displayName = 'LanguageSwitcher';\r\n\r\nexport default LanguageSwitcher;\r\n","import { setupCn } from \"@utils/BemUtils\";\r\nimport Pictogram from '@components/Pictogram/Pictogram';\r\nimport { Link } from \"react-router-dom\";\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\n\r\nimport './Logo.scss'\r\nconst cn = setupCn('gov-logo');\r\nconst cnEnv = cn.setupSubCn('__env-text');\r\n\r\nconst Logo: React.FC<{ isNavigationActive: boolean }> = (isNavigationActive) => {\r\n const { ts } = useLocalization();\r\n const { appSettings } = useAppSettings();\r\n const { getUrl } = useConstants();\r\n\r\n return (\r\n <Link to={getUrl('home')} className={cn.main('--inversed')}>\r\n <Pictogram />\r\n <div className={cn('__sitename')}>\r\n <span>\r\n NEN\r\n </span>\r\n {\r\n appSettings?.isTestEnvironment || appSettings?.outageVersion?.enabled ?\r\n <span className={cnEnv()}>\r\n {appSettings?.isTestEnvironment ? ts(\"NEN-768453\") : ts(\"NEN-768812\")}\r\n </span> : null\r\n }\r\n </div>\r\n </Link>\r\n );\r\n}\r\n\r\nexport default Logo;","import React, { useCallback, useEffect } from 'react';\r\nimport GovMenu from '@components/GovMenu/GovMenu';\r\nimport HeaderContainer from '@components/Container/HeaderContainer';\r\nimport ButtonLink from '@components/Button/ButtonLink';\r\nimport { setupCn } from '@utils/BemUtils';\r\nimport LanguageSwitcher from '@components/LanguageSwitcher/LanguageSwitcher';\r\nimport { useToggleState } from '@utils/StateUtils';\r\nimport Logo from '@components/Logo/Logo';\r\nimport { useConstants } from '@constants/urlConstants';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { NavLinkProps } from 'react-router-dom';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport UniversalLink from '@components/UniversalLink/UniversalLink';\r\n\r\nimport './Header.scss'\r\n\r\nconst cn = setupCn('gov-header');\r\n\r\nconst isActiveLinkFactory = (urls: string[], exact?: boolean): NavLinkProps['isActive'] =>\r\n (_, location) =>\r\n urls.some(url => exact ? location.pathname == url : location.pathname.startsWith(url))\r\n\r\nconst Header: React.FC = () => {\r\n const { ts, t } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const { getOutageVersion, getInformationForUsersUrl } = useAppSettings();\r\n const informationForUsersUrl = getInformationForUsersUrl();\r\n\r\n const [isNavigationActive, toggleNavigation] = useToggleState(false);\r\n\r\n\r\n const onMobileLinkClick = useCallback(() => {\r\n if (isNavigationActive)\r\n toggleNavigation();\r\n }, [isNavigationActive, toggleNavigation]);\r\n\r\n useEffect(() => {\r\n document.body.style.overflow = isNavigationActive ? 'hidden' : 'initial';\r\n }, [isNavigationActive]);\r\n\r\n return (\r\n <HeaderContainer noYOffset isNavigationActive={isNavigationActive} aria-label={t('NEN-786855')}>\r\n <div className={cn('__holder')}>\r\n <div className={cn('__left')}>\r\n <Logo isNavigationActive={isNavigationActive} />\r\n </div>\r\n <div className={cn('__right')}>\r\n <div className={cn.subCn('__item', '--login')}>\r\n {\r\n getOutageVersion().enabled ? <p>{ts('NEN-770209')}</p> : <ButtonLink to={getUrl('prihlaseni')} isInversed isOutlined>{ts(\"NEN-749252\", { isPrimaryTheme: true })}</ButtonLink>\r\n }\r\n <ButtonLink\r\n to={getUrl('registrace')}\r\n isInversed\r\n isOutlined>\r\n {ts(\"NEN-743741\", { isPrimaryTheme: true })}\r\n </ButtonLink>\r\n </div>\r\n <div className={cn('__fixed-items')}>\r\n <div className={cn.subCn('__item', '--mobile')}>\r\n <button onClick={toggleNavigation} className={cn.with({\r\n 'active': isNavigationActive\r\n })('__hamburger')}>\r\n <span></span>\r\n <span></span>\r\n <div>MENU</div>\r\n </button>\r\n </div>\r\n <div className={cn('__item', '__lang')}>\r\n <LanguageSwitcher id=\"header-lang-select\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr className={cn('__separator')} />\r\n <div\r\n className={cn.with({\r\n 'active': isNavigationActive\r\n })('__overlay')}\r\n onClick={toggleNavigation}\r\n />\r\n <GovMenu isActive={isNavigationActive} onLinkClick={onMobileLinkClick} links={[\r\n <GovMenu.Link to={getUrl('home')}\r\n isActive={isActiveLinkFactory([\r\n getUrl('home'),\r\n getUrl('skoleniZzvz'),\r\n getUrl('videa'),\r\n getUrl('prirucky')\r\n ], true)}\r\n lockey=\"NEN-738416\" />,\r\n <GovMenu.Link to={getUrl('verejneZakazky')}\r\n isActive={isActiveLinkFactory([\r\n getUrl('verejneZakazky'),\r\n getUrl('registrDns'),\r\n getUrl('vestnik'),\r\n getUrl('registrSK')\r\n ])}\r\n lockey=\"NEN-738417\" />,\r\n <GovMenu.Link to={getUrl('profilyZadavateluPlatne')}\r\n isActive={isActiveLinkFactory([\r\n getUrl('profilyZadavateluPlatne'),\r\n getUrl('profilyZadavateluZneplatnene'),\r\n ])}\r\n lockey=\"NEN-738418\" />,\r\n <GovMenu.Link to={getUrl('registrZadavatelu')}\r\n isActive={isActiveLinkFactory([\r\n getUrl('registrZadavatelu'),\r\n getUrl('registrDodavatelu'),\r\n ])}\r\n lockey=\"NEN-738419\" />,\r\n <UniversalLink\r\n to={informationForUsersUrl}\r\n isInversed\r\n isExternal\r\n size='large'\r\n isStandalone\r\n >\r\n {ts(\"NEN-819382\")}\r\n </UniversalLink>,\r\n ]} />\r\n </HeaderContainer>\r\n );\r\n}\r\n\r\nexport default React.memo(Header);","import { FC } from \"react\";\r\nimport { useBreadcrumb } from \"@store/breadcrumbStore\";\r\nimport GovLink from \"@components/GovLink/GovLink\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Container from \"@components/Container\";\r\nimport offsets from \"../../styles/offsets\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nimport './Breadcrumb.scss';\r\nimport React from \"react\";\r\n\r\nconst cn = setupCn('gov-breadcrumbs');\r\n\r\nexport const Breadcrumb: FC = () => {\r\n const { t } = useLocalization();\r\n const [, , items, lastItem] = useBreadcrumb();\r\n\r\n if (!lastItem)\r\n return null;\r\n\r\n return (\r\n <Container className={offsets['u-pb--unset']}>\r\n <nav aria-label={t('NEN-645485')} className={cn()}>\r\n {\r\n items.map(({ href, title }, index) =>\r\n <React.Fragment key={href} >\r\n {index > 0 && <span className={cn.subCn('__arrow')} aria-hidden='true'></span>}\r\n <span className={cn.subCn('__item')}>\r\n {\r\n index < items.length - 1 ?\r\n <GovLink\r\n to={href}\r\n title={title}\r\n isStandalone>\r\n {title || <Skeleton width={60} />}\r\n </GovLink>\r\n :\r\n <strong\r\n aria-current=\"page\"\r\n className=\"gov-title gov-title--delta\">\r\n {title || <Skeleton width={60} />}\r\n </strong>\r\n }\r\n </span>\r\n </React.Fragment>\r\n )\r\n }\r\n </nav>\r\n </Container>\r\n );\r\n}\r\n","import { FC, Fragment, ReactNode, useCallback } from \"react\";\r\nimport { ClientError, useErrorStore } from \"@store/errorStore\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { isNode } from \"@utils/node-utils\";\r\nimport Modal from \"@components/Modal/Modal\";\r\nimport { arrayInjectSeparator, uniqueArray } from \"@utils/ArrayHelper\";\r\nimport { SwitchByLanguage, useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nconst lockeyPattern = 'lockey: ';\r\n\r\nconst DEFAULT_MESSAGE: SwitchByLanguage = {\r\n cz: 'Aplikace provedla nÄ›co, co jsme neÄekali. Zkuste to znovu. V pÅ™ÃpadÄ› opakovánà problému se obraÅ¥te na správce systému',\r\n en: 'The application did something unexpected, please try again. If the problem still occurs, contact your system administrator',\r\n}\r\n\r\nconst OFFLINE_MESSAGE: SwitchByLanguage = {\r\n cz: 'PÅ™ipojenà k serveru se nezdaÅ™ilo. Zkontrolujte, jestli jste pÅ™ipojenà k internetu',\r\n en: 'Could not establish connection to server. Make sure you are connected to the internet',\r\n}\r\n\r\nconst TOO_MANY_REQUEST_MESSAGE: SwitchByLanguage = {\r\n cz: 'Bylo odesláno pÅ™ÃliÅ¡ mnoho požadavků bÄ›hem krátké doby',\r\n en: 'Too many requests are made within a short period of time',\r\n};\r\n\r\nconst DEFAULT_HEADER: SwitchByLanguage = {\r\n cz: 'NÄ›co se nepovedlo',\r\n en: 'Something went wrong',\r\n}\r\n\r\nconst CLOSE_TEXT: SwitchByLanguage = {\r\n cz: 'ZavÅ™Ãt',\r\n en: 'Close',\r\n}\r\n\r\nconst isLocKeyError = (errorText: string) => errorText.includes?.(lockeyPattern);\r\n\r\nconst useErrorMessage = (errors: ClientError[]): { text: ReactNode, title?: ReactNode } | undefined => {\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n const { ts } = useLocalization();\r\n\r\n if (!errors?.length) {\r\n return undefined;\r\n }\r\n\r\n if (!isNode && window?.navigator?.onLine == false) {\r\n return { text: switchByLanguage(OFFLINE_MESSAGE) };\r\n }\r\n\r\n if (errors.some(error => error.errorText?.includes?.('Too Many Requests'))) {\r\n return { text: switchByLanguage(TOO_MANY_REQUEST_MESSAGE) };\r\n }\r\n\r\n const userErrors = errors.filter(error => error.isUserException || isLocKeyError(error.errorText));\r\n if (!userErrors.length) {\r\n return { text: switchByLanguage(DEFAULT_MESSAGE) };\r\n }\r\n\r\n if (userErrors.length == 1 && userErrors[0].isUserException) {\r\n return {\r\n title: userErrors[0].errorTitle,\r\n text: userErrors[0].errorText,\r\n };\r\n }\r\n\r\n let title = undefined;\r\n if (uniqueArray(userErrors.map(error => error.errorTitle)).length == 1 && userErrors[0].errorTitle) {\r\n title = userErrors[0].errorTitle;\r\n }\r\n\r\n const texts: ReactNode[] = [];\r\n const usedTexts = new Set<string>();\r\n const usedLocKeys = new Set<string>();\r\n for (const error of userErrors) {\r\n const errorText = error.isUserException ? error.errorText : undefined;\r\n if (errorText != null) {\r\n if (usedTexts.has(error.errorText)) {\r\n continue;\r\n }\r\n\r\n texts.push(error.errorText);\r\n usedTexts.add(error.errorText);\r\n }\r\n\r\n const { locKey, locParams } = error.isUserException\r\n ? error\r\n : {\r\n locKey: error.errorText?.substring(lockeyPattern.length),\r\n locParams: undefined,\r\n };\r\n\r\n if (!locKey) {\r\n continue;\r\n }\r\n\r\n const key = [locKey, ...locParams ?? []].join(';');\r\n if (usedLocKeys.has(key)) {\r\n continue;\r\n }\r\n\r\n texts.push(ts(locKey, { locParams }));\r\n usedLocKeys.add(key);\r\n }\r\n\r\n const text = arrayInjectSeparator(\r\n texts.map((text, i) => <Fragment key={i}>{text}</Fragment>),\r\n i => <br key={`br${i}`} />);\r\n\r\n return { title, text };\r\n}\r\n\r\nexport const ErrorMessage: FC = () => {\r\n const { errors, clear } = useErrorStore();\r\n\r\n const dismiss = useCallback(() =>\r\n clear(),\r\n [clear]);\r\n\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n\r\n const error = useErrorMessage(errors);\r\n if (!error) {\r\n return null;\r\n }\r\n\r\n const headerText = error.title || switchByLanguage(DEFAULT_HEADER);\r\n\r\n return (\r\n <Modal\r\n headerText={headerText}\r\n buttonText={switchByLanguage(CLOSE_TEXT)}\r\n onClose={dismiss}>\r\n <p>{error.text}</p>\r\n </Modal>\r\n );\r\n}","import { isEmptyOrWhitespace, notEmptyOrWhitespace } from \"./ArrayHelper\";\r\n\r\ntype SlashParams = {\r\n startSlash?: boolean;\r\n endSlash?: boolean;\r\n}\r\n\r\ntype NormalizePathParams = SlashParams & {\r\n defaultValue?: string;\r\n}\r\n\r\nexport const normalizePath = (path: string, options?: NormalizePathParams) => {\r\n const {\r\n defaultValue = '',\r\n endSlash = false,\r\n startSlash = false\r\n } = options ?? {};\r\n\r\n if (isEmptyOrWhitespace(path)) {\r\n path = defaultValue;\r\n }\r\n\r\n path = path?.replace(/^\\/*(.*?)\\/*$/, '$1');\r\n if (isEmptyOrWhitespace(path)) {\r\n return (startSlash || endSlash) ? '/' : path;\r\n }\r\n\r\n const start = startSlash ? '/' : '';\r\n const end = endSlash ? '/' : '';\r\n return `${start}${path}${end}`;\r\n}\r\n\r\nexport function joinPath(...segments: string[]): string;\r\nexport function joinPath(options: SlashParams, ...segments: string[]): string;\r\nexport function joinPath(optionsOrSegment: string | SlashParams, ...segments: string[]): string {\r\n const options: SlashParams = typeof optionsOrSegment == 'string' ? {} : optionsOrSegment;\r\n const allSegments = typeof optionsOrSegment == 'string' ? [optionsOrSegment, ...segments] : segments;\r\n const path = allSegments\r\n .map((segment, index, { length }) => normalizePath(segment, {\r\n startSlash: index == 0 && segment.startsWith('/'),\r\n endSlash: (index == length - 1) && segment.endsWith('/')\r\n }))\r\n .filter(notEmptyOrWhitespace)\r\n .join('/');\r\n return normalizePath(path, options);\r\n}\r\n","import React from \"react\";\r\nimport { useBreadcrumb } from \"@store/breadcrumbStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { useLocation } from \"react-router\";\r\nimport { normalizePath } from \"@utils/PathUtils\";\r\nimport classNames from \"classnames\";\r\nimport { urlConstants, useConstants } from \"@constants/urlConstants\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\n\r\nexport default React.memo(() => {\r\n const [, , , lastItem] = useBreadcrumb();\r\n const location = useLocation();\r\n const { getUrl } = useConstants();\r\n usePageTitle(lastItem?.title);\r\n\r\n const pathName = normalizePath(location.pathname, { startSlash: true });\r\n const hideHeader = pathName.includes(urlConstants.detailInformace.pureUrl)\r\n || pathName == getUrl('rozcestnikRegistrace')\r\n || pathName == getUrl('prihlaseni');\r\n\r\n return (\r\n <h1 className={classNames({ 'u-sr-only': hideHeader })}>\r\n {lastItem?.title || <Skeleton width={160} />}\r\n </h1>\r\n );\r\n});","import React, { useState, FC, PropsWithChildren, useCallback } from \"react\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Button from \"@components/Button/Button\";\r\n\r\nconst cn = setupCn('gov-alert');\r\n\r\nexport type AlertType = 'basic' | 'inversed' | 'warning' | 'error' | 'content';\r\n\r\nexport type AlertProps = PropsWithChildren<{\r\n type?: AlertType,\r\n closeButton?: boolean\r\n}>;\r\n\r\nconst typeClasses: { [key in AlertType]: string | null } = {\r\n basic: '--basic',\r\n inversed: '--inversed',\r\n warning: '--warning',\r\n error: '--error',\r\n content: '--content'\r\n}\r\n\r\nexport const Alert: FC<AlertProps> = ({ children, type, closeButton }) => {\r\n type ??= 'basic';\r\n const typeClass = typeClasses[type] ?? undefined;\r\n const [closed, setClosed] = useState(false)\r\n\r\n const closeFunc = useCallback(() => {\r\n setClosed(true);\r\n }, [setClosed]);\r\n\r\n if (closed) {\r\n return null;\r\n }\r\n return (\r\n <div className={cn.main(typeClass)}>\r\n <div className={cn(\"__content\")}>\r\n <p>\r\n {children}\r\n </p>\r\n </div>\r\n {\r\n closeButton ?\r\n <Button hasIconOnly isFlat className={cn('__close')} onClick={closeFunc}>\r\n <span className=\"gov-icon gov-icon--cross\" />\r\n </Button> : null\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nexport default React.memo(Alert);","import { setupCn } from '@utils/BemUtils';\r\nimport Button from '@components/Button/Button';\r\nimport React from 'react';\r\nimport { useUserCookiesSetings } from '@store/userCookieSettingsStore';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport Note from '@components/Note';\r\n\r\nconst cn = setupCn('gov-cookie-bar');\r\n\r\nconst CookieBar: React.FC = () => {\r\n const { ts } = useLocalization();\r\n\r\n const { userCookieSettings, acceptAllCookies, rejectAllCookies, openModal } = useUserCookiesSetings();\r\n\r\n if (userCookieSettings.settings.userSet)\r\n return null;\r\n\r\n return (\r\n <div className={cn()}>\r\n <div className={cn('__content')}>\r\n <div className={cn('__content-inner')}>\r\n <h3>{ts('NEN-770169')}</h3>\r\n <Note className='u-color--grey-mid'>\r\n {ts('NEN-770170')}\r\n </Note>\r\n <div className={cn('__actions')}>\r\n <div className={cn('__actions-primary')}>\r\n <Button onClick={acceptAllCookies}>\r\n {ts('NEN-770171')}\r\n </Button>\r\n <Button isOutlined onClick={rejectAllCookies}>\r\n {ts('NEN-770172')}\r\n </Button>\r\n </div>\r\n <Button onClick={openModal} isSecondary>\r\n {ts('NEN-770173')}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CookieBar;","import { ReactNode } from \"react\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn(\"gov-form-group\");\r\n\r\nconst FormGroup: React.FC<{ items: ReactNode[] }> = ({ items }) => {\r\n return (\r\n <ul className={cn.main(\"--complex\")}>\r\n {\r\n items.map((item, index) =>\r\n <li className={cn(\"__item\")} key={index}>\r\n {item}\r\n </li>)\r\n }\r\n </ul>\r\n );\r\n}\r\n\r\nexport default FormGroup;","import React, { ChangeEvent } from \"react\"\r\nimport Modal from \"@components/Modal/Modal\"\r\nimport { useLocalization } from \"@store/localizationStore\"\r\nimport FormControl from \"@components/FormControl\";\r\nimport Button from \"@components/Button/Button\";\r\nimport CheckBox from \"@components/CheckBox\";\r\nimport FormGroup from \"@components/FormGroup/FormGroup\";\r\nimport { useUserCookiesSetings } from \"@store/userCookieSettingsStore\";\r\nimport GovLink from \"@components/GovLink\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\n\r\nconst CookieModal: React.FC = () => {\r\n const { ts } = useLocalization();\r\n const { userCookieSettings, closeModal } = useUserCookiesSetings();\r\n\r\n if (!userCookieSettings.showModal)\r\n return null;\r\n\r\n return (\r\n <Modal headerText={ts(\"NEN-770174\")} onClose={closeModal}>\r\n <PreferencesForm />\r\n </Modal>\r\n );\r\n}\r\n\r\nconst PreferencesForm = () => {\r\n const { ts } = useLocalization();\r\n const { userCookieSettings, saveUserCookieSettings, setCookiesSetting } = useUserCookiesSetings();\r\n const { getUrl } = useConstants();\r\n\r\n return (\r\n <>\r\n <p>\r\n {ts(\"NEN-770175\")}\r\n </p>\r\n <FormControl isCustom>\r\n <FormGroup items={[\r\n <CheckBox id='functional-cookies' isDisabled isChecked headerText={\r\n <>\r\n {ts(\"NEN-770176\")}\r\n <p>\r\n {ts(\"NEN-770177\")}\r\n </p>\r\n </>\r\n } />,\r\n <CheckBox id='statistics-cookies'\r\n isChecked={userCookieSettings.settings.statistics}\r\n onChange={(event: ChangeEvent<HTMLInputElement>) => setCookiesSetting('statistics', event.target.checked)}\r\n headerText={\r\n <>\r\n {ts(\"NEN-770178\")}\r\n <p>\r\n {ts(\"NEN-770179\")}\r\n </p>\r\n </>\r\n } />,\r\n <CheckBox id='preferences-cookies'\r\n isChecked={userCookieSettings.settings.preferences}\r\n onChange={(event: ChangeEvent<HTMLInputElement>) => setCookiesSetting('preferences', event.target.checked)}\r\n headerText={\r\n <>\r\n {ts(\"NEN-770180\")}\r\n <p>\r\n {ts(\"NEN-770181\")}\r\n </p>\r\n </>\r\n } />\r\n ]} />\r\n </FormControl>\r\n <p>\r\n {ts(\"NEN-770182\")}\r\n {\" \"}\r\n <GovLink to={{ pathname: getUrl('osobniUdajeACookies') }}>{ts(\"NEN-770159\")}</GovLink>.\r\n </p>\r\n <Button onClick={saveUserCookieSettings}>\r\n {ts(\"NEN-770184\")}\r\n </Button>\r\n </>\r\n );\r\n}\r\n\r\nexport default CookieModal;","import { pageIds } from \"@components/Accessibility/pageIds\";\r\nimport GovLink from \"@components/GovLink\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport React, { FC } from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\n\r\nimport './Shortcuts.scss';\r\n\r\nconst cn = setupCn('shortcuts');\r\n\r\nconst Shortcuts: FC = () => {\r\n const { ts, t } = useLocalization();\r\n const match = useRouteMatch();\r\n const { getUrl } = useConstants();\r\n return (\r\n <nav className={cn()} title={t('NEN-786979')}>\r\n <ul>\r\n <li>\r\n <a\r\n accessKey=\"o\"\r\n href={`${match.url}#${pageIds.content}`}>\r\n {ts('NEN-645333') /* PÅ™eskoÄit na Hlavnà obsah */} (Accesskey: o)\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n accessKey=\"n\"\r\n href={`${match.url}#${pageIds.menu}`}>\r\n {ts('NEN-645332') /* PÅ™eskoÄit na Hlavnà navigaci */} (Accesskey: n)\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n accessKey=\"i\"\r\n href={`${match.url}#${pageIds.footer}`}>\r\n {ts('NEN-785549') /* PÅ™eskoÄit na PatiÄku */} (Accesskey: i)\r\n </a>\r\n </li>\r\n <li>\r\n <GovLink\r\n accessKey=\"p\"\r\n to={`${getUrl('prihlaseni')}#${pageIds.content}`}>\r\n {ts('NEN-785550') /*PÅ™eskoÄit na stránku PÅ™ihlášenà */} (Accesskey: p)\r\n </GovLink>\r\n </li>\r\n </ul>\r\n </nav>\r\n );\r\n}\r\n\r\nexport default React.memo(Shortcuts);","import React, { ReactNode } from \"react\";\r\nimport { Footer } from \"@components/Layout/Footer\";\r\nimport Header from \"@components/Layout/Header\";\r\nimport { Breadcrumb } from \"@components/Breadcrumb/Breadcrumb\";\r\nimport { ErrorMessage } from \"@components/ErrorMessage/ErrorMessage\";\r\nimport Container from \"@components/Container/Container\";\r\nimport PageHeading from \"@components/Layout/PageHeading\";\r\nimport { useLocation } from \"react-router\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { Alert } from \"@components/Alert/Alert\";\r\nimport CookieBar from \"@components/Cookies\";\r\nimport CookieModal from \"@components/Cookies/CookieModal\";\r\nimport Shortcuts from \"@components/Accessibility/Shortcuts/Shortcuts\";\r\nimport { pageIds } from \"@components/Accessibility/pageIds\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\n\r\nconst Layout: React.FC<{ children?: ReactNode }> = ({ children }) => {\r\n const { appSettings, getOutageVersion } = useAppSettings();\r\n const { t } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const location = useLocation();\r\n const isHome = [\r\n getUrl('home'),\r\n getUrl('skoleniZzvz'),\r\n getUrl('videa'),\r\n getUrl('prirucky') \r\n ].some(url => location.pathname == url);\r\n\r\n let className = '';\r\n if (appSettings?.isTestEnvironment)\r\n className = 'test-env';\r\n else if (getOutageVersion().enabled)\r\n className = 'out-ver';\r\n\r\n return (\r\n <div className={className}>\r\n <Shortcuts />\r\n <ErrorMessage />\r\n <Header />\r\n {\r\n getOutageVersion().enabled ? <Alert type='warning'>{getOutageVersion().text}</Alert> : null\r\n }\r\n <main id={pageIds.content} aria-label={t('NEN-786858')}>\r\n <Breadcrumb />\r\n {\r\n isHome ? <>{children}</> :\r\n <Container>\r\n <PageHeading />\r\n {children}\r\n </Container>\r\n }\r\n </main>\r\n <Footer />\r\n <CookieBar />\r\n <CookieModal />\r\n </div>\r\n );\r\n}\r\n\r\nexport default React.memo(Layout);\r\n","type FormatNumberParams = {\r\n decimal?: string;\r\n decimals?: number;\r\n separator?: string;\r\n value: number;\r\n}\r\n\r\nexport const formatNumber = ({\r\n value,\r\n decimals,\r\n decimal = ',',\r\n separator = '\\xa0'\r\n}: FormatNumberParams): string => {\r\n let [int, dec] = value.toString().split(\".\");\r\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\r\n if (decimals != null && dec != null && dec.length > decimals) {\r\n dec = Math.round(Number(dec.slice(0, decimals + 1)) / 10).toString();\r\n }\r\n return [int, dec].filter(part => part != null).join(decimal);\r\n}\r\n\r\ntype GetExponentionalPartsParams = {\r\n value: number;\r\n fractionDigits?: number;\r\n cutType?: 'floor' | 'round';\r\n};\r\n\r\nexport const getExponentionalParts = ({ value, fractionDigits = 2, cutType = 'round' }: GetExponentionalPartsParams) => {\r\n if (typeof value !== 'number') {\r\n return {\r\n mantissa: 0,\r\n exponent: 0 \r\n }\r\n }\r\n if (cutType == 'floor') {\r\n fractionDigits++;\r\n }\r\n const [mantissa, exponent] = value.toExponential(fractionDigits).split('e');\r\n return {\r\n mantissa: Number(mantissa.slice(0, cutType == 'floor' ? -1 : 0)),\r\n exponent: Number(exponent)\r\n };\r\n}\r\n\r\nexport const randomInteger = (from: number, to: number) => {\r\n return Math.floor(Math.random() * (to - from + 1)) + from;\r\n}\r\n","import React, { FC } from \"react\"\r\nimport CountUp, { CountUpProps } from \"react-countup\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { formatNumber } from \"@utils/NumberUtils\";\r\n\r\nconst cn = setupCn('count-up-ssr');\r\n\r\nexport type CountUpSsrProps = CountUpProps & {\r\n className?: Classes;\r\n disabled?: boolean;\r\n};\r\n\r\nconst CountUpSsr: FC<CountUpSsrProps> = ({\r\n className,\r\n children,\r\n disabled,\r\n end,\r\n ...countUpProps\r\n}) => {\r\n const { start, decimals, decimal, separator, suffix } = countUpProps;\r\n const formatedNumber = `${formatNumber({ value: end ?? 0, decimal, decimals, separator })}${suffix ?? ''}`;\r\n return (\r\n <CountUp {...countUpProps} end={disabled ? start ?? 0 : end}>\r\n {({ countUpRef }) => (\r\n <h2 className={cn.with(className)()} ref={countUpRef}>{formatedNumber}</h2>\r\n )}\r\n </CountUp>\r\n );\r\n};\r\n\r\nCountUpSsr.displayName = 'CountUpSsr';\r\n\r\nexport default React.memo(CountUpSsr);\r\n","import CountUpSsr, { CountUpSsrProps } from \"@components/CountUpSSR/CountUpSsr\";\r\nimport React, { FC, ReactNode, useMemo, useState } from \"react\"\r\nimport ReactVisibilitySensor from \"react-visibility-sensor\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useStatistics } from \"@store/statisticsStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { formatNumber, getExponentionalParts, randomInteger } from \"@utils/NumberUtils\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport { useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nconst cn = setupCn('statistics');\r\nconst cnSection = cn.setupSubCn('__section');\r\n\r\nconst floorMld = (num: number, decimals: number = 0) => Math.floor(num / (10 ** (9 - decimals))) / (10 ** decimals);\r\n\r\nconst Section: React.FC<{\r\n title: string,\r\n lockey: string,\r\n start: number,\r\n end: number,\r\n decimals?: number,\r\n counterProps: Partial<CountUpSsrProps>,\r\n suffixNode?: ReactNode\r\n}> = ({ title, lockey, counterProps, start, end, suffixNode, decimals }) => {\r\n const { ts } = useLocalization();\r\n\r\n return (\r\n <div className={cnSection()}>\r\n <div\r\n className={cnSection('__number')}\r\n title={title}>\r\n <CountUpSsr\r\n {...counterProps}\r\n decimals={decimals}\r\n start={start}\r\n end={end} />\r\n {suffixNode}\r\n </div>\r\n <h3 className={cnSection('__title')}>{ts(lockey)}</h3>\r\n </div>\r\n );\r\n}\r\n\r\nconst Statistics: FC = () => {\r\n const [counterStarted, setCounterStarted] = useState(false);\r\n\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n\r\n const counterProps: Partial<CountUpSsrProps> = {\r\n duration: 3,\r\n disabled: !counterStarted,\r\n decimal: switchByLanguage({ cz: ',', en: '.' }),\r\n separator: '\\xa0'\r\n }\r\n const statistics = useStatistics();\r\n const hodnotaZakazek = useMemo<{ value: number, suffix?: ReactNode, decimals: number }>(() => {\r\n const mldValue = floorMld(statistics?.hodnotaZakazekCelkem ?? 0);\r\n if (Math.abs(mldValue) < 100000) {\r\n return {\r\n value: mldValue,\r\n decimals: 0\r\n };\r\n }\r\n const {\r\n mantissa,\r\n exponent\r\n } = getExponentionalParts({\r\n value: statistics?.hodnotaZakazekCelkem ?? 0,\r\n fractionDigits: 1,\r\n cutType: 'floor'\r\n });\r\n return {\r\n value: mantissa,\r\n suffix: <>x10<sup>{exponent - 9}</sup></>,\r\n decimals: 1\r\n };\r\n }, [statistics?.hodnotaZakazekCelkem]);\r\n return (\r\n <ReactVisibilitySensor\r\n active={!counterStarted}\r\n partialVisibility\r\n onChange={isVisible => isVisible && setCounterStarted(true)}\r\n delayedCall>\r\n <FlexBox className={cn()}>\r\n <Section\r\n title={formatNumber({ value: statistics?.pocetZadavatelu ?? 0 })}\r\n start={randomInteger(3, 9)}\r\n end={statistics?.pocetZadavatelu ?? 0}\r\n counterProps={counterProps}\r\n lockey='NEN-749239'>\r\n </Section>\r\n\r\n <Section\r\n title={formatNumber({ value: statistics?.pocetDodavatelu ?? 0 })}\r\n start={randomInteger(3, 9)}\r\n end={statistics?.pocetDodavatelu ?? 0}\r\n counterProps={counterProps}\r\n lockey='NEN-749240'>\r\n </Section>\r\n\r\n <Section\r\n title={formatNumber({ value: statistics?.pocetZakazekCelkem ?? 0 })}\r\n start={randomInteger(3, 9)}\r\n end={statistics?.pocetZakazekCelkem ?? 0}\r\n counterProps={counterProps}\r\n lockey='NEN-749241'>\r\n </Section>\r\n\r\n <Section\r\n title={`${formatNumber({ value: statistics?.hodnotaZakazekCelkem ?? 0 })} KÄ`}\r\n decimals={hodnotaZakazek.decimals}\r\n start={randomInteger(3, 9) / 10}\r\n end={hodnotaZakazek.value}\r\n counterProps={counterProps}\r\n suffixNode={<h2>{hodnotaZakazek.suffix}</h2>}\r\n lockey='NEN-749242'>\r\n </Section>\r\n </FlexBox>\r\n </ReactVisibilitySensor>\r\n );\r\n};\r\n\r\nStatistics.displayName = 'Statistics';\r\n\r\nexport default React.memo(Statistics);\r\n","import React, { FC } from \"react\"\r\nimport { useConstants } from \"@constants/urlConstants\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport { joinPath } from \"@utils/PathUtils\";\r\n\r\nimport './LoginCard.scss';\r\n\r\nconst cn = setupCn(\"login-card\");\r\n\r\nconst LoginCard: FC = () => {\r\n const { ts } = useLocalization();\r\n const { appSettings, getOutageVersion } = useAppSettings();\r\n const { anotherEnvironment, loginCaption } = appSettings;\r\n const { getUrl } = useConstants(); \r\n return (\r\n <ContentBlock lockey={loginCaption} className={cn()} height='100%'>\r\n <FlexBox justify='center'>\r\n {\r\n getOutageVersion().enabled ? <p className=\"gov-perex\">{ts('NEN-770209')}</p> : <ButtonLink to={getUrl('prihlaseni')} style={{ flex: 1 }} className=\"u-mb--25\">{ts('NEN-749113')}</ButtonLink>\r\n } \r\n </FlexBox>\r\n <FlexBox className=\"u-mb--25\">\r\n <ButtonLink isOutlined to={getUrl('registrace')} style={{ flex: '0 0 45%' }}>{ts('NEN-749116')}</ButtonLink>\r\n <ButtonLink isOutlined to={getUrl('compatibilityTest')} style={{ flex: '0 0 45%' }}>{ts('NEN-746935')}</ButtonLink>\r\n </FlexBox>\r\n {\r\n anotherEnvironment?.loginLocKey && anotherEnvironment.url &&\r\n <p>\r\n {ts('NEN-749117', {\r\n locParams: [\r\n <UniversalLink isExternal to={joinPath(anotherEnvironment.url, getUrl('prihlaseni'))}>\r\n {ts(anotherEnvironment.loginLocKey)}\r\n </UniversalLink>\r\n ]\r\n })}\r\n </p>\r\n }\r\n\r\n </ContentBlock>\r\n );\r\n};\r\n\r\nLoginCard.displayName = 'LoginCard';\r\n\r\nexport default React.memo(LoginCard);\r\n","import React from \"react\";\r\nimport { FC, ReactNode } from \"react\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('gov-layout');\r\nconst colCn = cn.setupSubCn('__col');\r\n\r\nexport type GovLayoutRatio = '3-1' | '1-2';\r\nexport type GovLayoutSpread = 1 | '1' | 2 | '2' | 3 | '3';\r\n\r\nexport type GovLayoutProps = {\r\n leftCol?: ReactNode;\r\n rightCol?: ReactNode;\r\n ratio?: GovLayoutRatio;\r\n spreadLeft?: GovLayoutSpread;\r\n spreadRight?: GovLayoutSpread;\r\n}\r\n\r\nconst GovLayout: FC<GovLayoutProps> = ({\r\n leftCol,\r\n rightCol,\r\n ratio,\r\n spreadLeft,\r\n spreadRight,\r\n}) => {\r\n const ratioModifier = ratio ? `--ratio-${ratio}` : null;\r\n const spreadLeftModifier = spreadLeft != null ? `--spread-${spreadLeft}` : null;\r\n const spreadRightModifier = spreadRight != null ? `--spread-${spreadRight}` : null;\r\n\r\n return (\r\n <div className={cn.main(ratioModifier)}>\r\n <div className={colCn.main(\"--pos-left\", spreadLeftModifier)}>\r\n {leftCol}\r\n </div>\r\n <div className={colCn.main(\"--pos-right\", spreadRightModifier)}>\r\n {rightCol}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nGovLayout.displayName = 'GovLayout';\r\n\r\nexport default React.memo(GovLayout);","import GovLink from \"@components/GovLink\";\r\nimport { urlConstants, useConstants } from \"@constants/urlConstants\";\r\nimport { useWidgetItems} from \"@store/WidgetStore/widgetStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Grid from '@components/Grid';\r\nimport { NewsItem } from \"@store/WidgetStore/newsWidgetStore\";\r\n\r\nimport './News.scss'\r\n\r\nconst cn = setupCn(\"gov-grid-tile\");\r\nconst cnGrid = setupCn(\"gov-grid--reversed\");\r\nconst cnPrev = setupCn(\"gov-preview-tile\");\r\n\r\nconst NewsWidget = () => {\r\n\r\n const { items } = useWidgetItems<NewsItem>('newsStore');\r\n const { getUrl } = useConstants();\r\n const urlBase = getUrl(\"provozniInformace\");\r\n\r\n return (\r\n <Grid className={cnGrid()} columns=\"3\">\r\n {\r\n items.map(item =>\r\n <GovLink className={cn()} key={item.id} to={`${urlBase}${urlConstants.detailInformace.pureUrl}?${item.url.split('?')[1]}`}>\r\n <div className={cnPrev()}>\r\n <h3 className={cnPrev(\"__headline\")}>{item.short_description}</h3>\r\n <p>{item.updated}</p>\r\n <p>{item.description}</p>\r\n </div>\r\n </GovLink>\r\n )\r\n }\r\n </Grid>\r\n )\r\n};\r\n\r\nNewsWidget.displayName = 'NewsWidget';\r\n\r\nexport default NewsWidget;","export const emailPattern = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;","import { useEffect, useState, useCallback, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useWidgetService } from \"@store/nodeContextStore\";\r\nimport Modal from \"@components/Modal/Modal\";\r\nimport { emailPattern } from \"@utils/EmailUtils\";\r\nimport InputWithButton from \"@components/InputWithButton/InputWithButton\";\r\nimport { FilterManagerChangeDoneEventHandler, FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport { useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\n\r\nconst NewsSubscribeWidget = () => {\r\n const { ts } = useLocalization();\r\n const { switchByLanguage, currentLanguage } = useSwitchByLanguage();\r\n const [hasError, setHasError] = useState(false);\r\n const [showModal, setShowModal] = useState(false);\r\n const [callWasSuccessful, setCallWasSuccessful] = useState(false);\r\n\r\n const controllerRef = useRef(new AbortController());\r\n const service = useWidgetService();\r\n\r\n const handleChange = useCallback<FilterManagerChangeEventHandler>((_, newValue) => {\r\n setHasError(newValue != '' && !emailPattern.test(newValue));\r\n }, [])\r\n\r\n const close = useCallback(() => {\r\n setShowModal(false);\r\n }, []);\r\n\r\n const submitForm = useCallback<FilterManagerChangeDoneEventHandler>(async (_, value, reason) => {\r\n if (reason != 'enter' && reason != 'buttonClick') {\r\n return;\r\n }\r\n setCallWasSuccessful(false);\r\n\r\n const controller = new AbortController();\r\n controllerRef.current = controller;\r\n\r\n const result = await service.newsSubscribe(controllerRef.current, value, switchByLanguage({ cz: 'cs', en: 'en' }));\r\n\r\n if (result.value == 200 && !result.hasErrors) {\r\n setCallWasSuccessful(true);\r\n }\r\n setShowModal(true);\r\n }, [controllerRef, switchByLanguage, service])\r\n\r\n useEffect(() => {\r\n return () => {\r\n controllerRef.current.abort();\r\n }\r\n }, [controllerRef, currentLanguage])\r\n\r\n return (\r\n <>\r\n {\r\n showModal &&\r\n <Modal\r\n headerText={ts(callWasSuccessful ? \"NEN-818605\" : \"NEN-818607\")}\r\n buttonText={ts(\"NEN-644809\").toString()}\r\n onClose={close}>\r\n <p>{ts(callWasSuccessful ? \"NEN-818604\" : \"NEN-818606\")}</p>\r\n </Modal>\r\n }\r\n\r\n <h2 id='receive-notifications'>{ts('NEN-749127')}</h2>\r\n <InputWithButton\r\n id=\"news-subscribe-widget\"\r\n buttonTextLocKey=\"NEN-819429\"\r\n buttonTitleLocKey=\"NEN-819429\"\r\n placeholderLocKey=\"NEN-819406\"\r\n headerText=\"NEN-819406\"\r\n isWide\r\n disableButton={{ disabledIfEmpty: true, disable: hasError }}\r\n hasError={hasError}\r\n inputType=\"email\"\r\n shouldClearInput={callWasSuccessful}\r\n onInputChange={handleChange}\r\n onInputChangeDone={submitForm} />\r\n </>\r\n )\r\n};\r\n\r\nNewsSubscribeWidget.displayName = 'NewsSubscribeWidget';\r\n\r\nexport default NewsSubscribeWidget;","export default __webpack_public_path__ + \"static/media/logoMMR.2dbf1bcf.svg\";","export default __webpack_public_path__ + \"static/media/logoMMR-EN.542aa791.svg\";","export default __webpack_public_path__ + \"static/media/logoNIPEZ.023a0e7f.svg\";","export default __webpack_public_path__ + \"static/media/logoNIPEZ-EN.6fa0496d.svg\";","import React, { FC } from \"react\";\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport Alert from \"@components/Alert\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn(\"home__alerts\");\r\n\r\nexport const CriticalInformation: FC = () => {\r\n const { getCriticalInformation } = useAppSettings();\r\n const items = getCriticalInformation();\r\n if (!items || !items.enabled || !items.texts) {\r\n return null;\r\n }\r\n\r\n return <div className={cn()}>\r\n {\r\n getCriticalInformation().texts.map((value) => (\r\n <Alert closeButton type=\"warning\" key={value.header}>\r\n <>\r\n <strong>{value.header}</strong>\r\n <div>{value.body}</div>\r\n </>\r\n </Alert>\r\n ))\r\n }\r\n </div>\r\n}\r\n\r\nexport default React.memo(CriticalInformation);","import { urlConstants, useConstants } from \"@constants/urlConstants\";\r\nimport { useWidgetItems } from \"@store/WidgetStore/widgetStore\";\r\nimport { TrainingItem } from \"@store/WidgetStore/trainingWidgetStore\";\r\nimport React from \"react\";\r\nimport FlexBox from \"@components/FlexBox/FlexBox\";\r\nimport { useLocalizationText } from \"@store/localizationStore\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\n\r\nimport './Training.scss'\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\n\r\nconst cn = setupCn('trainings');\r\n\r\nexport type LinkTo = keyof Pick<typeof urlConstants, \"skoleniVse\" | \"skoleniZzvz\">\r\nexport type TrainingType = \"Zzvz\" | \"Nen\"\r\n\r\nconst TrainingWidget: React.FC<{ trainingsType: TrainingType, linkTo: LinkTo }> = ({ trainingsType, linkTo }): JSX.Element => {\r\n const isZzvzTraining = trainingsType == 'Zzvz';\r\n const { items } = useWidgetItems<TrainingItem>('trainingStore', isZzvzTraining ? \"zzvz\" : \"dodavatel,zadavatel\");\r\n const { getUrl } = useConstants();\r\n\r\n const t = useLocalizationText();\r\n\r\n const { path, label } = isZzvzTraining\r\n ? { path: getUrl('skoleniZzvzVse'), label: t(\"NEN-793788\") }\r\n : { path: getUrl('skoleniVse'), label: t(\"NEN-786554\") }\r\n\r\n return (\r\n <FlexBox direction='column' align='start' className={cn()}>\r\n {\r\n items.length > 0 ?\r\n <>\r\n {\r\n items\r\n .map(item =>\r\n <div className={cn(\"__training\")} key={item.id}>\r\n <UniversalLink\r\n isExternal\r\n to={item.url}>\r\n {item.short_description}\r\n </UniversalLink>\r\n <p className={cn(\"__content\")} >\r\n {item.u_training_date}\r\n <span className=\"bold-dot\"> · </span>\r\n {trimSeconds(item.u_training_time_from)} - {trimSeconds(item.u_training_time_to)}\r\n <span className=\"bold-dot\"> · </span>\r\n {item.u_training_address}\r\n </p>\r\n </div>\r\n )\r\n }\r\n <ButtonLink\r\n to={path}\r\n isOutlined={true}\r\n aria-label={label}>\r\n {t(\"NEN-645393\")}\r\n </ButtonLink>\r\n </>\r\n : <p className={`gov-note ${cn(\"__empty-message\")}`}>{t(\"NEN-818359\")}</p>\r\n }\r\n </FlexBox>\r\n )\r\n};\r\n\r\nexport const trimSeconds = (time: string): string =>\r\n time?.substring(0, time?.lastIndexOf(\":\")) ?? \"00:00\"\r\n\r\nTrainingWidget.displayName = 'TrainingWidget';\r\n\r\nexport default TrainingWidget;","import { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nimport './Manuals.scss';\r\n\r\nconst cnContainer = setupCn('manuals');\r\nconst cn = setupCn('manual');\r\nconst Manuals: React.FC<{}> = () => {\r\n const { ts, t } = useLocalization();\r\n const { getManuals } = useAppSettings();\r\n const manualsSettings = getManuals();\r\n\r\n return (\r\n <>\r\n <div className={cnContainer()}>\r\n {\r\n manualsSettings.manuals.map((manual, index) => {\r\n return (\r\n <div key={`${manual.caption} ${index}`} className={cn()}>\r\n <h4 className={cn('__header')}>\r\n <UniversalLink\r\n to={manual.url}\r\n isExternal>\r\n {manual.caption}\r\n </UniversalLink>\r\n </h4>\r\n <div className={cn('__description')}>{manual.description}</div>\r\n </div>\r\n )\r\n })\r\n }\r\n </div>\r\n <ButtonLink\r\n isOutlined\r\n isAnchor\r\n targetBlank\r\n to={manualsSettings.showAllUrl}\r\n aria-label={t(\"NEN-786555\")}>\r\n {ts(\"NEN-645393\")}\r\n </ButtonLink>\r\n </>\r\n )\r\n};\r\n\r\nManuals.displayName = 'Prirucky';\r\n\r\nexport default Manuals;","import { useLocalization } from 'store/localizationStore';\r\nimport { setupCn } from '@utils/BemUtils';\r\nimport { urlConstants, useConstants } from '@constants/urlConstants';\r\nimport Statistics from '@components/Statistics/Statistics';\r\nimport FormatedText from '@components/FormatedText/FormatedText';\r\nimport LoginCard from './LoginCard/LoginCard';\r\nimport GovLayout from '@components/GovLayout/GovLayout';\r\nimport ContentBlock from '@components/ContentBlock';\r\nimport Tabs from '@components/Tabs';\r\nimport ButtonLink from '@components/Button/ButtonLink';\r\nimport Container from '@components/Container';\r\nimport { usePageTitle } from '@utils/PageTitleHook';\r\nimport FlexBox from '@components/FlexBox/FlexBox';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport { useScrollToTop } from '@utils/ReactUtils';\r\nimport NewsWidget from '@components/Widgets/News/NewsWidget';\r\nimport NewsSubscribe from '@components/Widgets/NewsSubscribe/NewsSubscribeWidget';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\nimport './Home.scss';\r\nimport ministerstvo from '@images/logoMMR.svg';\r\nimport ministerstvo_en from '@images/logoMMR-EN.svg';\r\nimport nipez from '@images/logoNIPEZ.svg';\r\nimport nipez_en from '@images/logoNIPEZ-EN.svg';\r\nimport { CriticalInformation } from '@components/CriticalInformation';\r\nimport TrainingWidget from '@components/Widgets/Training/TrainingWidget';\r\nimport Manuals from '@components/Manuals/Manuals';\r\nimport { useSwitchByLanguage } from '@utils/LanguageUtils';\r\n\r\nconst cn = setupCn('home');\r\n\r\nconst Home = () => {\r\n const { t, ts } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const { switchByLanguage } = useSwitchByLanguage();\r\n const { appSettings } = useAppSettings();\r\n usePageTitle('');\r\n useDescription(t('NEN-648904'));\r\n useScrollToTop();\r\n\r\n return (\r\n <div className={cn()}>\r\n <h1 className='u-sr-only'>{t('NEN-645300')}</h1>\r\n <CriticalInformation />\r\n <Container>\r\n <GovLayout\r\n leftCol={<LoginCard />}\r\n rightCol={\r\n <ContentBlock height='100%' className={cn()}>\r\n <Tabs\r\n displayAsFlex\r\n noMargin\r\n tabs={[\r\n {\r\n lockey: 'NEN-767461',\r\n path: urlConstants.home.path,\r\n render: () => <TrainingWidget\r\n trainingsType=\"Nen\"\r\n linkTo={\"skoleniVse\"} />\r\n },\r\n {\r\n lockey: 'NEN-793789',\r\n path: urlConstants.skoleniZzvz.path,\r\n render: () => <TrainingWidget\r\n trainingsType=\"Zzvz\"\r\n linkTo={\"skoleniZzvz\"} />\r\n }, \r\n //{\r\n // lockey: 'NEN-767964',\r\n // path: urlConstants.videa.url,\r\n // render: () => <SmallWidget height='270px' src={getSmallWidgetUrl('videa')} allHref={urlConstants.videaVse.url} withPadding />\r\n //},\r\n {\r\n lockey: 'NEN-767963',\r\n path: urlConstants.prirucky.path,\r\n render: () => <Manuals />\r\n }\r\n ]}\r\n />\r\n </ContentBlock>\r\n }\r\n ratio='1-2'\r\n spreadRight={1}\r\n />\r\n </Container>\r\n\r\n <Container className=\"u-bg-color--white\">\r\n <GovLayout\r\n ratio='1-2'\r\n spreadRight={3}\r\n leftCol={\r\n <div className={cn('__informace__left')}>\r\n <h2 className=\"gov-title--alpha\">{ts('NEN-767975')}</h2>\r\n <ButtonLink\r\n className=\"u-hide--tablet\"\r\n isOutlined\r\n aria-label={t('NEN-786556')}\r\n to={getUrl('provozniInformace')}>\r\n {ts(\"NEN-645393\")}\r\n </ButtonLink>\r\n </div>\r\n }\r\n rightCol={\r\n <NewsWidget />\r\n }\r\n />\r\n <ButtonLink\r\n className=\"u-hide--from-tablet\"\r\n isOutlined\r\n aria-label={t('NEN-786556')}\r\n to={getUrl('provozniInformace')}>{ts(\"NEN-645393\")}</ButtonLink>\r\n </Container>\r\n\r\n {\r\n !appSettings?.isTestEnvironment &&\r\n <Container>\r\n <Statistics />\r\n </Container>\r\n }\r\n\r\n <Container className=\"u-bg-color--white-overlay\">\r\n <GovLayout\r\n leftCol={\r\n <>\r\n <h2>{ts('NEN-749126')}</h2>\r\n <p>\r\n <FormatedText boldPrimaryColor>{ts('NEN-749112')}</FormatedText>\r\n </p>\r\n </>\r\n }\r\n rightCol={\r\n <NewsSubscribe />\r\n }\r\n ratio='1-2'\r\n spreadRight={1}\r\n />\r\n </Container>\r\n\r\n <Container className=\"u-bg-color--white\">\r\n <FlexBox className={cn('__logos')} justify=\"space-evenly\">\r\n <img src={switchByLanguage({ cz: ministerstvo, en: ministerstvo_en })} alt=\"ministerstvo pro mistni rozvoj\" />\r\n <img src={switchByLanguage({ cz: nipez, en: nipez_en })} alt=\"nipez\" />\r\n </FlexBox>\r\n </Container>\r\n </div>\r\n )\r\n};\r\n\r\nexport default Home;\r\n","import React, { createContext, useContext, useLayoutEffect } from \"react\"\r\nimport { BreadcrumbItem, useBreadcrumb } from \"@store/breadcrumbStore\";\r\nimport { useTaskManager } from \"@store/nodeContextStore\";\r\n\r\nconst breadRenderKey = 'breadcrumb-render';\r\n\r\nexport const BreadcrumbContext = createContext<BreadcrumbItem[]>([]);\r\n\r\nexport const WithBreadcrumb: React.FC<{\r\n prependHome?: boolean\r\n}> = ({ prependHome, children}) => {\r\n const breadCrumbItems = useContext(BreadcrumbContext);\r\n const [appendItems, setItems] = useBreadcrumb();\r\n const taskManager = useTaskManager();\r\n const key = breadRenderKey + '-' + breadCrumbItems.map(i => i.title + i.href).join('-');\r\n\r\n const addItems = () => Promise.resolve(\r\n prependHome ? appendItems(breadCrumbItems) : setItems(breadCrumbItems)\r\n );\r\n\r\n useLayoutEffect(() => {\r\n if (taskManager.isTaskCompleted(key)) {\r\n taskManager.removeTaskFromCompleted(key);\r\n } else {\r\n addItems();\r\n }\r\n }, [breadCrumbItems]);\r\n\r\n taskManager.add(key, addItems);\r\n\r\n return (\r\n <>\r\n {children}\r\n </>\r\n );\r\n}\r\n\r\nWithBreadcrumb.defaultProps = {\r\n prependHome: true\r\n}\r\n","import React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { match, matchPath, Route, RouteComponentProps, RouteProps } from \"react-router\";\r\nimport { UrlParamObject } from \"../../utils/QueryHook\";\r\nimport { BreadcrumbContext, WithBreadcrumb } from \"./withBreadcrumb\";\r\n\r\ntype BreadCrumbRouteProps = RouteProps & {\r\n title?: string | ((match: match<UrlParamObject> | null) => string | null | undefined);\r\n hideBreadcrumbHome?: boolean;\r\n computedMatch?: match;\r\n brComponent?: React.ComponentType<RouteComponentProps<any>> | React.ComponentType<any>;\r\n};\r\n\r\nexport class BreadcrumbRoute extends Component<BreadCrumbRouteProps> {\r\n\r\n static contextType = BreadcrumbContext;\r\n\r\n public render() {\r\n const {\r\n title,\r\n brComponent,\r\n hideBreadcrumbHome,\r\n ...routeProps\r\n } = this.props;\r\n const withBreadcrumb = brComponent != null;\r\n if (brComponent) {\r\n routeProps.component = brComponent;\r\n }\r\n const match = this.props.computedMatch ?? (routeProps.location?.pathname ? matchPath(routeProps.location.pathname, routeProps) : null);\r\n const breadCrumbItems = [...(this.context ?? [])];\r\n if (title) {\r\n if (title instanceof Function) {\r\n breadCrumbItems.push({ href: match?.url, title: title(match) });\r\n } else {\r\n breadCrumbItems.push({ href: match?.url, title });\r\n }\r\n }\r\n const route = <Route {...routeProps} />;\r\n return (\r\n <BreadcrumbContext.Provider value={breadCrumbItems}>\r\n {\r\n withBreadcrumb ?\r\n <WithBreadcrumb prependHome={!hideBreadcrumbHome} >\r\n {route}\r\n </WithBreadcrumb> :\r\n route\r\n }\r\n </BreadcrumbContext.Provider>\r\n );\r\n }\r\n}\r\n","import { BreadcrumbRoute } from \"@components/Breadcrumb/BreadcrumbRoute\";\r\nimport React from \"react\";\r\nimport { Switch, SwitchProps } from \"react-router\";\r\nimport { Page404 } from \"@pages/error/Page404\";\r\n\r\nexport const SwitchWith404: React.FC<SwitchProps> = (props) => (\r\n <Switch {...props}>\r\n {props.children}\r\n <BreadcrumbRoute title='404' path='*' brComponent={Page404} />\r\n </Switch>\r\n);\r\n","import FilterManager from \"@components/FilterManager\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport React, { FC, useRef } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { ISystemKvalifikaceModel, SystemKvalifikaceAttrMap } from \"@models/ISystemKvalifikaceModel\";\r\nimport { columnWidths, ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { AttrNames } from \"@utils/AttrMapping\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<ISystemKvalifikaceModel> = [\r\n {\r\n attrName: 'skKod',\r\n locKey: 'NEN-812767',\r\n width: 150\r\n },\r\n {\r\n attrName: 'skNazev',\r\n locKey: 'NEN-812758'\r\n },\r\n {\r\n attrName: 'skZadavatelNazev',\r\n locKey: 'NEN-812641'\r\n },\r\n {\r\n attrName: 'skStav',\r\n locKey: 'NEN-812766',\r\n width: 80\r\n },\r\n {\r\n attrName: 'obdobiOd',\r\n locKey: 'NEN-812759',\r\n width: columnWidths.date\r\n },\r\n {\r\n attrName: 'obdobiDo',\r\n locKey: 'NEN-812762',\r\n width: columnWidths.date\r\n }\r\n];\r\n\r\nconst paramNames = urlConstants.registrSK.paramNames;\r\nconst registrSkLoadKey = 'registr-SK-seznam';\r\nconst fulltextAttributes: AttrNames<ISystemKvalifikaceModel> = ['skKod', 'skNazev', 'skZadavatelNazev'];\r\n\r\n\r\nconst RegistrSk: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-812878'));\r\n useDescription(t('NEN-789440'));\r\n\r\n const listFrameRef = useRef<HTMLDivElement>(null);\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-812877')}</h2>\r\n <ContentBlock>\r\n <FilterManager id='registr-sk-filter' paramNames={paramNames} />\r\n <ListFrame\r\n containerRef={listFrameRef}\r\n listFrameKey={registrSkLoadKey}\r\n paramNames={paramNames}\r\n skeletonCount={ON_PAGE_ROWS}\r\n onPageCount={ON_PAGE_ROWS}\r\n fulltextAttributes={fulltextAttributes}\r\n attrMapping={SystemKvalifikaceAttrMap}\r\n orderBy={useOrderByMemo<ISystemKvalifikaceModel>({ desc: true, column: \"skKod\" })}\r\n detailLinkFactory={detailLinks.getSkDetailLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n collectionKey={registrSkLoadKey}\r\n scrollToRef={listFrameRef} />\r\n </>\r\n );\r\n}\r\n\r\nexport default React.memo(RegistrSk);\r\n","export const inferredPartial = <T extends unknown>() => <TPartial extends Partial<T>>(props: TPartial): TPartial => props;\r\n\r\nexport type CamelCase<S extends string> = S extends `${infer P1}_${infer P2}${infer P3}`\r\n ? `${Lowercase<P1>}${Uppercase<P2>}${CamelCase<P3>}`\r\n : Lowercase<S>\r\n\r\nexport type ObjectToCamel<T> = {\r\n [K in keyof T as CamelCase<string & K>]: T[K] extends Record<string, any> ? KeysToCamelCase<T[K]> : T[K]\r\n}\r\n\r\nexport type KeysToCamelCase<T> = {\r\n [K in keyof T as CamelCase<string & K>]: T[K] extends Array<any> ? KeysToCamelCase<T[K][number]>[] : ObjectToCamel<T[K]>\r\n}\r\n\r\nexport type KeyArray = Readonly<string[]>;\r\nexport type ValuesFromArray<arr extends Readonly<string[]>, T> = ObjectToCamel<{ [A in arr[number]]: T }>;\r\nexport type ArrayValues<arr extends KeyArray> = keyof {\r\n [K in arr[number]]: unknown\r\n}\r\n\r\nexport type Awaited<T> = T extends PromiseLike<infer U> ? U : T\r\n\r\nexport type WithPrefix<arr extends KeyArray, TPrefix extends string> = keyof {\r\n [K in arr[number]as `${TPrefix}${K}`]: null\r\n}\r\n\r\nexport type WithPostfix<arr extends KeyArray, TPostfix extends string> = keyof {\r\n [K in arr[number]as `${K}${TPostfix}`]: null\r\n}\r\n\r\nexport type WrappedString<arr extends KeyArray, TPrefix extends string, TPostfix extends string = ''> = keyof {\r\n [K in arr[number]as `${TPrefix}${K}${TPostfix}`]: null\r\n}\r\n\r\nexport type EnumFromKeys<T extends string> = {\r\n [K in T]: K\r\n}\r\n\r\nexport type FalseValues = null | undefined | false | 0 | void | '';\r\nexport type NonFalseable<T> = Exclude<T, FalseValues>; \r\n","import { FC, useRef } from \"react\";\r\nimport { ZpAttrMap, IZpModel } from \"@models/IZpModelHist\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport VerejneZakazkyFilter from \"./VerejneZakazkyFilter\";\r\nimport { columnWidths, ListFrame, ListFrameProps } from \"@components/ListFrame\";\r\nimport { inferredPartial } from \"@utils/TypeUtils\";\r\nimport { ListFrameColumns } from \"@components/ListFrame\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<IZpModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'stavZP',\r\n locKey: 'NEN-738558',\r\n width: 120\r\n },\r\n {\r\n attrName: 'zadavatelNazev',\r\n locKey: 'NEN-812618',\r\n width: 200\r\n },\r\n {\r\n attrName: 'podaniLhuta',\r\n locKey: 'NEN-738562',\r\n width: columnWidths.dateTime\r\n }\r\n];\r\n\r\nconst listFrameProps = inferredPartial<ListFrameProps<typeof ZpAttrMap>>()({\r\n attributes: ['kod', 'nazev', 'stavZP', 'zadavatelNazev', 'zadavatelICO', 'cpvPredmetuKod', 'podaniLhuta'],\r\n fulltextAttributes: [{ attrName: 'fullTextFiltr', type: 'contains' }],\r\n orderBy: { desc: true, column: 'createCas' } \r\n});\r\n\r\nconst vzLoadKey = 'verejne-zakazky-seznam';\r\nconst paramNames = urlConstants.verejneZakazky.paramNames;\r\n\r\nconst VerejneZakazky: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-744118'));\r\n useDescription(t('NEN-622252'));\r\n\r\n const listFrameContainer = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-744019')}</h2>\r\n <ContentBlock>\r\n <VerejneZakazkyFilter id={vzLoadKey} paramNames={paramNames} />\r\n <ListFrame\r\n {...listFrameProps}\r\n containerRef={listFrameContainer}\r\n listFrameKey={vzLoadKey}\r\n paramNames={paramNames}\r\n condition='Hierarchie = null and Posledni_uverejneni = true'\r\n onPageCount={ON_PAGE_ROWS}\r\n skeletonCount={ON_PAGE_ROWS}\r\n attrMapping={ZpAttrMap}\r\n detailLinkFactory={detailLinks.getLfZpDetailLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n scrollToRef={listFrameContainer}\r\n collectionKey={vzLoadKey} />\r\n </>\r\n );\r\n}\r\n\r\nVerejneZakazky.displayName = 'VerejneZakazky';\r\n\r\nexport default VerejneZakazky;\r\n","import { columnWidths, ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport FilterManager from \"@components/FilterManager\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"@models/IInfoUVerejneniModel\";\r\nimport React, { FC, useRef } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<IInfoUverejneniModel> = [\r\n {\r\n attrName: 'kod',\r\n locKey: 'NEN-812594',\r\n width: columnWidths.zpCode\r\n },\r\n {\r\n attrName: 'text',\r\n locKey: 'NEN-812643',\r\n width: 200\r\n },\r\n {\r\n attrName: 'datumUverejneni',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812694'\r\n },\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812618'\r\n }\r\n];\r\n\r\nconst paramNames = urlConstants.vestnik.paramNames;\r\nconst vestnikLoadKey = 'vestnik-seznam';\r\n\r\nconst VestnikNen: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-744124'));\r\n useDescription(t('NEN-789439'));\r\n\r\n const listFrameRef = useRef<HTMLDivElement>(null);\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-744021')}</h2>\r\n <ContentBlock>\r\n <FilterManager id='vestnik-nen-filter' paramNames={paramNames} />\r\n <ListFrame\r\n listFrameKey={vestnikLoadKey}\r\n containerRef={listFrameRef}\r\n condition=\"Datum_uverejneni <> null and SK=null\"\r\n paramNames={paramNames}\r\n skeletonCount={ON_PAGE_ROWS}\r\n onPageCount={ON_PAGE_ROWS}\r\n orderBy={useOrderByMemo<IInfoUverejneniModel>({ desc: true, column: \"datumUverejneni\" })}\r\n fulltextAttributes={[{ attrName: 'fullTextFiltr', type: 'contains' }]}\r\n attrMapping={InfoUverejneniAttrMap}\r\n detailLinkFactory={detailLinks.getDetailInfoUverejneniLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator loadMoreButton collectionKey={vestnikLoadKey} scrollToRef={listFrameRef} />\r\n </>\r\n );\r\n}\r\n\r\nexport default React.memo(VestnikNen);\r\n","import Tabs from \"@components/Tabs\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport React, { FC } from \"react\"\r\nimport RegistrDns from \"../registrDns/RegistrDns\";\r\nimport RegistrSK from \"../registrSK/RegistrSK\";\r\nimport VerejneZakazky from \"../verejneZakazky/VerejneZakazky\";\r\nimport VestnikNen from \"../vestnikNen/VestnikNen\";\r\n\r\nconst VerejneZakazkyPages: FC = () => {\r\n return (\r\n <Tabs\r\n noMargin\r\n tabs={\r\n [\r\n {\r\n lockey: 'NEN-744019',\r\n path: urlConstants.verejneZakazky.path,\r\n component: VerejneZakazky\r\n },\r\n {\r\n lockey: 'NEN-744020',\r\n path: urlConstants.registrDns.path,\r\n component: RegistrDns\r\n },\r\n {\r\n lockey: 'NEN-744021',\r\n path: urlConstants.vestnik.path,\r\n component: VestnikNen\r\n },\r\n {\r\n lockey: 'NEN-812877',\r\n path: urlConstants.registrSK.path,\r\n component: RegistrSK\r\n }\r\n ]\r\n } />\r\n );\r\n};\r\n\r\nVerejneZakazkyPages.displayName = 'VerejneZakazkyPages';\r\n\r\nexport default React.memo(VerejneZakazkyPages);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('icon-label');\r\n\r\nexport type IconLabelType = 'none' | 'information' | 'warning' | 'error';\r\n\r\nexport type IconLabelProps = PropsWithChildren<{\r\n className?: Classes;\r\n withMargin?: boolean;\r\n type?: IconLabelType;\r\n icon?: string;\r\n}>;\r\n\r\nconst icons: { [key in IconLabelType]: string | null } = {\r\n none: null,\r\n error: 'web-warning',\r\n information: 'ui-circle-info',\r\n warning: 'web-warning'\r\n}\r\n\r\nconst IconLabel: FC<IconLabelProps> = ({\r\n className,\r\n withMargin,\r\n type,\r\n icon,\r\n children\r\n}) => {\r\n type ??= 'none';\r\n const defaultIcon = icons[type] ?? undefined;\r\n icon ??= defaultIcon;\r\n return (\r\n <div className={cn.with(className).main({\r\n [`--${type}`]: !!type,\r\n '--with-margin': withMargin\r\n })}>\r\n <span className={cn.with('icon', icon)('__icon')} />\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nIconLabel.displayName = 'IconLabel';\r\n\r\nexport default React.memo(IconLabel);\r\n","import { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport { CryptoComponentInfo } from \"crypto/CryptoUtils\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { useSelector } from \"react-redux\";\r\nimport { getCurrentLanguage, useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport ResultBadge from \"../../ResultBadge/ResultBadge\";\r\n\r\nimport './CryptoComponentResult.scss';\r\n\r\nconst cn = setupCn('crypto-component-result');\r\n\r\nexport type CryptoComponentResultProps = PropsWithChildren<{\r\n componentInfo: CryptoComponentInfo;\r\n}>;\r\n\r\nconst CryptoComponentResult: FC<CryptoComponentResultProps> = ({\r\n componentInfo,\r\n children\r\n}) => {\r\n componentInfo ??= { result: TestResult.notEvaluated };\r\n const {\r\n result,\r\n downloadUrl,\r\n linkTarget,\r\n requiredVersion,\r\n version\r\n } = componentInfo;\r\n const { ts } = useLocalization();\r\n const language = useSelector(getCurrentLanguage);\r\n const linkHref = downloadUrl?.(language);\r\n return (\r\n <div className={cn()}>\r\n <ResultBadge result={result} failedText={ts('NEN-746933')} />\r\n {children}\r\n {\r\n version == null ? null :\r\n <> ({ts('NEN-746931')} {version})</>\r\n }\r\n {\r\n result == TestResult.ok || requiredVersion == null ? null :\r\n <> ({ts('NEN-747319')} {requiredVersion})</>\r\n }\r\n {\r\n result == TestResult.ok || linkHref == null ? null :\r\n <a className={cn('__link')} target={linkTarget} href={linkHref}>{ts('NEN-746932')}</a>\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nCryptoComponentResult.displayName = 'CryptoComponentResult';\r\n\r\nexport default React.memo(CryptoComponentResult);\r\n","import IconLabel from \"@components/IconLabel/IconLabel\";\r\nimport { CryptoNativeCheckResult } from \"crypto/CryptoUtils\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport CryptoComponentResult from \"./CryptoComponentResult/CryptoComponentResult\";\r\n\r\nconst cn = setupCn('crypto-test-result');\r\n\r\nexport type CryptoTestResultProps = PropsWithChildren<{\r\n className?: Classes;\r\n result?: CryptoNativeCheckResult | null;\r\n}>;\r\n\r\nconst CryptoTestResult: FC<CryptoTestResultProps> = ({\r\n className,\r\n result\r\n}) => {\r\n const { ts } = useLocalization();\r\n\r\n if (result == null) {\r\n return null;\r\n }\r\n\r\n const {\r\n extension,\r\n nativeApp,\r\n messageLocKey,\r\n } = result;\r\n\r\n return (\r\n <div className={cn.with(className)()}>\r\n <div>\r\n <CryptoComponentResult componentInfo={extension}>Crypto Web Extension</CryptoComponentResult>\r\n </div>\r\n <div>\r\n <CryptoComponentResult componentInfo={nativeApp}>Crypto Native App</CryptoComponentResult>\r\n </div>\r\n {\r\n messageLocKey ? <IconLabel type='warning'>{ts(messageLocKey)}</IconLabel> : null\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nCryptoTestResult.displayName = 'CryptoTestResult';\r\n\r\nexport default React.memo(CryptoTestResult);\r\n","import { TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\n\r\nconst cn = setupCn('result-text');\r\n\r\nexport type ResultTextProps = PropsWithChildren<{\r\n className?: Classes;\r\n result: TestResult;\r\n}>;\r\n\r\nconst ResultText: FC<ResultTextProps> = ({\r\n className,\r\n result,\r\n children\r\n}) => {\r\n return (\r\n <div className={cn.with(className, {\r\n 'text-success': result == TestResult.ok,\r\n 'text-warning-dark': result == TestResult.partially,\r\n 'text-danger': result == TestResult.failed,\r\n 'text-primary': result == TestResult.evaluating\r\n })()}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nResultText.displayName = 'ResultText';\r\n\r\nexport default React.memo(ResultText);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\n\r\nimport './Blockquote.scss'\r\n\r\nconst cn = setupCn('gov-blockquote');\r\n\r\nexport type BlockquoteType = 'information' | 'warning' | 'error' | 'example' | 'math';\r\n\r\nexport type BlockquoteProps = PropsWithChildren<{\r\n type?: BlockquoteType;\r\n className?: Classes;\r\n}>;\r\n\r\nconst Blockquote: FC<BlockquoteProps> = ({\r\n type,\r\n className,\r\n children,\r\n}) => {\r\n type ??= 'information';\r\n const typeModifier = type != 'information' ? `--${type}` : null;\r\n\r\n return (\r\n <blockquote\r\n className={cn.with(className).main(typeModifier)}>\r\n {children}\r\n </blockquote>\r\n\r\n );\r\n};\r\n\r\nBlockquote.displayName = 'Blockquote';\r\n\r\nexport default React.memo(Blockquote);\r\n","import CryptoDetail from \"crypto/CryptoDetail/CryptoDetail\";\r\nimport { cryptoNativeCheck, CryptoNativeCheckResult } from \"crypto/CryptoUtils\";\r\nimport React, { FC, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\"\r\nimport { useCurrentLanguage, useLocalization } from \"@store/localizationStore\";\r\nimport { useCompatibilityTestService, useCryptoService, useInstanceService } from \"@store/nodeContextStore\";\r\nimport { is } from \"@utils/ArrayHelper\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { checkBrowser, checkCookies, checkMinimalResulution, checkMultiwebTests, checkRecommendedResulution, checkServiceWorker, DateTimeDifferenceResult, getActualResolution, getBrowserAndOs, getDateTimeDifferenceResult, indexedDBTest, IndexedDBTestResult, MultiwebTestResult, popupWindowCheck, ResolutionTestResult, ServiceWorkerResult, signTest, SignTestResult, TestResult, testResultSwitch } from \"./CompatibilityTests\";\r\nimport CryptoTestResult from \"./Components/CryptoTestResult/CryptoTestResult\";\r\nimport ResultBadge from \"./Components/ResultBadge/ResultBadge\";\r\nimport ResultText from \"./Components/ResultText/ResultText\";\r\nimport Button from \"@components/Button/Button\";\r\nimport ContentBlock from \"@components/ContentBlock/ContentBlock\";\r\nimport Blockquote from \"@components/Blockquote/Blockquote\";\r\n\r\nimport './CompatibilityTest.scss';\r\n\r\nconst cn = setupCn('compatibility-test');\r\nconst subRowHeaderCn = cn.setupSubCn('__sub-row-header');\r\n\r\nconst nevyhodnocenoLK = 'NEN-746904';\r\nconst nepodporovanoLK = 'NEN-746912';\r\nconst povolenoLK = 'NEN-746914';\r\nconst anoLK = 'NEN-746905';\r\nconst neLK = 'NEN-746906';\r\nconst nepovolenoLK = 'NEN-746924';\r\nconst podporovanoLK = 'NEN-748097';\r\nconst neuplnneLK = 'NEN-748101';\r\nconst castecnePodporovanoLK = 'NEN-748098';\r\nconst zakazanoLK = 'NEN-748104';\r\n\r\nexport type CompatibilityTestProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\ntype UseTestStateParams<T> = {\r\n test: () => Promise<T>;\r\n privateResultFnc: (result: T) => TestResult;\r\n publicResultFnc: (result: T) => TestResult;\r\n afterTest?: (result: RunTestResult<T>) => void;\r\n}\r\n\r\ntype RunTestResult<T> = {\r\n privateResult: TestResult;\r\n publicResult: TestResult;\r\n result?: T;\r\n}\r\n\r\nconst useTestState = <T extends unknown>({ test, publicResultFnc, privateResultFnc, afterTest }: UseTestStateParams<T>) => {\r\n const [testResult, setTestResult] = useState<RunTestResult<T>>({\r\n privateResult: TestResult.notEvaluated,\r\n publicResult: TestResult.notEvaluated,\r\n result: undefined\r\n });\r\n\r\n const runningPromise = useRef<Promise<RunTestResult<T>>>();\r\n const runTestFnc = useCallback(async (): Promise<RunTestResult<T>> => {\r\n try {\r\n setTestResult({\r\n privateResult: TestResult.evaluating,\r\n publicResult: TestResult.evaluating,\r\n result: undefined\r\n });\r\n const result = await test();\r\n const newTestResult: RunTestResult<T> = {\r\n result,\r\n publicResult: publicResultFnc(result),\r\n privateResult: privateResultFnc(result)\r\n };\r\n setTestResult(newTestResult);\r\n afterTest?.(newTestResult);\r\n return newTestResult;\r\n } catch {\r\n const newResult = {\r\n privateResult: TestResult.nonCheckable,\r\n publicResult: TestResult.nonCheckable\r\n };\r\n setTestResult(newResult);\r\n return newResult;\r\n }\r\n }, [test, privateResultFnc, publicResultFnc]);\r\n\r\n const runTest = useCallback(() => {\r\n runningPromise.current = runTestFnc();\r\n }, [runTestFnc]);\r\n\r\n return {\r\n ...testResult,\r\n runTest,\r\n runningPromise\r\n }\r\n}\r\n\r\ntype UseTestStateType = ReturnType<typeof useTestState>;\r\n\r\nconst isResult = (states: TestResult[], resultSelector: (result: RunTestResult<unknown>) => TestResult) => (test: PromiseSettledResult<RunTestResult<unknown>>) => {\r\n return test.status == 'fulfilled' && test.value && is(resultSelector(test.value), states);\r\n}\r\n\r\nconst isNotResult = (states: TestResult[], resultSelector: (result: RunTestResult<unknown>) => TestResult) => (test: PromiseSettledResult<RunTestResult<unknown>>) => {\r\n return test.status == 'rejected' || test.value == null || !is(resultSelector(test.value), states);\r\n}\r\n\r\nconst runTests = (...tests: UseTestStateType[]) => tests.forEach(test => test.runTest());\r\nconst runTestsIfNot = (...tests: UseTestStateType[]) => tests.forEach(test => test.runningPromise.current == null && test.runTest());\r\n\r\nconst allTestOk = async (...tests: UseTestStateType[]) => {\r\n runTestsIfNot(...tests);\r\n const testsPromises = tests.map(test => test.runningPromise.current).filter(a => a) as Promise<RunTestResult<unknown>>[];\r\n const testsResults = await Promise.allSettled(testsPromises);\r\n const privateResult = testsResults.every(isResult([TestResult.ok], res => res.privateResult)) ? TestResult.ok :\r\n testsResults.some(isNotResult([TestResult.ok, TestResult.partially], res => res.privateResult)) ? TestResult.failed : TestResult.partially;\r\n const publicResult = testsResults.every(isResult([TestResult.ok], res => res.publicResult)) ? TestResult.ok :\r\n testsResults.some(isNotResult([TestResult.ok, TestResult.partially], res => res.publicResult)) ? TestResult.failed : TestResult.partially;\r\n return { privateResult, publicResult };\r\n}\r\n\r\nconst getfinallyTestResultLK = (result: TestResult) => testResultSwitch(result, {\r\n defaultValue: nevyhodnocenoLK,\r\n evaluating: 'NEN-748109',\r\n ok: 'NEN-748110',\r\n partially: 'NEN-748111',\r\n failed: 'NEN-748112'\r\n})\r\n\r\nconst CompatibilityTest: FC<CompatibilityTestProps> = ({\r\n className\r\n}) => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-744259'));\r\n const testService = useCompatibilityTestService();\r\n const cryptoService = useCryptoService();\r\n const instanceService = useInstanceService();\r\n const language = useCurrentLanguage();\r\n const {\r\n browser,\r\n browserName,\r\n browserOs\r\n } = getBrowserAndOs();\r\n const resolution = getActualResolution();\r\n const cryptoNativeTest = useTestState<CryptoNativeCheckResult>({\r\n test: () => cryptoNativeCheck({ language }),\r\n publicResultFnc: res => res.result,\r\n privateResultFnc: res => res.result\r\n });\r\n const browserTypeTest = useTestState({\r\n test: () => Promise.resolve(checkBrowser()),\r\n publicResultFnc: res => res.publicResult,\r\n privateResultFnc: res => res.privateResult\r\n });\r\n const serviceWorkerTest = useTestState<ServiceWorkerResult>({\r\n test: () => Promise.resolve(checkServiceWorker()),\r\n publicResultFnc: () => TestResult.ok,\r\n privateResultFnc: res => res.result\r\n });\r\n const indexedDBUseTest = useTestState<IndexedDBTestResult>({\r\n test: () => indexedDBTest(),\r\n publicResultFnc: () => TestResult.ok,\r\n privateResultFnc: res => res.result\r\n });\r\n const popupsTest = useTestState<TestResult>({\r\n test: () => new Promise(resolve => setTimeout(() => resolve(popupWindowCheck()), 2000)),\r\n publicResultFnc: () => TestResult.ok,\r\n privateResultFnc: res => res == TestResult.failed ? TestResult.partially : res\r\n });\r\n const multiwebSupportTest = useTestState<MultiwebTestResult>({\r\n test: () => checkMultiwebTests(),\r\n publicResultFnc: () => TestResult.ok,\r\n privateResultFnc: res => res\r\n });\r\n const signingTest = useTestState<SignTestResult>({\r\n test: useCallback(() => signTest({ instanceService, cryptoService, language }), [instanceService, cryptoService, language]),\r\n publicResultFnc: () => TestResult.ok,\r\n privateResultFnc: res => res.result\r\n });\r\n const cookiesEnabledTest = useTestState<TestResult>({\r\n test: () => Promise.resolve(checkCookies()),\r\n publicResultFnc: res => res,\r\n privateResultFnc: res => res\r\n });\r\n const minimalResolutionTest = useTestState<ResolutionTestResult>({\r\n test: () => Promise.resolve(checkMinimalResulution()),\r\n publicResultFnc: res => res.publicResult,\r\n privateResultFnc: res => res.privateResult,\r\n });\r\n const recommendedResolutionTest = useTestState<ResolutionTestResult>({\r\n test: () => Promise.resolve(checkRecommendedResulution()),\r\n publicResultFnc: res => res.publicResult,\r\n privateResultFnc: res => res.privateResult\r\n });\r\n const timeDifferenceTest = useTestState<DateTimeDifferenceResult>({\r\n test: () => testService.getSysDateTime().then(getDateTimeDifferenceResult),\r\n publicResultFnc: res => res.result,\r\n privateResultFnc: res => res.result\r\n });\r\n const browserTestsResult = useTestState({\r\n test: () => allTestOk(\r\n serviceWorkerTest,\r\n indexedDBUseTest,\r\n cookiesEnabledTest,\r\n popupsTest,\r\n multiwebSupportTest,\r\n browserTypeTest\r\n ),\r\n publicResultFnc: res => res.publicResult,\r\n privateResultFnc: res => res.privateResult,\r\n });\r\n const allTestResult = useTestState({\r\n test: () => allTestOk(\r\n browserTestsResult,\r\n timeDifferenceTest,\r\n minimalResolutionTest\r\n ),\r\n publicResultFnc: res => res.publicResult,\r\n privateResultFnc: res => res.privateResult,\r\n });\r\n\r\n useEffect(() => {\r\n runTests(\r\n allTestResult,\r\n recommendedResolutionTest,\r\n cryptoNativeTest\r\n );\r\n }, []);\r\n\r\n const handleSignTest = useCallback(() => {\r\n signingTest.runTest();\r\n }, [signingTest.runTest]);\r\n\r\n const { ts } = useLocalization();\r\n const signTestDisabled = !is(cryptoNativeTest.publicResult, [TestResult.ok]) || is(signingTest.publicResult, [TestResult.evaluating]);\r\n\r\n return (\r\n <ContentBlock>\r\n <table className={cn('__table')}>\r\n <thead>\r\n <tr>\r\n <th rowSpan={2}></th>\r\n <th rowSpan={2}>\r\n <div>\r\n <ResultBadge result={allTestResult.privateResult}\r\n failedText={ts(nepodporovanoLK)}\r\n partiallyText={ts(castecnePodporovanoLK)} />\r\n {ts('NEN-746916')}\r\n <ResultText result={allTestResult.privateResult}>\r\n {ts(getfinallyTestResultLK(allTestResult.privateResult))}\r\n </ResultText>\r\n </div>\r\n </th>\r\n <th className='border-bottom-0 pb-0'>\r\n <div>\r\n <ResultBadge result={allTestResult.publicResult}\r\n failedText={ts(nepodporovanoLK)}\r\n partiallyText={ts(castecnePodporovanoLK)} />\r\n {ts('NEN-746915')}\r\n <ResultText result={allTestResult.publicResult}>\r\n {ts(getfinallyTestResultLK(allTestResult.publicResult))}\r\n </ResultText>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746917')}</th>\r\n <td>HTML5</td>\r\n <td>HTML5</td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746918')}</th>\r\n <td>\r\n {browserOs}\r\n </td>\r\n <td>\r\n {browserOs}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746919')}</th>\r\n <td>\r\n <ResultBadge\r\n result={browserTestsResult.privateResult}\r\n partiallyText={ts(castecnePodporovanoLK)}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(browserTestsResult.privateResult, {\r\n defaultValue: nevyhodnocenoLK,\r\n partially: neuplnneLK,\r\n ok: podporovanoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n <td>\r\n <div className='d-flex justify-content-between'>\r\n <div>\r\n <ResultBadge\r\n result={browserTestsResult.publicResult}\r\n partiallyText={ts(castecnePodporovanoLK)}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(browserTestsResult.publicResult, {\r\n defaultValue: nevyhodnocenoLK,\r\n partially: neuplnneLK,\r\n ok: podporovanoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-770532')}</th>\r\n <td>\r\n <ResultBadge\r\n result={browserTypeTest.privateResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {browserName} {browser?.version}\r\n </td>\r\n <td>\r\n <ResultBadge\r\n result={browserTypeTest.publicResult}\r\n partiallyText={ts(castecnePodporovanoLK)}\r\n failedText={ts(nepodporovanoLK)} />\r\n {browserName} {browser?.version}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746920')}</th>\r\n <td>\r\n <ResultBadge\r\n result={serviceWorkerTest.privateResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(serviceWorkerTest.result?.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))\r\n }\r\n {\r\n !serviceWorkerTest.result?.messageLocKey ? null :\r\n <>\r\n <br />\r\n {ts(serviceWorkerTest.result.messageLocKey)}\r\n </>\r\n }\r\n </td>\r\n <td>\r\n <ResultBadge\r\n result={serviceWorkerTest.publicResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(serviceWorkerTest.result?.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746921')}</th>\r\n <td>\r\n <ResultBadge\r\n result={indexedDBUseTest.privateResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(indexedDBUseTest.result?.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))\r\n }\r\n {\r\n !indexedDBUseTest?.result?.messageLocKey ? null :\r\n <>\r\n <br />\r\n {ts(indexedDBUseTest.result.messageLocKey)}\r\n </>\r\n }\r\n </td>\r\n <td>\r\n <ResultBadge\r\n result={indexedDBUseTest.publicResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(indexedDBUseTest.result?.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746922')}</th>\r\n <td>\r\n <ResultBadge result={cookiesEnabledTest.privateResult} />\r\n {\r\n ts(testResultSwitch(cookiesEnabledTest.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: povolenoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n <td>\r\n <ResultBadge result={cookiesEnabledTest.publicResult} />\r\n {\r\n ts(testResultSwitch(cookiesEnabledTest.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: povolenoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746923')}</th>\r\n <td>\r\n <ResultBadge\r\n result={popupsTest.privateResult}\r\n partiallyText={ts(zakazanoLK)}\r\n notEvaluatedText={ts(nevyhodnocenoLK)}\r\n failedText={ts(nepovolenoLK)} />\r\n {ts(testResultSwitch(popupsTest.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: povolenoLK,\r\n failed: neLK\r\n }))}\r\n {\r\n popupsTest.result != TestResult.failed ? null :\r\n <>\r\n <br />\r\n {ts('NEN-749339')}\r\n </>\r\n }\r\n </td>\r\n <td>\r\n <ResultBadge\r\n result={popupsTest.publicResult}\r\n notEvaluatedText={ts(nevyhodnocenoLK)}\r\n failedText={ts(nepovolenoLK)} />\r\n {ts(testResultSwitch(popupsTest.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: povolenoLK,\r\n failed: neLK\r\n }))}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746925')}</th>\r\n <td>\r\n <ResultBadge\r\n result={multiwebSupportTest.privateResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(multiwebSupportTest.result, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))\r\n }\r\n </td>\r\n <td>\r\n <ResultBadge\r\n result={multiwebSupportTest.publicResult}\r\n failedText={ts(nepodporovanoLK)} />\r\n {\r\n ts(testResultSwitch(multiwebSupportTest.publicResult, {\r\n defaultValue: nevyhodnocenoLK,\r\n ok: anoLK,\r\n failed: neLK\r\n }))}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746934')}</th>\r\n <td>\r\n <ResultBadge result={minimalResolutionTest.privateResult} />\r\n {resolution}\r\n </td>\r\n <td>\r\n <div className='d-flex justify-content-between'>\r\n <div>\r\n <ResultBadge result={minimalResolutionTest.publicResult} />\r\n {resolution}\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746926')}</th>\r\n <td>\r\n <ResultBadge result={minimalResolutionTest.privateResult} />\r\n {minimalResolutionTest.result?.resolutionPrivateText}\r\n </td>\r\n <td>\r\n <ResultBadge result={minimalResolutionTest.publicResult} />\r\n {minimalResolutionTest.result?.resolutionPublicText}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\" className={subRowHeaderCn()}>{ts('NEN-746927')}</th>\r\n <td>\r\n <ResultBadge result={recommendedResolutionTest.privateResult} />\r\n {recommendedResolutionTest.result?.resolutionPrivateText}\r\n </td>\r\n <td>\r\n <ResultBadge result={recommendedResolutionTest.publicResult} />\r\n {recommendedResolutionTest.result?.resolutionPublicText}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746930')}</th>\r\n <td>\r\n {timeDifferenceTest.result?.timeSpan}\r\n </td>\r\n <td>\r\n {timeDifferenceTest.result?.timeSpan}\r\n </td>\r\n </tr>\r\n </tbody>\r\n <tbody className={cn(\"__crypto\")}>\r\n <tr>\r\n <th scope=\"row\">{ts('NEN-746928')}</th>\r\n <td colSpan={2}>\r\n {\r\n cryptoNativeTest.publicResult == TestResult.evaluating &&\r\n <ResultBadge\r\n result={cryptoNativeTest.publicResult}\r\n evaluatingText={ts('NEN-824286')} />\r\n }\r\n <CryptoTestResult result={cryptoNativeTest.result} />\r\n {\r\n cryptoNativeTest.publicResult != TestResult.evaluating &&\r\n <Button\r\n disabled={signTestDisabled}\r\n size='normal'\r\n onClick={handleSignTest}>\r\n {ts('NEN-746929')}\r\n </Button>\r\n }\r\n {\r\n is(cryptoNativeTest.publicResult, [TestResult.ok, TestResult.notEvaluated, TestResult.evaluating]) ? null :\r\n <>\r\n <Blockquote type='warning'>{ts('NEN-746913')}</Blockquote>\r\n <Blockquote type='error'>{ts('NEN-748118')}</Blockquote>\r\n </>\r\n }\r\n {\r\n signingTest.publicResult != TestResult.evaluating ? null :\r\n <div className='mt-10'>\r\n <ResultBadge result={TestResult.evaluating} />\r\n </div>\r\n }\r\n {\r\n !signingTest.result?.signatureInfo ? null :\r\n <CryptoDetail\r\n id='test-crypto-detail'\r\n cryptoInfo={signingTest.result.signatureInfo} />\r\n }\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ContentBlock>\r\n );\r\n};\r\n\r\nCompatibilityTest.displayName = 'CompatibilityTest';\r\n\r\nexport default React.memo(CompatibilityTest);\r\n","import React, { FC, ReactNode } from \"react\";\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport UniversalLink from \"../UniversalLink/UniversalLink\";\r\n\r\nimport './GridTile.scss';\r\n\r\nconst cn = setupCn(\"gov-grid-tile\");\r\nconst cnPrev = setupCn(\"gov-preview-tile\");\r\n\r\nexport type GridTileProps = {\r\n locKey: string;\r\n icon: ReactNode;\r\n to: string;\r\n linkText: string;\r\n isExternal?: boolean;\r\n}\r\n\r\nconst GridTile: FC<GridTileProps> = ({\r\n locKey,\r\n icon,\r\n to,\r\n linkText,\r\n isExternal\r\n}) => {\r\n const { ts } = useLocalization();\r\n return (\r\n <UniversalLink className={cn.main({ '--hide-external': isExternal })} to={to} isExternal={isExternal}>\r\n <div className={cnPrev()}>\r\n <div className={cnPrev(\"__icon\")}>\r\n {icon}\r\n </div>\r\n <h3 className={cnPrev(\"__headline\")}>\r\n {ts(locKey)}\r\n </h3>\r\n <p>{ts(linkText)}</p>\r\n </div>\r\n </UniversalLink>\r\n );\r\n}\r\n\r\nexport default React.memo(GridTile);","import React from 'react'\r\nimport Grid from '@components/Grid';\r\nimport GovLayout from '@components/GovLayout/GovLayout';\r\nimport GridTile from '@components/GridTile/GridTile';\r\nimport { useBreadcrumb } from \"@store/breadcrumbStore\";\r\nimport { useConstants } from '@constants/urlConstants';\r\nimport { MdOutlinePerson, MdOutlineHandyman, MdOutlineGroups } from 'react-icons/md';\r\nimport Icon from '@components/Icon';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport ContentBlock from '@components/ContentBlock';\r\nimport UniversalLink from '@components/UniversalLink/UniversalLink';\r\n\r\nconst RozcestnikRegistrace = () => {\r\n const { t, ts } = useLocalization();\r\n const [, , , lastItem] = useBreadcrumb();\r\n const { getUrl } = useConstants();\r\n const { appSettings } = useAppSettings();\r\n\r\n const rightCol = appSettings.registration.enabled ?\r\n (\r\n <Grid columns=\"3\">\r\n <GridTile to={getUrl('registraceDodavatel')} locKey=\"NEN-767684\" linkText=\"NEN-770788\" icon={<Icon icon={MdOutlineHandyman} size=\"tile\" />} />\r\n <GridTile to={getUrl('registraceZadavatel')} locKey=\"NEN-767683\" linkText=\"NEN-770787\" icon={<Icon icon={MdOutlinePerson} size=\"tile\" />} />\r\n <GridTile to={getUrl('registraceSpolecneZadavani')} locKey=\"NEN-767685\" linkText=\"NEN-770789\" icon={<Icon icon={MdOutlineGroups} size=\"tile\" />} />\r\n </Grid>\r\n )\r\n : \r\n (\r\n <ContentBlock>\r\n <p>\r\n {ts('NEN-790963')}<UniversalLink to=\"https://sd.nipez.cz/nen\" isExternal>{ts('NEN-790964')}</UniversalLink>{ts('NEN-790965')}\r\n </p>\r\n </ContentBlock>\r\n )\r\n\r\n useDescription(t('NEN-789455'));\r\n\r\n return (\r\n <GovLayout\r\n ratio='1-2'\r\n spreadRight={3}\r\n leftCol={<h2 className=\"gov-title--alpha\">{lastItem?.title}</h2>}\r\n rightCol={rightCol}\r\n />\r\n )\r\n};\r\n\r\n\r\nexport default React.memo(RozcestnikRegistrace);","import React from 'react';\r\nimport { useLocalization } from 'store/localizationStore';\r\nimport UniversalLink from '@components/UniversalLink/UniversalLink';\r\nimport { useConstants } from '@constants/urlConstants';\r\nimport ContentBlock from '@components/ContentBlock';\r\nimport { useScrollToTop } from '@utils/ReactUtils';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\n\r\nconst ProhlaseniOPristupnosti = () => {\r\n const { ts, t } = useLocalization();\r\n const { getUrl } = useConstants();\r\n useScrollToTop();\r\n useDescription(t('NEN-789460'));\r\n const { appSettings } = useAppSettings();\r\n return (\r\n <>\r\n <ContentBlock>\r\n <p>{ts('NEN-645253')}</p>\r\n <p>\r\n {ts('NEN-754432')}\r\n <UniversalLink to=\"https://nen.nipez.cz\" title=\"https://nen.nipez.cz\" isExternal sameTarget>\r\n https://nen.nipez.cz\r\n </UniversalLink>\r\n </p>\r\n <p>{ts('NEN-645254')}</p>\r\n </ContentBlock>\r\n\r\n <ContentBlock lockey='NEN-645255'>\r\n <p className=\"u-mb--unset\">\r\n {ts('NEN-645256')}\r\n </p>\r\n <ol>\r\n <li>pdf (Portable Document Format),</li>\r\n <li>PDF/A (Portable Document Format for the Long-term Archiving),</li>\r\n <li>xml (Extensible Markup Language Document), odpovÃdá-li veÅ™ejnÄ› dostupnému XSD schématu,</li>\r\n <li>fo/zfo (602XML Filler dokument),</li>\r\n <li>html/htm (Hypertext Markup Language Document),</li>\r\n <li>odt (Open Document Text),</li>\r\n <li>ods (Open Document Spreadsheet),</li>\r\n <li>odp (Open Document Presentation),</li>\r\n <li>txt (prostý text),</li>\r\n <li>rtf (Rich Text Format),</li>\r\n <li>doc/docx (MS Word Document),</li>\r\n <li>xls/xlsx (MS Excel Spreadsheet),</li>\r\n <li>ppt/pptx (MS PowerPoint Presentation),</li>\r\n <li>jpg/jpeg/jfif (Joint Photographic Experts Group File Interchange Format),</li>\r\n <li>png (Portable Network Graphics),</li>\r\n <li>tif/tiff (Tagged Image File Format),</li>\r\n <li>gif (Graphics Interchange Format).</li>\r\n <li>zip, rar, 7z</li>\r\n </ol>\r\n </ContentBlock>\r\n\r\n\r\n <ContentBlock lockey='NEN-645257'>\r\n <p>\r\n {ts(\"NEN-645258\")}\r\n <br />\r\n {ts('NEN-645259')}\r\n {\" \"}\r\n <UniversalLink to={getUrl('compatibilityTest')} title={t('NEN-746935')}>\r\n {ts('NEN-746935')}\r\n </UniversalLink>\r\n </p>\r\n </ContentBlock>\r\n\r\n <ContentBlock lockey='NEN-645260'>\r\n <p>\r\n {ts('NEN-645261')}\r\n {\" \"}\r\n <UniversalLink to=\"mailto:Hotline@nipez.cz\" title=\"Hotline@nipez.cz\" isExternal sameTarget>\r\n Hotline@nipez.cz\r\n </UniversalLink>\r\n </p>\r\n </ContentBlock>\r\n\r\n <ContentBlock lockey='NEN-645262'>\r\n <p>\r\n {ts('NEN-754476')}\r\n {\" \"}\r\n <UniversalLink to=\"mailto:Hotline@nipez.cz\" title=\"Hotline@nipez.cz\" isExternal sameTarget>\r\n Hotline@nipez.cz\r\n </UniversalLink>\r\n {ts('NEN-754478')}\r\n <UniversalLink to={appSettings.serviceDesk.url} title=\"ServiceDesk\" isExternal>\r\n ServiceDesk\r\n </UniversalLink>\r\n <br />\r\n {ts('NEN-645264')}\r\n\r\n </p>\r\n </ContentBlock>\r\n\r\n <ContentBlock lockey='NEN-719696'>\r\n <p>\r\n {ts('NEN-719697')}\r\n <br />\r\n {ts('NEN-754484')}\r\n {\" \"}\r\n <UniversalLink to=\"mailto:pristupnost@dia.gov.cz\" title=\"pristupnost@dia.gov.cz\" isExternal sameTarget>\r\n pristupnost@dia.gov.cz\r\n </UniversalLink>\r\n </p>\r\n </ContentBlock>\r\n\r\n <ContentBlock lockey='NEN-719699'>\r\n <p>\r\n {ts('NEN-719700')}\r\n </p>\r\n </ContentBlock>\r\n </>\r\n )\r\n};\r\n\r\nexport default React.memo(ProhlaseniOPristupnosti);\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { Classes } from \"@utils/BemUtils\";\r\nimport FilterManager from \"@components/FilterManager\";\r\nimport { FilterParamsNames } from \"@constants/urlConstants\";\r\n\r\nexport type ProfilyZadavateluFilterProps = PropsWithChildren<{\r\n className?: Classes;\r\n paramNames: FilterParamsNames;\r\n}>;\r\n\r\nconst ProfilyZadavateluFilter: FC<ProfilyZadavateluFilterProps> = ({\r\n className,\r\n paramNames\r\n}) => {\r\n return (\r\n <FilterManager\r\n id='profily-zadavatelu-filter'\r\n className={className}\r\n paramNames={paramNames}>\r\n </FilterManager>\r\n );\r\n};\r\n\r\nexport default React.memo(ProfilyZadavateluFilter);\r\n","import { FC, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport RegistrZadavateluFilter from \"./ProfilyZadavateluFilter\";\r\nimport { IProfilZadavateleModel, ProfilZadavateleAttrMap } from \"@models/IProfilZadavateleModel\";\r\nimport { AttrNames } from \"@utils/AttrMapping\";\r\nimport { ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<IProfilZadavateleModel> = [\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812769',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'multiprofil',\r\n locKey: 'NEN-812726',\r\n width: '50%'\r\n },\r\n {\r\n attrName: 'nazevProfilu',\r\n locKey: 'NEN-812770',\r\n },\r\n {\r\n attrName: 'neaktivniAktivni',\r\n locKey: 'NEN-812876',\r\n width: '50%'\r\n }\r\n];\r\n\r\nconst paramNames = urlConstants.profilyZadavateluPlatne.paramNames;\r\nconst profilyZadavateluLoadKey = 'profily-zadavatelu-platne-seznam';\r\nconst fulltextAttributes: AttrNames<IProfilZadavateleModel> = ['nazevOrganizace', 'nazevProfilu'];\r\n\r\nconst ProfilyZadavateluPlatne: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-812617'));\r\n useDescription(t('NEN-789441'));\r\n\r\n const frameContainer = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-602383')}</h2>\r\n <ContentBlock>\r\n <RegistrZadavateluFilter paramNames={paramNames} />\r\n <ListFrame\r\n listFrameKey={profilyZadavateluLoadKey}\r\n condition=\"Platny = true\"\r\n paramNames={paramNames}\r\n onPageCount={ON_PAGE_ROWS}\r\n skeletonCount={ON_PAGE_ROWS}\r\n attrMapping={ProfilZadavateleAttrMap}\r\n fulltextAttributes={fulltextAttributes}\r\n orderBy={useOrderByMemo<IProfilZadavateleModel>(\"nazevOrganizace\", { desc: true, column: \"id\" })}\r\n detailLinkFactory={detailLinks.getProfilZadavateleDetailLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n scrollToRef={frameContainer}\r\n collectionKey={profilyZadavateluLoadKey} />\r\n </>\r\n );\r\n}\r\n\r\nexport default ProfilyZadavateluPlatne;\r\n","import { FC, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport RegistrZadavateluFilter from \"./ProfilyZadavateluFilter\";\r\nimport { IProfilZadavateleModel, ProfilZadavateleAttrMap } from \"@models/IProfilZadavateleModel\";\r\nimport ListFrame, { columnWidths, ListFrameColumns, ListFrameProps } from \"@components/ListFrame\";\r\nimport { inferredPartial } from \"@utils/TypeUtils\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<IProfilZadavateleModel> = [\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812769',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'multiprofil',\r\n locKey: 'NEN-812726',\r\n width: '50%'\r\n },\r\n {\r\n attrName: 'nazevProfilu',\r\n locKey: 'NEN-812770',\r\n },\r\n {\r\n attrName: 'datumDeaktivace',\r\n locKey: 'NEN-812775',\r\n width: columnWidths.dateTime\r\n },\r\n];\r\n\r\nconst paramNames = urlConstants.profilyZadavateluZneplatnene.paramNames;\r\n\r\nconst listFrameProps = inferredPartial<ListFrameProps<typeof ProfilZadavateleAttrMap>>()({\r\n fulltextAttributes: ['nazevOrganizace', 'nazevProfilu'],\r\n orderBy: ['nazevOrganizace', { desc: true, column: \"id\" }],\r\n});\r\n\r\nconst profilyZadavateluLoadKey = 'profily-zadavatelu-zneplatnene-seznam';\r\n\r\nconst ProfilyZadavateluZneplatnene: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-602382'));\r\n useDescription(t('NEN-789442'));\r\n\r\n const frameContainer = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-602382')}</h2>\r\n <ContentBlock>\r\n <RegistrZadavateluFilter paramNames={paramNames} />\r\n <ListFrame\r\n {...listFrameProps}\r\n listFrameKey={profilyZadavateluLoadKey}\r\n condition='Platny <> true and adresa_profil_nen<>null'\r\n paramNames={paramNames}\r\n onPageCount={ON_PAGE_ROWS}\r\n skeletonCount={ON_PAGE_ROWS}\r\n attrMapping={ProfilZadavateleAttrMap}\r\n detailLinkFactory={detailLinks.getProfilZadavateleDetailLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n scrollToRef={frameContainer}\r\n collectionKey={profilyZadavateluLoadKey} />\r\n </>\r\n );\r\n}\r\n\r\nexport default ProfilyZadavateluZneplatnene;\r\n","import Tabs from \"@components/Tabs\";\r\nimport React, { FC } from \"react\"\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport ProfilyZadavateluPlatne from \"../profilyZadavatelu/ProfilyZadavateluPlatne\";\r\nimport ProfilyZadavateluZneplatnene from \"../profilyZadavatelu/ProfilyZadavateluZneplatnene\";\r\n\r\nconst ProfilyZadavateluPages: FC = () => {\r\n return (\r\n <Tabs\r\n noMargin\r\n tabs={\r\n [\r\n {\r\n lockey: 'NEN-602383',\r\n path: urlConstants.profilyZadavateluPlatne.path,\r\n component: ProfilyZadavateluPlatne\r\n },\r\n {\r\n lockey: 'NEN-602382',\r\n path: urlConstants.profilyZadavateluZneplatnene.path,\r\n component: ProfilyZadavateluZneplatnene\r\n },\r\n ]\r\n } />\r\n );\r\n};\r\n\r\nProfilyZadavateluPages.displayName = 'ProfilyZadavateluPages';\r\n\r\nexport default React.memo(ProfilyZadavateluPages);\r\n","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { DetailUverejneniAttrMap, IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { columnWidths, DependentListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\n\r\nconst DataLabel = DataLabelTyped<IDetailUverejneniModel>();\r\n\r\nconst detailDetailUverLoadkey = 'detail-uverejneni';\r\n\r\nconst DetailDetailUver: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailDetailUver.detailIdParam] || '');\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={DetailUverejneniAttrMap}\r\n loadKey={detailDetailUverLoadkey}\r\n >\r\n <DetailUver />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailUver: React.FC = () => {\r\n useDetailDescription<IDetailUverejneniModel>([\r\n {\r\n lockey: 'NEN-812750'\r\n },\r\n {\r\n lockey: 'NEN-812506',\r\n attrName: 'uredniNazev'\r\n }\r\n ]);\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812507\" showIf=\"Info_uver.Detail in ['VYS','UCH','SUB'] or (Info_uver.Uverejneni='PZ' and Info_uver.Uver_pis_zprava=true and Subdod<>null) or (Info_uver.Detail='SON' and Pod<>null)\">\r\n <DataLabel lockey=\"NEN-812506\" attrName='uredniNazev' fillGrid/>\r\n <DataLabel lockey=\"NEN-812511\" attrName='ico' />\r\n <DataLabel lockey=\"NEN-812512\" attrName='dic' showIf='DIC<>null' />\r\n <DataLabel lockey=\"NEN-812615\" attrName='pravFormaNazev' showIf='PF<>null' />\r\n <DataLabel lockey=\"NEN-812517\" attrName='obec' />\r\n <DataLabel lockey=\"NEN-812518\" attrName='castObce' showIf='Cast_obce<>null' />\r\n <DataLabel lockey=\"NEN-812523\" attrName='ulice' showIf='Ulice<>null' />\r\n <DataLabel lockey=\"NEN-812524\" attrName='cisloPop' showIf='Cislo_popisne<>null' />\r\n <DataLabel lockey=\"NEN-812525\" attrName='cisloOrient' showIf='Cislo_orientacni<>null' />\r\n <DataLabel lockey=\"NEN-812526\" attrName='psc' showIf='PSC<>null' />\r\n <DataLabel lockey=\"NEN-812845\" attrName='statNazev' showIf='Stat_uver<>null' />\r\n <DataLabel lockey=\"NEN-825712\" attrName='nazevDodPoddod' showIf='Nazev_dod_poddod<>null' />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812842\" showIf=\"not(Info_uver.Historie.Druh_ZR.Kod in['ZP27','ZP28']) and Info_uver.Uverejneni in ['VYS','UCH'] and Osoba_stret = null\">\r\n <DataLabel lockey=\"NEN-812610\" attrName='datumUzavreni' showIf=\"Info_uver.Detail = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-812663\" attrName='datumVyber' showIf=\"Info_uver.Detail = 'SON'\" />\r\n <DataLabel lockey=\"NEN-812606\" attrName='cisloSmlouva' showIf=\"Info_uver.Detail = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-825067\" attrName='zaklPopisPlneni' showIf=\"Zakl_popis_plneni<>null and Info_uver.Detail = 'VYS'\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812632\" attrName='smluvniCenaBez' showIf=\"Info_uver.Detail = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-812633\" attrName='smluvniCenaS' showIf=\"Info_uver.Detail = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-812873\" attrName='smluvniCenaBezAkt' showIf=\"Sml_cena_bez_DPH_akt<>null and Info_uver.Uverejneni = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-812872\" attrName='smluvniCenaSAkt' showIf=\"Sml_cena_s_DPH_akt<>null and Info_uver.Uverejneni = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-812664\" attrName='soutezCenaBez' showIf=\"Info_uver.Detail = 'SON'\" />\r\n <DataLabel lockey=\"NEN-812850\" attrName='nabCenaS' showIf=\"Nabidkova_cena<>null and Info_uver.Uverejneni = 'UCH'\" />\r\n <DataLabel lockey=\"NEN-812851\" attrName='nabCenaBez' showIf=\"Nab_cena_bez_DPH<>null and Info_uver.Uverejneni = 'UCH'\" />\r\n <DataLabel lockey=\"NEN-812607\" attrName='menaUverKod' showIf=\"Mena_uver<>null\" />\r\n <DataLabel lockey=\"NEN-812773\" attrName='emailAdresa' showIf=\"Email_adresa<>null and Info_uver.Uverejneni = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-824859\" attrName='uzavrenaSmlouva' showIf=\"Uzavrena_smlouva<>null and Info_uver.Uverejneni = 'UCH'\" />\r\n <DataLabel lockey=\"NEN-812844\" attrName='sdruzDod' showIf=\"Info_uver.Uverejneni = 'VYS'\" />\r\n <DataLabel lockey=\"NEN-825562\" attrName='sdruzDod' showIf=\"Info_uver.Uverejneni = 'UCH'\" />\r\n <DataLabel lockey=\"NEN-812753\" attrName='icoVed' showIf='Sdruzeni_dodavatelu=true' />\r\n <DataLabel lockey=\"NEN-812754\" attrName='nazevVed' showIf='Sdruzeni_dodavatelu=true' />\r\n <DataLabel lockey=\"NEN-812886\" attrName='oduvodKomunProstredky' showIf=\"Oduv_komunikace<>null\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-824184\" showIf=\"Info_uver.Uverejneni = 'UCH' and (Vylouceni=true or Vyrazena_pro_MNNC=true or Odstoupeni=true)\">\r\n <DataLabel lockey=\"NEN-824186\" attrName='vylouc' showIf=\"Vylouceni=true\" />\r\n <DataLabel lockey=\"NEN-812834\" attrName='mnnc' showIf=\"Vyrazena_pro_MNNC=true\" />\r\n <DataLabel lockey=\"NEN-812836\" attrName='odstoupeni' />\r\n <DataLabel lockey=\"NEN-824191\" attrName='vyloucDuvod' fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812835\" attrName='mnncDuvod' showIf=\"Vyrazena_pro_MNNC=true and Vylouceni<>true and Odstoupeni<>true\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812837\" attrName='odstoupeniDuvod' showIf=\"Odstoupeni=true and Vylouceni<>true and Vyrazena_pro_MNNC<>true\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-824212\" fillContent showIf=\"Sdruzeni_dodavatelu=true and Info_uver.Uverejneni in ['VYS','UCH']\">\r\n <ListFrameSdruzeniDod />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812843\" showIf=\"Info_uver.Uverejneni in ['DODINFO']\">\r\n <DataLabel lockey=\"NEN-812728\" attrName='textDotaz' fillGrid rawText/>\r\n <DataLabel lockey=\"NEN-812733\" attrName='textVysvetleni' showIf=\"not(Info_uver.Historie.Druh_ZR.Kod in['ZP25','ZP26'])\" fillGrid rawText/>\r\n <DataLabel lockey=\"NEN-812772\" attrName='textVysvetleni' showIf=\"Info_uver.Historie.Druh_ZR.Kod in['ZP25','ZP26']\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807152\" showIf=\"Info_uver.Uverejneni in ['UDAJNAB']\">\r\n <DataLabel lockey=\"NEN-807151\" attrName='textVysvetleni' fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812884\" showIf=\"Info_uver.Uverejneni in ['PZ'] and Osoba_stret=null and Subdod=null and Pod=null\">\r\n <DataLabel lockey=\"NEN-821548\" attrName='oduvodVyberuDod' showIf=\"Oduv_vyberu_dodavatele<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812887\" attrName='oduvodPouziti' showIf=\"Oduv_JRBU_ZR<>null and Info_uver.Historie.Druh_ZR.Kod = 'ZP33'\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-824910\" attrName='oduvodPouzitiJRSU' showIf=\"Oduv_JRSU<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812885\" attrName='oduvodPouzitiJRBU' showIf=\"Oduv_JRBU<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812886\" attrName='oduvodKomunProstredky' showIf=\"Oduv_komunikace<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812888\" attrName='oduvodNerozdeleni' showIf=\"Oduv_nadlimit_casti<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812889\" attrName='oduvodStanoveniPozadav' showIf=\"Oduv_obratu<>null\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807229\" showIf=\"(Info_uver.Uverejneni in ['PZ'] or Info_uver.Detail='SON') and Osoba_stret<>null\">\r\n <DataLabel lockey=\"NEN-812890\" attrName='nazev' showIf=\"Nazev<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812883\" attrName='prijataOpatreni' showIf=\"Prijata_opatreni<>null\" fillGrid rawText />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst SdruzDodModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812665',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n },\r\n {\r\n attrName: 'statKod',\r\n locKey: 'NEN-812527',\r\n width: columnWidths.stat\r\n }\r\n];\r\n\r\nconst ListFrameSdruzeniDod: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailDetailUverLoadkey + '-detail-sdruz'}\r\n condition=\"Vedouci=@0 and Uverejnen=true\"\r\n conditionParams={'id'}\r\n orderBy='uredniNazev'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detucasdruz', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n columns={SdruzDodModelColumns} />\r\n );\r\n}\r\n\r\nexport default DetailDetailUver;","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { DetailUverejneniAttrMap, IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"@models/IInfoUVerejneniModel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { ListFrameColumns, DependentListFrameTyped, columnWidths } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDetailDescription } from \"@utils/DescriptionHook\";\r\n\r\nconst DataLabel = DataLabelTyped<IInfoUverejneniModel>();\r\nconst DependentListFrame = DependentListFrameTyped<IInfoUverejneniModel>();\r\n\r\nconst detailInfoUver = 'detail-info';\r\n\r\nconst DetailInfoUver: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailInfoUver.detailIdParam] || '');\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={InfoUverejneniAttrMap}\r\n loadKey={detailInfoUver}\r\n >\r\n <DetailInfo />\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst DetailInfo: React.FC = () => {\r\n const { getAttr } = useDetailFrameContext<IInfoUverejneniModel>();\r\n const match = useRouteMatch<UrlParamObject>();\r\n\r\n useDetailDescription<IInfoUverejneniModel>([\r\n {\r\n lockey: 'NEN-812628',\r\n attrName: 'zakazka',\r\n },\r\n {\r\n lockey: 'NEN-812643',\r\n attrName: 'text',\r\n },\r\n {\r\n lockey: 'NEN-812641',\r\n attrName: 'zadavatelNazev',\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812688\">\r\n <DataLabel lockey=\"NEN-812641\" attrName='zadavatelNazev' detailLink={detailLinks.getSubjektDetailUrl(getAttr('zadavatelID')?.value, match, true)} />\r\n <DataLabel lockey=\"NEN-812628\" attrName='zakazka' detailLink={detailLinks.getZpDetailUrl(getAttr('kod')?.value, match, true)} />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812672\" showIf=\"Detail = 'INFO'\">\r\n <DataLabel lockey=\"NEN-812645\" attrName='datumUverejneni' />\r\n <DataLabel lockey=\"NEN-812643\" attrName='text' />\r\n <DataLabel lockey=\"NEN-812722\" attrName='datumOduver' showIf=\"Datum_oduverejneni<>null\" />\r\n <DataLabel lockey=\"NEN-812721\" attrName='oduverejnil' showIf=\"Oduverejnil<>null\" />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812672\" showIf=\"Detail <> 'INFO'\">\r\n <DataLabel lockey=\"NEN-812645\" attrName='datumUverejneni' />\r\n <DataLabel lockey=\"NEN-812643\" attrName='text' />\r\n <DataLabel lockey=\"NEN-812722\" attrName='datumOduver' showIf=\"Datum_oduverejneni<>null\" />\r\n <DataLabel lockey=\"NEN-812721\" attrName='oduverejnil' showIf=\"Oduverejnil<>null\" />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-747346\" showIf=\"Detail = 'INFO'\">\r\n <DataLabel lockey=\"NEN-812838\" attrName='dnsNazev' />\r\n <DataLabel lockey=\"NEN-812667\" attrName='dnsPocetDod' showIf=\"Pocet_dodavatelu<>null\" />\r\n <DataLabel lockey=\"NEN-812627\" attrName='dnsDny' showIf=\"Delka_trvani_dny <> null\" />\r\n <DataLabel lockey=\"NEN-812840\" attrName='dnsMesic' showIf=\"Delka_trvani_mesice<>null\" />\r\n <DataLabel lockey=\"NEN-812841\" attrName='dnsRok' showIf=\"Delka_trvani_roky<>null\" />\r\n <DataLabel lockey=\"NEN-812624\" attrName='terminUkonceni' showIf=\"Termin_ukonceni<>null\" />\r\n <DataLabel lockey=\"NEN-812839\" attrName='dnsPredmet' showIf=\"Uverejneni <> 'DNSAKTUAL'\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812608\" fillContent showIf=\"Detail = 'SON'\">\r\n <ListFrameVysledekSON />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807738\" fillContent showIf=\"Uverejneni in ['PZ'] and Uver_pis_zprava=true and exists(Detail_uverejneni, Info_uver=&ID and Info_uver<>null and Osoba_stret=null and Subdod=null and Pod=null)\">\r\n <ListFrameDetailPZ />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-825137\" fillContent showIf=\"Detail in ['SON'] and exists(Detail_uverejneni, Info_uver=&ID and Info_uver<>null and Osoba_stret=null and Subdod=null and Pod=null)\">\r\n <ListFrameDetailOduvodSoN />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807292\" fillContent showIf=\"((Uverejneni in ['PZ'] and Uver_pis_zprava=true) or Detail='SON') and exists(Detail_uverejneni, Info_uver=&ID and Info_uver<>null and Osoba_stret<>null)\">\r\n <ListFrameOsoby />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812734\" fillContent showIf=\"(Uverejneni in ['SUB'] or (Uverejneni in ['PZ'] and Uver_pis_zprava=true)) and exists(Detail_uverejneni, Info_uver=&ID and Info_uver<>null and Subdod<>null)\">\r\n <ListFrameSubdod />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-747322\" showIf=\"Detail = 'ZRUS'\">\r\n <DataLabel lockey=\"NEN-812647\" attrName='datumZrus' />\r\n <DataLabel lockey=\"NEN-812611\" attrName='ustanoveni' showIf=\"Duvod_zruseni<>null\" />\r\n <DataLabel lockey=\"NEN-812612\" attrName='oduvod' showIf=\"Duvod_zruseni<>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812614\" attrName='oduvodZrus' showIf=\"Oduvod_zruseni <>null\" fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812613\" attrName='blizsiOduvod' showIf=\"Blizsi_oduvodneni<>null\" fillGrid rawText />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812745\" fillContent showIf=\"Historie.Druh_ZR.Kod in['ZP27','ZP28'] and Uverejneni in ['UCH']\">\r\n <ListFrameUcastPT />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-747640\" fillContent showIf=\"Detail = 'VVZ'\">\r\n <ListFrameVvz />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812673\" fillContent showIf=\"Detail = 'PLN'\">\r\n <ListFramePlneni />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812875\" fillContent showIf=\"Uverejneni = 'ZMENASML'\">\r\n <ListFrameDodatek />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812745\" fillContent showIf=\"not(Historie.Druh_ZR.Kod in['ZP27','ZP28']) and Uverejneni in ['UCH']\">\r\n <ListFrameUcast />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812608\" fillContent showIf=\"Detail = 'VYS'\">\r\n <ListFrameVysledek />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812772\" fillContent showIf=\"Uverejneni = 'DODINFO' and Historie.Druh_ZR.Kod in['ZP25','ZP26']\">\r\n <ListFrameZpravaVysvetleniSON />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812733\" fillContent showIf=\"Uverejneni = 'DODINFO' and not(Historie.Druh_ZR.Kod in['ZP25','ZP26'])\">\r\n <ListFrameZpravaVysvetleni />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-807151\" fillContent showIf=\"Uverejneni = 'UDAJNAB'\">\r\n <ListFrameZpravaUdajePod />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812832\" fillContent showIf=\"not(Detail in ['PLN','VVZ','UCH','SUB','VYS','SON']) and exists(Uverejneny_dokum, Info_uver=&ID and Info_uver<>null)\">\r\n <ListFrameDokum />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812832\" fillContent showIf=\"Uverejneni='VYS' and exists(Uverejneny_dokum, Info_uver=&ID and Info_uver<>null)\">\r\n <ListFrameDokumVys />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst udajePodModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'textVysvetleni',\r\n locKey: 'NEN-807155'\r\n }\r\n];\r\n\r\nconst ListFrameZpravaUdajePod: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-uver-vysvetleni'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvysv', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={udajePodModelColumns} />\r\n );\r\n}\r\n\r\nconst vysvetleniModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'textVysvetleni',\r\n locKey: 'NEN-812733'\r\n }\r\n];\r\n\r\nconst ListFrameZpravaVysvetleni: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-uver-vysvetleni'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvysv', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={vysvetleniModelColumns} />\r\n );\r\n}\r\nconst vysvetleniSONModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'textVysvetleni',\r\n locKey: 'NEN-812772'\r\n }\r\n];\r\n\r\nconst ListFrameZpravaVysvetleniSON: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-vysvetleni-uver'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvysvSON', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={vysvetleniSONModelColumns} />\r\n );\r\n}\r\n\r\nconst SubdodModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812665',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n }\r\n];\r\n\r\nconst ListFrameSubdod: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-subdod'}\r\n condition=\"Info_uver=@0 and Subdod <>null\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detsub', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={SubdodModelColumns} />\r\n );\r\n}\r\nconst DetailPZModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'oduvodVyberuDod',\r\n locKey: 'NEN-821548'\r\n },\r\n {\r\n attrName: 'oduvodKomunProstredky',\r\n locKey: 'NEN-812886',\r\n },\r\n {\r\n attrName: 'oduvodNerozdeleni',\r\n locKey: 'NEN-812888',\r\n },\r\n {\r\n attrName: 'oduvodStanoveniPozadav',\r\n locKey: 'NEN-812889',\r\n }\r\n];\r\n\r\nconst ListFrameDetailPZ: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-pis-zprava'}\r\n condition=\"Info_uver=@0 and Osoba_stret=null and Subdod=null\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detpz', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={DetailPZModelColumns} />\r\n );\r\n}\r\n\r\nconst DetailOduvodSoNModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'oduvodKomunProstredky',\r\n locKey: 'NEN-812886',\r\n }\r\n];\r\n\r\nconst ListFrameDetailOduvodSoN: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-oduvod-son'}\r\n condition=\"Info_uver=@0 and Osoba_stret=null and Subdod=null and Pod=null\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detoduv', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={DetailOduvodSoNModelColumns} />\r\n );\r\n}\r\n\r\nconst OsobyModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'nazev',\r\n locKey: 'NEN-812890'\r\n },\r\n {\r\n attrName: 'prijataOpatreni',\r\n locKey: 'NEN-812883',\r\n }\r\n];\r\n\r\nconst ListFrameOsoby: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-osoby'}\r\n condition=\"Info_uver=@0 and Osoba_stret<>null\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detosoba', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={OsobyModelColumns} />\r\n );\r\n}\r\nconst VVZModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'datumPotvrz',\r\n locKey: 'NEN-812709',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'formKod',\r\n locKey: 'NEN-812712',\r\n width: 110\r\n },\r\n {\r\n attrName: 'formNazev',\r\n locKey: 'NEN-812713',\r\n width: 200\r\n },\r\n {\r\n attrName: 'datumOdeslani',\r\n locKey: 'NEN-781270',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-781265',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'formTyp',\r\n locKey: 'NEN-812711',\r\n width: 110\r\n }\r\n];\r\n\r\nconst ListFrameVvz: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-vvz'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvvz', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n columns={VVZModelColumns} />\r\n );\r\n}\r\n\r\nconst UcastModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n },\r\n {\r\n attrName: 'nabCenaS',\r\n locKey: 'NEN-812850'\r\n },\r\n {\r\n attrName: 'nabCenaBez',\r\n locKey: 'NEN-812851'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n },\r\n {\r\n attrName: 'uzavrenaSmlouva',\r\n locKey: 'NEN-824859'\r\n }\r\n];\r\n\r\nconst ListFrameUcast: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-ucast'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detuca', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={UcastModelColumns} />\r\n );\r\n}\r\n\r\nconst UcastPTModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812665'\r\n },\r\n {\r\n attrName: 'obec',\r\n locKey: 'NEN-812517'\r\n }\r\n\r\n];\r\n\r\nconst ListFrameUcastPT: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-ucast-pt'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detucaPT', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={UcastPTModelColumns} />\r\n );\r\n}\r\n\r\nconst VysledekModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812606'\r\n },\r\n {\r\n attrName: 'datumUzavreni',\r\n locKey: 'NEN-812601',\r\n width: columnWidths.dateTime\r\n\r\n },\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'smluvniCenaS',\r\n locKey: 'NEN-812609'\r\n },\r\n {\r\n attrName: 'smluvniCenaBez',\r\n locKey: 'NEN-812602'\r\n },\r\n {\r\n attrName: 'smluvniCenaSAkt',\r\n locKey: 'NEN-812872'\r\n },\r\n {\r\n attrName: 'smluvniCenaBezAkt',\r\n locKey: 'NEN-812873'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n }\r\n];\r\n\r\nconst ListFrameVysledek: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-vysledek'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvys', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={VysledekModelColumns} />\r\n );\r\n}\r\n\r\nconst VysledekSONModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'datumVyber',\r\n locKey: 'NEN-812663',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'uredniNazev',\r\n locKey: 'NEN-812506'\r\n },\r\n {\r\n attrName: 'soutezCenaBez',\r\n locKey: 'NEN-812664'\r\n },\r\n {\r\n attrName: 'menaUverKod',\r\n locKey: 'NEN-812607'\r\n }\r\n];\r\n\r\nconst ListFrameVysledekSON: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-detail-vysledek-SON'}\r\n condition=\"Info_uver=@0 and Pod<>null\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detvysvSON', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={VysledekSONModelColumns} />\r\n );\r\n}\r\n\r\nconst dodatekModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cislo',\r\n locKey: 'NEN-812668',\r\n width: 100\r\n\r\n },\r\n {\r\n attrName: 'datumPodpisu',\r\n locKey: 'NEN-812669',\r\n width: columnWidths.date\r\n },\r\n {\r\n attrName: 'emailAdresa',\r\n locKey: 'NEN-812874'\r\n }\r\n];\r\n\r\nconst ListFrameDodatek: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-dodatek'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: \"id\" })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detdod', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n columns={dodatekModelColumns} />\r\n );\r\n}\r\n\r\nconst plneniModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812606',\r\n width: 120\r\n },\r\n {\r\n attrName: 'plneniRok',\r\n locKey: 'NEN-812674',\r\n width: 100\r\n\r\n },\r\n {\r\n attrName: 'plneniCenaS',\r\n locKey: 'NEN-812676'\r\n },\r\n {\r\n attrName: 'plneniCenaBez',\r\n locKey: 'NEN-812675'\r\n }\r\n];\r\n\r\nconst ListFramePlneni: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-plneni'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IDetailUverejneniModel>({ desc: true, column: 'plneniRok' })}\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detpln', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n columns={plneniModelColumns} />\r\n );\r\n}\r\n\r\nconst dokumModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'datumOduverejneni',\r\n locKey: 'NEN-812722',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFrameDokum: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-dokum'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detdok', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={dokumModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\n\r\nconst dokumVysledekModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'cisloSmlouva',\r\n locKey: 'NEN-812880',\r\n width: 120\r\n },\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'datumOduverejneni',\r\n locKey: 'NEN-812722',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFrameDokumVys: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailInfoUver + '-dokum-vys'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'detdokvys', routeParamName: urlConstants.detailInfoUver.urlRouteParam })}\r\n columns={dokumVysledekModelColumns}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\n\r\nexport default DetailInfoUver;","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { DetailUverejneniAttrMap, IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"../../models/IInfoUVerejneniModel\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\n\r\nconst DependentListFrame = DependentListFrameTyped<IInfoUverejneniModel>();\r\n\r\nconst detailDodInfoLoadkey = 'detail-vysvetleni';\r\n\r\nconst DetailDodInfo: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailDodInfo.detailIdParam] || '');\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={InfoUverejneniAttrMap}\r\n loadKey={detailDodInfoLoadkey}>\r\n <DetailVys />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailVys: React.FC = () => {\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812823\" fillContent>\r\n <ListFrameZpravaVysvetleni />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812706\" fillContent>\r\n <ListFramePriloha />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst vysvetleniModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'textVysvetleni',\r\n locKey: 'NEN-812733'\r\n }\r\n];\r\n\r\nconst ListFrameZpravaVysvetleni: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailDodInfoLoadkey + '-detail-vysvetleni'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dvy', routeParamName: urlConstants.detailDodInfo.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={vysvetleniModelColumns} />\r\n );\r\n}\r\nconst prilohaModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFramePriloha: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailDodInfoLoadkey + 'priloha'}\r\n condition=\"Info_uver=@0 and Info_uver.Uverejneni = 'DODINFO' and Uverejnen = true\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dip', routeParamName: urlConstants.detailDodInfo.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={prilohaModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\nexport default DetailDodInfo;\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport { default as FilterManagerBase, FilterManagerType } from \"@components/FilterManager\";\r\nimport { FilterParamsNames, urlConstants } from \"@constants/urlConstants\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { NIPEZModelAttrMap } from \"@models/enumerators/INIPEZModel\";\r\nimport { ISubjektModel } from \"@models/ISubjektModel\";\r\nimport { kodNazevAttrs, lovCPVConditionFactory, lovNIPEZConditionFactory } from \"@models/filters/NipezFilters\";\r\nimport { CPVModelAttrMap } from \"@models/enumerators/ICPVModel\";\r\nimport { PravniFormaAttrMap } from \"@models/enumerators/IPravniFormaModel\";\r\nimport { NUTSModelAttrMap } from \"@models/enumerators/INUTSModel\";\r\n\r\nconst cn = setupCn('registry-dodavatelu-filter');\r\n\r\nconst FilterManager = FilterManagerBase as FilterManagerType<keyof ISubjektModel>;\r\n\r\nexport type RegistrDodavateluFilterProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n paramNames?: FilterParamsNames;\r\n}>;\r\n\r\nconst lovNipezConditonFactoryFunction = lovNIPEZConditionFactory('cpvNipezSubjektu');\r\nconst lovCPVConditonFactoryFunction = lovCPVConditionFactory('nipezSubjektu');\r\n\r\nconst RegistryDodavateluFilter: FC<RegistrDodavateluFilterProps> = ({\r\n id,\r\n className,\r\n paramNames\r\n}) => {\r\n const { ts } = useLocalization();\r\n\r\n return (\r\n <FilterManager\r\n id={id}\r\n className={cn.with(className)()}\r\n paramNames={paramNames ?? urlConstants.registrDodavatelu.paramNames}>\r\n <FilterManager.GroupsContainer id='groups' size='small'>\r\n <FilterManager.Group id='item' header={ts('NEN-812848')} defaultVisible noTopBorder>\r\n <FilterManager.Row>\r\n <FilterManager.Lov\r\n headerText={ts('NEN-743015')}\r\n name='nipezSubjektu'\r\n attrMapping={NIPEZModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition={lovNipezConditonFactoryFunction} />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-743016')}\r\n name='cpvNipezSubjektu'\r\n attrMapping={CPVModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition={lovCPVConditonFactoryFunction} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n <FilterManager.Group id='contractor' header={ts('NEN-751972')}>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='nazevOrganizace' headerText={ts('NEN-812506')} />\r\n <FilterManager.Input name='ico' headerText={ts('NEN-812511')} />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812869')}\r\n name='pravniForma'\r\n attrMapping={PravniFormaAttrMap}\r\n showAttrs='nazev'\r\n condition='(Plati_od=null or Plati_od <= DB.getDate()) and (Plati_do=null or DB.getDate() <= Plati_do)' />\r\n <FilterManager.Lov\r\n headerText={ts('NEN-812868')}\r\n name='NUTS'\r\n attrMapping={NUTSModelAttrMap}\r\n showAttrs={kodNazevAttrs}\r\n condition='(Plati_od=NULL OR Plati_od <= DB.getDateTime()) AND (Plati_do=NULL OR Plati_do >= DB.getDateTime())' />\r\n </FilterManager.Row>\r\n <FilterManager.Row>\r\n <FilterManager.Input name='obec' headerText={ts('NEN-812866')} />\r\n <FilterManager.Input name='castObce' headerText={ts('NEN-812865')} />\r\n <FilterManager.Input name='ulice' headerText={ts('NEN-812867')} />\r\n </FilterManager.Row>\r\n </FilterManager.Group>\r\n </FilterManager.GroupsContainer>\r\n </FilterManager>\r\n );\r\n};\r\n\r\nexport default React.memo(RegistryDodavateluFilter);\r\n","import { FC, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { AttrNames } from \"@utils/AttrMapping\";\r\nimport { ISubjektModel, SubjektAttrMap } from \"@models/ISubjektModel\";\r\nimport RegistryDodavateluFilter from \"./RegistryDodavateluFilter\";\r\nimport { columnWidths, ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<ISubjektModel> = [\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812506',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'externiAdministrator',\r\n locKey: 'NEN-812714',\r\n },\r\n {\r\n attrName: 'pfNazev',\r\n locKey: 'NEN-812546',\r\n },\r\n {\r\n attrName: 'nutsKod',\r\n locKey: 'NEN-812777',\r\n }\r\n];\r\n\r\nconst paramNames = urlConstants.registrDodavatelu.paramNames;\r\nconst registrDodavateluLoadKey = 'registr-dodavatelu-seznam';\r\nconst fulltextAttributes: AttrNames<ISubjektModel> = ['nazevOrganizace', 'ico', 'nutsKod'];\r\n\r\nconst RegistrDodavatelu: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-602387'));\r\n useDescription(t('NEN-789444'));\r\n\r\n const frameContainer = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-602387')}</h2>\r\n <ContentBlock>\r\n <RegistryDodavateluFilter id={registrDodavateluLoadKey} paramNames={paramNames} />\r\n <ListFrame\r\n listFrameKey={registrDodavateluLoadKey}\r\n condition=\"Dodavatel = true and Plati_DO = null\"\r\n paramNames={paramNames}\r\n fulltextAttributes={fulltextAttributes}\r\n orderBy={useOrderByMemo<ISubjektModel>(\"nazevOrganizace\", { desc: true, column: \"id\" })}\r\n onPageCount={ON_PAGE_ROWS}\r\n skeletonCount={ON_PAGE_ROWS}\r\n attrMapping={SubjektAttrMap}\r\n detailLinkFactory={detailLinks.getDetailSubjektLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n scrollToRef={frameContainer}\r\n collectionKey={registrDodavateluLoadKey} />\r\n </>\r\n );\r\n}\r\n\r\nexport default RegistrDodavatelu;\r\n","import React, { FC, PropsWithChildren } from \"react\"\r\nimport { Classes, setupCn } from \"@utils/BemUtils\";\r\nimport FilterManager from \"@components/FilterManager\";\r\nimport { FilterParamsNames, urlConstants } from \"@constants/urlConstants\";\r\n\r\nconst cn = setupCn('registry-zadavatelu-filter');\r\n\r\nexport type RegistrZadavateluFilterProps = PropsWithChildren<{\r\n id: string;\r\n className?: Classes;\r\n paramNames?: FilterParamsNames;\r\n}>;\r\n\r\nconst RegistryZadavateluFilter: FC<RegistrZadavateluFilterProps> = ({\r\n id,\r\n className,\r\n paramNames\r\n}) => {\r\n return (\r\n <FilterManager\r\n id={id}\r\n className={cn.with(className)()}\r\n paramNames={paramNames ?? urlConstants.registrZadavatelu.paramNames}>\r\n </FilterManager>\r\n );\r\n};\r\n\r\nexport default React.memo(RegistryZadavateluFilter);\r\n","import { FC, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { AttrNames } from \"@utils/AttrMapping\";\r\nimport { ISubjektModel, SubjektAttrMap } from \"@models/ISubjektModel\";\r\nimport RegistryZadavateluFilter from \"./RegistryZadavateluFilter\";\r\nimport { columnWidths, ListFrame, ListFrameColumns } from \"@components/ListFrame\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport Paginator from \"@components/Pagination\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\n\r\nexport const ON_PAGE_ROWS = 50;\r\n\r\nconst columns: ListFrameColumns<ISubjektModel> = [\r\n {\r\n attrName: 'nazevOrganizace',\r\n locKey: 'NEN-812506',\r\n width: '200%'\r\n },\r\n {\r\n attrName: 'ico',\r\n locKey: 'NEN-812508',\r\n width: columnWidths.ico\r\n },\r\n {\r\n attrName: 'kategorieZadavatele',\r\n locKey: 'NEN-812532',\r\n },\r\n {\r\n attrName: 'nutsKod',\r\n locKey: 'NEN-812777',\r\n }\r\n];\r\n\r\nconst registrZadavateluLoadKey = 'registr-zadavatelu-seznam';\r\nconst paramNames = urlConstants.registrZadavatelu.paramNames;\r\nconst fulltextAttributes: AttrNames<ISubjektModel> = ['nazevOrganizace', 'ico', 'nutsKod'];\r\n\r\nconst RegistrZadavatelu: FC = () => {\r\n const { t } = useLocalization();\r\n usePageTitle(t('NEN-602386'));\r\n useDescription(t('NEN-789443'));\r\n\r\n const frameContainer = useRef<HTMLDivElement>(null);\r\n\r\n return (\r\n <>\r\n <h2 className='u-sr-only'>{t('NEN-602386')}</h2>\r\n <ContentBlock>\r\n <RegistryZadavateluFilter id={registrZadavateluLoadKey} paramNames={paramNames} />\r\n <ListFrame\r\n listFrameKey={registrZadavateluLoadKey}\r\n condition=\"(Zadavatel = true or sdruzeni_zadav = true) and Plati_DO = null and vedouci_sdruzeni=null\"\r\n paramNames={paramNames}\r\n fulltextAttributes={fulltextAttributes}\r\n orderBy={useOrderByMemo<ISubjektModel>(\"nazevOrganizace\", { desc: true, column: \"id\" })}\r\n onPageCount={ON_PAGE_ROWS}\r\n skeletonCount={ON_PAGE_ROWS}\r\n attrMapping={SubjektAttrMap}\r\n detailLinkFactory={detailLinks.getDetailSubjektLinkFactory()}\r\n columns={columns} />\r\n </ContentBlock>\r\n <Paginator\r\n loadMoreButton\r\n scrollToRef={frameContainer}\r\n collectionKey={registrZadavateluLoadKey} />\r\n </>\r\n );\r\n}\r\n\r\nexport default RegistrZadavatelu;\r\n","import Tabs from \"@components/Tabs\";\r\nimport React, { FC } from \"react\"\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport RegistrDodavatelu from \"../registrySubjektu/RegistryDodavatelu\";\r\nimport RegistrZadavatelu from \"../registrySubjektu/RegistryZadavatelu\";\r\n\r\nconst RegistryPages: FC = () => {\r\n return (\r\n <Tabs\r\n noMargin\r\n tabs={\r\n [\r\n {\r\n lockey: 'NEN-602386',\r\n path: urlConstants.registrZadavatelu.path,\r\n component: RegistrZadavatelu\r\n },\r\n {\r\n lockey: 'NEN-602387',\r\n path: urlConstants.registrDodavatelu.path,\r\n component: RegistrDodavatelu\r\n },\r\n ]\r\n } />\r\n );\r\n};\r\n\r\nRegistryPages.displayName = 'RegistryPages';\r\n\r\nexport default React.memo(RegistryPages);\r\n","import React, { CSSProperties, PropsWithChildren, ReactEventHandler, useEffect, useRef } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { combineRefs } from \"@utils/CombineRefs\";\r\n\r\nconst cn = setupCn('resizable-iframe');\r\n\r\nexport type ResizableIframeProps = PropsWithChildren<{\r\n className?: Classes;\r\n id?: string;\r\n src: string;\r\n onLoad?: ReactEventHandler<HTMLIFrameElement>;\r\n visibility?: CSSProperties['visibility'];\r\n label?: string;\r\n}>;\r\n\r\nconst ResizableIframe = React.forwardRef<HTMLIFrameElement, ResizableIframeProps>(({\r\n className,\r\n src,\r\n id,\r\n onLoad,\r\n visibility,\r\n label\r\n}, iframeRef) => {\r\n const innerRef = useRef<HTMLIFrameElement>(null);\r\n\r\n useEffect(() => {\r\n //lazy loading otherwise crashes in Node\r\n import(\"iframe-resizer\").then(iframeResizer => {\r\n const iframeR = innerRef?.current;\r\n if (iframeR) {\r\n iframeResizer.iframeResizer({\r\n heightCalculationMethod: 'bodyScroll'\r\n }, iframeR);\r\n }\r\n });\r\n }, [])\r\n\r\n return (\r\n <iframe\r\n style={{ visibility: visibility, display: visibility == 'hidden' ? 'none' : '' }}\r\n src={src}\r\n ref={combineRefs(innerRef, iframeRef)}\r\n frameBorder={0}\r\n className={cn.with(className)()}\r\n id={id}\r\n onLoad={onLoad}\r\n title={label}\r\n role={label ? '' : 'presentation'}\r\n width=\"100%\" />\r\n );\r\n});\r\n\r\nResizableIframe.displayName = 'ResizableIframe';\r\n\r\nexport default ResizableIframe;\r\n","import React, { RefObject, useEffect, useState } from \"react\";\r\nimport { useWidgetDetailRedirect } from \"@store/nodeContextStore\";\r\nimport { Redirect, useLocation } from \"react-router\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\n\r\nconst RedirectToDetail: React.FC<{\r\n baseDetailUrl: string | undefined;\r\n detailUrl: string | undefined;\r\n iframeRef: RefObject<HTMLIFrameElement>;\r\n}> = ({ baseDetailUrl, detailUrl, iframeRef }) => {\r\n const { url, reset } = useWidgetDetailRedirect();\r\n const [redirect, setRedirect] = useState(false);\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (url?.source == iframeRef?.current?.contentWindow) {\r\n if (/^https?/.test(url?.url)) {\r\n const newWindow = window.open(url.url, '_blank', 'noopener,noreferrer');\r\n if (newWindow)\r\n newWindow.opener = null;\r\n\r\n reset();\r\n } else if (/^\\?id=/.test(url?.url)) {\r\n setRedirect(true);\r\n }\r\n }\r\n }, [url, setRedirect, baseDetailUrl, reset, iframeRef]);\r\n\r\n let base = baseDetailUrl ?? location.pathname;\r\n const detail = detailUrl ?? urlConstants.detailInformace.pureUrl;\r\n\r\n if (base.endsWith('/')) {\r\n base = base.slice(0, -1);\r\n }\r\n\r\n if (detail && base.includes(detail)) {\r\n base = base.substring(0, base.indexOf(detail));\r\n }\r\n\r\n if (redirect && (base || detail))\r\n return <Redirect push to={`${base}${detail}${url?.url}`} />\r\n\r\n return null;\r\n}\r\n\r\nRedirectToDetail.displayName = 'RedirectToDetail';\r\n\r\nexport default RedirectToDetail;","import React, { useEffect, useRef } from \"react\"\r\nimport ResizableIframe from \"@components/ResizableIframe/ResizableIframe\";\r\nimport Loader from \"@components/Loader\";\r\nimport { useLoadState } from \"@utils/StateUtils\";\r\nimport { useScrollToTop } from \"@utils/ReactUtils\";\r\nimport RedirectToDetail from \"@components/Widgets/RedirectToDetail\";\r\nimport { combineRefs } from \"@utils/CombineRefs\";\r\n\r\nconst LargeWidget = React.forwardRef<HTMLIFrameElement, {\r\n src: string,\r\n withoutLoader?: boolean,\r\n baseDetailUrl?: string;\r\n detailUrl?: string;\r\n label?: string;\r\n}>(({ src, withoutLoader, baseDetailUrl, detailUrl, label }, iframeRef) => {\r\n const innerRef = useRef<HTMLIFrameElement>(null);\r\n const { isLoaded, onLoad, setLoaded } = useLoadState();\r\n useEffect(() => { setLoaded(false); }, [src, setLoaded]);\r\n useScrollToTop();\r\n\r\n if (!src)\r\n return null;\r\n\r\n return (\r\n <>\r\n <RedirectToDetail\r\n baseDetailUrl={baseDetailUrl}\r\n detailUrl={detailUrl}\r\n iframeRef={innerRef} />\r\n {isLoaded || withoutLoader ? null : <Loader />}\r\n <ResizableIframe\r\n ref={combineRefs(innerRef, iframeRef)}\r\n label={label}\r\n visibility={isLoaded ? 'visible' : 'hidden'}\r\n onLoad={onLoad}\r\n src={src} />\r\n </>\r\n );\r\n});\r\n\r\nLargeWidget.displayName = 'LargeWidget';\r\n\r\nexport default LargeWidget;","import React, { FC, useCallback, useEffect, useLayoutEffect, useRef, useState } from \"react\";\r\nimport LargeWidget from \"@components/Widgets/LargeWidget\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nconst DetailInformace: FC = () => {\r\n const { getDetailWidgetUrl, updateDetailWidgetLanguage } = useAppSettings();\r\n const location = useLocation();\r\n const [url, setUrl] = useState<string>(location.search);\r\n const iframeRef = useRef<HTMLIFrameElement>(null);\r\n\r\n useEffect(() => {\r\n setUrl(updateDetailWidgetLanguage(location.search));\r\n }, [updateDetailWidgetLanguage, location, location.search, setUrl]);\r\n\r\n const scrollUp = useCallback(async (event: MessageEvent) => {\r\n if (event?.source == iframeRef?.current?.contentWindow\r\n && event.data == 'ScrollUp') {\r\n setTimeout(() => {\r\n const rect = iframeRef?.current?.getBoundingClientRect();\r\n if (rect) {\r\n window.scrollTo({ top: rect.top + 25, behavior: 'smooth' });\r\n }\r\n }, 800);\r\n }\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n window.addEventListener('message', scrollUp);\r\n return () => {\r\n window.removeEventListener('message', scrollUp);\r\n };\r\n }, [scrollUp]);\r\n\r\n return <LargeWidget ref={iframeRef} src={getDetailWidgetUrl() + url} />\r\n};\r\n\r\nDetailInformace.displayName = 'DetailInformace';\r\n\r\nexport default React.memo(DetailInformace);\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport type LoginInfo = {\r\n userName?: string,\r\n name?: string,\r\n isLogged: boolean\r\n}\r\n\r\ntype StopInterval = () => void;\r\n\r\ntype LoginModules = {\r\n login: (loginCredentials: ILoginCredentials) => Promise<LoginResult>;\r\n loginWithToken: (token: string) => Promise<LoginResult>;\r\n logout: () => Promise<void>;\r\n getLoginState: () => Promise<LoginInfo>;\r\n redirectToApp: () => void;\r\n initCheckLoginInterval: (callback: () => void) => StopInterval;\r\n changeLanguage: (language: string) => void;\r\n tryChangeLanguage: (language: string) => Promise<string>;\r\n}\r\n\r\nconst requireAsync = (...modules: string[]) => new Promise<any>((resolve, reject) => {\r\n requirejs(modules, (...loadedModules: any[]) => resolve(loadedModules), reject)\r\n});\r\n\r\nconst replaceFunction = (obj: any, name: any, funcFactory: (oldFunction: Function) => Function) => {\r\n obj[name] = funcFactory(obj[name]);\r\n}\r\n\r\nlet getLoginModulesPromise: Promise<LoginModules>;\r\nexport const getLoginModules = () => getLoginModulesPromise ??= new Promise<LoginModules>(async (resolve, reject) => {\r\n await requireAsync('js/TescoSW.Sources.js', 'js/nenmultiweb.js');\r\n const [appConfigurationModule, globalContextModule] = await requireAsync('Configuration/AppConfiguration', 'Global/Base/GlobalContext');\r\n const { AppConfiguration } = appConfigurationModule;\r\n const { GlobalContext, ContextType } = globalContextModule;\r\n\r\n const fixLoginInIframe = () => {\r\n replaceFunction(GlobalContext, '_get', (oldFunction: any) => function (name: string) {\r\n return oldFunction(name, ContextType.current);\r\n });\r\n replaceFunction(GlobalContext, '_register', (oldFunction: any) => function (name: string, property: any) {\r\n return oldFunction(name, property, ContextType.current);\r\n });\r\n Object.defineProperty(AppConfiguration, 'instance', {\r\n get: function () { return AppConfiguration['_instance']; },\r\n set: function (value) { AppConfiguration['_instance'] = value; }\r\n });\r\n }\r\n\r\n fixLoginInIframe();\r\n const [nen] = await requireAsync('nenmultiweb');\r\n const { loginInit, getLoginState, login, loginWithToken, logout, redirectToApp, initCheckLoginInterval, changeLanguage, tryChangeLanguage } = nen.lightwebAuthManager;\r\n await loginInit();\r\n resolve({\r\n getLoginState,\r\n login,\r\n loginWithToken,\r\n logout,\r\n redirectToApp,\r\n initCheckLoginInterval,\r\n changeLanguage,\r\n tryChangeLanguage,\r\n });\r\n});\r\n\r\nexport type LoginStatus = 'logged' | 'login' | 'loading' | 'error';\r\n\r\nexport const getLoginInfo = async (): Promise<LoginInfo> => {\r\n const { getLoginState } = await getLoginModules();\r\n return await getLoginState();\r\n}\r\n\r\nexport interface ILoginCredentials {\r\n /** Uživatelské jméno */\r\n userName: string;\r\n /** Heslo uživatele */\r\n password: string;\r\n /** Kód jazyka */\r\n language: string;\r\n}\r\n\r\nexport type LoginResult = {\r\n isSucceful: boolean;\r\n isInProgress?: boolean;\r\n errorLocKey?: string;\r\n errorMessage?: string;\r\n errorCode?: string;\r\n afterLoginConfirmLocKey?: string;\r\n}\r\n\r\nexport const login = async (loginCredentials: ILoginCredentials) => {\r\n const { login } = await getLoginModules();\r\n return await login(loginCredentials);\r\n}\r\n\r\nexport const loginWithToken = async (token: string): Promise<LoginResult> => {\r\n const { loginWithToken } = await getLoginModules();\r\n return await loginWithToken(token);\r\n}\r\n\r\nexport const logout = async () => {\r\n const { logout } = await getLoginModules();\r\n await logout();\r\n}\r\n\r\nexport const changeLanguage = async (language: string) => {\r\n const { changeLanguage } = await getLoginModules();\r\n changeLanguage(language);\r\n}\r\n\r\nexport const tryChangeLanguage = async (language: string) => {\r\n const { tryChangeLanguage } = await getLoginModules();\r\n return await tryChangeLanguage(language);\r\n}\r\n\r\nexport const initCheckLoginInterval = async (callback: () => void): Promise<StopInterval> => {\r\n const { initCheckLoginInterval } = await getLoginModules();\r\n return initCheckLoginInterval(callback);\r\n}\r\n\r\nexport const getAppUrl = (search?: string, startSlash?: boolean) => {\r\n const urlParams = new URLSearchParams(search ?? window.location.search);\r\n const appSearch = decodeURIComponent(urlParams.get('appSearch') ?? '');\r\n return `${startSlash ? '/' : ''}main.html${appSearch}`;\r\n}\r\n\r\nexport const redirectToApp = () => {\r\n const currentWindow = top ?? self;\r\n if (currentWindow) {\r\n currentWindow.location.href = getAppUrl();\r\n }\r\n}\r\n\r\nexport const useMwServiceWorker = () => {\r\n const [swLoaded, setSwLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!('serviceWorker' in navigator)) {\r\n return;\r\n }\r\n try {\r\n let refreshing = false;\r\n\r\n // detect controller change and refresh the page\r\n navigator.serviceWorker.addEventListener('controllerchange', () => {\r\n if (!refreshing) {\r\n console.log('[Service Worker] reload');\r\n window.location.reload();\r\n refreshing = true;\r\n }\r\n })\r\n\r\n let timeout: number;\r\n navigator.serviceWorker.register('js/serviceworker/TescoSW.ServiceWorker.Loader.js', { scope: './' })\r\n .then(registration => {\r\n try {\r\n if (registration.waiting) {\r\n console.log('[Service Worker] installed');\r\n registration.waiting.postMessage('update');\r\n } else {\r\n timeout = window.setTimeout(() => {\r\n setSwLoaded(true);\r\n }, 500);\r\n }\r\n const existed = !!registration.active;\r\n\r\n registration.addEventListener('updatefound', () => {\r\n window.clearTimeout(timeout);\r\n const { installing } = registration;\r\n if (installing) {\r\n installing.addEventListener('error', () => setSwLoaded(true));\r\n installing.addEventListener('statechange', event => {\r\n const sw = event.target as ServiceWorker;\r\n const { waiting } = registration;\r\n if (registration.installing) {\r\n return;\r\n }\r\n if (sw.state == 'redundant' || !waiting) {\r\n console.log('[Service Worker] redundant');\r\n setSwLoaded(true);\r\n return;\r\n }\r\n if (existed) {\r\n waiting.postMessage('update');\r\n console.log('[Service Worker] installed');\r\n window.location.reload();\r\n return;\r\n }\r\n setSwLoaded(true);\r\n console.log('[Service Worker] initialized for the first time');\r\n });\r\n setSwLoaded(false);\r\n }\r\n });\r\n } catch (e) {\r\n setSwLoaded(true);\r\n console.error(e);\r\n }\r\n });\r\n } catch (e) {\r\n setSwLoaded(true);\r\n console.error(e);\r\n }\r\n }, [setSwLoaded]);\r\n\r\n return { swLoaded };\r\n}\r\n","import { ArrayValues } from \"@utils/TypeUtils\";\r\n\r\nconst colorClassPrefix = 'color--';\r\n\r\nconst colorsNames = [\r\n 'blue',\r\n 'grey-dark',\r\n 'white',\r\n 'blue-dark',\r\n 'blue-focus',\r\n 'blue-light',\r\n 'blue-inactive-1',\r\n 'blue-inactive-2',\r\n 'blue-inactive-3',\r\n 'blue-hover',\r\n 'grey-mid',\r\n 'grey-light',\r\n 'grey-inactive',\r\n 'grey-bg',\r\n 'yellow',\r\n 'yellow-dark',\r\n 'error',\r\n 'success',\r\n 'grey-dark-rgb',\r\n 'white-rgb',\r\n] as const;\r\n\r\nconst colors: Record<string, string> = {};\r\ncolorsNames.forEach(color => {\r\n const className = `${colorClassPrefix}${color}`;\r\n colors[color] = className;\r\n});\r\n\r\ntype ColorsClassesEnum = {\r\n [K in ArrayValues<typeof colorsNames>]: `${typeof colorClassPrefix}${K}`\r\n};\r\n\r\nexport default colors as ColorsClassesEnum;\r\n","import { DependencyList, useLayoutEffect } from \"react\";\r\n\r\nexport const useWindowMessage = <T = any>(actionName: string, callback: (payload: T) => void, deps: DependencyList = []) => {\r\n useLayoutEffect(() => {\r\n const listener = async (event: MessageEvent) => {\r\n console.debug('[WindowMessage - Recieved]', event.data);\r\n if (typeof event?.data != 'object') {\r\n return;\r\n }\r\n if (event.data.action == actionName) {\r\n callback(event.data.payload);\r\n }\r\n }\r\n window.addEventListener('message', listener);\r\n return () => {\r\n window.removeEventListener('message', listener);\r\n };\r\n }, deps);\r\n}\r\n\r\nexport const postWindowMessage = <T = any>(window: Window | undefined | null, actionName: string, payload: T) => {\r\n const action = {\r\n action: actionName,\r\n payload\r\n };\r\n console.debug('[WindowMessage - Post]', action);\r\n window?.postMessage(action, '*');\r\n}\r\n","import React, { FC, FormEventHandler, PropsWithChildren, ReactNode, useCallback, useEffect, useLayoutEffect, useRef, useState } from \"react\"\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport FilterInput from \"@components/FilterInput/FilterInput\";\r\nimport Button from \"@components/Button/Button\";\r\nimport { tryChangeLanguage, getAppUrl, getLoginInfo, initCheckLoginInterval, login, LoginInfo, LoginResult, loginWithToken, logout, redirectToApp, useMwServiceWorker } from \"@utils/LoginUtils\";\r\nimport { useCurrentLanguage, actionCreators, useLocalization } from \"@store/localizationStore\";\r\nimport { renderIf } from \"@utils/RenderUtils\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { FilterManagerChangeEventHandler } from \"@components/FilterManager\";\r\nimport Blockquote from \"@components/Blockquote\";\r\nimport colors from \"@styles/colors\";\r\nimport { postWindowMessage, useWindowMessage } from \"@utils/WindowMessageUtils\";\r\nimport Icon from \"@components/Icon\";\r\nimport './LoginForm.scss';\r\nimport offsets from \"@styles/offsets\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nconst cn = setupCn('login-form');\r\n\r\nexport type LoginFormProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\nconst LoginForm: FC<LoginFormProps> = ({\r\n className,\r\n}) => {\r\n const { ts } = useLocalization();\r\n const { swLoaded } = useMwServiceWorker();\r\n const [loginStatus, setLoginStatus] = useState<LoginInfo | undefined>();\r\n const [loginResult, setLoginResult] = useState<LoginResult | undefined>();\r\n const [userName, setUserName] = useState('');\r\n const [password, setPassword] = useState('');\r\n const location = useLocation();\r\n const userNameInputRef = useRef<HTMLInputElement>(null);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const language = useCurrentLanguage();\r\n\r\n const portalUrl = getAppUrl(location.search, true);\r\n\r\n const updateLoginInfo = useCallback(async () => {\r\n setLoginStatus(await getLoginInfo());\r\n }, []);\r\n\r\n const checkAdminLoginLanguage = useCallback(async (language: string) => {\r\n if (!loginResult && !loginStatus?.isLogged) {\r\n return;\r\n }\r\n\r\n const loginLangLocKey = await tryChangeLanguage(language);\r\n if (loginLangLocKey !== loginResult?.afterLoginConfirmLocKey) {\r\n setLoginResult({\r\n ...(loginResult ?? { isSucceful: loginStatus?.isLogged ?? false }),\r\n afterLoginConfirmLocKey: loginLangLocKey\r\n });\r\n }\r\n }, [loginResult, loginStatus]);\r\n\r\n const handleUserNameChange = useCallback<FilterManagerChangeEventHandler>((_, value) => setUserName(value),\r\n []);\r\n\r\n const handlePasswordChange = useCallback<FilterManagerChangeEventHandler>((_, value) => setPassword(value),\r\n []);\r\n\r\n useEffect(() => {\r\n if (loginResult?.afterLoginConfirmLocKey && !loginStatus?.isLogged) {\r\n setLoginResult(undefined);\r\n }\r\n checkAdminLoginLanguage(language);\r\n }, [loginStatus]);\r\n\r\n useEffect(() => {\r\n updateLoginInfo();\r\n const stopIntervalPromise = initCheckLoginInterval(updateLoginInfo);\r\n return () => {\r\n stopIntervalPromise.then(stopInterval => stopInterval());\r\n };\r\n }, [updateLoginInfo]);\r\n\r\n useWindowMessage('changeLanguage', (payload) =>\r\n dispatch(actionCreators.changeLanguage(payload.language)));\r\n\r\n useEffect(() => {\r\n postWindowMessage(parent, 'requestInitLang', {});\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n const notify = () => postWindowMessage(parent, 'iframeResized', { height: document.body.scrollHeight });\r\n const ro = new ResizeObserver(notify);\r\n notify();\r\n ro.observe(document.body);\r\n return () => {\r\n ro.disconnect();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n checkAdminLoginLanguage(language);\r\n }, [language]);\r\n\r\n useEffect(() => {\r\n postWindowMessage(parent, 'loginStatus', { isLogged: loginStatus?.isLogged });\r\n }, [loginStatus]);\r\n\r\n\r\n const checkLoginResult = useCallback((result: LoginResult) => {\r\n if (result.isSucceful && !result.afterLoginConfirmLocKey) {\r\n redirectToApp();\r\n return;\r\n }\r\n if (result.errorCode && ['InvalidCredentials', 'UserNotFound'].includes(result.errorCode)) {\r\n userNameInputRef.current?.focus();\r\n userNameInputRef.current?.setSelectionRange(0, -1)\r\n }\r\n setLoginResult(result);\r\n }, [])\r\n\r\n const params = new URLSearchParams(location.search);\r\n const token = params.get('token');\r\n\r\n useEffect(() => {\r\n if (!token) {\r\n return;\r\n }\r\n\r\n loginWithToken(token).then(result => checkLoginResult(result))\r\n }, [token, checkLoginResult]);\r\n\r\n\r\n const handleLogin = useCallback<FormEventHandler>(event => {\r\n event.preventDefault();\r\n\r\n if (loginResult?.isInProgress) {\r\n return;\r\n }\r\n\r\n setLoginResult({ isSucceful: false, isInProgress: true });\r\n login({ userName, password, language })\r\n .then(result => checkLoginResult(result))\r\n .catch((error: Error) => {\r\n setLoginResult({\r\n isSucceful: false,\r\n errorMessage: error.message\r\n });\r\n });\r\n }, [userName, password, language, loginResult?.isInProgress, checkLoginResult]);\r\n\r\n const handleLogout = useCallback<FormEventHandler>(() => {\r\n setLoginStatus(undefined);\r\n logout().then(updateLoginInfo);\r\n }, [updateLoginInfo]);\r\n\r\n const render = (content: ReactNode) => (\r\n <div className={cn.with(className).main()}>\r\n {content}\r\n </div>\r\n );\r\n\r\n if (loginStatus == null || !swLoaded) {\r\n return render(\r\n <h2 className={offsets[\"u-mb--unset\"]}>\r\n {ts('NEN-749989')}\r\n </h2>\r\n );\r\n }\r\n\r\n if (loginStatus.isLogged) {\r\n return render(<>\r\n <h2>\r\n {ts('NEN-749988')}{' '}\r\n {loginStatus.userName}\r\n </h2>\r\n {renderIf(loginStatus.name,\r\n <p>\r\n <strong>{loginStatus.name}</strong>\r\n </p>\r\n\r\n )}\r\n {loginResult?.afterLoginConfirmLocKey &&\r\n <Blockquote type='information'>{ts(loginResult.afterLoginConfirmLocKey)}</Blockquote>\r\n }\r\n <div>\r\n <Button isOutlined onClick={handleLogout}>{ts('NEN-749991')}</Button>{' '}\r\n <ButtonLink to={portalUrl} target='_top'>\r\n {ts('NEN-749990', { isPrimaryTheme: true })}\r\n <Icon iconName=\"arrow-on\" />\r\n </ButtonLink>\r\n </div>\r\n </>);\r\n }\r\n\r\n let errorMessage: ReactNode = loginResult?.errorMessage;\r\n if (loginResult?.errorLocKey) {\r\n errorMessage = ts(loginResult?.errorLocKey);\r\n }\r\n\r\n return render(\r\n <form method='post' onSubmit={handleLogin}>\r\n {renderIf(errorMessage,\r\n <p className={colors.error}>{errorMessage}</p>\r\n )}\r\n <FilterInput\r\n headerText={ts('NEN-749300')}\r\n inputRef={userNameInputRef}\r\n id='username'\r\n name='username'\r\n autoComplete='username'\r\n value={userName}\r\n onChange={handleUserNameChange}\r\n defaultBehaviorUnset />\r\n <FilterInput\r\n headerText={ts('NEN-749301')}\r\n id='password'\r\n name='password'\r\n type='password'\r\n autoComplete='current-password'\r\n onChange={handlePasswordChange}\r\n defaultBehaviorUnset />\r\n <Button type='submit' disabled={loginResult?.isInProgress}>\r\n {ts('NEN-749299', { isPrimaryTheme: true })}\r\n </Button>\r\n </form>\r\n );\r\n};\r\n\r\nLoginForm.displayName = 'LoginForm';\r\n\r\nexport default React.memo(LoginForm);\r\n","import React, { FC, PropsWithChildren, useEffect, useRef, useState } from \"react\"\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { useCurrentLanguage, useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport \"./LoginFormFrame.scss\";\r\nimport { usePrivatePortal } from \"@store/nodeContextStore\";\r\nimport Blockquote from \"@components/Blockquote\";\r\nimport { postWindowMessage, useWindowMessage } from \"@utils/WindowMessageUtils\";\r\nimport { useAsyncValue } from \"@utils/ReactUtils\";\r\nimport { checkMultiwebTests, checkServiceWorker, TestResult } from \"@components/CompatibilityTest/CompatibilityTests\";\r\nimport Loader from \"@components/Loader\";\r\n\r\nconst cn = setupCn('login-form-frame');\r\n\r\nexport type LoginFormFrameProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\nconst LoginFormFrame: FC<LoginFormFrameProps> = ({\r\n className\r\n}) => {\r\n const timeout = useRef(0);\r\n const { ts } = useLocalization();\r\n const iframeRef = useRef<HTMLIFrameElement>(null);\r\n\r\n const [iframeHeight, setIframeHeight] = useState(80);\r\n\r\n const canLogin = useAsyncValue(async () => await checkMultiwebTests() && checkServiceWorker().result == TestResult.ok, { defaultValue: undefined });\r\n\r\n const currentLanguage = useCurrentLanguage();\r\n\r\n const location = useLocation();\r\n const urlParams = new URLSearchParams(location.search);\r\n\r\n const token = urlParams.get(\"token\");\r\n urlParams.delete(\"token\");\r\n\r\n const urlParamsToString = urlParams.toString();\r\n const appSearch = encodeURIComponent(urlParamsToString ? `?${urlParamsToString}` : '');\r\n\r\n const iframeParams = new URLSearchParams();\r\n\r\n if (appSearch) {\r\n iframeParams.append(\"appSearch\", appSearch);\r\n }\r\n\r\n if (token) {\r\n iframeParams.append(\"token\", token);\r\n }\r\n\r\n const { loginIframeUrl } = usePrivatePortal();\r\n\r\n useEffect(() => {\r\n const postMessage = () => {\r\n window.clearTimeout(timeout.current);\r\n if (iframeRef.current?.contentWindow?.document?.readyState != \"complete\") {\r\n timeout.current = window.setTimeout(postMessage, 100);\r\n return;\r\n }\r\n postWindowMessage(iframeRef.current?.contentWindow, 'changeLanguage', { language: currentLanguage });\r\n }\r\n postMessage();\r\n }, [currentLanguage]);\r\n\r\n useWindowMessage('iframeResized', payload => {\r\n setIframeHeight(payload.height)\r\n });\r\n\r\n useWindowMessage('requestInitLang', () => {\r\n postWindowMessage(iframeRef.current?.contentWindow, 'changeLanguage', { language: currentLanguage });\r\n }, [currentLanguage]);\r\n\r\n return (\r\n canLogin === undefined ?\r\n <Loader withOverlay /> :\r\n canLogin ?\r\n <div className={cn.with(className)()}>\r\n {\r\n !loginIframeUrl ?\r\n <Blockquote type='error'>Autorizovaná Äást je nedostupná.</Blockquote> :\r\n <iframe\r\n ref={iframeRef}\r\n role=\"presentation\"\r\n className={cn('__iframe')}\r\n style={{ height: iframeHeight }}\r\n src={`${loginIframeUrl}?${iframeParams.toString()}`} />\r\n }\r\n </div> :\r\n <Blockquote type='error'>{ts('NEN-787081')}</Blockquote>\r\n );\r\n};\r\n\r\nLoginFormFrame.displayName = 'LoginFormFrame';\r\n\r\nexport default React.memo(LoginFormFrame);\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport ButtonLink from \"@components/Button/ButtonLink\";\r\nimport { useLoadState } from \"@utils/StateUtils\";\r\nimport Loader from \"@components/Loader\";\r\nimport RedirectToDetail from \"@components/Widgets/RedirectToDetail\";\r\n\r\nconst SmallWidget: React.FC<{\r\n src: string,\r\n allLink?: { href: string, titleLockey?: string },\r\n height: string,\r\n withPadding?: boolean,\r\n withoutLoader?: boolean\r\n baseDetailUrl?: string;\r\n detailUrl?: string;\r\n label?: string;\r\n}> = ({ src, allLink, height, withPadding, withoutLoader, baseDetailUrl, detailUrl, label }) => {\r\n const iframeRef = useRef<HTMLIFrameElement>(null);\r\n const { isLoaded, onLoad, setLoaded } = useLoadState();\r\n const { ts, t } = useLocalization();\r\n\r\n useEffect(() => { setLoaded(false); }, [src]);\r\n\r\n if (!src)\r\n return null;\r\n\r\n return (\r\n <>\r\n <RedirectToDetail baseDetailUrl={baseDetailUrl} detailUrl={detailUrl} iframeRef={iframeRef} />\r\n <div style={{ width: '100%' }}>\r\n <div style={{ position: 'relative', padding: withPadding ? '15px 0' : '' }}>\r\n {isLoaded || withoutLoader ? null : <Loader withOverlay />}\r\n <iframe\r\n ref={iframeRef}\r\n src={src}\r\n frameBorder={0}\r\n onLoad={onLoad}\r\n height={height}\r\n style={{ visibility: isLoaded ? 'visible' : 'hidden' }}\r\n title={label}\r\n role={label ? '' : 'presentation'}\r\n width=\"100%\" />\r\n </div>\r\n {\r\n allLink &&\r\n <ButtonLink isOutlined to={allLink.href} aria-label={t(allLink.titleLockey)}>{ts(\"NEN-645393\")}</ButtonLink>\r\n }\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nSmallWidget.displayName = 'SmallWidget';\r\n\r\nexport default SmallWidget;","import { LoginFormFrame } from \"@components/LoginForm\";\r\nimport { urlConstants, useConstants } from \"@constants/urlConstants\";\r\nimport React, { FC, PropsWithChildren, useState } from \"react\"\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn, Classes } from \"@utils/BemUtils\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport SmallWidget from \"@components/Widgets/SmallWidget\";\r\nimport GovLayout from \"@components/GovLayout/GovLayout\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport { joinPath } from \"@utils/PathUtils\";\r\nimport { useWindowMessage } from \"@utils/WindowMessageUtils\";\r\nimport Tabs from \"@components/Tabs\";\r\n\r\nimport './Prihlaseni.scss';\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nconst cn = setupCn('prihlaseni');\r\n\r\nexport type PrihlaseniProps = PropsWithChildren<{\r\n className?: Classes;\r\n}>;\r\n\r\nconst Prihlaseni: FC<PrihlaseniProps> = ({\r\n className\r\n}) => {\r\n const { ts, t } = useLocalization();\r\n const { appSettings, getSmallWidgetUrl } = useAppSettings();\r\n const { anotherEnvironment, loginCaption } = appSettings;\r\n const [loginStatus, setLoginStatus] = useState(false);\r\n const { getUrl } = useConstants();\r\n usePageTitle(t('NEN-749987'));\r\n useDescription(t('NEN-789459'));\r\n\r\n useWindowMessage('loginStatus', payload => {\r\n setLoginStatus(payload.isLogged)\r\n });\r\n\r\n const loginBlock = (\r\n <ContentBlock lockey={loginCaption} height='100%' className={cn('__content')}>\r\n <div className={cn.with(className).main()}>\r\n <LoginFormFrame />\r\n {\r\n !loginStatus &&\r\n <>\r\n <p><UniversalLink to={getUrl('registrace')}>{ts('NEN-749116')}</UniversalLink></p>\r\n <p><UniversalLink to={getUrl('obnoveniUctu')}>{ts('NEN-749297')}</UniversalLink></p>\r\n </>\r\n }\r\n <p><UniversalLink to={getUrl('compatibilityTest')}>{ts('NEN-746935')}</UniversalLink></p>\r\n\r\n {\r\n anotherEnvironment?.loginLocKey && anotherEnvironment.url &&\r\n <p>\r\n {ts('NEN-749117', {\r\n locParams: [\r\n <UniversalLink isExternal to={joinPath(anotherEnvironment.url, getUrl('prihlaseni'))}>\r\n {ts(anotherEnvironment.loginLocKey)}\r\n </UniversalLink>\r\n ]\r\n })}\r\n </p>\r\n }\r\n\r\n </div>\r\n </ContentBlock>\r\n );\r\n\r\n return (\r\n <GovLayout\r\n leftCol={loginBlock}\r\n rightCol={\r\n <ContentBlock height='100%' className={cn.main()}>\r\n <Tabs\r\n displayAsFlex\r\n noMargin\r\n tabs={[\r\n {\r\n lockey: 'NEN-767364',\r\n path: urlConstants.prihlaseni.path,\r\n render: () =>\r\n <SmallWidget\r\n height='400px'\r\n baseDetailUrl={getUrl('provozniInformace')}\r\n src={getSmallWidgetUrl('provozniInformacePrihlaseni')}\r\n allLink={{ href: getUrl('provozniInformace'), titleLockey: 'NEN-786556' }}\r\n withPadding\r\n />\r\n },\r\n ]}\r\n />\r\n </ContentBlock>\r\n }\r\n ratio='1-2'\r\n spreadRight={1} />\r\n );\r\n};\r\n\r\nPrihlaseni.displayName = 'Prihlaseni';\r\n\r\nexport default React.memo(Prihlaseni);\r\n","import { FC } from \"react\"\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport LargeWidget from \"@components/Widgets/LargeWidget\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\n\r\nconst Informace: FC = () => {\r\n const { t } = useLocalization();\r\n const { getAllWidgetUrl } = useAppSettings();\r\n useDescription(t('NEN-789450'));\r\n\r\n return <LargeWidget src={getAllWidgetUrl('provozniInformace')} />\r\n};\r\n\r\nInformace.displayName = 'Informace';\r\n\r\nexport default Informace;\r\n","import Button from \"@components/Button/Button\";\r\nimport Icon from \"@components/Icon/Icon\";\r\nimport GovLink from \"@components/GovLink/GovLink\";\r\nimport { FC } from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { usePageTitle } from \"@utils/PageTitleHook\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport Accordion from \"@components/Accordion\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\n\r\nconst cn = setupCn('design');\r\n\r\nconst Design: FC<RouteComponentProps> = () => {\r\n const { ts, t } = useLocalization();\r\n usePageTitle(t('764292'));\r\n const { getUrl } = useConstants();\r\n\r\n return (\r\n <div className={cn.main()}>\r\n <h2 className={cn('__header')}>{ts('NEN-764293', { width: 500 })}</h2>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <Button size='small'>Small</Button>\r\n <Button>Normal</Button>\r\n <Button size='large'>Big</Button>\r\n\r\n <Button disabled size='small'>Small</Button>\r\n <Button disabled>Normal</Button>\r\n <Button disabled size='large'>Big</Button>\r\n\r\n <Button isOutlined size='small'>Small</Button>\r\n <Button isOutlined>Normal</Button>\r\n <Button isOutlined size='large'>Big</Button>\r\n\r\n <Button isOutlined disabled size='small'>Small</Button>\r\n <Button isOutlined disabled>Normal</Button>\r\n <Button isOutlined disabled size='large'>Big</Button>\r\n </div>\r\n <div style={{ backgroundColor: '#2362a2', padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <Button isInversed size='small'>Small</Button>\r\n <Button isInversed>Normal</Button>\r\n <Button isInversed size='large'>Big</Button>\r\n\r\n <Button disabled isInversed size='small'>Small</Button>\r\n <Button disabled isInversed>Normal</Button>\r\n <Button disabled isInversed size='large'>Big</Button>\r\n\r\n <Button isOutlined isInversed size='small'>Small</Button>\r\n <Button isOutlined isInversed>Normal</Button>\r\n <Button isOutlined isInversed size='large'>Big</Button>\r\n\r\n <Button isOutlined disabled isInversed size='small'>Small</Button>\r\n <Button isOutlined disabled isInversed>Normal</Button>\r\n <Button isOutlined disabled isInversed size='large'>Big</Button>\r\n </div>\r\n\r\n <h2 className={cn('__header')}>{ts('NEN-764389', { width: 500 })}</h2>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')}>Normal</GovLink>\r\n <GovLink to={getUrl('design')} size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')}><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} size='large'><Icon iconName='place' />Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} disabled size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} disabled><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} disabled size='large'><Icon iconName='place' />Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')}>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n\r\n <GovLink to={getUrl('design')} disabled size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} disabled>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} disabled size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isExternal size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isExternal>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isExternal size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isExternal disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isExternal disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isExternal disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} hasArrow size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} hasArrow>Normal</GovLink>\r\n <GovLink to={getUrl('design')} hasArrow size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} hasArrow disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} hasArrow disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} hasArrow disabled size='large'>Big</GovLink>\r\n </div>\r\n\r\n <h3>Standalone</h3>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isStandalone size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isStandalone disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isStandalone size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone size='large'><Icon iconName='place' />Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isStandalone disabled size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled size='large'><Icon iconName='place' />Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isStandalone size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isStandalone>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isStandalone size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n\r\n <GovLink to={getUrl('design')} isStandalone disabled size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isStandalone disabled size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isStandalone isExternal size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone isExternal>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone isExternal size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isStandalone isExternal disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone isExternal disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone isExternal disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isStandalone hasArrow size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone hasArrow>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone hasArrow size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isStandalone hasArrow disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone hasArrow disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isStandalone hasArrow disabled size='large'>Big</GovLink>\r\n </div>\r\n\r\n <div style={{ backgroundColor: '#2362a2' }}>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed size='large'><Icon iconName='place' />Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed disabled size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled size='large'><Icon iconName='place' />Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed disabled size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed disabled size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isExternal size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isExternal>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isExternal size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isExternal disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isExternal disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isExternal disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed hasArrow size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed hasArrow>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed hasArrow size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed hasArrow disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed hasArrow disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed hasArrow disabled size='large'>Big</GovLink>\r\n </div>\r\n <h3 style={{ color: 'white' }}>Standalone</h3>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='large'><Icon iconName='place' />Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='small'><Icon iconName='place' />Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled><Icon iconName='place' />Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='large'><Icon iconName='place' />Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='small'>Small<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled>Normal<Icon iconName='lightbulb' /></GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone disabled size='large'>Big<Icon iconName='lightbulb' /></GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone isExternal disabled size='large'>Big</GovLink>\r\n </div>\r\n <div style={{ padding: '16px', display: 'flex', justifyContent: 'space-evenly', alignItems: 'center' }}>\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow size='large'>Big</GovLink>\r\n\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow disabled size='small'>Small</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow disabled>Normal</GovLink>\r\n <GovLink to={getUrl('design')} isInversed isStandalone hasArrow disabled size='large'>Big</GovLink>\r\n </div>\r\n </div>\r\n\r\n <h2 className={cn('__header')}>Accordion</h2>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion id='accordion-base'>\r\n <Accordion.Page header='Accordion base 1' id='accordion-base1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion base 2' id='accordion-base2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion base 3 - expanded' id='accordion-base3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion base 4' id='accordion-base4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n\r\n <h3>Bordered</h3>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion isBordered id='accordion-bordered'>\r\n <Accordion.Page header='Accordion bordered 1' id='accordion-bordered1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion bordered 2' id='accordion-bordered2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion bordered 3 - expanded' id='accordion-bordered3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion bordered 4' id='accordion-bordered4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n\r\n <h3>As sidebar</h3>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion asSidebar id='accordion-as-sidebar'>\r\n <Accordion.Page header='Accordion as sidebar 1' id='accordion-as-sidebar1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion as sidebar 2' id='accordion-as-sidebar2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion as sidebar 3 - expanded' id='accordion-as-sidebar3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion as sidebar 4' id='accordion-as-sidebar4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n\r\n <h3>As section</h3>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion asSection id='accordion-as-section'>\r\n <Accordion.Page header='Accordion as section 1' id='accordion-as-section1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion as section 2' id='accordion-as-section2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion as section 3 - expanded' id='accordion-as-section3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion as section 4' id='accordion-as-section4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n\r\n <h3>No inner offset</h3>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion noInnerOffset id='accordion-no-inner-offset'>\r\n <Accordion.Page header='Accordion no inner offset 1' id='accordion-no-inner-offset1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion no inner offset 2' id='accordion-no-inner-offset2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion no inner offset 3 - expanded' id='accordion-no-inner-offset3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion no inner offset 4' id='accordion-no-inner-offset4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n\r\n <h3>No inner Y offset</h3>\r\n <div style={{ padding: '6rem' }}>\r\n <Accordion noInnerYOffset id='accordion-no-inner-y-offset'>\r\n <Accordion.Page header='Accordion no inner y offset 1' id='accordion-no-inner-y-offset1'>\r\n Prvnà obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion no inner y offset 2' id='accordion-no-inner-y-offset2'>\r\n Druhý obsah\r\n </Accordion.Page>\r\n <Accordion.Page isExpanded header='Accordion no inner y offset 3 - expanded' id='accordion-no-inner-y-offset3'>\r\n TÅ™età obsah\r\n </Accordion.Page>\r\n <Accordion.Page header='Accordion no inner y offset 4' id='accordion-no-inner-y-offset4'>\r\n ÄŒtvrtý obsah\r\n </Accordion.Page>\r\n </Accordion>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Design;\r\n","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IParametrPolozkyHistModel = IData & {\r\n vlastnostHodnota: string;\r\n vlastnostNazev: string;\r\n operator: string;\r\n}\r\n\r\nexport const ParametrPolozkyHistModelAttrMap = new AttrMapping<IParametrPolozkyHistModel>('Parametr_predm_hist', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'operator', serverName: 'Operator', type: 'string' },\r\n { clientName: 'vlastnostHodnota', serverName: 'Hodnota_vlastnosti', type: 'string' },\r\n { clientName: 'vlastnostNazev', serverName: 'Nazev_vlastnosti', type: 'string' },\r\n]);\r\n","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { IPolozkaPredmetuHistModel, PolozkaPredmetuHistAttrMap } from \"@models/IPolozkaPredmetuHistModel\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { IParametrPolozkyHistModel, ParametrPolozkyHistModelAttrMap } from \"@models/IParametrPolozkyHistModel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumn } from \"@components/ListFrame\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\n\r\nconst DataLabel = DataLabelTyped<IPolozkaPredmetuHistModel>();\r\n\r\nconst detailDetailPolozkaPredmLoadkey = 'detail-polozka';\r\nconst DependentListFrame = DependentListFrameTyped<IPolozkaPredmetuHistModel>();\r\n\r\nconst DetailPolozkaPredm: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailDetailPolozkaPredm.detailIdParam] || '');\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={PolozkaPredmetuHistAttrMap}\r\n loadKey={detailDetailPolozkaPredmLoadkey}\r\n >\r\n <DetailPolozka />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailPolozka: React.FC = () => {\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812723\" >\r\n <DataLabel lockey=\"NEN-812571\" attrName='nazevPolozky' fillGrid />\r\n <DataLabel lockey=\"NEN-812572\" attrName='popisPolozky' fillGrid rawText />\r\n <DataLabel lockey=\"NEN-812585\" attrName='nipezPolozkyKod' />\r\n <DataLabel lockey=\"NEN-812582\" attrName='nipezPolozkyNazev' />\r\n <DataLabel lockey=\"NEN-812749\" attrName='plniDod' />\r\n <DataLabel lockey=\"NEN-812586\" attrName='cpvPolozkyKod' />\r\n <DataLabel lockey=\"NEN-812583\" attrName='cpvPolozkyNazev' />\r\n <DataLabel lockey=\"NEN-812573\" attrName='mnozstvi' />\r\n <DataLabel lockey=\"NEN-812882\" attrName='jednotkaKod' />\r\n <DataLabel lockey=\"NEN-812598\" attrName='predpoklHodnota' />\r\n <DataLabel lockey=\"NEN-812599\" attrName='predpoklHodnotaMJ' />\r\n <DataLabel lockey=\"NEN-812828\" attrName='popisMistoPlneni' showIf=\"Hist.Misto_k_celku = true\" fillGrid />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812576\" fillContent>\r\n <ListFrameParametr />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812699\" fillContent>\r\n <ListFrameDokum />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst parametrModelColumns: ListFrameColumn<IParametrPolozkyHistModel>[] = [\r\n {\r\n attrName: 'vlastnostNazev',\r\n locKey: 'NEN-812577',\r\n width: 300\r\n },\r\n {\r\n attrName: 'operator',\r\n locKey: 'NEN-812579',\r\n width: 150\r\n },\r\n {\r\n attrName: 'vlastnostHodnota',\r\n locKey: 'NEN-812578',\r\n width: 200\r\n }\r\n];\r\n\r\nconst ListFrameParametr: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailDetailPolozkaPredmLoadkey + '-parametr'}\r\n condition=\"Polozka=@0\"\r\n conditionParams={'id'}\r\n orderBy='vlastnostNazev'\r\n lightVersion\r\n attrMapping={ParametrPolozkyHistModelAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'par', routeParamName: urlConstants.detailDetailPolozkaPredm.urlRouteParam })}\r\n columns={parametrModelColumns} />\r\n );\r\n}\r\n\r\nconst dokumModelColumns: ListFrameColumn<IUverejnenyDokumModel>[] = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFrameDokum: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailDetailPolozkaPredmLoadkey + '-dokum-polozka'}\r\n condition=\"ZP=@0 and Polozka=@1 and Uverejnen=true\"\r\n conditionParams={['zpID', 'id']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dpd', routeParamName: urlConstants.detailDetailPolozkaPredm.urlRouteParam })}\r\n columns={dokumModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n\r\n}\r\n\r\nexport default DetailPolozkaPredm;","import React from 'react'\r\nimport GovLayout from '@components/GovLayout/GovLayout';\r\nimport { useLocalization } from '@store/localizationStore'\r\nimport { usePageTitle } from '@utils/PageTitleHook'\r\nimport ContentBlock from '@components/ContentBlock';\r\nimport UniversalLink from '@components/UniversalLink/UniversalLink';\r\nimport offsets from '@styles/offsets';\r\nimport { MdOutlineHandyman } from 'react-icons/md';\r\nimport Icon from '@components/Icon';\r\nimport { useScrollToTop } from '@utils/ReactUtils';\r\n\r\nconst verzeProOdstavku = () => {\r\n const { ts, t } = useLocalization();\r\n\r\n useScrollToTop();\r\n\r\n usePageTitle(t('NEN-768774'));\r\n\r\n return (\r\n <GovLayout\r\n ratio='1-2'\r\n spreadRight={3}\r\n leftCol={\r\n <div>\r\n <h2 className=\"gov-title--alpha\">{ts('NEN-768774')}</h2>\r\n <Icon icon={MdOutlineHandyman} size=\"32\" />\r\n </div>\r\n }\r\n rightCol={\r\n <>\r\n <ContentBlock>\r\n <p className={offsets['u-mb--25']}>\r\n {ts('NEN-768775')}\r\n </p>\r\n <p>\r\n {ts('NEN-768810')}\r\n </p>\r\n </ContentBlock>\r\n\r\n <ContentBlock>\r\n <p>\r\n {ts('NEN-754476')}\r\n <UniversalLink to=\"mailto:hotline@nipez.cz\" title=\"hotline@nipez.cz\" isExternal sameTarget>\r\n hotline@nipez.cz\r\n </UniversalLink>\r\n {ts('NEN-754478')}\r\n <UniversalLink to=\"https://nen.nipez.cz/servicedesk/\" title=\"ServiceDesk\" isExternal>\r\n ServiceDesk\r\n </UniversalLink>\r\n </p>\r\n </ContentBlock>\r\n </>\r\n }\r\n />\r\n )\r\n};\r\n\r\nexport default React.memo(verzeProOdstavku);\r\n","import { FC } from \"react\"\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport LargeWidget from \"@components/Widgets/LargeWidget\";\r\n\r\nconst Skoleni: FC = () => {\r\n const { getAllWidgetUrl } = useAppSettings();\r\n\r\n return <LargeWidget src={getAllWidgetUrl('skoleni')} />\r\n};\r\n\r\nSkoleni.displayName = 'Skoleni';\r\n\r\nexport default Skoleni;","import { FC } from \"react\"\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport LargeWidget from \"@components/Widgets/LargeWidget\";\r\n\r\nconst Videa: FC = () => {\r\n const { getAllWidgetUrl } = useAppSettings();\r\n\r\n return <LargeWidget src={getAllWidgetUrl('videa')} />\r\n};\r\n\r\nVidea.displayName = 'Videa';\r\n\r\nexport default Videa;","import { FC } from \"react\"\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport LargeWidget from \"@components/Widgets/LargeWidget\";\r\nimport { useDescription } from \"@utils/DescriptionHook\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\n\r\nconst ProvozniRad: FC = () => {\r\n const { t } = useLocalization();\r\n const { getAllWidgetUrl } = useAppSettings();\r\n useDescription(t('NEN-789451'));\r\n\r\n return <LargeWidget src={getAllWidgetUrl('provozniRad')} />\r\n};\r\n\r\nProvozniRad.displayName = 'ProvozniRad';\r\n\r\nexport default ProvozniRad;","import React from \"react\"\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport Button from \"@components/Button/Button\";\r\nimport { useUserCookiesSetings } from \"@store/userCookieSettingsStore\";\r\nimport { useScrollToTop } from \"@utils/ReactUtils\";\r\nimport FormatedText from \"@components/FormatedText/FormatedText\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\n\r\nimport './OsobniUdajeACookies.scss';\r\n\r\nconst personalInfoCn = setupCn('personal-info');\r\n\r\nconst OsobniUdajeACookies: React.FC = () => {\r\n const { ts, t } = useLocalization();\r\n const { openModal } = useUserCookiesSetings();\r\n\r\n useScrollToTop();\r\n\r\n return (\r\n <>\r\n <ContentBlock lockey=\"NEN-791018\">\r\n <table className={personalInfoCn.with(\"gov-table--tablet-block\")()}>\r\n <thead>\r\n <tr>\r\n <th colSpan={2}>{ts(\"NEN-791021\")}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>{ts(\"NEN-791022\")}</td>\r\n <td>\r\n <FormatedText>{ts(\"NEN-791024\")}</FormatedText>{\" \"}\r\n <UniversalLink to=\"mailto:gdpr@mmr.cz\" isExternal sameTarget>\r\n gdpr@mmr.cz\r\n </UniversalLink>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791028\")}</td>\r\n <td>\r\n <p>{ts(\"NEN-791031\")}</p>\r\n <p>{ts(\"NEN-791032\")}</p>\r\n <p>{ts(\"NEN-791034\")}</p>\r\n {ts(\"NEN-791035\")}\r\n <ul>\r\n <li>{ts(\"NEN-791037\")}</li>\r\n <li>{ts(\"NEN-791038\")}</li>\r\n <li>{ts(\"NEN-791039\")}</li>\r\n <li>{ts(\"NEN-791040\")}</li>\r\n <li>{ts(\"NEN-791041\")}</li>\r\n <li>{ts(\"NEN-791042\")}</li>\r\n <li>{ts(\"NEN-791043\")}</li>\r\n <li>{ts(\"NEN-791044\")}</li>\r\n </ul>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791046\")}</td>\r\n <td>{ts(\"NEN-791048\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791049\")}</td>\r\n <td>\r\n <ol>\r\n <li>{ts(\"NEN-791050\")}</li>\r\n <li>{ts(\"NEN-791051\")}</li>\r\n <li>{ts(\"NEN-791052\")}</li>\r\n <li>{ts(\"NEN-791053\")}</li>\r\n <li>{ts(\"NEN-791054\")}</li>\r\n </ol>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791055\")}</td>\r\n <td>\r\n <p><FormatedText>{ts(\"NEN-791056\")}</FormatedText></p>\r\n {ts(\"NEN-791057\")}\r\n <ol>\r\n <li>{ts(\"NEN-791058\")}</li>\r\n <li>{ts(\"NEN-791059\")}</li>\r\n </ol>\r\n <h3>{ts(\"NEN-791060\")}</h3>\r\n {ts(\"NEN-791061\")}{\" \"}<u>{ts(\"NEN-791062\")}</u>.\r\n <ul>\r\n <li>{ts(\"NEN-791063\")}</li>\r\n <li>{ts(\"NEN-791064\")}</li>\r\n <li>\r\n {ts(\"NEN-791067\")}{\" \"}\r\n <UniversalLink to=\"https://nen.nipez.cz\" isExternal>\r\n https://nen.nipez.cz\r\n </UniversalLink>\r\n </li>\r\n <li>{ts(\"NEN-791070\")}</li>\r\n <li>{ts(\"NEN-791071\")}</li>\r\n <li>{ts(\"NEN-791072\")}</li>\r\n </ul>\r\n <h3>{ts(\"NEN-791073\")}</h3>\r\n {ts(\"NEN-791074\")}\r\n <ul>\r\n <li>{ts(\"NEN-791075\")}</li>\r\n <li>{ts(\"NEN-791076\")}</li>\r\n <li>{ts(\"NEN-791077\")}</li>\r\n <li>{ts(\"NEN-791078\")}</li>\r\n <li>{ts(\"NEN-791079\")}</li>\r\n <li>{ts(\"NEN-791080\")}</li>\r\n </ul>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791081\")}</td>\r\n <td>{ts(\"NEN-791082\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791083\")}</td>\r\n <td>{ts(\"NEN-791084\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791085\")}</td>\r\n <td>{ts(\"NEN-791086\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791087\")}</td>\r\n <td>{ts(\"NEN-791088\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791089\")}</td>\r\n <td>{ts(\"NEN-791090\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791091\")}</td>\r\n <td>{ts(\"NEN-791092\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791093\")}</td>\r\n <td>{ts(\"NEN-791092\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791094\")}</td>\r\n <td>{ts(\"NEN-791092\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791095\")}</td>\r\n <td>{ts(\"NEN-791096\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791097\")}</td>\r\n <td>\r\n {ts(\"NEN-791098\")}{\" \"}\r\n <UniversalLink to=\"http://www.uoou.cz/\" isExternal>\r\n {ts(\"NEN-791099\")}\r\n </UniversalLink>.\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791100\")}</td>\r\n <td>{ts(\"NEN-791101\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791102\")}</td>\r\n <td>{ts(\"NEN-791103\")}</td>\r\n </tr>\r\n <tr>\r\n <td>{ts(\"NEN-791104\")}</td>\r\n <td>{ts(\"NEN-791105\")}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ContentBlock>\r\n <ContentBlock lockey=\"NEN-791107\">\r\n <p>{ts(\"NEN-791108\")}</p>\r\n <h3>{ts(\"NEN-791109\")}</h3>\r\n <p>{ts(\"NEN-791110\")}</p>\r\n\r\n <table className=\"gov-table--tablet-block\">\r\n <thead>\r\n <tr>\r\n <th>{ts(\"NEN-791111\")}</th>\r\n <th>{ts(\"NEN-791112\")}</th>\r\n <th>{ts(\"NEN-791113\")}</th>\r\n <th>{ts(\"NEN-791114\")}</th>\r\n <th>{ts(\"NEN-791115\")}</th>\r\n <th>{ts(\"NEN-791116\")}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791117\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791121\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791127\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791128\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791129\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791130\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791131\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791132\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791131\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791133\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791134\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791135\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791675\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791673\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791118\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791136\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791137\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791138\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791139\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791140\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791141\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791142\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791143\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791138\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791144\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791140\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791141\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791142\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791145\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}></td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791147\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791148\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791149\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791144\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791150\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791148\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791151\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791144\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-791120\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-791152\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791148\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791153\")}</td> \r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td> \r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-792929\")}</td> \r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-792932\")}</td> \r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-792930\")}</td> \r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td> \r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791158\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-792932\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-792933\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791155\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-792932\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-792934\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-792935\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791119\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-792932\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-792936\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n <tr>\r\n <td data-title={t(\"NEN-791111\")}>{ts(\"NEN-791157\")}</td>\r\n <td data-title={t(\"NEN-791112\")}>{ts(\"NEN-791146\")}</td>\r\n <td data-title={t(\"NEN-791113\")}>{ts(\"NEN-791144\")}</td>\r\n <td data-title={t(\"NEN-791114\")}>{ts(\"NEN-792932\")}</td>\r\n <td data-title={t(\"NEN-791115\")}>{ts(\"NEN-792937\")}</td>\r\n <td data-title={t(\"NEN-791116\")}>{ts(\"NEN-791122\")}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <p>{ts(\"NEN-791160\")}</p>\r\n <p>\r\n {ts(\"NEN-791163\")} (\r\n {\r\n <UniversalLink to=\"https://docs.microsoft.com/cs-cz/azure/azure-monitor/app/app-insights-overview\" isExternal>\r\n {ts(\"NEN-791164\")}\r\n </UniversalLink>\r\n }).\r\n </p>\r\n <p>{ts(\"NEN-791165\")}</p>\r\n </ContentBlock>\r\n <ContentBlock lockey=\"NEN-770174\">\r\n <p>\r\n {ts(\"NEN-770175\")}\r\n </p>\r\n <Button onClick={openModal}>\r\n {ts(\"NEN-770173\")}\r\n </Button>\r\n </ContentBlock>\r\n </>\r\n );\r\n};\r\n\r\nOsobniUdajeACookies.displayName = 'ZpracovaniOsobnichUdaju';\r\n\r\nexport default OsobniUdajeACookies;","import ContentBlock from \"@components/ContentBlock\";\r\nimport UniversalLink from \"@components/UniversalLink/UniversalLink\";\r\nimport { useConstants } from \"@constants/urlConstants\";\r\nimport { useCurrentLanguage, useLocalization } from \"@store/localizationStore\";\r\nimport { useAppSettings } from \"@store/nodeContextStore\";\r\nimport { useSwitchByLanguage } from \"@utils/LanguageUtils\";\r\nimport { FC } from \"react\";\r\n\r\nexport const TextyKRegistracim: FC = ({ children }) => {\r\n const { ts } = useLocalization();\r\n const { appSettings } = useAppSettings();\r\n const { currentLanguage, switchByLanguage } = useSwitchByLanguage();\r\n\r\n const additionalLinks = switchByLanguage(appSettings.registration.additionalLinks);\r\n\r\n return (\r\n <ContentBlock>\r\n <p>\r\n {ts('NEN-785789')}\r\n <UniversalLink to={additionalLinks.documentsForDownload} isExternal>{ts('NEN-821204')}</UniversalLink>\r\n {ts('NEN-821208')}\r\n </p>\r\n {currentLanguage == 'CZ' &&\r\n <p>\r\n <UniversalLink to={additionalLinks.faqGetDigitalSignature} isExternal>{ts('NEN-785811')}</UniversalLink>\r\n {ts('NEN-785812')}\r\n </p>\r\n }\r\n <p>\r\n {ts('NEN-785797')}\r\n <UniversalLink to={additionalLinks.operatingRules} isExternal>{ts('NEN-785798')}</UniversalLink>\r\n {ts('NEN-790332')}\r\n </p>\r\n {children}\r\n </ContentBlock>\r\n )\r\n}\r\n\r\nexport const TextyKRegistracimZadavatel: FC = () => {\r\n const { ts } = useLocalization();\r\n const { getUrl } = useConstants();\r\n const currentLanguage = useCurrentLanguage();\r\n\r\n return (\r\n <TextyKRegistracim>\r\n <p>\r\n {ts('NEN-808272')}\r\n <UniversalLink to={getUrl('registrZadavatelu')} isExternal>{ts('NEN-808274')}</UniversalLink>\r\n {ts('NEN-808297')}\r\n </p>\r\n {currentLanguage == 'EN' &&\r\n <p>\r\n {ts('NEN-815404')}\r\n </p>\r\n }\r\n </TextyKRegistracim>\r\n );\r\n}\r\n\r\nexport const TextyKRegistracimDodavatel: FC = () => {\r\n const { ts } = useLocalization();\r\n const { getUrl } = useConstants();\r\n\r\n return (\r\n <TextyKRegistracim>\r\n <p>\r\n {ts('NEN-808272')}\r\n <UniversalLink to={getUrl('registrDodavatelu')} isExternal>{ts('NEN-808273')}</UniversalLink>\r\n {ts('NEN-808297')}\r\n </p>\r\n </TextyKRegistracim>\r\n );\r\n}\r\n","import React from 'react'\r\nimport LargeWidget from '@components/Widgets/LargeWidget';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport { TextyKRegistracimZadavatel } from '@pages/registrace/TextKRegistracim';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\n\r\nconst RegistraceZadavatel: React.FC = () => {\r\n const { t } = useLocalization();\r\n const { getAllWidgetUrl } = useAppSettings();\r\n useDescription(t('NEN-789457'));\r\n\r\n return (\r\n <>\r\n <TextyKRegistracimZadavatel />\r\n <LargeWidget src={getAllWidgetUrl('registraceZadavatel')} />\r\n </>\r\n );\r\n}\r\n\r\nexport default RegistraceZadavatel;","import React from 'react'\r\nimport LargeWidget from '@components/Widgets/LargeWidget';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { TextyKRegistracimDodavatel } from '@pages/registrace/TextKRegistracim';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\n\r\nconst RegistraceDodavatel: React.FC = () => {\r\n const { t } = useLocalization();\r\n const { getAllWidgetUrl } = useAppSettings();\r\n useDescription(t('NEN-789456'));\r\n\r\n return (\r\n <>\r\n <TextyKRegistracimDodavatel />\r\n <LargeWidget src={getAllWidgetUrl('registraceDodavatel')} />\r\n </>\r\n )\r\n};\r\n\r\nexport default RegistraceDodavatel;","import React from 'react'\r\nimport LargeWidget from '@components/Widgets/LargeWidget';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\nimport { TextyKRegistracimZadavatel } from '@pages/registrace/TextKRegistracim';\r\nimport { useLocalization } from '@store/localizationStore';\r\nimport { useDescription } from '@utils/DescriptionHook';\r\n\r\nconst RegistraceSdruzeni: React.FC = () => {\r\n const { t } = useLocalization();\r\n const { getAllWidgetUrl } = useAppSettings();\r\n useDescription(t('NEN-789458'));\r\n\r\n return (\r\n <>\r\n <TextyKRegistracimZadavatel />\r\n <LargeWidget src={getAllWidgetUrl('registraceSdruzeni')} />\r\n </>\r\n )\r\n};\r\n\r\nexport default RegistraceSdruzeni;","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { useDetailDescription } from \"@utils/DescriptionHook\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumn } from \"@components/ListFrame\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\n\r\nconst detailUverDokumLoadkey = 'detail-dokument';\r\n\r\nconst DataLabel = DataLabelTyped<IUverejnenyDokumModel>();\r\nconst DependentListFrame = DependentListFrameTyped<IUverejnenyDokumModel>();\r\n\r\nconst DetailUverDokum: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailUverDokum.detailIdParam] || '');\r\n const route = urlConstants.detailUverDokum.urlRouteParam;\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={UverejnenyDokumAttrMap}\r\n loadKey={detailUverDokumLoadkey}\r\n >\r\n <DetailDokum routeParamName={route} />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailDokum: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IUverejnenyDokumModel>([\r\n {\r\n lockey: 'NEN-812592'\r\n },\r\n {\r\n lockey: 'NEN-812682',\r\n attrName: 'typDokument'\r\n },\r\n {\r\n lockey: 'NEN-812506',\r\n attrName: 'nazev'\r\n },\r\n {\r\n lockey: 'NEN-812748',\r\n attrName: 'odkazLW'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812852\">\r\n <DataLabel lockey=\"NEN-812571\" attrName='nazevPolozky' />\r\n <DataLabel lockey=\"NEN-812880\" attrName='cisloSmlouva' />\r\n <DataLabel lockey=\"NEN-812563\" attrName='nazev' />\r\n <DataLabel lockey=\"NEN-812682\" attrName='typDokument' />\r\n <DataLabel lockey=\"NEN-812645\" attrName='datumUver' />\r\n <DataLabel lockey=\"NEN-812719\" attrName='uverejnil' />\r\n <DataLabel lockey=\"NEN-812722\" attrName='datumOduverejneni' />\r\n <DataLabel lockey=\"NEN-812721\" attrName='oduverejnil' />\r\n <DataLabel lockey=\"NEN-812715\" attrName='antivir' />\r\n <DataLabel lockey=\"NEN-812591\" attrName='soubor' />\r\n <DataLabel lockey=\"NEN-812590\" attrName='velikost' />\r\n <DataLabel lockey=\"NEN-812589\" attrName='format' />\r\n <DataLabel lockey=\"NEN-812748\" attrName='odkazLW' fillGrid />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-810144\" fillContent showIf='exists(Uverejneny_dokum, Podpis = &ID and Uverejnen = true)'>\r\n <ListFramePodpis routeParamName={routeParamName} />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\nconst podpisModelColumns: ListFrameColumn<IUverejnenyDokumModel>[] = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'podpisDatumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFramePodpis: React.FC<{ routeParamName: string }> = ({\r\n routeParamName }) => {\r\n return (\r\n <DependentListFrame\r\n lightVersion\r\n listFrameKey={detailUverDokumLoadkey + '-podpis'}\r\n condition=\"Podpis=@0 and Uverejnen=true\"\r\n conditionParams={['id']}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'ext', routeParamName })}\r\n detailLinkFactory={detailLinks.getDetailExtPodpisLinkFactory()}\r\n columns={podpisModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n\r\n}\r\n\r\nexport default DetailUverDokum;","import Button from \"@components/Button/Button\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport FormControl from \"@components/FormControl\";\r\nimport Grid from \"@components/Grid\";\r\nimport Icon from \"@components/Icon\";\r\nimport Loader from \"@components/Loader\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { setupCn } from \"@utils/BemUtils\";\r\nimport React, { ChangeEvent, FormEvent, useCallback, useState } from \"react\";\r\nimport { MdClose, MdDone } from \"react-icons/md\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport Note from \"@components/Note\";\r\n\r\nimport './CustomForm.scss';\r\n\r\nconst cn = setupCn('custom-form');\r\nconst cnRule = cn.setupSubCn('__rule');\r\nconst govCn = setupCn('gov-form-control__input');\r\n\r\nexport type CustomFormState = {\r\n [key: string]: {\r\n value?: string;\r\n type?: React.HTMLInputTypeAttribute;\r\n headerText: string;\r\n changedOnce?: boolean;\r\n validation?: ValidationType,\r\n }\r\n}\r\n\r\nexport type ValidationType = {\r\n required?: {\r\n rules?: ValidationRule[];\r\n };\r\n optional?: {\r\n minimalRequired?: number;\r\n lockey?: string;\r\n rules?: ValidationRule[];\r\n };\r\n};\r\nexport type ValidationRule = {\r\n regex?: RegExp;\r\n custom?: (value: string, state: CustomFormState) => boolean;\r\n lockey?: string;\r\n valid?: boolean;\r\n};\r\nexport type CustomFormStateKey = Extract<keyof CustomFormState, string>;\r\nexport type CustomFormStateKeys = Array<CustomFormStateKey>;\r\n\r\nexport type UseCustomFormParams = {\r\n state: CustomFormState,\r\n onSubmit?: (event: FormEvent<HTMLFormElement>, state: CustomFormState) => Promise<void>;\r\n onChange?: (event: ChangeEvent<HTMLInputElement>, state: CustomFormState) => Promise<void>;\r\n}\r\n\r\ntype CustomFormProps = UseCustomFormParams & {\r\n lockey?: string;\r\n formDescLockey?: string;\r\n}\r\n\r\nconst validateField = (state: CustomFormState, fieldName: CustomFormStateKey): ValidationType => {\r\n if (!state[fieldName].validation)\r\n return {};\r\n\r\n const testRule = (rule: ValidationRule) => ({\r\n ...rule,\r\n valid: rule.regex?.test?.(state[fieldName].value ?? '')\r\n ?? rule.custom?.(state[fieldName].value ?? '', state)\r\n ?? false\r\n });\r\n\r\n const requiredRules = state[fieldName].validation?.required?.rules?.map(testRule);\r\n const optionalRules = state[fieldName].validation?.optional?.rules?.map(testRule);\r\n\r\n return {\r\n ...state[fieldName].validation,\r\n required: {\r\n ...state[fieldName].validation?.required,\r\n rules: requiredRules\r\n },\r\n optional: {\r\n ...state[fieldName].validation?.optional,\r\n rules: optionalRules\r\n }\r\n };\r\n};\r\n\r\nconst isRequiredValid = (validation?: ValidationType) =>\r\n (validation?.required?.rules?.every(rule => rule.valid) ?? true)\r\n\r\nconst isOptionalValid = (validation?: ValidationType) =>\r\n (validation?.optional?.rules?.filter(rule => rule.valid).length ?? 0)\r\n >= (validation?.optional?.minimalRequired ?? 0);\r\n\r\nconst isFieldValid = (validation?: ValidationType) =>\r\n isRequiredValid(validation) && isOptionalValid(validation);\r\n\r\nconst validate = (state: CustomFormState, touch?: boolean) => {\r\n let valid = true;\r\n const newState = { ...state };\r\n (Object.keys(newState) as CustomFormStateKeys).forEach(fieldName => {\r\n const validation = validateField(newState, fieldName);\r\n valid = valid && isFieldValid(validation);\r\n newState[fieldName] = {\r\n ...newState[fieldName],\r\n changedOnce: touch ? true : newState[fieldName].changedOnce,\r\n validation: validation\r\n }\r\n });\r\n return { valid, newState };\r\n};\r\n\r\nconst useCustomForm = ({ state, onChange, onSubmit }: UseCustomFormParams) => {\r\n const [formState, setFormState] = useState<CustomFormState>(state);\r\n const [loading, setLoading] = useState(false);\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n const handleSubmit = useCallback(async (event: FormEvent<HTMLFormElement>) => {\r\n event.preventDefault();\r\n setLoading(true);\r\n\r\n try {\r\n const { valid, newState } = validate(formState, true);\r\n setIsValid(valid);\r\n if (!valid) {\r\n setFormState(newState)\r\n return;\r\n }\r\n\r\n await onSubmit?.(event, newState);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [formState, setFormState, setLoading, setIsValid, onSubmit]);\r\n\r\n const handleChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(async event => {\r\n const fieldName = event.target.name as keyof typeof formState;\r\n const state = {\r\n ...formState,\r\n [fieldName]: {\r\n ...formState[fieldName],\r\n changedOnce: true,\r\n value: event.target.value\r\n }\r\n };\r\n const { newState, valid } = validate(state);\r\n setIsValid(valid);\r\n setFormState(newState);\r\n\r\n await onChange?.(event, newState);\r\n }, [formState, setFormState, setIsValid, onChange]);\r\n\r\n return { formState, setFormState, handleSubmit, handleChange, loading, isValid };\r\n}\r\n\r\nconst FormContentWrapper: React.FC<{ lockey: string | undefined }> = ({ lockey, children }) =>\r\n lockey ? <ContentBlock lockey={lockey}>{children}</ContentBlock> : <>{children}</>\r\n\r\nconst CustomForm: React.FC<CustomFormProps> = ({\r\n lockey,\r\n state,\r\n onSubmit,\r\n onChange,\r\n formDescLockey\r\n}) => {\r\n const { ts } = useLocalization();\r\n\r\n const { formState, handleChange, handleSubmit, loading, isValid } = useCustomForm({\r\n state,\r\n onSubmit,\r\n onChange\r\n });\r\n\r\n return (\r\n <form onSubmit={handleSubmit} className={cn()}>\r\n {loading && <Loader withOverlay />}\r\n <FormContentWrapper lockey={lockey}>\r\n <Grid isPlain columns=\"2\">\r\n {\r\n (Object.keys(formState) as CustomFormStateKeys)\r\n .map(fieldName =>\r\n <FormControl\r\n hidden={formState[fieldName].type == 'hidden'}\r\n key={'form_control_' + fieldName}\r\n notEmpty={!!formState[fieldName].value}\r\n headerText={ts(formState[fieldName].headerText)}\r\n hasError={formState[fieldName].changedOnce && !isFieldValid(formState[fieldName].validation)}\r\n labelFor={fieldName}>\r\n <input\r\n className={govCn()}\r\n onChange={handleChange}\r\n type={formState[fieldName].type ?? 'text'}\r\n name={fieldName}\r\n id={fieldName}\r\n value={formState[fieldName].value}\r\n aria-required={true} />\r\n </FormControl>\r\n )\r\n }\r\n </Grid>\r\n {\r\n formDescLockey &&\r\n <Note className=\"form-desc\">{ts(formDescLockey)}</Note>\r\n }\r\n {\r\n ValdiationRuleLabelFactory(formState, 'required')\r\n }\r\n {\r\n ValdiationRuleLabelFactory(formState, 'optional')\r\n }\r\n <Button type=\"submit\" disabled={!isValid}>\r\n {ts(\"NEN-645280\")}\r\n </Button>\r\n </FormContentWrapper>\r\n </form>\r\n );\r\n}\r\n\r\nconst ValdiationRuleLabelFactory = (formState: CustomFormState, type: keyof ValidationType): React.ReactNode =>\r\n (Object.keys(formState) as CustomFormStateKeys)\r\n .map(fieldName => {\r\n return (\r\n <React.Fragment key={fieldName + '_rule-block'}>\r\n {\r\n type == 'optional' && formState[fieldName].validation?.[type]?.lockey &&\r\n <ValdiationRuleLabel\r\n key={type + '_rule-label'}\r\n fieldName={fieldName}\r\n valid={isOptionalValid(formState[fieldName].validation)}\r\n lockey={formState[fieldName].validation?.[type]?.lockey} />\r\n }\r\n {\r\n formState[fieldName].validation?.[type]?.rules\r\n ?.map(rule => rule.lockey &&\r\n <ValdiationRuleLabel\r\n fieldName={fieldName}\r\n isOptional={type == 'optional'}\r\n key={fieldName + rule.lockey}\r\n valid={!!rule.valid}\r\n lockey={rule.lockey} />)\r\n }\r\n </React.Fragment>\r\n );\r\n });\r\n\r\nconst ValdiationRuleLabel: React.FC<{\r\n valid: boolean;\r\n lockey: string | undefined;\r\n fieldName: string;\r\n isOptional?: boolean;\r\n}> = ({ valid, lockey, isOptional, fieldName }) => {\r\n const { ts } = useLocalization();\r\n const match = useRouteMatch();\r\n\r\n return (\r\n <div className={cnRule.main({\r\n '--valid': valid,\r\n '--optional': isOptional\r\n })} aria-invalid={!valid}>\r\n <Icon icon={valid ? MdDone : MdClose} size=\"24\" />\r\n <a tabIndex={valid ? -1 : 0} href={`${match.url}#${fieldName}`} className=\"gov-note\">{ts(lockey)}</a>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CustomForm;","import React, { useCallback, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { getPasswordResetService } from \"@store/nodeContextStore\";\r\nimport CustomForm, { CustomFormState } from \"@components/CustomForm/CustomForm\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { getErrorStoreActions } from \"@store/errorStore\";\r\nimport { emailPattern } from \"@utils/EmailUtils\";\r\n\r\nconst ObnoveniUctu: React.FC = () => {\r\n const { ts } = useLocalization();\r\n const dispatch = useDispatch();\r\n const passwordService = useSelector(getPasswordResetService);\r\n const errorStoreActions = useSelector(getErrorStoreActions);\r\n const [requested, setRequested] = useState(false);\r\n\r\n const onSubmit = useCallback(async (_, state: CustomFormState) => {\r\n const result = await passwordService.resetRequest({\r\n email: state.email?.value?.trim(),\r\n username: state.username?.value?.trim()\r\n });\r\n\r\n if (!result.hasErrors) {\r\n setRequested(true);\r\n } else {\r\n dispatch(errorStoreActions.push(result.errors || ['Form error']));\r\n }\r\n }, [passwordService, setRequested, dispatch, errorStoreActions]);\r\n\r\n if (requested) {\r\n return (\r\n <ContentBlock>\r\n <h3>{ts('NEN-665702')}</h3>\r\n </ContentBlock>\r\n );\r\n }\r\n\r\n return <CustomForm lockey=\"NEN-665604\"\r\n state={{\r\n username: {\r\n value: '',\r\n headerText: 'NEN-749300', //Uživatelské jméno\r\n validation: {\r\n required: {\r\n rules: [\r\n {\r\n regex: /[^\\s]+/,\r\n lockey: 'NEN-775855' //Uživatelské jméno nesmà být prázdné\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n email: {\r\n value: '',\r\n headerText: 'NEN-537477', //Emailová adresa\r\n validation: {\r\n required: {\r\n rules: [\r\n {\r\n regex: /[^\\s]+/,\r\n lockey: 'NEN-775856' //Emailová adresa nesmà být prázdná\r\n },\r\n {\r\n regex: emailPattern,\r\n lockey: 'NEN-775857' //Emailová adresa musà být ve správném tvaru\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n }}\r\n onSubmit={onSubmit} />;\r\n}\r\n\r\nexport default ObnoveniUctu;","import { AttrMapping, IData } from \"@utils/AttrMapping\";\r\n\r\nexport type IAkceptaceZmenyModel = IData & {\r\n username: string;\r\n kod: string;\r\n osJmeno: string;\r\n osPrijmeni: string;\r\n osEmail: string;\r\n patriDoNazev: string;\r\n}\r\n\r\nexport const AkceptaceZmenyAttrMapping = new AttrMapping<IAkceptaceZmenyModel>('Akceptace_zmeny', [\r\n { clientName: 'id', serverName: 'ID', type: 'id' },\r\n { clientName: 'username', serverName: 'Username', type: 'string' },\r\n { clientName: 'kod', serverName: 'Kod', type: 'string' },\r\n { clientName: 'osJmeno', serverName: 'Os.Jmeno', type: 'string' },\r\n { clientName: 'osPrijmeni', serverName: 'Os.Prijmeni', type: 'string' },\r\n { clientName: 'osEmail', serverName: 'Os.eMail_adresa', type: 'string' },\r\n { clientName: 'patriDoNazev', serverName: 'Os.Patri_do.Nazev', type: 'string' }\r\n]);","import React, { Dispatch, SetStateAction, useCallback, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { getPasswordResetService } from \"@store/nodeContextStore\";\r\nimport CustomForm, { CustomFormState } from \"@components/CustomForm/CustomForm\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport { getErrorStoreActions } from \"@store/errorStore\";\r\nimport { useQuery } from \"@utils/QueryHook\";\r\nimport { DetailFrame, useDetailFrameContext } from \"@components/DetailFrame\";\r\nimport { AkceptaceZmenyAttrMapping, IAkceptaceZmenyModel } from \"@models/IAkceptaceZmenyModel\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport GroupBox from \"@components/GroupBox\";\r\n\r\nconst DataLabel = DataLabelTyped<IAkceptaceZmenyModel>();\r\n\r\nconst ZmenaHesla: React.FC = () => {\r\n const { ts } = useLocalization();\r\n const guid = useQuery<{ guid: string }>()?.guid;\r\n const [requestState, setRequestState] = useState({ sucess: false, lockey: '' });\r\n\r\n if (!guid) {\r\n return (\r\n <ContentBlock>\r\n <h3>{ts('NEN-645302')}</h3>\r\n </ContentBlock>\r\n );\r\n }\r\n\r\n if (requestState.lockey) {\r\n return (\r\n <ContentBlock>\r\n <h3>{ts(requestState.lockey)}</h3>\r\n </ContentBlock>\r\n );\r\n }\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID > 0 AND Kod=@0 AND Do > DB.GetDateTime()'\r\n conditionParams={[guid]}\r\n attrMapping={AkceptaceZmenyAttrMapping}\r\n loadKey={'zmena-hesla-detail'}>\r\n <GroupBox lockey=\"NEN-812507\">\r\n <DataLabel lockey=\"NEN-645285\" attrName='username' />\r\n <DataLabel lockey=\"NEN-645286\" attrName='osJmeno' />\r\n <DataLabel lockey=\"NEN-645287\" attrName='osPrijmeni' />\r\n <DataLabel lockey=\"NEN-537477\" attrName='osEmail' />\r\n <DataLabel lockey=\"NEN-645281\" attrName='patriDoNazev' />\r\n <Form setRequestState={setRequestState} guid={guid} />\r\n </GroupBox>\r\n </DetailFrame>\r\n );\r\n}\r\n\r\nconst Form: React.FC<{\r\n setRequestState: Dispatch<SetStateAction<{\r\n sucess: boolean, lockey: string\r\n }>>,\r\n guid: string\r\n}> = ({ setRequestState, guid }) => {\r\n const dispatch = useDispatch();\r\n const passwordService = useSelector(getPasswordResetService);\r\n const errorStoreActions = useSelector(getErrorStoreActions);\r\n const { getAttr } = useDetailFrameContext<IAkceptaceZmenyModel>();\r\n\r\n const onSubmit = useCallback(async (_, state: CustomFormState) => {\r\n const result = await passwordService.resetConfirm({\r\n password: state.password?.value?.trim(),\r\n passwordConfirm: state.passwordConfirm?.value?.trim(),\r\n guid: guid\r\n });\r\n\r\n if (!result.hasErrors) {\r\n setRequestState({ sucess: true, lockey: 'NEN-645301' });\r\n } else {\r\n switch (result?.errors?.[0]) {\r\n case \"E1\":\r\n setRequestState({ sucess: false, lockey: 'NEN-645302' });\r\n break;\r\n case \"E2\":\r\n setRequestState({ sucess: false, lockey: 'NEN-645303' });\r\n break;\r\n default:\r\n dispatch(errorStoreActions.push(result.errors || ['Form error']));\r\n }\r\n }\r\n }, [passwordService, setRequestState, dispatch, errorStoreActions]);\r\n\r\n return (\r\n <CustomForm\r\n formDescLockey=\"NEN-645290\" /* Heslo nesmà být stejné jako poslednÃch 12 použitých hesel. */\r\n state={{\r\n username: {\r\n value: getAttr('username')?.value ?? '',\r\n headerText: 'NEN-645285',\r\n type: 'hidden'\r\n },\r\n password: {\r\n value: '',\r\n type: 'password',\r\n headerText: 'NEN-776018',\r\n validation: {\r\n required: {\r\n rules: [\r\n {\r\n regex: /^[^\\s]{12,127}$/,\r\n lockey: 'NEN-776017' /* Délka hesla musà být v rozsahu 12-127 znaků. */\r\n },\r\n {\r\n custom: value => !value?.toLowerCase()?.includes(getAttr('username')?.value?.toLowerCase() ?? ''),\r\n lockey: 'NEN-824099' /* Heslo nesmà obsahovat uživatelské jméno. */\r\n }\r\n ]\r\n },\r\n optional: {\r\n lockey: 'NEN-776020', /* Heslo musà splňovat alespoň 3 ze 4 následujÃcÃch pravidel: */\r\n minimalRequired: 3,\r\n rules: [\r\n {\r\n regex: /[a-z]/,\r\n lockey: 'NEN-645293' /* Heslo obsahuje malé pÃsmena. */\r\n },\r\n {\r\n regex: /[A-Z]/,\r\n lockey: 'NEN-645294' /* Heslo obsahuje velké pÃsmena. */\r\n },\r\n {\r\n regex: /\\d/,\r\n lockey: 'NEN-645295' /* Heslo obsahuje ÄÃslo. */\r\n },\r\n {\r\n regex: /[-+_!@#$&%^*.,?]/,\r\n lockey: 'NEN-645296' /* Heslo obsahuje speciálnà znak. */\r\n },\r\n ]\r\n }\r\n }\r\n },\r\n passwordConfirm: {\r\n value: '',\r\n type: 'password',\r\n headerText: 'NEN-776019',\r\n validation: {\r\n required: {\r\n rules: [\r\n {\r\n custom: (value, state) => value === state.password.value,\r\n lockey: 'NEN-645298' /* Zadaná hesla musejà být stejná. */\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n }}\r\n onSubmit={onSubmit} />\r\n );\r\n}\r\n\r\nexport default ZmenaHesla;","import React from 'react';\r\nimport LargeWidget from '@components/Widgets/LargeWidget';\r\nimport { useAppSettings } from '@store/nodeContextStore';\r\n\r\nconst SkoleniZzvz: React.FC = () => {\r\n const { getAllWidgetUrl } = useAppSettings();\r\n\r\n return <LargeWidget src={getAllWidgetUrl('skoleniZzvz')} />\r\n}\r\n\r\nSkoleniZzvz.displayName = 'SkoleniZzvz';\r\n\r\nexport default React.memo(SkoleniZzvz);","import { FC } from \"react\";\r\nimport { useLocalization } from \"@store/localizationStore\";\r\nimport ContentBlock from \"@components/ContentBlock\";\r\n\r\nexport const Page413: FC = () => {\r\n const { ts } = useLocalization();\r\n\r\n return (\r\n <ContentBlock>\r\n {ts('NEN-804841')}\r\n </ContentBlock>\r\n );\r\n}","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { downloadButtonOnly } from \"@components/Table/Buttons/DownloadAllToolbarButton\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { useStaticObject } from \"@utils/ReactUtils\";\r\nimport { DetailUverejneniAttrMap, IDetailUverejneniModel } from \"@models/IDetailUverejneniModel\";\r\nimport { columnWidths, DependentListFrameTyped, ListFrameColumns } from \"@components/ListFrame\";\r\nimport { useOrderByMemo } from \"@utils/OrderByUtils\";\r\nimport { IInfoUverejneniModel, InfoUverejneniAttrMap } from \"../../models/IInfoUVerejneniModel\";\r\nimport { detailLinks } from \"@constants/detailLinks\";\r\n\r\nconst DependentListFrame = DependentListFrameTyped<IInfoUverejneniModel>();\r\n\r\nconst detailUdajePodLoadkey = 'detail-udaje';\r\n\r\nconst DetaillUdajePod: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailUdajePod.detailIdParam] || '');\r\n\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={InfoUverejneniAttrMap}\r\n loadKey={detailUdajePodLoadkey}>\r\n <DetailVys />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailVys: React.FC = () => {\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-807151\" fillContent>\r\n <ListFrameZpravaPoskytnuti />\r\n </GroupBox>\r\n <GroupBox lockey=\"NEN-812706\" fillContent showIf=\"exists(Uverejneny_dokum, Info_uver=&ID and Info_uver<>null)\">\r\n <ListFramePriloha />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nconst poskytnutiModelColumns: ListFrameColumns<IDetailUverejneniModel> = [\r\n {\r\n attrName: 'textVysvetleni',\r\n locKey: 'NEN-807155'\r\n }\r\n];\r\n\r\nconst ListFrameZpravaPoskytnuti: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailUdajePodLoadkey + '-detail-poskytnuti'}\r\n condition=\"Info_uver=@0\"\r\n conditionParams={'id'}\r\n orderBy='id'\r\n lightVersion\r\n attrMapping={DetailUverejneniAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'pu', routeParamName: urlConstants.detailUdajePod.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getDetailUverejneniLinkFactory()}\r\n columns={poskytnutiModelColumns} />\r\n );\r\n}\r\nconst prilohaModelColumns: ListFrameColumns<IUverejnenyDokumModel> = [\r\n {\r\n attrName: 'soubor',\r\n locKey: 'NEN-812591',\r\n },\r\n {\r\n attrName: 'typDokument',\r\n locKey: 'NEN-812697'\r\n },\r\n {\r\n attrName: 'datumUver',\r\n locKey: 'NEN-812645',\r\n width: columnWidths.dateTime\r\n },\r\n {\r\n attrName: 'antivir',\r\n locKey: 'NEN-812715'\r\n }\r\n];\r\n\r\nconst ListFramePriloha: React.FC = () => {\r\n return (\r\n <DependentListFrame\r\n listFrameKey={detailUdajePodLoadkey + 'priloha'}\r\n condition=\"Info_uver=@0 and Info_uver.Uverejneni = 'UDAJNAB' and Uverejnen = true\"\r\n conditionParams={'id'}\r\n orderBy={useOrderByMemo<IUverejnenyDokumModel>('nazev', 'id')}\r\n lightVersion\r\n attrMapping={UverejnenyDokumAttrMap}\r\n paramNames={useStaticObject({ filterParamName: 'dpu', routeParamName: urlConstants.detailUdajePod.urlRouteParam })}\r\n detailLinkFactory={detailLinks.getUverDokumLinkFactory()}\r\n columns={prilohaModelColumns}\r\n extraButtons={downloadButtonOnly} />\r\n );\r\n}\r\nexport default DetaillUdajePod;\r\n","import React from \"react\";\r\nimport { useRouteMatch } from \"react-router\";\r\nimport { DetailFrame } from \"@components/DetailFrame/DetailFrame\";\r\nimport { urlConstants } from \"@constants/urlConstants\";\r\nimport { UrlParamObject } from \"@utils/QueryHook\";\r\nimport GroupBox from \"@components/GroupBox\";\r\nimport { DataLabelTyped } from \"@components/DataLabel\";\r\nimport { IUverejnenyDokumModel, UverejnenyDokumAttrMap } from \"@models/IUverejnenyDokumModel\";\r\nimport { useDetailDescription } from \"@utils/DescriptionHook\";\r\n\r\nconst detailExtPodpisLoadkey = 'detail-podpis';\r\n\r\nconst DataLabel = DataLabelTyped<IUverejnenyDokumModel>();\r\n\r\nconst DetailExtPodpis: React.FC = () => {\r\n const match = useRouteMatch<UrlParamObject>();\r\n const id = (match?.params[urlConstants.detailExtPodpis.detailIdParam] || '');\r\n const route = urlConstants.detailExtPodpis.urlRouteParam;\r\n return (\r\n <DetailFrame\r\n condition='ID=@0'\r\n conditionParams={[id]}\r\n attrMapping={UverejnenyDokumAttrMap}\r\n loadKey={detailExtPodpisLoadkey}\r\n >\r\n <DetailPodpis routeParamName={route} />\r\n </DetailFrame>\r\n );\r\n}\r\nconst DetailPodpis: React.FC<{ routeParamName: string }> = ({ routeParamName }) => {\r\n useDetailDescription<IUverejnenyDokumModel>([\r\n {\r\n lockey: 'NEN-812592'\r\n },\r\n {\r\n lockey: 'NEN-812682',\r\n attrName: 'typDokument'\r\n },\r\n {\r\n lockey: 'NEN-812506',\r\n attrName: 'nazev'\r\n },\r\n {\r\n lockey: 'NEN-812748',\r\n attrName: 'odkazLW'\r\n }\r\n ]);\r\n\r\n return (\r\n <>\r\n <GroupBox lockey=\"NEN-812852\">\r\n <DataLabel lockey=\"NEN-812563\" attrName='nazev' />\r\n <DataLabel lockey=\"NEN-812682\" attrName='typDokument' />\r\n <DataLabel lockey=\"NEN-812645\" attrName='datumUver' />\r\n <DataLabel lockey=\"NEN-812719\" attrName='uverejnil' />\r\n <DataLabel lockey=\"NEN-812722\" attrName='datumOduverejneni' />\r\n <DataLabel lockey=\"NEN-812721\" attrName='oduverejnil' />\r\n <DataLabel lockey=\"NEN-812715\" attrName='antivir' />\r\n <DataLabel lockey=\"NEN-812591\" attrName='soubor' />\r\n <DataLabel lockey=\"NEN-812590\" attrName='velikost' />\r\n <DataLabel lockey=\"NEN-812589\" attrName='format' />\r\n <DataLabel lockey=\"NEN-812748\" attrName='odkazLW' fillGrid />\r\n </GroupBox>\r\n </>\r\n );\r\n}\r\n\r\nexport default DetailExtPodpis;","import Layout from '@components/Layout/Layout';\r\nimport Home from '@pages/home/Home';\r\nimport { useLocalizationText, UseLocalizationTextType } from '@store/localizationStore';\r\nimport DetailVerejneZakazky from '@pages/detailVerejneZakazky/DetailVerejneZakazky';\r\nimport { SwitchWith404 } from '@components/Routing/SwitchWith404';\r\nimport { urlConstants } from '@constants/urlConstants';\r\nimport VerejneZakazkyPages from '@pages/verejneZakazky/verejneZakazkyPages/VerejneZakazkyPages';\r\nimport { BreadcrumbRoute } from '@components/Breadcrumb/BreadcrumbRoute';\r\nimport CompatibilityTest from '@components/CompatibilityTest/CompatibilityTest';\r\nimport RozcestnikRegistrace from '@pages/registrace/rozcestnikRegistrace';\r\nimport ProhlaseniOPristupnosti from '@pages/prohlaseniOPristupnosti/prohlaseniOPristupnosti'\r\nimport ProfilyZadavateluPages from '@pages/profilyZadavatelu/profilyZadavateluPages/ProfilyZadavateluPages';\r\nimport DetailProfilZadavatele from '@pages/detailProfilZadavatele/DetailProfilZadavatele';\r\nimport DetailDetailUver from '@pages/detailDetailUver/DetailDetailUver';\r\nimport DetailInfoUver from '@pages/detailInfoUver/DetailInfoUver';\r\nimport DetailDodInfo from '@pages/detailDodInfo/DetailDodInfo';\r\nimport DetailDNSystem from '@pages/detailDNSystem/DetailDNSystem';\r\nimport RegistrySubjektuPages from '@pages/registry/registrySubjektuPages/RegistrySubjektuPages';\r\nimport DetailInformace from '@pages/detailInformace/DetailInformace';\r\nimport Prihlaseni from '@pages/prihlaseni/Prihlaseni';\r\nimport Informace from '@pages/informace/Informace';\r\nimport DetailSystemKvalifikace from '@pages/detailSystemKvalifikace/DetailSystemKvalifikace';\r\nimport DetailSubjektu from '@pages/registry/registrySubjektu/detailRegistru/DetailSubjektu';\r\nimport Design from '@pages/design/Design';\r\nimport { UseBreadcrumbTitle, useBreadcrumbTitle } from '@store/breadcrumbTitleStore';\r\nimport { Route, Switch } from 'react-router';\r\nimport LoginForm from '@components/LoginForm';\r\nimport DetailPolozkaPredm from '@pages/detailDetailPolozkaPredm/DetailDetailPolozkaPredm';\r\nimport verzeProOdstavku from '@pages/verzeProOdstavku/verzeProOdstavku'\r\nimport { useAppSettings, useHeartBeat } from '@store/nodeContextStore';\r\nimport Skoleni from '@pages/skoleni/Skoleni';\r\nimport Videa from '@pages/videa/Videa';\r\nimport ProvozniRad from '@pages/provozniRad/ProvozniRad';\r\nimport OsobniUdajeACookies from '@pages/osobniUdajeACookies/OsobniUdajeACookies';\r\nimport RegistraceZadavatel from '@pages/registrace/registraceZadavatel';\r\nimport RegistraceDodavatel from '@pages/registrace/registraceDodavatel';\r\nimport RegistraceSdruzeni from '@pages/registrace/registraceSdruzeni';\r\nimport DetailUverDokum from '@pages/detailUverDokum/DetailUverDokum';\r\nimport ObnoveniUctu from '@pages/obnoveniUctu/ObnoveniUctu';\r\nimport ZmenaHesla from '@pages/zmenaHesla/ZmenaHesla';\r\nimport SkoleniZzvz from '@pages/SkoleniZzvz/SkoleniZzvz';\r\nimport { Page413 } from '@pages/error/Page413';\r\nimport DetaillUdajePod from './pages/detailUdajePod/DetailUdajePod';\r\nimport DetailExtPodpis from './pages/detailExtPodpis/DetailExtPodpis';\r\n\r\nexport default () => {\r\n const t = useLocalizationText();\r\n const getTitle = useBreadcrumbTitle();\r\n const { getOutageVersion } = useAppSettings();\r\n const isOutageVersion = getOutageVersion().enabled;\r\n useHeartBeat();\r\n\r\n return (\r\n <Switch>\r\n <Route path={`*${urlConstants.loginFrame.path}`} component={LoginForm} />\r\n <Route path='/:language(en)?/*' render={() =>\r\n <Layout>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.home.path} brComponent={Home} hideBreadcrumbHome />\r\n <BreadcrumbRoute exact path={urlConstants.skoleniZzvz.path} brComponent={Home} hideBreadcrumbHome />\r\n <BreadcrumbRoute exact path={urlConstants.videa.path} brComponent={Home} hideBreadcrumbHome />\r\n <BreadcrumbRoute exact path={urlConstants.prirucky.path} brComponent={Home} hideBreadcrumbHome />\r\n <BreadcrumbRoute title={t(\"NEN-767365\")} path={urlConstants.provozniRad.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={ProvozniRad} />\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailInformace.path} brComponent={DetailInformace} />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-767461\")} path={urlConstants.skoleniVse.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={Skoleni} />\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailInformace.path} brComponent={DetailInformace} />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-793789\")} path={urlConstants.skoleniZzvzVse.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={SkoleniZzvz} />\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailInformace.path} brComponent={DetailInformace} />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-767964\")} path={urlConstants.videaVse.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={Videa} />\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailInformace.path} brComponent={DetailInformace} />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-767975\")} path={urlConstants.provozniInformace.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={Informace} />\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailInformace.path} brComponent={DetailInformace} />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-700614\")} path={urlConstants.verejneZakazky.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={VerejneZakazkyPages} />\r\n {VerejnaZakazkaDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-700614\")} path={urlConstants.registrDns.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={VerejneZakazkyPages} />\r\n {DNSDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-700614\")} path={urlConstants.vestnik.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={VerejneZakazkyPages} />\r\n {InfoUverDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-700614\")} path={urlConstants.registrSK.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={VerejneZakazkyPages} />\r\n <BreadcrumbRoute title={getTitle.getSkTitle(\"NEN-812878\")} path={urlConstants.registrSKDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.registrSKDetail.pathWithPages} brComponent={DetailSystemKvalifikace} />\r\n {SubjektDetailRoute(t, getTitle, props.match.url)}\r\n {UverDokumDetailRoute(t, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-645406\")} path={urlConstants.profilyZadavateluPlatne.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={ProfilyZadavateluPages} />\r\n {ProfilZadavateleDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-645406\")} path={urlConstants.profilyZadavateluZneplatnene.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={ProfilyZadavateluPages} />\r\n {ProfilZadavateleDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-738419\")} path={urlConstants.registrZadavatelu.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={RegistrySubjektuPages} />\r\n {SubjektDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute title={t(\"NEN-738419\")} path={urlConstants.registrDodavatelu.path} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={RegistrySubjektuPages} />\r\n {SubjektDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute path={urlConstants.rozcestnikRegistrace.path} title={t(\"NEN-767682\")} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.registraceZadavatel.path} brComponent={RegistraceZadavatel} title={t(\"NEN-768724\")} />\r\n <BreadcrumbRoute exact path={urlConstants.registraceDodavatel.path} brComponent={RegistraceDodavatel} title={t(\"NEN-768725\")} />\r\n <BreadcrumbRoute exact path={urlConstants.registraceSpolecneZadavani.path} brComponent={RegistraceSdruzeni} title={t(\"NEN-768726\")} />\r\n <BreadcrumbRoute exact path={props.match.path} brComponent={RozcestnikRegistrace} />\r\n </SwitchWith404>} />\r\n <BreadcrumbRoute exact title={t(\"NEN-744259\")} path={urlConstants.compatibilityTest.path} brComponent={CompatibilityTest} />\r\n <BreadcrumbRoute exact title={t(\"NEN-754428\")} path={urlConstants.prohlaseniOPristupnosti.path} brComponent={ProhlaseniOPristupnosti} />\r\n <BreadcrumbRoute exact title={t(\"NEN-749252\")} path={urlConstants.prihlaseni.path} brComponent={isOutageVersion ? verzeProOdstavku : Prihlaseni} />\r\n <BreadcrumbRoute exact title={t(\"NEN-764292\")} path={urlConstants.design.path} brComponent={Design} />\r\n <BreadcrumbRoute exact title={t(\"NEN-770159\")} path={urlConstants.osobniUdajeACookies.path} brComponent={OsobniUdajeACookies} />\r\n <BreadcrumbRoute exact title={t(\"NEN-665597\")} path={urlConstants.obnoveniUctu.path} brComponent={ObnoveniUctu} />\r\n <BreadcrumbRoute exact title={t(\"NEN-645284\")} path={urlConstants.zmenaHesla.path} brComponent={ZmenaHesla} />\r\n <BreadcrumbRoute title='413' exact path={urlConstants.page413.path} brComponent={Page413} />\r\n </SwitchWith404>\r\n </Layout>\r\n } />\r\n </Switch>\r\n );\r\n}\r\n\r\nconst InfoUverDetailRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string, key?: string) =>\r\n location.includes(urlConstants.detailInfoUver.url) ? null :\r\n <BreadcrumbRoute key={key} title={t(\"NEN-747236\")} path={urlConstants.detailInfoUver.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.detailInfoUver.pathWithPages} brComponent={DetailInfoUver} />\r\n {SubjektDetailRoute(t, getTitle, props.match.url)}\r\n {VerejnaZakazkaDetailRoute(t, getTitle, props.match.url)}\r\n {UverDokumDetailRoute(t, props.match.url)}\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailDetailUver.pathWithPages} brComponent={DetailDetailUver} />\r\n </SwitchWith404>\r\n } />\r\n\r\nconst VerejnaZakazkaDetailRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string) =>\r\n location.includes(urlConstants.verejneZakazkyDetail.url) ? null :\r\n <BreadcrumbRoute title={getTitle.getVZTitle(\"NEN-740359\")} path={urlConstants.verejneZakazkyDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute title={getTitle.getVZTitle(\"NEN-747865\")} path={urlConstants.verejneZakazkyCastiDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.verejneZakazkyCastiDetail.pathWithPages} brComponent={DetailVerejneZakazky} />\r\n {VerejnaZakazkaDetailSubRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n <BreadcrumbRoute exact path={urlConstants.verejneZakazkyDetail.pathWithPages} brComponent={DetailVerejneZakazky} />\r\n {VerejnaZakazkaDetailSubRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n\r\nconst VerejnaZakazkaDetailSubRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string) =>\r\n [\r\n SubjektDetailRoute(t, getTitle, location, \"subjektRoute\"),\r\n DNSDetailRoute(t, getTitle, location, \"dnsRoute\"),\r\n InfoUverDetailRoute(t, getTitle, location, \"infoUverDetailRoute\"),\r\n VysvetleniZDDetailRoute(t, location, \"vysvZdRoute\"),\r\n UverDokumDetailRoute(t, location, \"uverDokumRoute\"),\r\n <BreadcrumbRoute key=\"detailUdajePod\" title={t(\"NEN-807152\")} path={urlConstants.detailUdajePod.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.detailUdajePod.pathWithPages} brComponent={DetaillUdajePod} />\r\n {UverDokumDetailRoute(t, props.match.url)}\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailDetailUver.pathWithPages} brComponent={DetailDetailUver} />\r\n </SwitchWith404>\r\n } />,\r\n <BreadcrumbRoute key=\"detailDetailUver\" title={t(\"NEN-747575\")} path={urlConstants.detailDetailUver.pathWithPages} brComponent={DetailDetailUver} />,\r\n <BreadcrumbRoute key=\"detailDetailPolozkaPredm\" title={t(\"NEN-768487\")} path={urlConstants.detailDetailPolozkaPredm.pathWithPages} brComponent={DetailPolozkaPredm} />\r\n ]\r\n\r\nconst ProfilZadavateleDetailRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string) =>\r\n location.includes(urlConstants.profilZadavateleDetail.url) ? null :\r\n <BreadcrumbRoute title={getTitle.getProfilTitle(\"NEN-744018\")} path={urlConstants.profilZadavateleDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.profilZadavateleDetail.pathWithPages} brComponent={DetailProfilZadavatele} />\r\n {VerejnaZakazkaDetailRoute(t, getTitle, props.match.url)}\r\n {DNSDetailRoute(t, getTitle, props.match.url)}\r\n {UverDokumDetailRoute(t, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n\r\nconst SubjektDetailRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string, key?: string) =>\r\n location.includes(urlConstants.subjektDetail.url) ? null :\r\n <BreadcrumbRoute key={key} title={getTitle.getSubjektTitle(\"NEN-605848\")} path={urlConstants.subjektDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.subjektDetail.pathWithPages} brComponent={DetailSubjektu} />\r\n {ProfilZadavateleDetailRoute(t, getTitle, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n\r\nconst DNSDetailRoute = (t: UseLocalizationTextType, getTitle: UseBreadcrumbTitle, location: string, key?: string) =>\r\n location.includes(urlConstants.registrDnsDetail.url) ? null :\r\n <BreadcrumbRoute key={key} title={getTitle.getDnsTitle(\"NEN-812702\")} path={urlConstants.registrDnsDetail.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.registrDnsDetail.pathWithPages} brComponent={DetailDNSystem} />\r\n {SubjektDetailRoute(t, getTitle, props.match.url)}\r\n {VerejnaZakazkaDetailRoute(t, getTitle, props.match.url)}\r\n {VysvetleniZDDetailRoute(t, props.match.url)}\r\n {UverDokumDetailRoute(t, props.match.url)}\r\n </SwitchWith404>\r\n } />\r\n\r\nconst UverDokumDetailRoute = (t: UseLocalizationTextType, location: string, key?: string) =>\r\n location.includes(urlConstants.detailUverDokum.url) ? null :\r\n <BreadcrumbRoute key={key} title={t(\"NEN-812592\")} path={urlConstants.detailUverDokum.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute exact path={urlConstants.detailUverDokum.pathWithPages} brComponent={DetailUverDokum} />\r\n <BreadcrumbRoute exact title={t(\"NEN-810857\")} path={urlConstants.detailExtPodpis.pathWithPages} brComponent={DetailExtPodpis} />\r\n </SwitchWith404>\r\n } />\r\n\r\nconst VysvetleniZDDetailRoute = (t: UseLocalizationTextType, location: string, key?: string) =>\r\n location.includes(urlConstants.detailDodInfo.url) ? null :\r\n <BreadcrumbRoute key={key} title={t(\"NEN-812843\")} path={urlConstants.detailDodInfo.pathWithPages} render={(props) =>\r\n <SwitchWith404>\r\n <BreadcrumbRoute title={t(\"NEN-747575\")} path={urlConstants.detailDetailUver.pathWithPages} brComponent={DetailDetailUver} />\r\n <BreadcrumbRoute title={t(\"NEN-812592\")} path={urlConstants.detailUverDokum.pathWithPages} brComponent={DetailUverDokum} />\r\n <BreadcrumbRoute title={t(\"NEN-812592\")} path={urlConstants.detailExtPodpis.pathWithPages} brComponent={DetailExtPodpis} />\r\n <BreadcrumbRoute exact path={urlConstants.detailDodInfo.pathWithPages} brComponent={DetailDodInfo} />\r\n </SwitchWith404>\r\n } />","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nconst getMetaValue = (key: string) => document.querySelector<HTMLMetaElement>(`meta[name=${key}]`)?.content;\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const publicPortalPath = getMetaValue('publicPortalPath') ?? `${process.env.PUBLIC_URL}/`;\r\n const swUrl = `${publicPortalPath}service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","// old IE etc.\r\nimport 'core-js/stable'\r\nimport '@design-system/utils/dom';\r\n\r\nimport './styles/main.scss'\r\n\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from '@store/configureStore';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorkerRegistration';\r\nimport { ApplicationState } from '@store/index';\r\nimport { AppSettings, createPrivatePortal, NodeContextHttp, NodeContextState } from '@store/nodeContextStore';\r\nimport { TaskManager } from '@utils/node-utils';\r\nimport LocalizationService from '@services/LocalizationService';\r\nimport { CookieManager } from '@utils/CookiesUtils';\r\nimport { TitleManager } from '@utils/TitleManager';\r\nimport EnumDescriptionService from '@services/EnumDescriptionService';\r\nimport DataRowsService from '@services/DataRowsService';\r\nimport EvaluateConditionsService from '@services/EvaluateConditionsService';\r\nimport CompatibilityTestService from '@services/CompatibilityTestService';\r\nimport axios from 'axios';\r\nimport CryptoService from '@services/CryptoService';\r\nimport InstanceService from '@services/InstanceService';\r\nimport NENService from '@services/NENService';\r\nimport { useApplicationInsights, reactPlugin } from '@utils/ApplicationInsights';\r\nimport { AppInsightsContext } from \"@microsoft/applicationinsights-react-js\";\r\nimport PasswordResetService from '@services/PasswordResetService';\r\nimport HeartBeatService from '@services/HeartBeatService';\r\nimport { DescriptionManager } from '@utils/DescriptionManager';\r\nimport WidgetService from '@services/WidgetService';\r\nimport { getCurrentLanguage } from '@store/localizationStore';\r\n\r\nconst req = requirejs; // kdyz to je naprimo, tak to webpack zahodi\r\nreq.config({\r\n bundles: {\r\n 'static/js/TescoSW.Crypto.LightWeb.ES5.js': [\r\n 'multiwebclient/mwcore/tescosw/cryptography/crypto/signingsession',\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/SigningExtensionCommunicator',\r\n 'MultiWebClient/MWCore/TescoSW/Global/Base/Converters/DataConverter',\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/NativeAppStreamReader',\r\n 'LightWebClient/TescoSW/Cryptography/SigningActiveXCommunicator',\r\n 'MultiWebClient/MWCore/TescoSW/Cryptography/Crypto/CryptoExceptions'\r\n ]\r\n },\r\n paths: {\r\n 'react': 'js/react',\r\n 'react-dom': 'js/react-dom',\r\n '@microsoft/applicationinsights-web': 'js/@microsoft/applicationinsights-web'\r\n }\r\n});\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\nconst getMetaValue = (key: string) => document.querySelector<HTMLMetaElement>(`meta[name=${key}]`)?.content;\r\n\r\nlet initialState = {} as ApplicationState;\r\nconst initialStateMeta = getMetaValue('initialReduxState');\r\nif (initialStateMeta)\r\n initialState = JSON.parse(decodeURI(initialStateMeta)) as ApplicationState;\r\n\r\nconst completedTasksMeta = getMetaValue('completedTasks');\r\nif (completedTasksMeta)\r\n (window as any).completedTasks = JSON.parse(decodeURI(completedTasksMeta));\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\n\r\nlet appSettings = {} as AppSettings;\r\nconst appSettingsMeta = getMetaValue('appSettings');\r\nif (appSettingsMeta)\r\n appSettings = JSON.parse(decodeURI(appSettingsMeta)) as AppSettings;\r\n\r\nconst publicPortalPath = getMetaValue('publicPortalPath') ?? '';\r\nconst privatePortal = createPrivatePortal(getMetaValue('privatePortalPath'));\r\naxios.defaults.baseURL = publicPortalPath;\r\naxios.defaults.withCredentials = true;\r\nconst nodeContextHttp: NodeContextHttp = {\r\n cookies: new CookieManager(),\r\n getLanguage: () => getCurrentLanguage(store.getState()),\r\n}\r\n\r\nconst nodeContext: NodeContextState = {\r\n http: nodeContextHttp,\r\n taskManager: new TaskManager(),\r\n descriptionManager: new DescriptionManager(),\r\n localizationService: new LocalizationService(nodeContextHttp),\r\n titleManager: new TitleManager(),\r\n enumDescriptionService: new EnumDescriptionService(nodeContextHttp),\r\n dataRowsService: new DataRowsService(nodeContextHttp),\r\n evaluateConditionsService: new EvaluateConditionsService(nodeContextHttp),\r\n compatibilityTestService: new CompatibilityTestService(nodeContextHttp),\r\n cryptoService: new CryptoService(nodeContextHttp),\r\n instanceService: new InstanceService(nodeContextHttp),\r\n nenService: new NENService(nodeContextHttp),\r\n passwordResetService: new PasswordResetService(nodeContextHttp),\r\n heartBeatService: new HeartBeatService(nodeContextHttp),\r\n widgetService: new WidgetService(nodeContextHttp),\r\n privatePortal,\r\n appSettings\r\n}\r\n\r\nconst { store } = configureStore(history, nodeContext, initialState);\r\n\r\nuseApplicationInsights(history, nodeContext, appSettings.appInsightsKey);\r\n\r\nReactDOM.hydrate(\r\n <Provider store={store}>\r\n <ConnectedRouter history={history}>\r\n <AppInsightsContext.Provider value={reactPlugin}>\r\n <App />\r\n </AppInsightsContext.Provider>\r\n </ConnectedRouter>\r\n </Provider>,\r\n document.getElementById('root'));\r\n\r\nserviceWorker.register();","import { isNode } from \"./node-utils\";\r\n\r\nexport class DescriptionManager {\r\n private _description: string = '';\r\n\r\n public get content(): string {\r\n return isNode\r\n ? this._description\r\n : (document.querySelector<HTMLMetaElement>('meta[name=\"description\"]')?.content || '');\r\n }\r\n\r\n public set content(value: string) {\r\n this._description = value;\r\n if (isNode) {\r\n return;\r\n }\r\n const meta = document.querySelector<HTMLMetaElement>('meta[name=\"description\"]');\r\n if (meta) {\r\n meta.content = value;\r\n }\r\n }\r\n}\r\n","import { isNode } from \"./node-utils\";\r\n\r\nexport class TitleManager {\r\n private _title: string;\r\n\r\n public get title(): string { return isNode ? this._title : document.title }\r\n public set title(value: string) {\r\n if (isNode) {\r\n this._title = value;\r\n return;\r\n }\r\n document.title = value;\r\n }\r\n\r\n constructor(title?: string) {\r\n this._title = title || '';\r\n }\r\n}\r\n","import { IBasicData, IData } from \"@utils/AttrMapping\";\r\nimport { ServiceBase, Result } from \"./ServiceBase\";\r\n\r\nexport type GetDataRowsAttribute = { clientName: string | any, serverName: string };\r\n\r\nexport interface IGetDataRowsParams {\r\n className: string;\r\n condition?: string;\r\n attributes?: GetDataRowsAttribute[];\r\n startIndex?: number;\r\n count?: number;\r\n conditionParams?: any[];\r\n orderBy?: string[];\r\n isLoadMore?: boolean;\r\n abortSignal?: AbortSignal;\r\n}\r\n\r\nexport interface IGetCountDataRowsParams {\r\n className: string;\r\n condition?: string;\r\n conditionParams?: any[];\r\n abortSignal?: AbortSignal;\r\n}\r\n\r\nexport default class DataRowsService extends ServiceBase {\r\n public async loadData<T extends IData = IBasicData>(params: IGetDataRowsParams): Promise<Result<T[]>> {\r\n return await this.requestJson<T[]>({\r\n url: `/api/datarows?className=${params.className}`,\r\n method: 'POST',\r\n abortSignal: params.abortSignal,\r\n data: {\r\n ...params,\r\n conditionParams: params.conditionParams?.map(p => p.toString())\r\n }\r\n });\r\n }\r\n\r\n public async getCount(params: IGetCountDataRowsParams): Promise<Result<number>> {\r\n return await this.requestJson<number>({\r\n url: `/api/datarows/count?className=${params.className}`,\r\n method: 'POST',\r\n abortSignal: params.abortSignal,\r\n data: {\r\n ...params,\r\n conditionParams: params.conditionParams?.map(p => p.toString())\r\n }\r\n });\r\n }\r\n\r\n public async loadDataWithCount<T extends IData = IBasicData>(params: IGetDataRowsParams): Promise<Result<{ collection: T[], count: number }>> {\r\n return await this.requestJson<{ collection: T[], count: number }>({\r\n url: `/api/datarows/datawithcount?className=${params.className}`,\r\n method: 'POST',\r\n abortSignal: params.abortSignal,\r\n data: {\r\n ...params,\r\n conditionParams: params.conditionParams?.map(p => p.toString())\r\n }\r\n });\r\n }\r\n}","import { ServiceBase, Result } from \"./ServiceBase\";\r\n\r\nexport interface IEvaluateConditionsServiceParams {\r\n className: string;\r\n id: string;\r\n conditions: string[];\r\n abortSignal?: AbortSignal;\r\n}\r\n\r\nexport type EvaluatedCondition = {\r\n condition: string,\r\n result: boolean\r\n}\r\n\r\nexport default class EvaluateConditionsService extends ServiceBase {\r\n public async evaluateConditions<T extends EvaluatedCondition>(params: IEvaluateConditionsServiceParams): Promise<Result<T[]>> {\r\n return await this.requestJson<T[]>({\r\n url: `/api/evaluateConditions?className=${params.className}id=${params.id}`,\r\n method: 'POST',\r\n abortSignal: params.abortSignal,\r\n data: params\r\n });\r\n }\r\n}","import { ServiceBase } from \"./ServiceBase\";\r\n\r\nexport default class CompatibilityTestService extends ServiceBase {\r\n public async getSysDateTime(): Promise<string> {\r\n return (await this.requestJson<string>({\r\n url: `/api/compatibilityTest/sysDateTime`,\r\n method: 'POST'\r\n })).value;\r\n }\r\n}\r\n","import { ICryptographicInfo } from \"crypto/interface/ICryptographicInfo\";\r\nimport { ISignaturesDataDTO } from \"crypto/interface/ISignatureDataDTO\";\r\nimport { ISignatureProviderProfile } from \"crypto/interface/ISignatureProvider\";\r\nimport { ServiceBase } from \"./ServiceBase\";\r\nimport { ISignatureInfo } from \"crypto/interface/ISignatureInfo\";\r\n\r\ntype DataForSign = {\r\n signatureData: string;\r\n referenceUri: string;\r\n objectIdentity: string;\r\n}\r\n\r\ntype GetDataForSignParams = {\r\n instanceID: string;\r\n}\r\n\r\ntype GetCryptographicInfoParams = {\r\n instanceID: string;\r\n}\r\n\r\ntype GetDigitalSignatureSettingsParams = {\r\n instanceID: string;\r\n}\r\n\r\ntype GetDocumentSignatureInfoParams = {\r\n objectName: string;\r\n id: string;\r\n attrName: string;\r\n}\r\n\r\n\r\nexport default class CryptoService extends ServiceBase {\r\n public async getDataForSign(params: GetDataForSignParams): Promise<DataForSign> {\r\n const result = (await this.requestJson<DataForSign>({\r\n url: `/api/crypto/getDataForSign`,\r\n method: 'POST',\r\n data: params\r\n })).value;\r\n return result;\r\n }\r\n\r\n public async sendSignature(params: ISignaturesDataDTO[]): Promise<boolean> {\r\n return (await this.requestJson<string>({\r\n url: `/api/crypto/sendSignature`,\r\n method: 'POST',\r\n data: params\r\n })).value == 'Signed';\r\n }\r\n\r\n public async getCryptographicInfo(params: GetCryptographicInfoParams): Promise<ICryptographicInfo> {\r\n return (await this.requestJson<ICryptographicInfo>({\r\n url: `/api/crypto/getCryptographicInfo`,\r\n method: 'POST',\r\n data: params\r\n })).value;\r\n }\r\n\r\n public async getDigitalSignatureSettings(params: GetDigitalSignatureSettingsParams): Promise<ISignatureProviderProfile> {\r\n return (await this.requestJson<ISignatureProviderProfile>({\r\n url: `/api/crypto/getDigitalSignatureSettings`,\r\n method: 'POST',\r\n data: params\r\n })).value;\r\n }\r\n\r\n public async getDocumentSignatureInfo(params: GetDocumentSignatureInfoParams): Promise<ISignatureInfo> {\r\n return (await this.requestJson<ISignatureInfo>({\r\n url: `/api/crypto/getDocumentSignatureInfo`,\r\n method: 'POST',\r\n data: params\r\n })).value;\r\n }\r\n}\r\n","import { ServiceBase } from \"./ServiceBase\";\r\n\r\ntype CreateObjectParams = {\r\n objectName: string;\r\n data: { [attrName: string]: unknown };\r\n saveObject?: boolean;\r\n}\r\n\r\nexport default class InstanceService extends ServiceBase {\r\n public async createObject(params: CreateObjectParams): Promise<string> {\r\n return (await this.requestJson<string>({\r\n url: `/api/instance/createObject`,\r\n method: 'POST',\r\n data: params\r\n })).value;\r\n }\r\n}\r\n","import { ServiceBase } from \"./ServiceBase\";\r\n\r\nexport type StatisticsData = {\r\n pocetZadavatelu: number;\r\n pocetDodavatelu: number;\r\n pocetZakazekCelkem: number;\r\n hodnotaZakazekCelkem: number;\r\n}\r\n\r\nexport default class NENService extends ServiceBase { \r\n public async getStatistics(): Promise<StatisticsData> {\r\n return (await this.requestJson<StatisticsData>({\r\n url: `/api/nen/getStatistics`,\r\n method: 'GET'\r\n })).value;\r\n }\r\n}\r\n","import { Result, ServiceBase } from \"./ServiceBase\";\r\n\r\nexport type ResetRequestParams = {\r\n username: string | undefined;\r\n email: string | undefined;\r\n}\r\n\r\nexport type ResetConfirmParams = {\r\n password: string | undefined;\r\n passwordConfirm: string | undefined;\r\n guid: string | undefined;\r\n}\r\nexport default class PasswordResetService extends ServiceBase {\r\n public async resetRequest(params: ResetRequestParams): Promise<Result<any>> {\r\n return await this.requestJson({\r\n url: '/api/passwordreset/reset-request',\r\n method: 'POST',\r\n data: params\r\n });\r\n }\r\n\r\n public async resetConfirm(params: ResetConfirmParams): Promise<Result<any>> {\r\n return await this.requestJson({\r\n url: '/api/passwordreset/reset-confirm',\r\n method: 'POST',\r\n data: params\r\n });\r\n }\r\n}","import { ServiceBase } from \"./ServiceBase\";\r\n\r\nexport default class HeartBeatService extends ServiceBase {\r\n public async beat() {\r\n return await this.requestJson<void>({\r\n url: `/api/heartbeat`,\r\n method: 'GET'\r\n });\r\n }\r\n}\r\n","import { HTTPStatus } from \"MultiWebClient/MWCore/TescoSW/Global/Base/Comunication/HTTPStatus\";\r\nimport { Result, ServiceBase } from \"./ServiceBase\";\r\n\r\nexport type WidgetLanguage = 'cs' | 'en';\r\n\r\nexport default class WidgetService extends ServiceBase {\r\n\r\n public async loadData<T>(\r\n endPoint: string,\r\n queryFilter: string = \"\",\r\n language: WidgetLanguage = \"cs\",\r\n controller?: AbortController): Promise<Result<T>> {\r\n return await (await this.requestJson<T>({\r\n url: `/api/widget/${endPoint}`,\r\n method: 'GET',\r\n abortSignal: controller?.signal,\r\n data: { language, queryFilter }\r\n }));\r\n }\r\n\r\n public async newsSubscribe(controller: AbortController, email: string, language: WidgetLanguage = \"cs\"): Promise<Result<HTTPStatus>> {\r\n return await (await this.requestJson({\r\n url: `/api/widget/newsSubscribe`,\r\n method: 'POST',\r\n abortSignal: controller?.signal,\r\n data: { email, language }\r\n }));\r\n }\r\n}\r\n"],"sourceRoot":""}