Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
cp
/
public
/
javascript
/
views
/
smb
/
statistics
/
File Content:
details.js.map
{"version":3,"file":"javascript/views/smb/statistics/details.js?ffc3f58eae2cd87044dd","mappings":"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","sources":["webpack:///./components/jsw/JswList.js","webpack:///./components/jsw/convertToReactComponent.js","webpack:///./views/smb/statistics/details/Details.js","webpack:///./views/smb/statistics/details/Gauge.js","webpack:///./views/smb/statistics/details/StatisticsPieChart.js","webpack:///./views/smb/statistics/details/Usage.js","webpack:///./views/smb/statistics/list/SubscriptionsList.js","webpack:///./views/smb/web/common/SiteCard/useDomainStatistics.js","webpack:///./icons/32/plesk/disk-usage.png","webpack:///./icons/32/plesk/traffic.png"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { List } from 'jsw';\nimport convertToReactComponent from './convertToReactComponent';\n\nconst propTypes = {\n id: PropTypes.string,\n dataUrl: PropTypes.string,\n operations: PropTypes.array,\n itemActions: PropTypes.object,\n columns: PropTypes.array,\n data: PropTypes.shape({\n data: PropTypes.array,\n state: PropTypes.object,\n pager: PropTypes.object,\n locale: PropTypes.object,\n additional: PropTypes.object,\n pathbar: PropTypes.any,\n }),\n searchFilters: PropTypes.object,\n searchOveral: PropTypes.string,\n disabledSelectHint: PropTypes.string,\n isDisabledItem: PropTypes.func,\n onRedraw: PropTypes.func,\n emptyViewMode: PropTypes.oneOf(['all', 'items']),\n emptyView: PropTypes.any,\n};\n\nconst defaultProps = {\n id: undefined,\n dataUrl: undefined,\n operations: undefined,\n itemActions: undefined,\n columns: undefined,\n data: undefined,\n searchFilters: undefined,\n searchOveral: undefined,\n disabledSelectHint: undefined,\n isDisabledItem: undefined,\n onRedraw: undefined,\n emptyViewMode: undefined,\n emptyView: undefined,\n};\n\nconst JswList = convertToReactComponent(List, {\n propsList: Object.keys(propTypes),\n defaultProps,\n});\nJswList.displayName = 'JswList';\nJswList.propTypes = propTypes;\n\nexport default JswList;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useRef, useLayoutEffect } from 'react';\nimport { render } from 'jsw';\n\n// eslint-disable-next-line react/display-name\nconst convertToReactComponent = (JswComponent, { propsList = [], setters = {}, defaultProps = {} }) => props => {\n const containerRef = useRef();\n const componentRef = useRef();\n\n const [componentProps, containerProps] = Object.entries({ ...defaultProps, ...props }).reduce((res, [name, value]) => {\n res[propsList.includes(name) ? 0 : 1][name] = value;\n return res;\n }, [{}, {}]);\n\n const deps = propsList.map(name => {\n const value = componentProps[name];\n\n if (setters[name]) {\n componentRef.current?.[setters[name]](value);\n return null;\n }\n\n return value;\n });\n\n useLayoutEffect(() => {\n componentRef.current = new JswComponent(componentProps);\n render(containerRef.current, componentRef.current);\n\n return () => {\n componentRef.current.remove();\n componentRef.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [containerProps.key, ...deps]);\n\n return <div ref={containerRef} {...containerProps} />;\n};\n\nexport default convertToReactComponent;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport { Columns, Column, Panel, Media, Icon, ItemList, Item, Toolbar, Button } from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\n\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport { Locale } from 'jsw';\nimport Gauge from './Gauge';\nimport Usage from './Usage';\nimport useDomainStatistics from '../../web/common/SiteCard/useDomainStatistics';\nimport { useNavigate } from 'react-router-dom';\n\nconst Translate = Locale.getTranslate('smb.controllers.statistics.details');\n\nconst Details = ({\n diskspaceUsage,\n diskspaceParts,\n trafficUsage,\n trafficParts,\n buttons,\n domainId = 0,\n recalculateInProgress = false,\n}) => {\n const navigate = useNavigate();\n const { startRecalculate, inProgress } = useDomainStatistics({ domainId, recalculateInProgress });\n const statisticsPanelClass = useMemo(\n () => {\n const hasDiskspaceParts = diskspaceParts?.length;\n const hasTrafficParts = trafficParts?.length;\n\n return hasDiskspaceParts && hasTrafficParts ? 'smb-statistics-details-panel' : '';\n },\n [diskspaceParts, trafficParts],\n );\n\n return (\n <>\n <p><Translate content=\"pageHint\" /></p>\n {domainId ? (\n <Toolbar>\n <Button\n data-type=\"recalculateStats\"\n key=\"button\"\n icon=\"refresh\"\n tooltip={<Translate content=\"recalculateStatsHint\" />}\n onClick={() => startRecalculate(() => navigate(), true)}\n state={inProgress ? 'loading' : undefined}\n >\n <Translate content=\"recalculateStats\" />\n </Button>\n </Toolbar>\n ) : null}\n <Columns gap=\"md\" vertical={768}>\n <Column ratio={1}>\n <Panel className={statisticsPanelClass}>\n <Media image={<Icon src={require('icons/32/plesk/disk-usage.png')} size=\"32\" />}>\n <Gauge limit={diskspaceUsage} showPercent />\n <hr />\n <Usage parts={diskspaceParts} />\n </Media>\n </Panel>\n </Column>\n <Column ratio={1}>\n <Panel className={statisticsPanelClass}>\n <Media image={<Icon src={require('icons/32/plesk/traffic.png')} size=\"32\" />}>\n <Gauge limit={trafficUsage} showPercent />\n <hr />\n <Usage parts={trafficParts} />\n </Media>\n </Panel>\n </Column>\n </Columns>\n <hr />\n <p><Translate content=\"buttonsAreaDescription\" /></p>\n <ItemList xl={4} lg={3} sm={2} gap=\"xs\">\n {buttons.map(({ icon, title, comment, href, target, handler, disabled, dataId }, index) => (\n <Item\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n icon={icon}\n title={title}\n href={href}\n // eslint-disable-next-line no-eval\n onClick={handler && eval(`(${handler})`)}\n component={href ? 'a' : 'div'}\n target={target}\n disabled={disabled}\n data-id={dataId}\n >\n {comment}\n </Item>\n ))}\n </ItemList>\n </>\n );\n};\n\nDetails.propTypes = {\n diskspaceUsage: PropTypes.object.isRequired,\n diskspaceParts: PropTypes.array.isRequired,\n trafficUsage: PropTypes.object.isRequired,\n trafficParts: PropTypes.array.isRequired,\n buttons: PropTypes.array.isRequired,\n domainId: PropTypes.number,\n recalculateInProgress: PropTypes.bool,\n};\n\nexport default withPageLayout(Details);\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Text, ProgressBar } from '@plesk/ui-library';\n\nconst Gauge = ({ limit, showPercent }) => (\n <div className=\"smb-statistics-details-gauge\">\n <div className=\"smb-statistics-details-gauge__row\">\n <Text bold className=\"smb-statistics-details-gauge__col\">{limit.title}</Text>\n <Text bold className=\"smb-statistics-details-gauge__col\">{limit.limitString}</Text>\n </div>\n {-1 === limit.limitValue ? (\n <div className=\"smb-statistics-details-gauge__row\">\n <Text className=\"smb-statistics-details-gauge__col\">{limit.usedString}</Text>\n </div>\n ) : (\n <>\n <ProgressBar\n className=\"smb-statistics-details-gauge__progress\"\n progress={Math.min(limit.percent, 100)}\n intent={100 <= limit.percent ? 'danger' : null}\n />\n <div className=\"smb-statistics-details-gauge__row\">\n <Text className=\"smb-statistics-details-gauge__col\">{limit.usedString} {showPercent ? `${limit.percent}%` : ''}</Text>\n <Text className=\"smb-statistics-details-gauge__col\">{limit.availableString}</Text>\n </div>\n </>\n )}\n </div>\n);\n\nGauge.propTypes = {\n showPercent: PropTypes.bool.isRequired,\n limit: PropTypes.shape({\n title: PropTypes.string,\n limitString: PropTypes.string,\n limitValue: PropTypes.number,\n usedString: PropTypes.string,\n percent: PropTypes.number,\n availableString: PropTypes.string,\n }).isRequired,\n};\n\nexport default Gauge;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { RadialChart } from 'react-vis';\n\nexport const StatisticsPieChart = ({ data }) => {\n const adaptedData = useMemo(\n () => data.map(({ data, color }) => {\n const [, angle] = data[0];\n return {\n angle,\n color,\n style: { opacity: 0.7 },\n };\n }),\n [data],\n );\n\n return (\n <RadialChart\n width={160}\n height={160}\n data={adaptedData}\n colorType=\"literal\"\n style={{ stroke: '#fff', strokeWidth: 0.5 }}\n />\n );\n};\n\nStatisticsPieChart.propTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)),\n label: PropTypes.string,\n value: PropTypes.string,\n })).isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { Locale } from 'jsw';\nimport { StatisticsPieChart } from './StatisticsPieChart';\n\nconst Translate = Locale.getTranslate('smb.controllers.statistics.details');\n\nconst COLORS = ['#fd8b8b', '#ffde9a', '#62cefb', '#94ff5f', '#cd7b7b', '#cfb685', '#5daacb', '#81cf5b'];\n\nconst Sizes = {\n B: 1,\n KB: 1024,\n MB: 1024 ** 2,\n GB: 1024 ** 3,\n};\n\nconst getByteSize = value => {\n const [amount, size] = value.split(' ');\n return amount * Sizes[size];\n};\n\nconst Usage = ({ parts = null }) => {\n const data = useMemo(\n () => [...parts ?? []]\n .map((part, i) => ({ ...part, color: COLORS[i] }))\n .sort((part1, part2) => getByteSize(part2.value) - getByteSize(part1.value)),\n [parts],\n );\n\n return (\n <div className=\"pie-chart-block clearfix\">\n <p><Translate content=\"usageByServices\" /></p>\n {data.length ? (\n <div className=\"pie-chart\">\n <StatisticsPieChart data={data} />\n <ul className=\"chart-legend\">\n {data.map((part, i) => (\n <li key={part.label} className={`label-${i + 1}`}>\n <em style={{ background: part.color }} />\n <b>{part.label}</b> {part.value}\n </li>\n\n ))}\n </ul>\n </div>\n ) : (\n <Translate content=\"dataNotCollected\" />\n )}\n </div>\n );\n};\n\nUsage.propTypes = {\n parts: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.number)),\n label: PropTypes.string,\n value: PropTypes.string,\n })),\n};\n\nexport default Usage;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport { createElement as ce, Locale } from 'jsw';\nimport JswList from 'components/jsw/JswList';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport { useNavigateCallback } from 'components/common/Link';\n\nconst locale = Locale.getSection('smb.controllers.statistics.list');\n\nconst SubscriptionsList = ({ data, searchFilters }) => {\n const navigate = useNavigateCallback();\n\n const columns = useMemo(() => [{\n header: locale.lmsg('webspace'),\n sortable: true,\n dataIndex: 'domain',\n renderer({ id, domain }) {\n const returnUrl = '/smb/statistics/details';\n return ce('a', {\n href: `/smb/account/switch/id/${id}?hideNotice=1&returnUrl=${encodeURIComponent(returnUrl)}`,\n }, domain);\n },\n }, {\n header: locale.lmsg('systemUser'),\n sortable: true,\n dataIndex: 'systemUser',\n }, {\n header: locale.lmsg('diskSpace'),\n sortable: false,\n headerParams: { width: 250 },\n cls: 'minor',\n renderer({ diskSpaceDetails }) {\n if (-1 === diskSpaceDetails.percent) {\n return ce('div.progress-label', diskSpaceDetails.usageString);\n }\n\n return ce('div.progress-box',\n ce('div.progress.progress-sm',\n ce(`div.progress-bar${100 === diskSpaceDetails.percent ? '.progress-bar-danger' : ''}`, { style: `width: ${diskSpaceDetails.percent}%;` }),\n ),\n ce('div.progress-label', diskSpaceDetails.usageString),\n );\n },\n }, {\n header: locale.lmsg('traffic'),\n sortable: false,\n headerParams: { width: 250 },\n cls: 'minor',\n renderer({ trafficDetails }) {\n if (-1 === trafficDetails.percent) {\n return ce('div.progress-label', trafficDetails.usageString);\n }\n\n return ce('div.progress-box',\n ce('div.progress.progress-sm',\n ce(`div.progress-bar${100 === trafficDetails.percent ? '.progress-bar-danger' : ''}`, { style: `width: ${trafficDetails.percent}%;` }),\n ),\n ce('div.progress-label', trafficDetails.usageString),\n );\n },\n }, {\n header: '',\n sortable: false,\n cls: 'min',\n renderer({ id }) {\n return [\n ce('span.tooltipData', locale.lmsg('buttonOverviewHint')),\n ce('a.s-btn.sb-customize', {\n href: `/smb/web/overview/id/${id}/type/domain`,\n onclick: navigate,\n }, ce('span')),\n ];\n },\n }], [navigate]);\n\n return (\n <JswList\n id=\"statistics-list\"\n data={data}\n dataUrl=\"/smb/statistics/list-data\"\n searchFilters={searchFilters}\n searchOveral=\"domain\"\n columns={columns}\n />\n );\n};\n\nSubscriptionsList.propTypes = {\n data: JswList.propTypes.data.isRequired,\n searchFilters: JswList.propTypes.searchFilters.isRequired,\n};\n\nexport default withPageLayout(SubscriptionsList);\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { api } from 'jsw';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { addToast } from 'helpers/toasts';\n\nexport const useDomainStatistics = ({\n domainId,\n traffic: domainTraffic,\n diskUsage: domainDiskUsage,\n recalculateInProgress,\n}) => {\n const refreshRef = useRef(null);\n\n const [inProgress, setInProgress] = useState(recalculateInProgress);\n\n const [traffic, setTraffic] = useState(domainTraffic);\n\n const [diskUsage, setDiskUsage] = useState(domainDiskUsage);\n\n const handleApiError = ({ message }) => {\n setInProgress(false);\n addToast({ intent: 'danger', message });\n };\n\n const refreshStatus = useCallback(cb => {\n setInProgress(true);\n clearTimeout(refreshRef.current);\n refreshRef.current = setTimeout(async () => {\n let res;\n try {\n res = await api.post(`/smb/web/recalculate-status/id/${domainId}`);\n } catch (error) {\n handleApiError(error);\n return;\n }\n if (res.traffic) {\n setTraffic(res.traffic);\n }\n if (res.diskUsage) {\n setDiskUsage(res.diskUsage);\n }\n if (!res.inProgress) {\n setInProgress(false);\n if (typeof cb === 'function') {\n cb();\n }\n } else {\n refreshStatus(cb);\n }\n }, 1000);\n }, [domainId]);\n\n const startRecalculate = async (cb = null, subscription = null) => {\n setInProgress(true);\n try {\n await api.post(`/smb/web/recalculate-stats/id/${domainId}`, { wholeSubscription: subscription });\n } catch (error) {\n handleApiError(error);\n return;\n }\n refreshStatus(cb);\n };\n\n\n useEffect(() => {\n clearTimeout(refreshRef.current);\n setInProgress(recalculateInProgress);\n setTraffic(domainTraffic);\n setDiskUsage(domainDiskUsage);\n\n if (recalculateInProgress) {\n refreshStatus();\n }\n }, [recalculateInProgress, domainTraffic, domainDiskUsage, refreshStatus]);\n\n return {\n startRecalculate,\n inProgress,\n diskUsage,\n traffic,\n };\n};\n\nexport default useDomainStatistics;\n","module.exports = Jsw.skinUrl + \"/icons/32/plesk/disk-usage.png?2d080f4f1d6f8314c83b586057fb5a3e\";","module.exports = Jsw.skinUrl + \"/icons/32/plesk/traffic.png?06afd24f12dc05235b35c32a3d9ea228\";"],"names":["propTypes","id","PropTypes","dataUrl","operations","itemActions","columns","data","state","pager","locale","additional","pathbar","searchFilters","searchOveral","disabledSelectHint","isDisabledItem","onRedraw","emptyViewMode","emptyView","defaultProps","undefined","JswList","convertToReactComponent","List","propsList","Object","keys","displayName","JswComponent","setters","props","containerRef","useRef","componentRef","componentProps","containerProps","entries","reduce","res","name","value","includes","deps","map","current","useLayoutEffect","render","remove","key","_jsx","ref","Translate","Locale","getTranslate","Details","diskspaceUsage","diskspaceParts","trafficUsage","trafficParts","buttons","domainId","recalculateInProgress","navigate","useNavigate","useDomainStatistics","statisticsPanelClass","useMemo","hasDiskspaceParts","length","hasTrafficParts","_jsxs","_Fragment","children","content","Toolbar","Button","icon","tooltip","onClick","startRecalculate","inProgress","Columns","gap","vertical","Column","ratio","Panel","className","Media","image","Icon","src","require","size","Gauge","limit","showPercent","Usage","parts","ItemList","xl","lg","sm","title","comment","href","target","handler","disabled","dataId","index","Item","eval","component","isRequired","withPageLayout","Text","bold","limitString","limitValue","usedString","ProgressBar","progress","Math","min","percent","intent","availableString","StatisticsPieChart","adaptedData","color","angle","style","opacity","RadialChart","width","height","colorType","stroke","strokeWidth","label","COLORS","Sizes","B","KB","MB","GB","getByteSize","amount","split","part","i","sort","part1","part2","background","getSection","SubscriptionsList","useNavigateCallback","header","lmsg","sortable","dataIndex","renderer","domain","ce","encodeURIComponent","headerParams","cls","diskSpaceDetails","usageString","trafficDetails","onclick","traffic","domainTraffic","diskUsage","domainDiskUsage","refreshRef","setInProgress","useState","setTraffic","setDiskUsage","handleApiError","message","addToast","refreshStatus","useCallback","cb","clearTimeout","setTimeout","async","api","post","error","useEffect","subscription","wholeSubscription","module","exports","Jsw","skinUrl"],"sourceRoot":""}
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
details.js
13358 bytes
0644
details.js.map
29916 bytes
0644
N4ST4R_ID | Naxtarrr