Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
cp
/
public
/
javascript
/
views
/
admin
/
websites-diagnostic
/
File Content:
index.js.map
{"version":3,"file":"javascript/views/admin/websites-diagnostic/index.js?db2bf2c12e7de08bffb7","mappings":"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","sources":["webpack:///./components/List.js","webpack:///./components/pages/WebsitesDiagnostic/ManualCheck/NewCheck.js","webpack:///./components/pages/WebsitesDiagnostic/ManualCheck/index.js","webpack:///./components/pages/WebsitesDiagnostic/Page.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/AffectedWebsites.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/DistributionOverTime/ProblemReportChart.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/DistributionOverTime/index.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/ProblemDetails.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/ProblemOccuranceTime.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/Report/ReportContent.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/index.js","webpack:///./components/pages/WebsitesDiagnostic/ProblemReport/utils.js","webpack:///./components/pages/WebsitesDiagnostic/Promo.js","webpack:///./components/pages/WebsitesDiagnostic/RegularCheck/WebsitesList.js","webpack:///./components/pages/WebsitesDiagnostic/RegularCheck/index.js","webpack:///./components/pages/WebsitesDiagnostic/Report/ProblemsList.js","webpack:///./components/pages/WebsitesDiagnostic/Report/ReportByProblems.js","webpack:///./components/pages/WebsitesDiagnostic/Report/ReportByWebsites.js","webpack:///./components/pages/WebsitesDiagnostic/Report/ReportByWebsitesRowBody.js","webpack:///./components/pages/WebsitesDiagnostic/Report/ReportByWebsitesServerWideRowBody.js","webpack:///./components/pages/WebsitesDiagnostic/Report/index.js","webpack:///./components/pages/WebsitesDiagnostic/constants.js","webpack:///./components/pages/WebsitesDiagnostic/index.js","webpack:///./helpers/throttle.ts","webpack:///./images/websites-diagnostic.svg","webpack:///./queries/ToggleWebsitesDiagnostic.graphql","webpack:///./queries/WebsiteDiagnosticProblemReport.graphql"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { List as BaseList, Pagination, SearchBar, Toolbar, ToolbarGroup, ToolbarExpander, ListEmptyView } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nconst listLocale = Locale.getSection('components.list');\n\nexport const SORT_ASC = 'ASC';\nexport const SORT_DESC = 'DESC';\nconst ALL_ITEMS_PER_PAGE = 'all';\n\nconst getRowKey = (row, key) => {\n if (typeof key === 'function') {\n return key(row);\n }\n return row[key];\n};\n\nconst storage = {\n set(key, data) {\n localStorage.setItem(key, JSON.stringify(data));\n },\n get(key) {\n const data = localStorage.getItem(key);\n return JSON.parse(data);\n },\n};\n\nconst getSortListName = id => `list-sort_${id}`;\nconst getPageListName = id => `list-page_${id}`;\n\nconst useSortState = (id, {\n sortColumn: defaultColumn,\n sortDirection: defaultDirection,\n}) => {\n const [{\n sortColumn,\n sortDirection,\n }, setState] = useState({\n sortColumn: storage.get(getSortListName(id))?.sortColumn ?? defaultColumn,\n sortDirection: storage.get(getSortListName(id))?.sortDirection ?? defaultDirection,\n });\n\n const setSortState = props => {\n setState(state => ({\n ...state,\n ...props,\n }));\n\n storage.set(getSortListName(id), {\n ...storage.get(getSortListName(id)),\n ...props,\n });\n };\n\n return { sortColumn, sortDirection, setSortState };\n};\n\nconst usePageState = (id, {\n itemsPerPage: defaultItemsPerPage,\n}, useStorage = true) => {\n const state = useStorage ? {\n page: storage.get(getPageListName(id))?.page,\n itemsPerPage: storage.get(getPageListName(id))?.itemsPerPage,\n searchPattern: storage.get(getPageListName(id))?.searchPattern,\n } : {};\n\n const [{\n page,\n itemsPerPage,\n searchPattern,\n }, setState] = useState({\n page: state.page ?? 1,\n itemsPerPage: state.itemsPerPage ?? defaultItemsPerPage,\n searchPattern: state.searchPattern ?? '',\n });\n\n const setPageState = props => {\n setState(state => ({\n ...state,\n ...props,\n }));\n\n if (useStorage) {\n storage.set(getPageListName(id), {\n ...storage.get(getPageListName(id)),\n ...props,\n });\n }\n };\n\n return { page, itemsPerPage, searchPattern, setPageState };\n};\n\nconst List = ({\n id,\n data,\n columns,\n itemsPerPage: defaultItemsPerPage = 25,\n itemsPerPageOptions = [10, 25, 100, ALL_ITEMS_PER_PAGE],\n sortColumn: defaultSortColumn = undefined,\n sortDirection: defaultSortDirection = SORT_ASC,\n searchField = undefined,\n locale = {},\n emptyView = undefined,\n emptyFilteredView = undefined,\n toolbar = undefined,\n selection = [],\n onSelectionChange = undefined,\n searchBarInputProps = undefined,\n rowKey = 'key',\n useStorage = true,\n ...props\n}) => {\n const { sortColumn, sortDirection, setSortState } = useSortState(id, {\n sortColumn: defaultSortColumn ?? columns.find(({ sortable }) => sortable)?.key,\n sortDirection: defaultSortDirection,\n });\n const { page, itemsPerPage, searchPattern, setPageState } = usePageState(id, {\n itemsPerPage: itemsPerPageOptions.includes(defaultItemsPerPage) ? defaultItemsPerPage : itemsPerPageOptions[0],\n }, useStorage);\n\n const listEmptyView = useMemo(() => {\n if (searchPattern) {\n return emptyFilteredView ?? (\n <ListEmptyView\n reason=\"filtered\"\n data-testid=\"list-empty-view-filtered\"\n />\n );\n }\n\n return emptyView ?? (\n <ListEmptyView />\n );\n }, [searchPattern, emptyView, emptyFilteredView]);\n\n const columnsData = useMemo(() => columns.map(({ sortDataField, ...column }) => column), [columns]);\n\n const filteredData = useMemo(() => {\n if (!searchField || !searchPattern) {\n return data;\n }\n\n return data.filter(row => (Array.isArray(searchField) ? searchField : [searchField])\n .some(field => row[field] && String(row[field]).toLowerCase().includes(searchPattern.toLowerCase())));\n }, [data, searchPattern, searchField]);\n\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filteredData;\n }\n\n const sortDataField = columns.find(({ key }) => key === sortColumn)?.sortDataField ?? sortColumn;\n const defaultCompare = (a, b) => {\n if (a[sortDataField] < b[sortDataField]) {\n return -1;\n }\n if (a[sortDataField] > b[sortDataField]) {\n return 1;\n }\n return 0;\n };\n const compare = columns.find(({ key }) => key === sortColumn)?.sort ?? defaultCompare;\n return [...filteredData].sort((a, b) => SORT_ASC === sortDirection ? compare(a, b) : compare(b, a));\n }, [filteredData, sortColumn, sortDirection, columns]);\n\n const displayData = useMemo(() => {\n if (itemsPerPage === ALL_ITEMS_PER_PAGE) {\n return sortedData;\n }\n\n const from = itemsPerPage * (page - 1);\n const to = from + itemsPerPage;\n return sortedData.slice(from, to);\n }, [page, sortedData, itemsPerPage]);\n\n const handleSearchPatternChange = useCallback(term => {\n setPageState({ searchPattern: term });\n if (term !== searchPattern) {\n setPageState({ page: 1 });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchPattern]);\n\n const handleItemsPerPageChange = useCallback(itemsPerPage => {\n setPageState({ itemsPerPage });\n const countPages = itemsPerPage === ALL_ITEMS_PER_PAGE ? 1 : Math.ceil(filteredData.length / itemsPerPage);\n if (countPages < page) {\n setPageState({ page: 1 });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredData.length, page]);\n\n useEffect(() => {\n if (typeof onSelectionChange === 'function' && selection.length) {\n const newSelection = filteredData\n .map(item => getRowKey(item, rowKey))\n .filter(key => selection.includes(key));\n onSelectionChange(newSelection);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredData]);\n\n return (\n <BaseList\n pagination={\n <Pagination\n current={page}\n total={itemsPerPage === ALL_ITEMS_PER_PAGE ? 1 : Math.ceil(filteredData.length / itemsPerPage)}\n onSelect={page => setPageState({ page })}\n itemsPerPage={itemsPerPage}\n itemsPerPageOptions={itemsPerPageOptions}\n onItemsPerPageChange={handleItemsPerPageChange}\n />\n }\n toolbar={(toolbar || searchField) && (\n <Toolbar>\n {toolbar}\n {searchField && (\n <>\n <ToolbarExpander />\n <ToolbarGroup title=\"\">\n <SearchBar\n inputProps={{\n placeholder: listLocale.lmsg('searchPlaceholder'),\n 'data-testid': 'list-searchbar',\n value: searchPattern,\n ...(searchBarInputProps ?? {}),\n }}\n onTyping={handleSearchPatternChange}\n />\n </ToolbarGroup>\n </>\n )}\n </Toolbar>\n )}\n totalRows={filteredData.length}\n sortColumn={sortColumn}\n sortDirection={sortDirection}\n onSortChange={setSortState}\n columns={columnsData}\n data={displayData}\n filtered={!!searchPattern}\n locale={{\n totalRows: ({ totalRows: total }) => listLocale.formatMessage('recordsTotal', { total }),\n ...locale,\n }}\n emptyView={listEmptyView}\n onSelectionChange={onSelectionChange}\n selection={selection}\n rowKey={rowKey}\n {...props}\n />\n );\n};\n\nList.propTypes = {\n id: PropTypes.string.isRequired,\n data: PropTypes.array.isRequired,\n columns: PropTypes.array.isRequired,\n itemsPerPage: PropTypes.number,\n itemsPerPageOptions: PropTypes.array,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.string,\n searchField: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string.isRequired),\n ]),\n locale: PropTypes.object,\n emptyView: PropTypes.node,\n emptyFilteredView: PropTypes.node,\n toolbar: PropTypes.node,\n onSelectionChange: PropTypes.func,\n selection: PropTypes.array,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n searchBarInputProps: PropTypes.object,\n useStorage: PropTypes.bool,\n};\n\nexport default List;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { Locale } from 'jsw';\n\nimport {\n Heading,\n FormField,\n InputNumber,\n Select,\n SelectOption,\n SearchBar,\n Section,\n SectionItem,\n useTranslate,\n Text,\n MenuDivider,\n FormFieldCheckbox,\n setIn,\n getIn,\n} from '@plesk/ui-library';\nimport { gql, useMutation } from '@apollo/client';\n\nimport DrawerWithProgress from 'components/common/DrawerWithProgress';\nimport { getSysdate, HOURS_IN_MS } from 'helpers/dates';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.new-check');\nconst locale = Locale.getSection('admin.controllers.websites-diagnostic.new-check');\n\nconst RUN_WEBSITES_DIAGNOSTIC = gql`\n mutation RunWebsitesDiagnostic($period: Int!, $domainIds: [ID!]!, ) {\n runWebsitesDiagnostic(input: { period: $period, domainIds: $domainIds }) {\n id,\n progressTitle,\n }\n }\n`;\n\nconst MAX_MINUTES = 60;\nconst MAX_HOURS = 24;\n\nconst getPeriod = depth => depth.includes('M') ?\n +depth.replace('M', '') :\n +depth.replace('H', '') * 60;\n\nconst NewCheck = ({\n isOpen = false,\n onClose,\n domains,\n checkedDomains,\n skippedDomains,\n domainForManualCheck = undefined,\n}) => {\n const [values, setValues] = useState({ depth: [] });\n const [search, setSearch] = useState('');\n const [websites, setWebsites] = useState([]);\n const [formState, setFormState] = useState(null);\n const [task, setTask] = useState(null);\n\n const [runWebsitesDiagnostic] = useMutation(RUN_WEBSITES_DIAGNOSTIC);\n\n const translate = useTranslate('admin.controllers.websites-diagnostic.new-check');\n const domainsWithProblems = domains.filter(({ websitesDiagnosticChecks }) => {\n const regularCheck = websitesDiagnosticChecks.find(({ type }) => type === 'regular');\n const manualCheck = websitesDiagnosticChecks.find(({ type }) => type === 'manual');\n return (manualCheck?.problems ?? regularCheck.problems).length;\n });\n const totalDomainsCount = checkedDomains.length + skippedDomains.length;\n\n const selectedWebsitesCount = useMemo(\n () => [...checkedDomains, ...skippedDomains].filter(({ id }) => getIn(values, id)).length,\n [checkedDomains, skippedDomains, values],\n );\n\n const lastCheckLaterThanDay = useMemo(\n () => {\n if (!isOpen) {\n return true;\n }\n\n const date = Math.max(...domains.map(({ websitesDiagnosticChecks }) => Math.max(...websitesDiagnosticChecks.map(({ date }) => +new Date(date)))));\n if (!date) {\n return true;\n }\n\n const lastCheckDate = new Date(date);\n const sysdate = getSysdate();\n\n return (+sysdate - +lastCheckDate) / HOURS_IN_MS > 24;\n },\n [domains, isOpen],\n );\n\n useEffect(() => {\n if (isOpen) {\n setFormState(null);\n setValues({\n depth: lastCheckLaterThanDay ? 'H24' : 'M60',\n all: !skippedDomains.length,\n withCheckProblems: domainsWithProblems.every(({ id }) => checkedDomains.find(domain => domain.id === id)),\n ...checkedDomains.reduce((o, { id }) => ({ ...o, [id]: true }), {}),\n ...skippedDomains.reduce((o, { id }) => ({ ...o, [id]: false }), {}),\n });\n setSearch('');\n setWebsites([...checkedDomains, ...skippedDomains]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, checkedDomains, skippedDomains, lastCheckLaterThanDay]);\n\n useEffect(() => {\n setWebsites([...checkedDomains, ...skippedDomains].filter(({ name }) => name.toLowerCase().includes(search.toLowerCase())));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n const handleSubmit = async () => {\n setFormState('submit');\n const { data } = await runWebsitesDiagnostic({\n variables: {\n period: getPeriod(values.depth),\n domainIds: domainForManualCheck ?\n [domainForManualCheck.id] :\n [...checkedDomains, ...skippedDomains].filter(({ id }) => values[id]).map(({ id }) => id),\n },\n });\n\n setTask(data.runWebsitesDiagnostic);\n setFormState(null);\n };\n\n const handleClose = () => {\n formState !== 'submit' && onClose();\n setTask(null);\n };\n\n const handleDomainInclude = domainId => {\n if ([...checkedDomains, ...skippedDomains].every(({ id }) => id === domainId || values[id])) {\n setValues(values => setIn(values, 'all', true));\n }\n if (domainsWithProblems.every(({ id }) => id === domainId || values[id])) {\n setValues(values => setIn(values, 'withCheckProblems', true));\n }\n };\n\n const handleDomainExclude = domainId => {\n setValues(values => setIn(values, 'all', false));\n if (domainsWithProblems.find(({ id }) => id === domainId)) {\n setValues(values => setIn(values, 'withCheckProblems', false));\n }\n };\n\n const handleFieldChange = (name, value) => {\n setValues(values => setIn(values, name, value));\n\n switch (name) {\n case 'withCheckProblems':\n domainsWithProblems.forEach(({ id }) => handleFieldChange(id, value));\n break;\n case 'all':\n [...checkedDomains, ...skippedDomains].forEach(({ id }) => handleFieldChange(id, value));\n break;\n default:\n value ? handleDomainInclude(name) : handleDomainExclude(name);\n }\n };\n\n const adjustDepthValue = (period, depth) => {\n if (period === 'H' && depth > MAX_HOURS) {\n return `${period}${MAX_HOURS}`;\n }\n\n return `${period}${depth}`;\n };\n\n const renderTitle = () => {\n if (domainForManualCheck) {\n return locale.formatMessage('titleForWebsite', { website: domainForManualCheck.name });\n }\n\n return !task ?\n locale.formatMessage('title') :\n locale.formatMessage('titleRunning', { count: selectedWebsitesCount });\n };\n\n return (\n <DrawerWithProgress\n pageUrl={window.location.pathname}\n task={task}\n dataType=\"websites-diagnostic-new-check\"\n title={renderTitle()}\n subtitle={!task && !domainForManualCheck && (\n <Translate\n content=\"description\"\n params={{\n total: totalDomainsCount,\n selected: selectedWebsitesCount,\n }}\n />\n )}\n size=\"sm\"\n isOpen={isOpen}\n onClose={handleClose}\n form={{\n state: formState,\n applyButton: false,\n onFieldChange: handleFieldChange,\n submitButton: {\n id: 'btn-send',\n name: 'send',\n 'data-cy': 'run-manual-check',\n children: <Translate content=\"buttonSave\" />,\n onClick: handleSubmit,\n },\n cancelButton: {\n id: 'btn-cancel',\n name: 'cancel',\n children: <Translate content=\"buttonCancel\" />,\n onClick: handleClose,\n },\n values,\n }}\n >\n <Section title={<Heading level={4}><Translate content=\"depth\" /></Heading>}>\n <SectionItem>\n <FormField label={<Translate content=\"checkTheLast\" />} name=\"depth\" vertical required>\n {({ getValue, setValue }) => {\n const [period, ...depth] = getValue();\n\n return (\n <>\n <InputNumber\n min={1}\n max={period === 'M' ? MAX_MINUTES : MAX_HOURS}\n value={+depth.join('')}\n onChange={newValue => setValue(`${period}${newValue}`)}\n data-testid=\"depthValue\"\n />\n {' '}\n <Select\n value={period}\n onChange={newPeriod => setValue(adjustDepthValue(newPeriod, +depth.join('')))}\n data-testid={`periodValue-${period}`}\n >\n <SelectOption value=\"M\">{locale.formatMessage('selectMinutes')}</SelectOption>\n <SelectOption value=\"H\">{locale.formatMessage('selectHours')}</SelectOption>\n </Select>\n </>\n );\n }}\n </FormField>\n <SectionItem>\n <Translate content=\"ifYouHaveAnyProblemActivities\" />\n </SectionItem>\n <SectionItem>\n <Translate\n content=\"weAlsoRecommendVisiting\"\n params={{\n visitingTheWebsite: !domainForManualCheck ?\n locale.formatMessage('visitingTheWebsite') :\n <a href={domainForManualCheck.siteUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {locale.formatMessage('visitingTheWebsite')}\n </a>,\n }}\n />\n </SectionItem>\n </SectionItem>\n </Section>\n {totalDomainsCount && !domainForManualCheck ? (\n <>\n <br />\n <Heading level={4}><Translate content=\"websites\" /></Heading>\n <SearchBar\n inputProps={{\n placeholder: translate('search'),\n }}\n onTyping={value => setSearch(value.trim())}\n />\n <br />\n {domainsWithProblems.length ? (\n <FormFieldCheckbox\n label={<Text bold data-cy=\"websites-with-problems\"><Translate content=\"checkProblems\" /></Text>}\n name=\"withCheckProblems\"\n />\n ) : null}\n <FormFieldCheckbox\n label={<Text bold data-cy=\"all-websites\"><Translate content=\"allWebsites\" /></Text>}\n name=\"all\"\n />\n <MenuDivider />\n {websites\n .sort(({ name: name1 }, { name: name2 }) => name1 <= name2 ? -1 : 1)\n .map(({ id, name }) => (\n <FormFieldCheckbox key={id} label={name} name={id} />\n ))}\n </>\n ) : null}\n </DrawerWithProgress>\n );\n};\n\nNewCheck.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n domains: PropTypes.array.isRequired,\n checkedDomains: PropTypes.array.isRequired,\n skippedDomains: PropTypes.array.isRequired,\n domainForManualCheck: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n siteUrl: PropTypes.string,\n }),\n};\n\nexport default NewCheck;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\n\nimport { Button, Item } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nimport NewCheck from './NewCheck';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic');\n\nconst ManualCheck = ({\n checkedDomains,\n skippedDomains,\n domains,\n isNewCheckOpen,\n onToggleManualCheck,\n domainForManualCheck = undefined,\n}) => (\n <>\n <NewCheck\n isOpen={isNewCheckOpen}\n onClose={() => onToggleManualCheck(false)}\n domains={domains}\n checkedDomains={checkedDomains}\n skippedDomains={skippedDomains}\n domainForManualCheck={domainForManualCheck}\n />\n <Item view=\"card\">\n <Button\n intent=\"primary\"\n icon=\"start-circle\"\n size=\"lg\"\n data-cy=\"start-manual-check\"\n onClick={() => onToggleManualCheck(true)}\n >\n <Translate content=\"buttonRun\" />\n </Button>\n <br />\n <br />\n <p>\n <Translate content=\"buttonRunDescription\" />\n </p>\n </Item>\n </>\n);\n\nManualCheck.propTypes = {\n checkedDomains: PropTypes.array.isRequired,\n skippedDomains: PropTypes.array.isRequired,\n isNewCheckOpen: PropTypes.bool.isRequired,\n domains: PropTypes.array.isRequired,\n onToggleManualCheck: PropTypes.func.isRequired,\n domainForManualCheck: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n }),\n};\n\nexport default ManualCheck;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState, useCallback } from 'react';\nimport { useMutation, useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\n\nimport { ItemList } from '@plesk/ui-library';\n\nimport Promo from './Promo';\nimport Report from './Report';\nimport { ProblemReport } from './ProblemReport';\nimport RegularCheck from './RegularCheck';\nimport ManualCheck from './ManualCheck';\n\nimport WEBSITES_DIAGNOSTIC_PAGE_QUERY from 'queries/WebsitesDiagnosticPage.graphql';\nimport TOGGLE_WEBSITES_DIAGNOSTIC from 'queries/ToggleWebsitesDiagnostic.graphql';\n\nconst Page = ({ params: { domainId } = {} }) => {\n const {\n data: {\n server: {\n websitesDiagnostic: {\n settings: {\n isPromoShown,\n documentationLink,\n checkedDomains,\n skippedDomains,\n ...settings\n },\n domains,\n },\n },\n },\n } = useQuery(WEBSITES_DIAGNOSTIC_PAGE_QUERY);\n\n const [showProblemDetails, setShowProblemDetails] = useState(false);\n const [domainForManualCheck, setDomainForManualCheck] = useState();\n const [chosenDomainId, setChosenDomainId] = useState();\n const [reportType, setReportType] = useState();\n const [problemData, setProblemData] = useState({});\n const [isNewCheckOpen, setIsNewCheckOpen] = useState(false);\n const [isWebsitesListOpen, setIsWebsitesListOpen] = useState(false);\n\n const [toggleFeature, { loading }] = useMutation(TOGGLE_WEBSITES_DIAGNOSTIC);\n\n const onOpenProblemDetails = useCallback(\n reportType => (problemData, domainId) => {\n setReportType(reportType);\n setProblemData(problemData);\n setChosenDomainId(domainId);\n setShowProblemDetails(true);\n },\n [],\n );\n\n const onCloseProblemDetails = useCallback(\n () => {\n setShowProblemDetails(false);\n setReportType(undefined);\n setChosenDomainId(undefined);\n setProblemData({});\n },\n [],\n );\n\n const onCheckDomainManually = useCallback(\n domain => {\n setShowProblemDetails(false);\n setDomainForManualCheck(domain);\n setIsNewCheckOpen(true);\n },\n [],\n );\n\n const onToggleManualCheck = useCallback(\n isOpened => {\n setDomainForManualCheck(undefined);\n setIsNewCheckOpen(isOpened);\n },\n [],\n );\n\n const onToggleRegularCheck = useCallback(\n () => {\n setShowProblemDetails(false);\n toggleFeature({ variables: { isRegularCheckEnabled: !settings.isRegularCheckEnabled } });\n },\n [toggleFeature, settings.isRegularCheckEnabled],\n );\n\n const onOpenWebsitesList = useCallback(\n () => {\n setShowProblemDetails(false);\n setIsWebsitesListOpen(true);\n },\n [],\n );\n\n const regularCheckInfo = {\n isEnabled: settings.isRegularCheckEnabled,\n isSkippedInCheck: skippedDomains.find(({ id }) => chosenDomainId === id),\n onToggleRegularCheck,\n onOpenWebsitesList,\n };\n\n return (\n <>\n <Promo isPromoShown={isPromoShown} documentationLink={documentationLink} />\n <ItemList gap=\"md\" stretchable xs={1} sm={2} md={3} hoverable={false}>\n <RegularCheck\n checkedDomains={checkedDomains}\n skippedDomains={skippedDomains}\n isWebsitesListOpen={isWebsitesListOpen}\n isLoading={loading}\n onToggleFeature={toggleFeature}\n onOpenWebsitesList={setIsWebsitesListOpen}\n {...settings}\n />\n <ManualCheck\n checkedDomains={checkedDomains}\n skippedDomains={skippedDomains}\n domains={domains}\n isNewCheckOpen={isNewCheckOpen}\n onToggleManualCheck={onToggleManualCheck}\n domainForManualCheck={domainForManualCheck}\n {...settings}\n />\n </ItemList>\n {!!domains.length && (\n <>\n <Report\n domains={domains}\n onOpenProblemDetails={onOpenProblemDetails}\n onCheckDomainManually={onCheckDomainManually}\n domainId={domainId}\n />\n <ProblemReport\n domains={domains}\n isOpen={showProblemDetails}\n reportType={reportType}\n problemData={problemData}\n chosenDomainId={chosenDomainId}\n regularCheckInfo={regularCheckInfo}\n onCloseReport={onCloseProblemDetails}\n onChangeReportType={setReportType}\n onSetChosenDomainId={setChosenDomainId}\n onCheckDomainManually={onCheckDomainManually}\n />\n </>\n )}\n </>\n );\n};\n\nPage.propTypes = {\n params: PropTypes.shape({\n domainId: PropTypes.string,\n }),\n};\n\nexport default Page;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\n\nimport {\n Link,\n Button,\n useTranslate,\n} from '@plesk/ui-library';\nimport List from 'components/List';\n\nexport const AffectedWebsites = ({ data, onGotoDomain }) => {\n const translate = useTranslate('admin.controllers.websites-diagnostic.affected-websites');\n\n const columns = [\n {\n key: 'name',\n title: translate('websites'),\n sortable: true,\n render: row => (\n <Link onClick={() => onGotoDomain(row.id)} data-cy=\"affected-site\">\n {row.name}\n </Link>\n ),\n },\n {\n key: 'links',\n render: row => (\n <Button\n ghost\n icon=\"web-settings\"\n tooltip={translate('showProblemDetails')}\n onClick={() => onGotoDomain(row.id)}\n />\n ),\n align: 'right',\n },\n ];\n\n return (\n <List\n id=\"affected-websites-list\"\n data={data}\n columns={columns}\n searchField=\"name\"\n itemsPerPage={10}\n searchBarInputProps={{ placeholder: translate('searchForWebsite') }}\n />\n );\n};\n\nAffectedWebsites.propTypes = {\n data: PropTypes.array.isRequired,\n onGotoDomain: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { useCallback, useState } from 'react';\nimport {\n XYPlot,\n Hint,\n VerticalBarSeries,\n DiscreteColorLegend,\n VerticalGridLines,\n XAxis,\n YAxis,\n} from 'react-vis';\nimport { useTranslate } from '@plesk/ui-library';\n\nimport { throttle } from 'helpers/throttle';\nimport { addHours, getTimezoneShift, isSameDay, addDays } from 'helpers/dates';\nimport { Timezones, USER_TIMEZONE, PROBLEM_PERIOD } from '../../../constants';\n\nconst CHART_WIDTH = 852;\nconst CHART_HEIGHT = 300;\n\nconst dataToCoords = ({ timestamp, requestsCount, errorsCount }, shift) => {\n const [, timeWithTZ] = timestamp.split(' ');\n const [time] = timeWithTZ.split(/[+-]/);\n\n const [hours, minutes] = time.split(':');\n const xCoord = +hours + (minutes / 60);\n\n return [\n {\n x: xCoord + shift,\n y: requestsCount,\n },\n {\n x: xCoord + shift,\n y: errorsCount,\n },\n ];\n};\n\nconst isDayActual = (dispayedDay, timestamp, shift) => {\n const day = addHours(shift, new Date(timestamp));\n\n const isToday = dispayedDay === PROBLEM_PERIOD.TODAY && isSameDay(day, new Date());\n const isYesterday = dispayedDay === PROBLEM_PERIOD.YESTERDAY && isSameDay(day, addDays(-1, new Date()));\n\n return isToday || isYesterday;\n};\n\nexport const ProblemReportChart = ({ data = [], serverUTC, selectedTZ, dispayedDay }) => {\n const [hintCoords, setHintCoords] = useState(null);\n const translate = useTranslate('admin.controllers.websites-diagnostic.chart');\n\n /* eslint-disable react-hooks/exhaustive-deps */\n const onShowHint = useCallback(\n throttle((value, { event }) => {\n if (event.target.tagName === 'rect') {\n if (!hintCoords) {\n setHintCoords(value);\n }\n return;\n }\n\n if (hintCoords) {\n setHintCoords(null);\n }\n }, 50),\n [hintCoords],\n );\n\n if (!data.length) {\n return;\n }\n\n const legends = [\n { title: translate('requests'), color: '#bdb7b7', strokeWidth: 3 },\n { title: translate('errors'), color: '#bc1515', strokeWidth: 3 },\n ];\n\n const dataTZ = getTimezoneShift(data[0].timestamp.replace(/(.+)([-+])/, '$2'));\n const timeShift = selectedTZ === Timezones.SERVER ?\n serverUTC - dataTZ :\n USER_TIMEZONE - dataTZ;\n\n const { requests, errors } = data.reduce(\n (coords, elem) => {\n if (!isDayActual(dispayedDay, elem.timestamp, timeShift)) {\n return coords;\n }\n\n const [req, err] = dataToCoords(elem, timeShift);\n coords.requests.push(req);\n coords.errors.push(err);\n\n return coords;\n },\n {\n requests: [],\n errors: [],\n },\n );\n\n const maxY = Math.max(...requests.concat(errors).map(({ y }) => y));\n\n return (\n <div id=\"problem-report-chart\">\n <XYPlot\n width={CHART_WIDTH}\n height={CHART_HEIGHT}\n margin={{ left: 0, right: 0 }}\n xDomain={[0, 24]}\n yDomain={[0, maxY * 1.2]}\n xDistance={1.2}\n >\n <DiscreteColorLegend\n items={legends}\n orientation=\"vertical\"\n style={{ position: 'absolute', left: 5, top: 10 }}\n />\n <VerticalBarSeries\n data={requests}\n barWidth={10}\n color=\"#bdb7b7\"\n onNearestX={onShowHint}\n />\n <VerticalBarSeries\n data={errors}\n barWidth={10}\n color=\"#bc1515\"\n onNearestX={onShowHint}\n />\n <XAxis\n tickValues={[4, 8, 12, 16, 20]}\n tickFormat={v => `${`0${v}`.slice(-2)}.00`}\n />\n <XAxis\n top={10}\n tickTotal={0}\n />\n <YAxis tickTotal={0} />\n <VerticalGridLines tickValues={[4, 8, 12, 16, 20, 24]} />\n {hintCoords && (\n <Hint value={hintCoords}>\n <div className=\"chart-hint\">\n <div>{`${translate('errors')}: ${errors.find(({ x }) => x === hintCoords.x)?.y ?? 0}`}</div>\n <div>{`${translate('requests')}: ${requests.find(({ x }) => x === hintCoords.x)?.y ?? 0}`}</div>\n </div>\n </Hint>\n )}\n </XYPlot>\n </div>\n );\n};\n\nProblemReportChart.propTypes = {\n serverUTC: PropTypes.number.isRequired,\n selectedTZ: PropTypes.string.isRequired,\n data: PropTypes.arrayOf(PropTypes.shape({\n timestamp: PropTypes.string,\n errorsCount: PropTypes.number,\n requestsCount: PropTypes.number,\n })),\n dispayedDay: PropTypes.string.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { Locale } from 'jsw';\nimport { Section, SegmentedControl, Alert, Action } from '@plesk/ui-library';\n\nimport { Timezones, USER_TIMEZONE, PROBLEM_PERIOD } from '../../../constants';\nimport { ProblemReportChart } from './ProblemReportChart';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.distribution-over-time');\n\nexport const DistributionOverTime = ({\n serverUTC,\n plotItems,\n dispayedDay = undefined,\n regularCheckInfo,\n domain,\n onCheckDomainManually,\n}) => {\n const [selectedTZ, setSelectedTZ] = useState(Timezones.SERVER);\n\n const { id, name, siteUrl } = domain;\n const {\n isEnabled,\n isSkippedInCheck,\n onOpenWebsitesList,\n onToggleRegularCheck,\n } = regularCheckInfo;\n\n const title = useMemo(\n () => {\n switch (dispayedDay) {\n case PROBLEM_PERIOD.TODAY:\n return <Translate content=\"titleToday\" />;\n case PROBLEM_PERIOD.YESTERDAY:\n return <Translate content=\"titleYesterday\" />;\n default:\n return <Translate content=\"title\" />;\n }\n },\n [dispayedDay],\n );\n\n const getSuggestion = useCallback(\n () => {\n if (!isEnabled) {\n return <Translate content=\"pleseEnableRegularCheck\" />;\n }\n\n if (isEnabled && isSkippedInCheck) {\n return <Translate content=\"pleseIncludeWebsiteForCheck\" />;\n }\n\n return <Translate content=\"pleaseWaitUntilRegularCheckWillBeStarted\" />;\n },\n [isEnabled, isSkippedInCheck],\n );\n\n if (!plotItems.length) {\n return null;\n }\n\n const isOlderThanYesterday = !Object.values(PROBLEM_PERIOD).includes(dispayedDay);\n if (isOlderThanYesterday) {\n return (\n <Section title={title}>\n <Alert intent=\"info\">\n <Translate\n content=\"noDataForRecentTime\"\n params={{ suggestion: getSuggestion() }}\n />\n {!isEnabled && (\n <div>\n <Action icon=\"power\" onClick={onToggleRegularCheck}>\n <Translate content=\"enableRegularCheck\" />\n </Action>\n </div>\n )}\n {isEnabled && isSkippedInCheck && (\n <div>\n <Action icon=\"plus\" onClick={onOpenWebsitesList}>\n <Translate content=\"addWebsiteToRegularCheckList\" />\n </Action>\n </div>\n )}\n <div>\n <Action icon=\"refresh\" onClick={() => onCheckDomainManually({ id, name, siteUrl })}>\n <Translate content=\"runManualCheck\" />\n </Action>\n </div>\n </Alert>\n </Section>\n );\n }\n\n return (\n <Section title={title} id=\"distribution-over-time\">\n <SegmentedControl\n buttons={[\n {\n value: Timezones.SERVER,\n title: (\n <Translate\n content=\"serverTimezone\"\n params={{ utcShift: serverUTC < 0 ? serverUTC : `+${serverUTC}` }}\n />\n ),\n },\n {\n value: Timezones.CLIENT,\n title: (\n <Translate\n content=\"yourTimezone\"\n params={{ utcShift: USER_TIMEZONE < 0 ? USER_TIMEZONE : `+${USER_TIMEZONE}` }}\n />\n ),\n },\n ]}\n selected={selectedTZ}\n onChange={setSelectedTZ}\n />\n <ProblemReportChart\n data={plotItems}\n serverUTC={serverUTC}\n selectedTZ={selectedTZ}\n dispayedDay={dispayedDay}\n />\n </Section>\n );\n};\n\nDistributionOverTime.propTypes = {\n serverUTC: PropTypes.number.isRequired,\n plotItems: PropTypes.arrayOf(PropTypes.shape({\n requestsCount: PropTypes.number,\n errorsCount: PropTypes.number,\n timestamp: PropTypes.string,\n })).isRequired,\n regularCheckInfo: PropTypes.shape({\n isEnabled: PropTypes.bool,\n isSkippedInCheck: PropTypes.bool,\n onToggleRegularCheck: PropTypes.func,\n onOpenWebsitesList: PropTypes.func,\n }).isRequired,\n dispayedDay: PropTypes.string,\n domain: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n siteUrl: PropTypes.string,\n }).isRequired,\n\n onCheckDomainManually: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport {\n Link,\n Section,\n Text,\n List,\n Label,\n Action,\n Heading,\n StatusMessage,\n ContentLoader,\n} from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nimport { getId } from 'helpers/getId';\nimport { getContextUrl } from 'helpers/getContextUrl';\nimport { DistributionOverTime } from './DistributionOverTime';\nimport { ProblemOccuranceTime } from './ProblemOccuranceTime';\n\nimport { getReportProblems } from '../utils';\nimport { addHours, addDays, isSameDay } from 'helpers/dates';\nimport { CheckType, PROBLEM_PERIOD, USER_TIMEZONE } from '../../constants';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.problem-report');\nconst locale = Locale.getSection('admin.controllers.websites-diagnostic.problem-report');\n\nimport PROBLEM_REPORT_QUERY from 'queries/WebsiteDiagnosticProblemReport.graphql';\n\nconst prepareSolution = solutionText => {\n const solutionDescription = solutionText.replace(/<ol>.+<\\/ol>/, '');\n const solutionStepsMatch = solutionText.match(/<ol>.+<\\/ol>/);\n const solutionSteps = solutionStepsMatch ? solutionStepsMatch[0] : '';\n\n const container = document.createElement('div');\n container.innerHTML = solutionSteps;\n\n return {\n description: solutionDescription,\n steps: [...container.querySelectorAll('li')].map(el => el.innerHTML),\n };\n};\n\nconst getProblemTimeInfo = (timestamp, serverTZOffset) => {\n if (!timestamp) {\n return {};\n }\n\n const [serverDate, timeWithTZ] = timestamp.split(' ');\n const [serverTime] = timeWithTZ.split(/[+-]/);\n\n const offset = serverTZOffset - USER_TIMEZONE;\n const clientDate = addHours(offset, new Date(timestamp));\n\n const today = new Date();\n if (isSameDay(today, clientDate)) {\n return {\n period: PROBLEM_PERIOD.TODAY,\n time: serverTime,\n };\n }\n\n const yesterday = addDays(-1, today);\n if (isSameDay(yesterday, clientDate)) {\n return {\n period: PROBLEM_PERIOD.YESTERDAY,\n time: serverTime,\n };\n }\n\n const [year, month, day] = serverDate.split('-');\n return {\n period: `${day}.${month}.${year}`,\n time: serverTime,\n };\n};\n\n/* eslint-disable react/no-danger */\nexport const ProblemDetails = ({\n problemCode,\n isServerWide = false,\n chosenDomainId,\n affectedWebsitesCount,\n regularCheckInfo,\n onGotoAffectedWebsites,\n onCheckDomainManually,\n}) => {\n const { data, loading, error } = useQuery(\n PROBLEM_REPORT_QUERY, {\n variables: {\n domainId: chosenDomainId,\n problemCode,\n },\n },\n );\n\n if (error) {\n window.location.reload();\n }\n\n const logsLink = useMemo(\n () => {\n if (!data) {\n return '';\n }\n\n const domain = data.server.websitesDiagnostic.domains[0];\n const domainId = getId(domain.id);\n const webSpaceId = getId(domain.baseDomain?.id || domain.id);\n\n return getContextUrl(webSpaceId, `/smb/log-file/browser/id/${domainId}`);\n },\n [data],\n );\n\n if (loading) {\n return <ContentLoader />;\n }\n\n const { settings, domains } = data.server.websitesDiagnostic;\n const examplesCols = [\n {\n key: 'path',\n title: <Translate content=\"logFile\" />,\n type: 'title',\n },\n {\n key: 'line',\n title: <Translate content=\"logEntry\" />,\n type: 'title',\n },\n ];\n\n const domain = domains[0];\n const problems = [\n ...getReportProblems(domain.websitesDiagnosticChecks, CheckType.MANUAL),\n ...getReportProblems(domain.websitesDiagnosticChecks, CheckType.REGULAR),\n ];\n const problem = problems[0];\n\n const timestamps = problems\n .reduce((acc, problem) => acc.concat(problem.plotItems), [])\n .map(item => item.timestamp)\n .sort();\n\n const firstProblemTimeInfo = getProblemTimeInfo(timestamps[0], settings.timezoneOffset);\n const lastProblemTimeInfo = getProblemTimeInfo(timestamps[timestamps.length - 1], settings.timezoneOffset);\n\n const { id, name, siteUrl } = domain;\n\n return (\n <>\n {!isServerWide && (\n <StatusMessage intent=\"info\">\n {locale.formatMessage('problemAppearsOn', { count: affectedWebsitesCount })}\n {' '}\n <Link onClick={onGotoAffectedWebsites}>\n <Text bold><Translate content=\"seeTheConsolidatedReport\" /></Text>\n </Link>\n </StatusMessage>\n )}\n {isServerWide && (\n <Section>\n <Translate content=\"thisIsServerWideProblem\" />\n </Section>\n )}\n <Section>\n <div dangerouslySetInnerHTML={{ __html: problem.description }} />\n </Section>\n {lastProblemTimeInfo && (\n <ProblemOccuranceTime\n timezoneOffset={settings.timezoneOffset}\n firstProblemTimeInfo={firstProblemTimeInfo}\n lastProblemTimeInfo={lastProblemTimeInfo}\n />\n )}\n <Section title={<Heading level={4}><Translate content=\"cause\" /></Heading>}>\n <div dangerouslySetInnerHTML={{ __html: problem.cause }} />\n </Section>\n {/* eslint-disable react/no-array-index-key */}\n <Section title={<Translate content=\"possibleSolutions\" />}>\n {problem.solutions.map((solution, i) => {\n const content = prepareSolution(solution.text);\n\n return (\n <Section\n key={i}\n title={\n <Heading level={4}>\n <div className=\"problem-details-solution__heading\">\n {problem.solutions.length > 1 && (\n <>\n <Translate\n content=\"option\"\n params={{\n number: i + 1,\n }}\n />\n {' '}\n </>\n )}\n {solution.title}\n {i === 0 && (\n <Label intent=\"success\">\n {locale.formatMessage('recommended')}\n </Label>\n )}\n </div>\n </Heading>\n }\n collapsible\n collapsed={i !== 0}\n >\n {!!content.description && <div dangerouslySetInnerHTML={{ __html: content.description }} />}\n {!!content.steps && (\n <ol>\n {content.steps.map((step, i) => <li key={i} dangerouslySetInnerHTML={{ __html: step }} />)}\n <li key={content.steps.length} data-cy=\"recheck-website-from-details\">\n <Translate\n content=\"weRecommendToRecheck\"\n params={{\n recheckWebsite: (\n <Action icon=\"refresh\" onClick={() => onCheckDomainManually({ id, name, siteUrl })}>\n <Translate content=\"recheckWebsite\" />\n </Action>\n ),\n }}\n />\n </li>\n </ol>\n )}\n </Section>\n );\n })}\n </Section>\n <DistributionOverTime\n serverUTC={settings.timezoneOffset}\n plotItems={problem.plotItems}\n dispayedDay={lastProblemTimeInfo.period}\n regularCheckInfo={regularCheckInfo}\n domain={domain}\n onCheckDomainManually={onCheckDomainManually}\n />\n <Section title={<Translate content=\"logEntries\" />}>\n <Translate content=\"pleaseKeepInMind\" />\n <List\n columns={examplesCols}\n data={problem.examples}\n />\n {!isServerWide && (\n <Link href={logsLink} target=\"_blank\">\n <Translate content=\"openWebsiteLogs\" />\n </Link>\n )}\n </Section>\n </>\n );\n};\n\nProblemDetails.propTypes = {\n isServerWide: PropTypes.bool,\n problemCode: PropTypes.string.isRequired,\n chosenDomainId: PropTypes.string.isRequired,\n affectedWebsitesCount: PropTypes.number.isRequired,\n regularCheckInfo: PropTypes.shape({\n isEnabled: PropTypes.bool,\n isSkippedInCheck: PropTypes.bool,\n onToggleRegularCheck: PropTypes.func,\n onOpenWebsitesList: PropTypes.func,\n }).isRequired,\n\n onGotoAffectedWebsites: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Section } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nimport { PROBLEM_PERIOD } from '../../constants';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.problem-report');\n\nconst getTranslationForProblemTimeInfo = problemTimeInfo => {\n switch (problemTimeInfo.period) {\n case PROBLEM_PERIOD.YESTERDAY:\n return <Translate content=\"yesterdayAt\" params={{ time: problemTimeInfo.time }} />;\n case PROBLEM_PERIOD.TODAY:\n return <Translate content=\"todayAt\" params={{ time: problemTimeInfo.time }} />;\n default:\n return <Translate content=\"dateAt\" params={{ date: problemTimeInfo.period, time: problemTimeInfo.time }} />;\n }\n};\n\nexport const ProblemOccuranceTime = ({ timezoneOffset, firstProblemTimeInfo, lastProblemTimeInfo }) => {\n const lastTimeInfoIsLink = [PROBLEM_PERIOD.TODAY, PROBLEM_PERIOD.YESTERDAY].includes(lastProblemTimeInfo.period);\n const firstTimeInfoIsLink = lastTimeInfoIsLink && lastProblemTimeInfo.period === firstProblemTimeInfo.period;\n\n const getProblemTimeContent = (problemTimeInfo, isLink) => {\n const content = (\n <Translate\n content=\"firstProblemTime\"\n params={{\n info: getTranslationForProblemTimeInfo(problemTimeInfo),\n }}\n />\n );\n\n return isLink ?\n <a onClick={() => document.getElementById('distribution-over-time').scrollIntoView({ behavior: 'smooth' })}>{content}</a> :\n content;\n };\n\n return (\n <Section>\n <Translate\n content=\"checkDetectedIssue\"\n params={{\n timezone: timezoneOffset > 0 ?\n `+${timezoneOffset}` :\n timezoneOffset,\n }}\n />\n <ul>\n <li>{getProblemTimeContent(firstProblemTimeInfo, firstTimeInfoIsLink)}</li>\n <li>{getProblemTimeContent(lastProblemTimeInfo, lastTimeInfoIsLink)}</li>\n </ul>\n </Section>\n );\n};\n\nProblemOccuranceTime.propTypes = {\n timezoneOffset: PropTypes.number.isRequired,\n firstProblemTimeInfo: PropTypes.shape({\n period: PropTypes.string,\n time: PropTypes.string,\n }).isRequired,\n lastProblemTimeInfo: PropTypes.shape({\n period: PropTypes.string,\n time: PropTypes.string,\n }).isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\n\nimport { ProblemDetails } from './ProblemDetails';\nimport { AffectedWebsites } from './AffectedWebsites';\n\nimport { ReportTypes } from '../../constants';\nimport { findProblem } from '../utils';\n\nexport const ReportContent = ({\n domains,\n problemCode = undefined,\n chosenDomainId,\n reportType,\n regularCheckInfo,\n onGotoAffectedWebsites,\n onGotoDomain,\n onCheckDomainManually,\n}) => {\n if (!problemCode) {\n return null;\n }\n\n const affectedWebsites = domains\n .filter(({ websitesDiagnosticChecks }) => findProblem(websitesDiagnosticChecks, problemCode));\n\n if (reportType === ReportTypes.AFFECTED_WEBSITES) {\n return (\n <AffectedWebsites\n data={affectedWebsites}\n onGotoDomain={onGotoDomain}\n />\n );\n }\n\n return (\n <ProblemDetails\n problemCode={problemCode}\n chosenDomainId={chosenDomainId}\n affectedWebsitesCount={affectedWebsites.length}\n isServerWide={reportType === ReportTypes.SERVERWIDE}\n regularCheckInfo={regularCheckInfo}\n onGotoAffectedWebsites={onGotoAffectedWebsites}\n onCheckDomainManually={onCheckDomainManually}\n />\n );\n};\n\nReportContent.propTypes = {\n domains: PropTypes.array.isRequired,\n problemCode: PropTypes.string,\n chosenDomainId: PropTypes.string.isRequired,\n reportType: PropTypes.oneOf(Object.values(ReportTypes)).isRequired,\n regularCheckInfo: PropTypes.shape({\n isEnabled: PropTypes.bool,\n isSkippedInCheck: PropTypes.bool,\n onToggleRegularCheck: PropTypes.func,\n onOpenWebsitesList: PropTypes.func,\n }).isRequired,\n\n onGotoAffectedWebsites: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n onGotoDomain: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Drawer,\n Text,\n} from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { ReportContent } from './Report/ReportContent';\nimport { ReportTypes } from '../constants';\nimport { findProblem } from './utils';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.problem-report');\nconst locale = Locale.getSection('admin.controllers.websites-diagnostic.problem-report');\n\nexport const ProblemReport = ({\n isOpen = false,\n reportType = undefined,\n domains,\n problemData,\n chosenDomainId = undefined,\n regularCheckInfo,\n onCloseReport,\n onChangeReportType,\n onSetChosenDomainId,\n onCheckDomainManually,\n}) => {\n const title = useMemo(\n () => {\n switch (reportType) {\n case ReportTypes.AFFECTED_WEBSITES: {\n const affectedDomains = domains\n .filter(({ websitesDiagnosticChecks }) => !!findProblem(websitesDiagnosticChecks, problemData.code));\n\n return locale.formatMessage('cumulativeTitle', { count: affectedDomains.length });\n }\n\n case ReportTypes.DOMAIN: {\n const chosenDomain = domains.find(({ id }) => id === chosenDomainId);\n\n return (\n <Translate\n content=\"domainTitle\"\n params={{ domain: <Text bold>{chosenDomain.name}</Text> }}\n />\n );\n }\n\n case ReportTypes.SERVERWIDE:\n return <Translate content=\"serverWideTitle\" />;\n }\n },\n [reportType, domains, problemData, chosenDomainId],\n );\n\n const onGotoDomain = useCallback(\n domainId => {\n onChangeReportType(ReportTypes.DOMAIN);\n onSetChosenDomainId(domainId);\n },\n [onChangeReportType, onSetChosenDomainId],\n );\n\n const onGotoAffectedWebsites = useCallback(\n () => onChangeReportType(ReportTypes.AFFECTED_WEBSITES),\n [onChangeReportType],\n );\n\n return (\n <Drawer\n data-type=\"problem-report\"\n title={title}\n subtitle={problemData.name}\n isOpen={isOpen}\n onClose={onCloseReport}\n >\n <ReportContent\n domains={domains}\n chosenDomainId={chosenDomainId}\n problemCode={problemData.code}\n reportType={reportType}\n regularCheckInfo={regularCheckInfo}\n onGotoAffectedWebsites={onGotoAffectedWebsites}\n onGotoDomain={onGotoDomain}\n onCheckDomainManually={onCheckDomainManually}\n />\n </Drawer>\n );\n};\n\nProblemReport.propTypes = {\n isOpen: PropTypes.bool,\n chosenDomainId: PropTypes.string,\n problemData: PropTypes.shape({\n code: PropTypes.string,\n name: PropTypes.string,\n domainName: PropTypes.string,\n }).isRequired,\n\n reportType: PropTypes.oneOf(Object.values(ReportTypes)),\n domains: PropTypes.array.isRequired,\n regularCheckInfo: PropTypes.shape({\n isEnabled: PropTypes.bool,\n isSkippedInCheck: PropTypes.bool,\n onToggleRegularCheck: PropTypes.func,\n onOpenWebsitesList: PropTypes.func,\n }).isRequired,\n\n onCloseReport: PropTypes.func.isRequired,\n onSetChosenDomainId: PropTypes.func.isRequired,\n onChangeReportType: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { CheckType } from '../constants';\n\nexport const getReportProblems = (websitesDiagnosticChecks, reportType) => {\n const report = websitesDiagnosticChecks.find(({ type }) => type === reportType);\n return (report ?? { problems: [] }).problems;\n};\n\nexport const findProblem = (websitesDiagnosticChecks, problemCode) => [\n ...getReportProblems(websitesDiagnosticChecks, CheckType.MANUAL),\n ...getReportProblems(websitesDiagnosticChecks, CheckType.REGULAR),\n].find(problem => problem.code === problemCode);\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Button, Heading, Panel, Media, MediaSection, Icon } from '@plesk/ui-library';\nimport { gql, useMutation } from '@apollo/client';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic');\n\nconst CLOSE_WEBSITES_DIAGNOSTIC_PROMO = gql`\n mutation CloseWebsitesDiagnosticPromo {\n updateWebsitesDiagnosticSettings(input: { isPromoShown: false }) {\n query {\n server {\n websitesDiagnostic {\n settings {\n isPromoShown\n }\n }\n }\n }\n }\n }\n`;\n\nconst Promo = ({ isPromoShown = true, documentationLink = undefined }) => {\n const [closePromo] = useMutation(CLOSE_WEBSITES_DIAGNOSTIC_PROMO);\n\n return isPromoShown ? (\n <Panel\n title={<Heading level={4}><Translate content=\"promoTitle\" /></Heading>}\n extra={<Button ghost icon=\"remove\" onClick={closePromo} />}\n >\n <Media\n image={<Icon src={require('images/websites-diagnostic.svg')} size=\"128\" />}\n >\n <MediaSection>\n <Translate content=\"promoDescription\" />\n </MediaSection>\n {documentationLink && (\n <MediaSection>\n <a target=\"_blank\" href={documentationLink} rel=\"noopener noreferrer\"><Translate content=\"promoMore\" /></a>\n </MediaSection>\n )}\n <MediaSection>\n <Button onClick={closePromo}><Translate content=\"promoButton\" /></Button>\n </MediaSection>\n </Media>\n </Panel>\n ) : null;\n};\n\nPromo.propTypes = {\n isPromoShown: PropTypes.bool,\n documentationLink: PropTypes.string,\n};\n\nexport default Promo;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n Drawer,\n FormFieldCheckbox,\n MenuDivider,\n SearchBar,\n Icon,\n Popover,\n FormField,\n Checkbox,\n Text,\n setIn,\n getIn,\n useTranslate,\n} from '@plesk/ui-library';\nimport { useEffect, useState } from 'react';\nimport { Locale } from 'jsw';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.websites');\n\nconst UPDATE_WEBSITES_DIAGNOSTIC_SETTINGS = gql`\n mutation UpdateWebsitesDiagnosticSettings($isNewDomainsChecked: Boolean!, $domains: [UpdateWebsitesDiagnosticSettingsDomainsInput!]) {\n updateWebsitesDiagnosticSettings(input: { isNewDomainsChecked: $isNewDomainsChecked, domains: $domains }) {\n query {\n server {\n websitesDiagnostic {\n settings {\n isNewDomainsChecked\n checkedDomains {\n id\n name(idn: false)\n }\n skippedDomains {\n id\n name(idn: false)\n }\n }\n }\n }\n }\n }\n }\n`;\n\nconst WebsitesList = ({ isOpen = false, onClose, checkedDomains, skippedDomains, isNewDomainsChecked = false }) => {\n const [values, setValues] = useState({});\n const [search, setSearch] = useState('');\n const [websites, setWebsites] = useState([]);\n const [formState, setFormState] = useState(null);\n\n const [updateSettings] = useMutation(UPDATE_WEBSITES_DIAGNOSTIC_SETTINGS, {\n onCompleted: () => {\n addToast({\n intent: 'success',\n message: <Translate content=\"updateSuccess\" />,\n });\n },\n });\n\n const translate = useTranslate('admin.controllers.websites-diagnostic.websites');\n const totalDomainsCount = checkedDomains.length + skippedDomains.length;\n\n useEffect(() => {\n if (isOpen) {\n setValues({\n new: isNewDomainsChecked,\n existing: !skippedDomains.length,\n ...checkedDomains.reduce((o, { id }) => ({ ...o, [id]: true }), {}),\n ...skippedDomains.reduce((o, { id }) => ({ ...o, [id]: false }), {}),\n });\n setSearch('');\n setWebsites([...checkedDomains, ...skippedDomains]);\n }\n }, [isOpen, isNewDomainsChecked, checkedDomains, skippedDomains]);\n\n useEffect(() => {\n setWebsites([...checkedDomains, ...skippedDomains].filter(({ name }) => name.toLowerCase().includes(search.toLowerCase())));\n }, [search, checkedDomains, skippedDomains]);\n\n const handleSubmit = async () => {\n setFormState('submit');\n await updateSettings({\n variables: {\n isNewDomainsChecked: values.new,\n domains: [...checkedDomains, ...skippedDomains].map(({ id }) => ({ id, isChecked: values[id] })),\n },\n });\n setFormState(null);\n handleClose();\n };\n\n const handleClose = () => formState !== 'submit' && onClose();\n\n const handleFieldChange = (name, value) => {\n setValues(values => setIn(values, name, value));\n switch (name) {\n case 'new':\n break;\n case 'existing':\n [...checkedDomains, ...skippedDomains].forEach(({ id }) => handleFieldChange(id, value));\n break;\n default:\n if (!value) {\n setValues(values => setIn(values, 'existing', false));\n } else if ([...checkedDomains, ...skippedDomains].every(({ id }) => id === name || values[id])) {\n setValues(values => setIn(values, 'all', true));\n }\n }\n };\n\n return (\n <Drawer\n data-type=\"websites-diagnostic-websites-list\"\n title={<Translate content=\"title\" />}\n subtitle={\n <Translate\n content=\"description\"\n params={{\n total: totalDomainsCount,\n selected: [...checkedDomains, ...skippedDomains].filter(({ id }) => getIn(values, id)).length,\n }}\n />\n }\n isOpen={isOpen}\n onClose={handleClose}\n size=\"sm\"\n form={{\n state: formState,\n applyButton: false,\n onFieldChange: handleFieldChange,\n submitButton: {\n id: 'btn-send',\n name: 'send',\n children: <Translate content=\"buttonSave\" />,\n onClick: handleSubmit,\n },\n cancelButton: {\n id: 'btn-cancel',\n name: 'cancel',\n children: <Translate content=\"buttonCancel\" />,\n onClick: handleClose,\n },\n values,\n }}\n >\n {totalDomainsCount ? (\n <>\n <SearchBar\n inputProps={{\n placeholder: translate('search'),\n }}\n onTyping={value => setSearch(value.trim())}\n />\n <br />\n </>\n ) : null}\n <FormField label={null} name=\"new\">\n {\n ({ getValue, setValue }) => (\n <>\n <Checkbox checked={getValue()} onChange={setValue}>\n <Text bold><Translate content=\"new\" /></Text>\n </Checkbox>\n {' '}\n <Popover\n intent=\"info\"\n target={<Icon name=\"info-circle\" />}\n >\n <Translate content=\"newHint\" />\n </Popover>\n </>\n )\n }\n </FormField>\n {totalDomainsCount ? (\n <>\n <FormFieldCheckbox\n label={<Text bold data-cy=\"existing-sites\"><Translate content=\"existing\" /></Text>}\n name=\"existing\"\n />\n <MenuDivider />\n {websites\n .sort(({ name: name1 }, { name: name2 }) => name1 <= name2 ? -1 : 1)\n .map(({ id, name }) => (\n <FormFieldCheckbox\n key={id}\n label={<span data-cy={`checkbox-${id}`}>{name}</span>}\n name={id}\n />\n ))}\n </>\n ) : null}\n </Drawer>\n );\n};\n\nWebsitesList.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n checkedDomains: PropTypes.array.isRequired,\n skippedDomains: PropTypes.array.isRequired,\n isNewDomainsChecked: PropTypes.bool,\n};\n\nexport default WebsitesList;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\n\nimport { Locale } from 'jsw';\nimport { Action, Column, Columns, Heading, Item, Switch } from '@plesk/ui-library';\n\nimport WebsitesList from './WebsitesList';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic');\nconst locale = Locale.getSection('admin.controllers.websites-diagnostic');\n\nexport const getTime = date => `${`0${date.getHours()}`.slice(-2)}:${`0${date.getMinutes()}`.slice(-2)}`;\n\nconst RegularCheck = ({\n isRegularCheckEnabled,\n isNewDomainsChecked,\n date: dateString = undefined,\n checkedDomains,\n skippedDomains,\n lastCheckDuration = undefined,\n isWebsitesListOpen = false,\n isLoading = undefined,\n onToggleFeature,\n onOpenWebsitesList,\n}) => {\n const date = dateString ? new Date(dateString) : null;\n\n const handleToggle = () => onToggleFeature({ variables: { isRegularCheckEnabled: !isRegularCheckEnabled } });\n\n return (\n <>\n <WebsitesList\n isOpen={isWebsitesListOpen}\n onClose={() => onOpenWebsitesList(false)}\n checkedDomains={checkedDomains}\n skippedDomains={skippedDomains}\n isNewDomainsChecked={isNewDomainsChecked}\n />\n <Item\n title={\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>\n <Columns gap=\"xs\" vertical={false} style={{ flex: 1 }}>\n <Column fill>\n <Heading level=\"3\">\n <Translate content={isRegularCheckEnabled ? 'checkEnabledTitle' : 'checkDisabledTitle'} />\n </Heading>\n </Column>\n <Column>\n <Switch data-action=\"toggle-regular-check\" checked={isRegularCheckEnabled} loading={isLoading} onChange={handleToggle} />\n </Column>\n </Columns>\n </>\n }\n view=\"card\"\n >\n {\n isRegularCheckEnabled ? (\n <>\n <Action\n icon=\"list\"\n data-cy=\"websites-for-regular-check\"\n data-cy-info={`${checkedDomains.length}-of-${checkedDomains.length + skippedDomains.length}`}\n onClick={() => onOpenWebsitesList(true)}\n >\n {locale.formatMessage(skippedDomains.length ? `websitesChecked${date ? 'At' : ''}` : `websitesAllChecked${date ? 'At' : ''}`, {\n count: checkedDomains.length,\n totalCount: checkedDomains.length + skippedDomains.length,\n time: date ? getTime(date) : '',\n })}\n </Action>\n {lastCheckDuration ? (\n <>\n <br />\n <br />\n <Translate\n content=\"lastCheckDescription\"\n params={{\n duration: +(lastCheckDuration / 60).toFixed(1) || <Translate content=\"durationLess\" />,\n }}\n />\n </>\n ) : null}\n </>\n ) : (\n <p>\n <Translate content=\"disabledDescription\" />\n </p>\n )\n }\n </Item>\n </>\n );\n};\n\nRegularCheck.propTypes = {\n isRegularCheckEnabled: PropTypes.bool.isRequired,\n isNewDomainsChecked: PropTypes.bool.isRequired,\n date: PropTypes.string,\n checkedDomains: PropTypes.array.isRequired,\n skippedDomains: PropTypes.array.isRequired,\n lastCheckDuration: PropTypes.number,\n isWebsitesListOpen: PropTypes.bool,\n isLoading: PropTypes.bool,\n\n onToggleFeature: PropTypes.func.isRequired,\n onOpenWebsitesList: PropTypes.func.isRequired,\n};\n\nexport default RegularCheck;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Text, List, Status } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst CODE_NO_PROBLEMS = 'no-problems';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.problems');\n\nconst renderCheckResult = (code, isDetected, report) => {\n if (!report) {\n return <Text intent=\"muted\">{'—'}</Text>;\n }\n if (code === CODE_NO_PROBLEMS) {\n return <Status intent=\"success\" icon={{ name: 'check-mark' }}><Translate content=\"resultNoProblems\" /></Status>;\n }\n return isDetected\n ? <Text intent=\"danger\"><Translate content=\"resultDetected\" /></Text>\n : <Text intent=\"muted\"><Translate content=\"resultNotDetected\" /></Text>;\n};\n\nconst renderCheckDate = report => {\n if (!report) {\n return <Translate content=\"notRun\" />;\n }\n\n const to = new Date(report.date);\n const from = new Date(report.date);\n from.setSeconds(from.getSeconds() - report.depth);\n\n const getDate = date => `${`0${date.getDate()}`.slice(-2)}.${`0${date.getMonth() + 1}`.slice(-2)}.${date.getFullYear()}`;\n const getTime = date => `${`0${date.getHours()}`.slice(-2)}:${`0${date.getMinutes()}`.slice(-2)}`;\n\n const fromDate = getDate(from);\n const toDate = getDate(to);\n return (\n <Translate\n content={fromDate === toDate ? 'runSameDay' : 'run'}\n params={{\n fromDate,\n toDate,\n fromTime: getTime(from),\n toTime: getTime(to),\n }}\n />\n );\n};\n\nconst ProblemsList = ({ problems, regularReport = undefined, manualReport = undefined, onOpenProblemDetails }) => (\n <List\n style={{ maxInlineSize: '800px' }}\n columns={[\n {\n key: 'name',\n title: <Text bold component=\"div\"><Translate content=\"columnTitle\" /></Text>,\n type: 'title',\n render: ({ name, code }) => code === CODE_NO_PROBLEMS ? (\n <Text intent=\"muted\">{'—'}</Text>\n ) : (\n <a data-cy={code} onClick={() => onOpenProblemDetails({ code, name })}>{name}</a>\n ),\n }, {\n key: 'regular',\n title: (\n <>\n <Text bold component=\"div\"><Translate content=\"columnRegular\" /></Text>\n <Text intent=\"muted\" fontSize=\"sm\">{renderCheckDate(regularReport)}</Text>\n </>\n ),\n render: ({ code, regular }) => renderCheckResult(code, regular, regularReport),\n }, {\n key: 'manual',\n title: (\n <>\n <Text bold component=\"div\"><Translate content=\"columnManual\" /></Text>\n <Text intent=\"muted\" fontSize=\"sm\">{renderCheckDate(manualReport)}</Text>\n </>\n ),\n render: ({ code, manual }) => renderCheckResult(code, manual, manualReport),\n },\n ]}\n itemsPerPage={10}\n data={problems.length ? problems : [{ code: CODE_NO_PROBLEMS }]}\n />\n);\n\nProblemsList.propTypes = {\n problems: PropTypes.array.isRequired,\n regularReport: PropTypes.shape({\n date: PropTypes.string.isRequired,\n depth: PropTypes.number.isRequired,\n }),\n manualReport: PropTypes.shape({\n date: PropTypes.string.isRequired,\n depth: PropTypes.number.isRequired,\n }),\n onOpenProblemDetails: PropTypes.func.isRequired,\n};\n\nexport default ProblemsList;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Text, useTranslate, ListEmptyView, Icon } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport List, { SORT_DESC } from 'components/List';\nimport { ReportTypes, CheckType } from '../constants';\nimport { getReportProblems } from '../ProblemReport/utils';\n\nconst localeNamespace = 'admin.controllers.websites-diagnostic.report';\nconst Translate = Locale.getTranslate(localeNamespace);\nconst locale = Locale.getSection(localeNamespace);\n\nconst getData = domains => {\n const problems = {};\n domains.forEach(({ id, name: domainName, websitesDiagnosticChecks }) => {\n const regularCheckProblems = getReportProblems(websitesDiagnosticChecks, CheckType.REGULAR);\n const manualCheckProblems = getReportProblems(websitesDiagnosticChecks, CheckType.MANUAL);\n\n [\n ...regularCheckProblems.filter(regularProblem => !manualCheckProblems.some(manualProblem => regularProblem.code === manualProblem.code)),\n ...manualCheckProblems,\n ]\n .forEach(({ code, name }) => {\n problems[code] = {\n code,\n name,\n domains: [{ id, name: domainName }, ...problems[code]?.domains ?? []],\n };\n });\n });\n\n return Object.values(problems);\n};\n\nconst ReportByProblems = ({\n toolbar = undefined,\n domains,\n onOpenProblemDetails,\n}) => {\n const translate = useTranslate(localeNamespace);\n const data = getData(domains);\n\n return (\n <>\n {data.length ? null : toolbar}\n <List\n id=\"report-by-problems-list\"\n columns={[\n {\n key: 'name',\n title: <Translate content=\"columnProblem\" />,\n type: 'title',\n sortable: true,\n render: ({ name, domains, code }) => {\n const reportType = domains.length === 0 ?\n ReportTypes.SERVERWIDE :\n ReportTypes.AFFECTED_WEBSITES;\n\n return (\n <a onClick={() => onOpenProblemDetails(reportType)({ code, domains, name })}>\n <Text bold data-cy={code}>{name}</Text>\n </a>\n );\n },\n }, {\n key: 'appearedOn',\n title: <Translate content=\"columnAppearedOn\" />,\n sortable: true,\n sort:\n ({ domains: domains1 }, { domains: domains2 }) => (domains1.length || Number.MAX_SAFE_INTEGER) < (domains2.length || Number.MAX_SAFE_INTEGER) ? -1 : 1,\n render: ({ domains }) => (\n <span data-cy=\"affected-count\" data-cy-info={domains.length}>\n {locale.formatMessage(domains.length ? 'appearedOn' : 'serverWide', { count: domains.length })}\n </span>\n ),\n },\n ]}\n data={data}\n itemsPerPage={10}\n sortColumn=\"appearedOn\"\n sortDirection={SORT_DESC}\n searchField=\"name\"\n searchBarInputProps={{ placeholder: translate('searchProblem') }}\n locale={{\n totalRows: params => locale.formatMessage('groupByProblemsTotal', { ...params, websitesCount: domains.length }),\n }}\n emptyView={\n <ListEmptyView\n image={<Icon src={require('images/websites-diagnostic.svg')} size=\"192\" />}\n title={locale.formatMessage('noProblemsTitle', { websitesCount: domains.length })}\n description={<Translate content=\"noProblemsDescription\" />}\n />\n }\n toolbar={toolbar}\n />\n </>\n );\n};\n\nReportByProblems.propTypes = {\n toolbar: PropTypes.node,\n domains: PropTypes.array.isRequired,\n onOpenProblemDetails: PropTypes.func.isRequired,\n};\n\nexport default ReportByProblems;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Text, Label, Icon, Status, useTranslate, ListActions, ListAction } from '@plesk/ui-library';\nimport { getContextUrl } from 'helpers/getContextUrl';\nimport { getId } from 'helpers/getId';\nimport { Locale, UAT } from 'jsw';\nimport List, { SORT_DESC } from 'components/List';\nimport Link from 'components/common/Link';\nimport ReportByWebsitesRowBody from './ReportByWebsitesRowBody';\nimport ReportByWebsitesServerWideRowBody from './ReportByWebsitesServerWideRowBody';\nimport { ReportTypes } from '../constants';\n\nconst localeNamespace = 'admin.controllers.websites-diagnostic.report';\nconst Translate = Locale.getTranslate(localeNamespace);\nconst locale = Locale.getSection(localeNamespace);\n\nconst SERVER_WIDE = 'server-wide';\n\nconst isServerWide = ({ key }) => key === SERVER_WIDE;\nconst isCurrentDomain = ({ id, problems }, currentId) => currentId !== '' && currentId === id && Boolean(problems.length);\nconst getExpandedCurrent = (domains, currentId) => {\n const currentDomain = domains.find(domain => isCurrentDomain(domain, currentId));\n return currentDomain ? [currentDomain.key] : [];\n};\n\nconst getProblems = (regularProblems, manualProblems) => {\n const problemCodes = [...regularProblems, ...manualProblems].reduce((o, { code, name }) => ({ ...o, [code]: name }), {});\n return Object.keys(problemCodes).map(code => ({\n code,\n name: problemCodes[code],\n regular: regularProblems.some(problem => problem.code === code),\n manual: manualProblems.some(problem => problem.code === code),\n }));\n};\n\nconst getData = domains => {\n const data = domains.map(({ id, baseDomain, siteUrl, name, websitesDiagnosticChecks }) => {\n const regularCheck = websitesDiagnosticChecks.find(({ type }) => type === 'regular');\n const manualCheck = websitesDiagnosticChecks.find(({ type }) => type === 'manual');\n const domainId = getId(id);\n const webspaceId = getId(baseDomain?.id || id);\n return {\n key: id,\n id,\n name,\n siteUrl,\n problems: getProblems(regularCheck?.problems ?? [], manualCheck?.problems ?? []),\n regularReport: regularCheck ? {\n date: regularCheck.date,\n depth: regularCheck.depth,\n } : null,\n manualReport: manualCheck ? {\n date: manualCheck.date,\n depth: manualCheck.depth,\n } : null,\n overviewUrl: getContextUrl(webspaceId, `/smb/web/overview/id/${domainId}/type/domain`),\n logsUrl: getContextUrl(webspaceId, `/smb/log-file/browser/id/${domainId}`),\n };\n });\n\n return data.map(row => ({\n ...row,\n stats: {\n problemsFound: row.manualReport ? row.problems.filter(({ manual }) => manual).length : row.problems.length,\n problemsSolved: row.manualReport ? row.problems.filter(({ regular, manual }) => regular && !manual).length : 0,\n },\n }));\n};\n\nconst ReportByWebsites = ({\n toolbar = undefined,\n domains,\n onOpenProblemDetails,\n onCheckDomainManually,\n domainId = '',\n}) => {\n const translate = useTranslate(localeNamespace);\n const data = getData(domains);\n const currentDomainId = btoa(`Domain:${domainId}`);\n\n const handleExpandedRowsChange = expandedRows => {\n UAT.dispatchAction('EXPAND_ROWS', {\n expanded: expandedRows.join(';'),\n });\n };\n\n return (\n <>\n {data.length ? null : toolbar}\n <List\n id=\"report-by-websites-list\"\n rowProps={row => ({\n 'data-cy': `row-${row.id}`,\n })}\n columns={[\n {\n key: 'name',\n title: <Translate content=\"columnWebsite\" />,\n type: 'title',\n sortable: true,\n sort: (row1, row2) => {\n if (isServerWide(row1)) {\n return -1;\n }\n if (isServerWide(row2)) {\n return 1;\n }\n if (row1.name < row2.name) {\n return -1;\n }\n if (row1.name > row2.name) {\n return 1;\n }\n return 0;\n },\n render: row => (\n <>\n {isServerWide(row) && (\n <>\n <Icon name=\"server\" />\n {' '}\n </>\n )}\n <Text bold>{row.name}</Text>\n </>\n ),\n }, {\n key: 'problems',\n title: <Translate content=\"columnStatus\" />,\n sortable: true,\n sort: (row1, row2) => {\n if (isCurrentDomain(row1, currentDomainId) || isServerWide(row1)) {\n return 1;\n }\n if (isCurrentDomain(row2, currentDomainId) || isServerWide(row2)) {\n return -1;\n }\n if (row1.stats.problemsFound < row2.stats.problemsFound) {\n return -1;\n }\n if (row1.stats.problemsFound > row2.stats.problemsFound) {\n return 1;\n }\n if (row1.stats.problemsSolved < row2.stats.problemsSolved) {\n return -1;\n }\n if (row1.stats.problemsSolved > row2.stats.problemsSolved) {\n return 1;\n }\n return 0;\n },\n render: ({ stats: { problemsFound, problemsSolved } }) => (\n <>\n {!problemsFound && !problemsSolved ? (\n <Status data-cy=\"no-problems\" icon={<Icon name=\"check-mark\" />} intent=\"success\">\n <Translate content=\"statusSuccess\" />\n </Status>\n ) : null}\n {problemsFound ? (\n <Label intent=\"danger\" data-cy=\"found-problems\" data-cy-info={problemsFound}>\n {locale.formatMessage(problemsSolved ? 'statusProblemsFound' : 'statusProblemsFoundFull', { count: problemsFound })}\n </Label>\n ) : null}\n {\n problemsFound && problemsSolved ? ' ' : null\n }\n {problemsSolved ? (\n <Label intent=\"inactive\" data-cy=\"solved-problems\" data-cy-info={problemsSolved}>\n {locale.formatMessage(problemsFound ? 'statusProblemsSolved' : 'statusProblemsSolvedFull', { count: problemsSolved })}\n </Label>\n ) : null}\n </>\n ),\n }, {\n key: 'actions',\n type: 'actions',\n render: row => isServerWide(row) ? null : (\n <ListActions>\n <ListAction icon=\"refresh\" primary onClick={() => onCheckDomainManually(row)}>\n <Translate content=\"recheckWebsite\" />\n </ListAction>\n <ListAction component=\"a\" icon=\"globe\" primary href={row.siteUrl} target=\"_blank\">\n <Translate content=\"actionOpen\" />\n </ListAction>\n <ListAction component={Link} icon=\"web-settings\" primary to={row.overviewUrl}>\n <Translate content=\"actionManage\" />\n </ListAction>\n <ListAction component=\"a\" icon=\"list\" primary href={row.logsUrl}>\n <Translate content=\"actionLogs\" />\n </ListAction>\n </ListActions>\n ),\n },\n ]}\n data={data}\n renderRowBody={row => isServerWide(row) ? (\n <ReportByWebsitesServerWideRowBody\n {...row}\n onOpenProblemDetails={onOpenProblemDetails(ReportTypes.SERVERWIDE)}\n />\n ) : (\n <ReportByWebsitesRowBody\n {...row}\n onOpenProblemDetails={onOpenProblemDetails(ReportTypes.DOMAIN)}\n onCheckDomainManually={onCheckDomainManually}\n />\n )}\n itemsPerPage={10}\n sortColumn=\"problems\"\n sortDirection={SORT_DESC}\n searchField=\"name\"\n searchBarInputProps={{ placeholder: translate('searchWebsite') }}\n toolbar={toolbar}\n onExpandedRowsChange={handleExpandedRowsChange}\n expandedRows={getExpandedCurrent(data, currentDomainId)}\n />\n </>\n );\n};\n\nReportByWebsites.propTypes = {\n toolbar: PropTypes.node,\n domains: PropTypes.array.isRequired,\n onOpenProblemDetails: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n domainId: PropTypes.string,\n};\n\nexport default ReportByWebsites;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Action, Columns, Column } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport Link from 'components/common/Link';\nimport PropTypes from 'prop-types';\nimport ProblemsList from './ProblemsList';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.report');\n\nconst ReportByWebsitesRowBody = ({\n id,\n overviewUrl,\n logsUrl,\n onOpenProblemDetails,\n onCheckDomainManually,\n siteUrl,\n name,\n ...problemListProps\n}) => (\n <>\n <ProblemsList\n {...problemListProps}\n onOpenProblemDetails={problemData => onOpenProblemDetails(problemData, id)}\n />\n <Columns gap=\"sm\">\n <Column>\n <Action icon=\"refresh\" onClick={() => onCheckDomainManually({ id, name, siteUrl })}>\n <Translate content=\"recheckWebsite\" />\n </Action>\n </Column>\n <Column>\n <Action icon=\"web\" href={siteUrl} target=\"_blank\">\n <Translate content=\"actionOpen\" />\n </Action>\n </Column>\n <Column>\n <Action component={Link} icon=\"web-settings\" to={overviewUrl}>\n <Translate content=\"actionManage\" />\n </Action>\n </Column>\n <Column>\n <Action icon=\"list\" href={logsUrl}>\n <Translate content=\"actionLogs\" />\n </Action>\n </Column>\n </Columns>\n </>\n);\n\nReportByWebsitesRowBody.propTypes = {\n id: PropTypes.string.isRequired,\n overviewUrl: PropTypes.string.isRequired,\n logsUrl: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n siteUrl: PropTypes.string.isRequired,\n problems: PropTypes.array.isRequired,\n onOpenProblemDetails: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n};\n\nexport default ReportByWebsitesRowBody;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport ProblemsList from './ProblemsList';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.report');\n\nconst ReportByWebsitesServerWideRowBody = problemListProps => (\n <>\n <p>\n <Translate content=\"serverWideDescription\" />\n </p>\n <ProblemsList {...problemListProps} />\n </>\n);\n\nexport default ReportByWebsitesServerWideRowBody;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { useState } from 'react';\n\nimport { Heading, SegmentedControl } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nimport { GroupBy } from '../constants';\nimport ReportByProblems from './ReportByProblems';\nimport ReportByWebsites from './ReportByWebsites';\n\nconst Translate = Locale.getTranslate('admin.controllers.websites-diagnostic.report');\n\nconst Report = ({\n domains,\n onOpenProblemDetails,\n onCheckDomainManually,\n domainId = '',\n}) => {\n const [groupBy, setGroupBy] = useState(\n domains.some(({ websitesDiagnosticChecks }) => websitesDiagnosticChecks.some(({ problems }) => problems.length))\n ? GroupBy.WEBSITES : GroupBy.PROBLEMS,\n );\n\n const toolbar = (\n <SegmentedControl\n buttons={[\n { value: GroupBy.WEBSITES, title: <Translate content=\"groupByWebsites\" />, 'data-action': 'group-by-websites', 'data-cy': 'sort-by-websites' },\n { value: GroupBy.PROBLEMS, title: <Translate content=\"groupByProblems\" />, 'data-action': 'group-by-problems', 'data-cy': 'sort-by-problems' },\n ]}\n selected={groupBy}\n onChange={setGroupBy}\n />\n );\n\n return (\n <>\n <p>\n <Heading level={3}><Translate content=\"title\" /></Heading>\n </p>\n {groupBy === GroupBy.WEBSITES ? (\n <ReportByWebsites\n toolbar={toolbar}\n domains={domains}\n onOpenProblemDetails={onOpenProblemDetails}\n onCheckDomainManually={onCheckDomainManually}\n domainId={domainId}\n />\n ) : (\n <ReportByProblems\n toolbar={toolbar}\n domains={domains}\n onOpenProblemDetails={onOpenProblemDetails}\n />\n )}\n </>\n );\n};\n\nReport.propTypes = {\n domains: PropTypes.array.isRequired,\n onOpenProblemDetails: PropTypes.func.isRequired,\n onCheckDomainManually: PropTypes.func.isRequired,\n domainId: PropTypes.string,\n};\n\nexport default Report;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nexport const MIN_IN_HOUR = 60;\n\nexport const USER_TIMEZONE = -(new Date()).getTimezoneOffset() / MIN_IN_HOUR;\n\nexport const ReportTypes = {\n DOMAIN: 'DOMAIN',\n AFFECTED_WEBSITES: 'AFFECTED_WEBSITES',\n SERVERWIDE: 'SERVERWIDE',\n};\n\nexport const GroupBy = {\n WEBSITES: 'groupByWebsites',\n PROBLEMS: 'groupByProblems',\n};\n\nexport const CheckType = {\n REGULAR: 'regular',\n MANUAL: 'manual',\n};\n\nexport const Timezones = {\n SERVER: 'SERVER',\n CLIENT: 'CLIENT',\n};\n\nexport const PROBLEM_PERIOD = {\n YESTERDAY: 'yesterday',\n TODAY: 'today',\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\n\nimport pageData from 'helpers/pageData';\nimport Page from './Page';\nimport { withPageLayout } from 'components/layouts/PageLayout';\n\nexport default withPageLayout(Page, () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n const breadcrumbs = [\n pageSidebar?.isPowerUserPanel ? null : {\n title: Locale.getSection('admin.controllers.home.admin').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.websites-diagnostic').lmsg('title'),\n href: '/cp/websites-diagnostic',\n },\n ].filter(Boolean);\n const pageTitle = breadcrumbs[breadcrumbs.length - 1].title;\n return {\n showFrames,\n pageHeader,\n pageSidebar,\n pageContentHeader: {\n breadcrumbs,\n pageTitle,\n },\n pageTitle,\n };\n});\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nexport const throttle = <T extends (...args: unknown[]) => void>(\n callback: T,\n time: number,\n): (...args: Parameters<T>) => void => {\n let isPaused = false;\n\n return (...args: Parameters<T>) => {\n if (isPaused) {\n return;\n }\n\n isPaused = true;\n callback(...args);\n\n setTimeout(() => {\n isPaused = false;\n }, time);\n };\n};\n","module.exports = Jsw.skinUrl + \"/images/websites-diagnostic.svg?e3aab84260ea4356754097624179d8d6\";","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ToggleWebsitesDiagnostic\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isRegularCheckEnabled\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateWebsitesDiagnosticSettings\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"isRegularCheckEnabled\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isRegularCheckEnabled\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"query\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"server\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"websitesDiagnostic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isRegularCheckEnabled\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":389}};\n doc.loc.source = {\"body\":\"mutation ToggleWebsitesDiagnostic($isRegularCheckEnabled: Boolean!) {\\n updateWebsitesDiagnosticSettings(input: { isRegularCheckEnabled: $isRegularCheckEnabled }) {\\n query {\\n server {\\n websitesDiagnostic {\\n settings {\\n isRegularCheckEnabled\\n }\\n }\\n }\\n }\\n }\\n}\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ToggleWebsitesDiagnostic\"] = oneQuery(doc, \"ToggleWebsitesDiagnostic\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"WebsitesDiagnosticProblem\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"domainId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"problemCode\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"server\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"websitesDiagnostic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timezoneOffset\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"domains\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"domainId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"domainId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"idn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}}],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"siteUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"baseDomain\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"websitesDiagnosticChecks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"date\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"depth\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"problems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"problemCode\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cause\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"examples\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"solutions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"plotItems\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timestamp\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errorsCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"requestsCount\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1198}};\n doc.loc.source = {\"body\":\"query WebsitesDiagnosticProblem($domainId: ID, $problemCode: String) {\\n server {\\n websitesDiagnostic {\\n settings {\\n timezoneOffset\\n }\\n domains(filter: { domainId: $domainId }) {\\n id\\n name(idn: false)\\n siteUrl\\n baseDomain {\\n id\\n }\\n websitesDiagnosticChecks {\\n type\\n date\\n depth\\n problems(filter: { code: $problemCode }) {\\n name\\n code\\n cause\\n description\\n examples {\\n line\\n path\\n }\\n solutions {\\n title\\n text\\n }\\n plotItems {\\n timestamp\\n errorsCount\\n requestsCount\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"WebsitesDiagnosticProblem\"] = oneQuery(doc, \"WebsitesDiagnosticProblem\");\n \n"],"names":["listLocale","Locale","getSection","SORT_ASC","SORT_DESC","ALL_ITEMS_PER_PAGE","storage","set","key","data","localStorage","setItem","JSON","stringify","get","getItem","parse","getSortListName","id","getPageListName","List","columns","itemsPerPage","defaultItemsPerPage","itemsPerPageOptions","sortColumn","defaultSortColumn","sortDirection","defaultSortDirection","searchField","locale","emptyView","emptyFilteredView","toolbar","selection","onSelectionChange","searchBarInputProps","rowKey","useStorage","props","setSortState","useSortState","defaultColumn","defaultDirection","setState","useState","state","find","sortable","page","searchPattern","setPageState","usePageState","includes","listEmptyView","useMemo","_jsx","ListEmptyView","reason","columnsData","map","sortDataField","column","filteredData","filter","row","Array","isArray","some","field","String","toLowerCase","sortedData","compare","sort","defaultCompare","a","b","displayData","from","to","slice","handleSearchPatternChange","useCallback","term","handleItemsPerPageChange","Math","ceil","length","useEffect","newSelection","item","getRowKey","BaseList","pagination","Pagination","current","total","onSelect","onItemsPerPageChange","_jsxs","Toolbar","children","_Fragment","ToolbarExpander","ToolbarGroup","title","SearchBar","inputProps","placeholder","lmsg","value","onTyping","totalRows","onSortChange","filtered","formatMessage","propTypes","PropTypes","isRequired","Translate","getTranslate","RUN_WEBSITES_DIAGNOSTIC","gql","NewCheck","isOpen","onClose","domains","checkedDomains","skippedDomains","domainForManualCheck","values","setValues","depth","search","setSearch","websites","setWebsites","formState","setFormState","task","setTask","runWebsitesDiagnostic","useMutation","translate","useTranslate","domainsWithProblems","websitesDiagnosticChecks","regularCheck","type","manualCheck","problems","totalDomainsCount","selectedWebsitesCount","getIn","lastCheckLaterThanDay","date","max","Date","lastCheckDate","getSysdate","HOURS_IN_MS","all","withCheckProblems","every","domain","reduce","o","name","handleClose","handleFieldChange","setIn","forEach","domainId","handleDomainExclude","DrawerWithProgress","pageUrl","window","location","pathname","dataType","website","count","subtitle","content","params","selected","size","form","applyButton","onFieldChange","submitButton","onClick","async","variables","period","replace","domainIds","cancelButton","Section","Heading","level","SectionItem","FormField","label","vertical","required","getValue","setValue","InputNumber","min","join","onChange","newValue","Select","newPeriod","adjustDepthValue","SelectOption","visitingTheWebsite","href","siteUrl","target","rel","trim","FormFieldCheckbox","Text","bold","MenuDivider","name1","name2","ManualCheck","isNewCheckOpen","onToggleManualCheck","Item","view","Button","intent","icon","Page","server","websitesDiagnostic","settings","isPromoShown","documentationLink","useQuery","WEBSITES_DIAGNOSTIC_PAGE_QUERY","showProblemDetails","setShowProblemDetails","setDomainForManualCheck","chosenDomainId","setChosenDomainId","reportType","setReportType","problemData","setProblemData","setIsNewCheckOpen","isWebsitesListOpen","setIsWebsitesListOpen","toggleFeature","loading","TOGGLE_WEBSITES_DIAGNOSTIC","onOpenProblemDetails","onCloseProblemDetails","undefined","onCheckDomainManually","isOpened","onToggleRegularCheck","isRegularCheckEnabled","onOpenWebsitesList","regularCheckInfo","isEnabled","isSkippedInCheck","Promo","ItemList","gap","stretchable","xs","sm","md","hoverable","RegularCheck","isLoading","onToggleFeature","Report","ProblemReport","onCloseReport","onChangeReportType","onSetChosenDomainId","AffectedWebsites","onGotoDomain","render","Link","ghost","tooltip","align","ProblemReportChart","serverUTC","selectedTZ","dispayedDay","hintCoords","setHintCoords","onShowHint","throttle","event","tagName","legends","color","strokeWidth","dataTZ","getTimezoneShift","timestamp","timeShift","Timezones","SERVER","USER_TIMEZONE","requests","errors","coords","elem","isDayActual","shift","day","addHours","isToday","PROBLEM_PERIOD","TODAY","isSameDay","isYesterday","YESTERDAY","addDays","req","err","dataToCoords","requestsCount","errorsCount","timeWithTZ","split","time","hours","minutes","xCoord","x","y","push","maxY","concat","XYPlot","width","height","margin","left","right","xDomain","yDomain","xDistance","DiscreteColorLegend","items","orientation","style","position","top","VerticalBarSeries","barWidth","onNearestX","XAxis","tickValues","tickFormat","v","tickTotal","YAxis","VerticalGridLines","Hint","className","DistributionOverTime","plotItems","setSelectedTZ","getSuggestion","Object","Alert","suggestion","Action","SegmentedControl","buttons","utcShift","CLIENT","getProblemTimeInfo","serverTZOffset","serverDate","serverTime","offset","clientDate","today","yesterday","year","month","ProblemDetails","problemCode","isServerWide","affectedWebsitesCount","onGotoAffectedWebsites","error","PROBLEM_REPORT_QUERY","reload","logsLink","getId","webSpaceId","baseDomain","getContextUrl","ContentLoader","examplesCols","getReportProblems","CheckType","MANUAL","REGULAR","problem","timestamps","acc","firstProblemTimeInfo","timezoneOffset","lastProblemTimeInfo","StatusMessage","dangerouslySetInnerHTML","__html","description","ProblemOccuranceTime","cause","solutions","solution","i","solutionText","solutionDescription","solutionStepsMatch","match","solutionSteps","container","document","createElement","innerHTML","steps","querySelectorAll","el","prepareSolution","text","number","Label","collapsible","collapsed","step","recheckWebsite","examples","getTranslationForProblemTimeInfo","problemTimeInfo","lastTimeInfoIsLink","firstTimeInfoIsLink","getProblemTimeContent","isLink","info","getElementById","scrollIntoView","behavior","timezone","ReportContent","affectedWebsites","findProblem","ReportTypes","AFFECTED_WEBSITES","SERVERWIDE","affectedDomains","code","DOMAIN","chosenDomain","Drawer","domainName","CLOSE_WEBSITES_DIAGNOSTIC_PROMO","closePromo","Panel","extra","Media","image","Icon","src","require","MediaSection","UPDATE_WEBSITES_DIAGNOSTIC_SETTINGS","WebsitesList","isNewDomainsChecked","updateSettings","onCompleted","addToast","message","new","existing","isChecked","Checkbox","checked","Popover","getTime","getHours","getMinutes","dateString","lastCheckDuration","Columns","flex","Column","fill","Switch","handleToggle","totalCount","duration","toFixed","CODE_NO_PROBLEMS","renderCheckResult","isDetected","report","Status","renderCheckDate","setSeconds","getSeconds","getDate","getMonth","getFullYear","fromDate","toDate","fromTime","toTime","ProblemsList","regularReport","manualReport","maxInlineSize","component","fontSize","regular","manual","localeNamespace","ReportByProblems","regularCheckProblems","manualCheckProblems","regularProblem","manualProblem","getData","domains1","domains2","Number","MAX_SAFE_INTEGER","websitesCount","isCurrentDomain","currentId","Boolean","getExpandedCurrent","currentDomain","getProblems","regularProblems","manualProblems","problemCodes","keys","ReportByWebsites","webspaceId","overviewUrl","logsUrl","stats","problemsFound","problemsSolved","currentDomainId","btoa","rowProps","row1","row2","ListActions","ListAction","primary","renderRowBody","ReportByWebsitesServerWideRowBody","ReportByWebsitesRowBody","onExpandedRowsChange","expandedRows","UAT","dispatchAction","expanded","problemListProps","groupBy","setGroupBy","GroupBy","WEBSITES","PROBLEMS","MIN_IN_HOUR","getTimezoneOffset","withPageLayout","showFrames","pageHeader","pageSidebar","pageData","breadcrumbs","isPowerUserPanel","pageTitle","pageContentHeader","callback","isPaused","args","setTimeout","module","exports","Jsw","skinUrl","doc","loc","source","collectFragmentReferences","node","refs","kind","add","selectionSet","selections","variableDefinitions","def","definitions","definitionRefs","findOperation","element","Set","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","oneQuery"],"sourceRoot":""}
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
index.js
56083 bytes
0644
index.js.map
181988 bytes
0644
N4ST4R_ID | Naxtarrr