Submit
Path:
~
/
/
opt
/
psa
/
admin
/
cp
/
public
/
javascript
/
components
/
pages
/
File Content:
TrafficUsageByDomainsPage.js.map
{"version":3,"file":"javascript/components/pages/TrafficUsageByDomainsPage.js?b80938d3746b3440aad0","mappings":"0LASA,MAUA,EAVyBA,EAAGC,YAAW,EAAOC,eAA0BC,MACpEC,EAAAA,EAAAA,KAACC,EAAAA,MAAK,CAACC,OAAO,OAAOC,QAASN,EAAUC,UAAWA,EAAUM,UACzDJ,EAAAA,EAAAA,KAACK,EAAAA,OAAM,CACHC,KAAK,SACL,cAAY,mBACRP,K,iJCThB,MAAMQ,EAASC,EAAAA,OAAOC,WAAW,oCAejC,EAbuBV,IACnBC,EAAAA,EAAAA,KAACU,EAAAA,KAAI,CACDC,aAAa,EACbC,cAAc,EACdC,aAAc,CACVT,SAAUG,EAAOO,KAAK,SACtBC,MAAM,EACN,cAAe,0BAEfhB,G,mKCVZ,MAAMQ,EAASC,EAAAA,OAAOC,WAAW,qCAE3BO,EAAkBA,EAAGC,aAAwBlB,MAC/CC,EAAAA,EAAAA,KAACkB,EAAAA,MAAK,CACFC,MAAOZ,EAAOO,KAAK,SACnBM,OACIpB,EAAAA,EAAAA,KAACK,EAAAA,OAAM,CACHgB,OAAK,EACLf,KAAK,QACLgB,QAASL,EAAQb,SAEhBG,EAAOO,KAAK,cAGjBf,IAIZiB,EAAgBO,UAAY,CACxBN,QAASO,IAAAA,MAGb,S,4JCvBA,MAAMC,EAAeA,EAAGrB,eACpBJ,EAAAA,EAAAA,KAAA,OAAKF,UAAU,8BAA6BM,SACvCA,IAITqB,EAAaF,UAAY,CACrBnB,SAAUoB,IAAAA,KAAeE,YAG7B,S,2JCVA,MAKMC,EAAmBA,EAAGC,OAAMC,QAAOC,yBAA0B,GALzCC,EAACH,EAAMC,IAAU,IAAIG,KAAKJ,EAAMC,GAAOI,mBAC7DC,SAASC,gBAAgBC,MAAQ,KACjC,CAAEP,MAAO,UAGyDE,CAAkBH,EAAMC,EAAQ,MAAMD,MAASE,KAE/GO,EAAiBA,EAAGC,QAAQ,KAAMC,YAAWC,cAAazC,MAC5D,MAAM0C,EAAoB,IAAIF,GAAWG,UAEnCC,EAAUF,EAAkBG,MAAK,EAAGC,SAAUA,KAASP,GAASG,EAAkB,IAAII,OAE5F,OACI7C,EAAAA,EAAAA,KAAC8C,EAAAA,SAAQ,IACD/C,EACJ,cAAY,kBACZgD,MACI/C,EAAAA,EAAAA,KAACgD,EAAAA,KAAI,CAAA5C,SACAqC,EAAkBQ,KAAIC,IACnBlD,EAAAA,EAAAA,KAACmD,EAAAA,SAAQ,CAAoB7B,QAASA,IAAMkB,EAASU,EAASL,KAAKzC,SAC9DuB,EAAiBuB,IADPA,EAASL,SAKnCzC,SAEAuB,EAAiBgB,IACX,EAInBN,EAAed,UAAY,CACvBe,MAAOd,IAAAA,OACPgB,SAAUhB,IAAAA,KAAeE,WACzBa,UAAWf,IAAAA,QACPA,IAAAA,MAAgB,CACZqB,IAAKrB,IAAAA,OAAiBE,WACtBG,MAAOL,IAAAA,OAAiBE,WACxBE,KAAMJ,IAAAA,OAAiBE,WACvBI,oBAAqBN,IAAAA,OAAiBE,aACvCA,YACLA,YAGN,S,2JC5CA,MAAM0B,EAAWA,EAAGC,eAChBC,EAAAA,EAAAA,MAAA,OAAAlD,SAAA,CACK,GAAGiD,EAASE,QAAQ,OACrBvD,EAAAA,EAAAA,KAACwD,EAAAA,YAAW,CACRH,SAAUI,KAAKC,IAAIL,EAAU,KAC7BnD,OAAQmD,EAAW,IAAM,SAAW,YAKhDD,EAAS7B,UAAY,CACjB8B,SAAU7B,IAAAA,OAAiBE,YAG/B,S,6KCZA,MAAMiC,EAAYnD,EAAAA,OAAOoD,aAAa,iDAChCC,EAAcrD,EAAAA,OAAOC,WAAW,yBA+DtC,EAjDuBqD,EAAGC,UAASb,WAAsBc,cAAalE,gBAClE,MAAMmE,EAAcA,IACZF,GACO/D,EAAAA,EAAAA,KAACkE,EAAAA,SAAQ,CAACC,MAAOH,EAAYI,YAAc,GAAK,MAGvDJ,EAAYI,YACLJ,EAAYK,qBAInBrE,EAAAA,EAAAA,KAAC2D,EAAS,CACNW,QAAQ,cACRC,OAAQ,CACJC,KAAMR,EAAYK,oBAClBI,MAAOT,EAAYU,eACnBC,QAASX,EAAYY,mBAEzBC,UAAU,OACV/E,UAAU,iDAKtB,OAAIoD,GAEIlD,EAAAA,EAAAA,KAAC2D,EAAS,CACNW,QAAQ,oBACRC,OAAQ,CACJO,MAAOb,IACPpC,MAAOgC,EAAY/C,KAAKoC,EAASrB,MAAMkD,YACvCnD,KAAMsB,EAAStB,MAEnBiD,UAAU,MACV/E,UAAWkF,IAAW,iCAAkClF,MAMhEE,EAAAA,EAAAA,KAAC2D,EAAS,CACNW,QAAQ,QACRC,OAAQ,CAAEO,MAAOb,KACjBY,UAAU,MACV/E,UAAWkF,IAAW,iCAAkClF,IAC1D,C,qNCzDV,MAAM6D,EAAYnD,EAAAA,OAAOoD,aAAa,yDAEzBqB,EAAgB,CACzBC,SAAS,EACTC,cAAe,CAAEC,WAAY,KAG3BC,EAAmBC,IAAU,CAC/BJ,QAASI,EAAOJ,SAAWD,EAAcC,QACzCC,cAAe,CACXC,WAAYE,EAAOH,eAAeC,YAAcH,EAAcE,cAAcC,cAI9EG,EAA6B,CAC/BC,MAAO,UACPC,SAAU,eACVC,OAAQ,WAGNC,EAAUA,EAAGC,mBAAmB,YAClC,MAAM,UAAEC,EAAS,WAAEC,IAAeC,EAAAA,EAAAA,YAAWC,EAAAA,qBAEtCV,EAAQW,IAAaC,EAAAA,EAAAA,WAAS,IAAMb,EAAiBQ,KAMtDM,EAAeb,IACjBQ,EAAWR,GACXW,EAAUZ,EAAiBC,GAAQ,EAGvC,OACItF,EAAAA,EAAAA,KAACgB,EAAAA,QAAe,CAACC,QAASA,IAAMkF,EAAalB,GAAe7E,UACxDkD,EAAAA,EAAAA,MAAC8C,EAAAA,QAAc,CAACd,OAAQA,EAAQe,SAAUF,EAAcG,cAXtCC,CAACC,EAAMlE,KAC7B2D,GAAUX,IAAUmB,EAAAA,EAAAA,OAAMnB,EAAQkB,EAAMlE,IAAO,EAU8ClC,SAAA,EACrFJ,EAAAA,EAAAA,KAAC0G,EAAAA,kBAAiB,CACdC,OACI3G,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAASiB,EAA2BK,KAEnDY,KAAK,aAETxG,EAAAA,EAAAA,KAAC4G,EAAAA,cAAa,CACVC,KAAK,OACLF,OAAO3G,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,eAC1BkC,KAAK,kCAGC,EAI1Bb,EAAQpE,UAAY,CAChBqE,iBAAkBpE,IAAAA,MAAgB,CAAC,QAAS,WAAY,YAG5D,S,sICzDA,MAAMmC,EAAYnD,EAAAA,OAAOoD,aAAa,sDAEhCkD,EAAOA,EACTC,eAAe,KACfC,wBAAuB,KACpBC,MAEH,MAAMC,EAAU,CACZ,CACIrE,IAAK,aACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,eAC1B6C,KAAM,QACNC,UAAU,EACVC,OAAQA,EAAGC,WAAUC,iBACjBvH,EAAAA,EAAAA,KAACwH,EAAAA,KAAI,CAACC,GAAI,KAAKH,IAAWlH,SAAEmH,KAGpCP,GAAwB,CACpBnE,IAAK,aACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,eAC1B8C,UAAU,GAEd,CACIvE,IAAK,aACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,eAC1BxE,UAAW,4CACXuH,OAAQA,EAAGhD,yBAA0BA,EACrC+C,UAAU,EACVM,MAAO,QACPvD,MAAO,SAEX,CACItB,IAAK,oBACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,sBAC1BxE,UAAW,4CACXuH,OAAQA,EAAGM,gCAAiCA,EAC5CP,UAAU,EACVM,MAAO,QACPvD,MAAO,SAEX,CACItB,IAAK,6BACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,+BAC1BxE,UAAW,4CACXuH,OAAQA,EAAGO,yCAA0CA,GAAuC,IAC5FR,UAAU,EACVM,MAAO,QACPvD,MAAO,SAEX,CACItB,IAAK,gCACL1B,OAAOnB,EAAAA,EAAAA,KAAC2D,EAAS,CAACW,QAAQ,kCAC1B+C,OAAQA,EAAGQ,mCAA6E,iBAAlCA,GAChD7H,EAAAA,EAAAA,KAACoD,EAAAA,QAAQ,CAACC,SAAUwE,IACpB,IACNT,UAAU,EACVM,MAAO,QACPvD,MAAO,UAEb2D,OAAOC,SAET,OACI/H,EAAAA,EAAAA,KAACgI,EAAAA,YAAW,CACRC,OAAO,aACPf,QAASA,EACTgB,SACI5E,EAAAA,EAAAA,MAAC6E,EAAAA,QAAO,CAAA/H,SAAA,EACJJ,EAAAA,EAAAA,KAACoI,EAAAA,gBAAe,KAChB9E,EAAAA,EAAAA,MAAC+E,EAAAA,aAAY,CAACC,WAAW,EAAMlI,SAAA,CAC1B2G,GACD/G,EAAAA,EAAAA,KAACgI,EAAAA,YAAYO,UAAS,CAAC/B,KAAK,wBAIpCS,GACN,EAIVH,EAAKvF,UAAY,CACbwF,aAAcvF,IAAAA,KACdwF,qBAAsBxF,IAAAA,MAG1B,S,iGCxFA,MAAMgH,EAAaA,EAAGC,cAAyBvF,WAAUwF,kBACrD,MAAM,KAAEC,EAAI,aAAEC,EAAY,QAAE7E,IAAY8E,EAAAA,EAAAA,UAASH,EAAYI,MAAO,CAChEC,UAAW,CAAEN,iBAAiBC,EAAYK,WAAa,CAAC,KAEtDC,EAAmBN,EAAYO,mBAAmBN,GAAQC,GAEhE,OACI5I,EAAAA,EAAAA,KAAC8D,EAAAA,QAAc,CACXC,QAASA,EACTC,YAAagF,EACbP,YAAaA,EACbvF,SAAUA,GACZ,EAIVsF,EAAWjH,UAAY,CACnBkH,YAAajH,IAAAA,OACb0B,SAAU1B,IAAAA,MAAgB,CACtBI,KAAMJ,IAAAA,OAAiBE,WACvBG,MAAOL,IAAAA,OAAiBE,aACzBA,WACHgH,YAAalH,IAAAA,OAAiBE,YAGlC,S,oJClBA,MAgEA,EAhEkCwH,KAC9B,MAAM,sBACFC,EAAqB,gBACrBC,EAAe,sBACfC,EAAqB,YACrBC,GAAc,EAAI,qBAClBtC,EAAoB,iBACpBpB,IACA2D,EAAAA,EAAAA,kBAEGd,EAAae,IAAkBtD,EAAAA,EAAAA,eAASuD,IAEzC,UAAExC,EAAS,UAAEpB,IAAc6D,EAAAA,EAAAA,gBAAe,IACzCN,EACHO,eAAgB,CAAElB,kBAGfmB,EAAiBC,IAAsB3D,EAAAA,EAAAA,WAAS,GAEjD4D,GAAgBC,EAAAA,EAAAA,oBAEhBC,EAAsBnE,EAAUV,eAAeoC,WAC/C0C,EAAoBpE,EAAUX,SAAWW,EAAUV,eAAeC,WAElEvF,EAAWmK,GAAuBC,EAElC/G,EAAWiG,EAAsBvG,MAAK,EAAGC,SAAU4F,IAAgB5F,KAClEsG,EAAsBe,IAAI,GAEjC,OACI5G,EAAAA,EAAAA,MAAA6G,EAAAA,SAAA,CAAA/J,SAAA,EACIJ,EAAAA,EAAAA,KAACyB,EAAAA,QAAY,CAAArB,UACTkD,EAAAA,EAAAA,MAAC8G,EAAAA,QAAO,CAACC,IAAI,KAAIjK,SAAA,CACZ0J,GAAeQ,2BAA4BtK,EAAAA,EAAAA,KAACuK,EAAAA,OAAM,CAAAnK,SAAE0J,GAAeQ,4BACpEtK,EAAAA,EAAAA,KAACuK,EAAAA,OAAM,CAAAnK,UACHJ,EAAAA,EAAAA,KAACqC,EAAAA,QAAc,CACXC,MAAOmG,EACPjG,SAAUgH,EACVjH,UAAW4G,YAK3BnJ,EAAAA,EAAAA,KAACwI,EAAAA,QAAU,CACPC,YAAaA,EACbvF,SAAUA,EACVwF,YAAaW,KAEjBrJ,EAAAA,EAAAA,KAAC8G,EAAAA,QAAI,CACDC,aAAcuC,IACVtJ,EAAAA,EAAAA,KAACJ,EAAAA,QAAgB,CACbC,SAAUoK,EACV3I,QAASA,IAAMuI,GAAoBD,KAG3CY,QAASZ,IAAmB5J,EAAAA,EAAAA,KAAC2F,EAAAA,QAAO,CAACC,iBAAkBA,IACvD/F,SAAUA,EACVmH,qBAAsBA,KAClBC,MAET,C","sources":["webpack:///./components/common/ListFilterButton/ListFilterButton.tsx","webpack:///./components/common/ListFilterForm/ListFilterForm.js","webpack:///./components/common/ListFilterPanel/ListFilterPanel.js","webpack:///./components/common/TrafficUsage/HeaderLayout/HeaderLayout.js","webpack:///./components/common/TrafficUsage/IntervalSelect/IntervalSelect.js","webpack:///./components/common/TrafficUsage/Progress/Progress.js","webpack:///./components/common/TrafficUsage/TotalUsageInfo/TotalUsageInfo.tsx","webpack:///./components/pages/TrafficUsageByDomainsPage/Filters.js","webpack:///./components/pages/TrafficUsageByDomainsPage/List.js","webpack:///./components/pages/TrafficUsageByDomainsPage/TotalUsage.js","webpack:///./components/pages/TrafficUsageByDomainsPage/TrafficUsageByDomainsPage.js"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Badge, Button, ButtonProps } from '@plesk/ui-library';\n\ntype ListFilterButtonProps = {\n filtered?: boolean;\n className?: string;\n} & ButtonProps;\n\nconst ListFilterButton = ({ filtered = false, className = undefined, ...props }: ListFilterButtonProps) => (\n <Badge intent=\"info\" hidden={!filtered} className={className}>\n <Button\n icon=\"filter\"\n data-testid=\"filter-button\"\n {...props}\n />\n </Badge>\n);\n\nexport default ListFilterButton;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Form } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nconst locale = Locale.getSection('components.common.ListFilterForm');\n\nconst ListFilterForm = props => (\n <Form\n applyButton={false}\n cancelButton={false}\n submitButton={{\n children: locale.lmsg('apply'),\n fill: true,\n 'data-testid': 'filter-apply-button',\n }}\n {...props}\n />\n);\n\nexport default ListFilterForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Panel, Button } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nconst locale = Locale.getSection('components.common.ListFilterPanel');\n\nconst ListFilterPanel = ({ onClear = undefined, ...props }) => (\n <Panel\n title={locale.lmsg('title')}\n extra={\n <Button\n ghost\n icon=\"clean\"\n onClick={onClear}\n >\n {locale.lmsg('clear')}\n </Button>\n }\n {...props}\n />\n);\n\nListFilterPanel.propTypes = {\n onClear: PropTypes.func,\n};\n\nexport default ListFilterPanel;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport './HeaderLayout.less';\n\nconst HeaderLayout = ({ children }) => (\n <div className=\"traffic-usage-header-layout\" >\n {children}\n </div>\n);\n\nHeaderLayout.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default HeaderLayout;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Dropdown, Menu, MenuItem } from '@plesk/ui-library';\n\nconst getFormattedMonth = (year, month) => new Date(year, month).toLocaleDateString(\n document.documentElement.lang || 'en',\n { month: 'short' },\n);\n\nconst getIntervalLabel = ({ year, month, formattedTotalUsage }) => `${getFormattedMonth(year, month - 1)} ${year} (${formattedTotalUsage})`;\n\nconst IntervalSelect = ({ value = null, intervals, onChange, ...props }) => {\n const reversedIntervals = [...intervals].reverse();\n\n const current = reversedIntervals.find(({ key }) => key === (value ?? reversedIntervals[0]?.key));\n\n return (\n <Dropdown\n {...props}\n data-testid=\"interval-select\"\n menu={\n <Menu>\n {reversedIntervals.map(interval => (\n <MenuItem key={interval.key} onClick={() => onChange(interval.key)}>\n {getIntervalLabel(interval)}\n </MenuItem>\n ))}\n </Menu>\n }\n >\n {getIntervalLabel(current)}\n </Dropdown>\n );\n};\n\nIntervalSelect.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n intervals: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n month: PropTypes.number.isRequired,\n year: PropTypes.number.isRequired,\n formattedTotalUsage: PropTypes.string.isRequired,\n }).isRequired,\n ).isRequired,\n};\n\nexport default IntervalSelect;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { ProgressBar } from '@plesk/ui-library';\n\nconst Progress = ({ progress }) => (\n <div>\n {`${progress.toFixed(1)}%`}\n <ProgressBar\n progress={Math.min(progress, 100)}\n intent={progress > 100 ? 'danger' : 'info'}\n />\n </div>\n);\n\nProgress.propTypes = {\n progress: PropTypes.number.isRequired,\n};\n\nexport default Progress;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport classNames from 'classnames';\nimport { Skeleton } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport './TotalUsageInfo.less';\n\nconst Translate = Locale.getTranslate('components.common.TrafficUsage.TotalUsageInfo');\nconst monthLocale = Locale.getSection('smb.components.months');\n\ntype TotalUsageInfoProps = {\n loading: boolean;\n interval?: { year: number; month: number };\n trafficData: {\n totalUsageFormatted: string;\n isUnlimited: boolean;\n limitFormatted: string;\n limitUsagePercent: number | null;\n },\n className?: string;\n};\n\nconst TotalUsageInfo = ({ loading, interval = undefined, trafficData, className = undefined }: TotalUsageInfoProps) => {\n const renderUsage = () => {\n if (loading) {\n return <Skeleton width={trafficData.isUnlimited ? 70 : 200} />;\n }\n\n if (trafficData.isUnlimited) {\n return trafficData.totalUsageFormatted;\n }\n\n return (\n <Translate\n content=\"usedLimited\"\n params={{\n used: trafficData.totalUsageFormatted,\n limit: trafficData.limitFormatted,\n percent: trafficData.limitUsagePercent,\n }}\n component=\"span\"\n className=\"traffic-usage-total-usage-info__used-limited\"\n />\n );\n };\n\n if (interval) {\n return (\n <Translate\n content=\"usageWithInterval\"\n params={{\n usage: renderUsage(),\n month: monthLocale.lmsg(interval.month.toString()),\n year: interval.year,\n }}\n component=\"div\"\n className={classNames('traffic-usage-total-usage-info', className)}\n />\n );\n }\n\n return (\n <Translate\n content=\"usage\"\n params={{ usage: renderUsage() }}\n component=\"div\"\n className={classNames('traffic-usage-total-usage-info', className)}\n />\n );\n};\n\nexport default TotalUsageInfo;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { FormFieldCheckbox, FormFieldText, setIn } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { GraphQlListContext } from 'components/common/GraphQlList/GraphQlListContext';\nimport ListFilterPanel from 'components/common/ListFilterPanel';\nimport ListFilterForm from 'components/common/ListFilterForm';\n\nconst Translate = Locale.getTranslate('components.pages.TrafficUsageByDomains.Viewer.Filters');\n\nexport const defaultValues = {\n ownOnly: false,\n searchFilters: { clientName: '' },\n};\n\nconst getInitialValues = values => ({\n ownOnly: values.ownOnly ?? defaultValues.ownOnly,\n searchFilters: {\n clientName: values.searchFilters?.clientName ?? defaultValues.searchFilters.clientName,\n },\n});\n\nconst PARENT_CLIENT_OWN_ONLY_MAP = {\n admin: 'ownOnly',\n reseller: 'resellerOnly',\n client: 'ownOnly',\n};\n\nconst Filters = ({ parentClientType = 'admin' }) => {\n const { listInput, setFilters } = useContext(GraphQlListContext);\n\n const [values, setValues] = useState(() => getInitialValues(listInput));\n\n const handleFieldChange = (name, value) => {\n setValues(values => setIn(values, name, value));\n };\n\n const handleSubmit = values => {\n setFilters(values);\n setValues(getInitialValues(values));\n };\n\n return (\n <ListFilterPanel onClear={() => handleSubmit(defaultValues)}>\n <ListFilterForm values={values} onSubmit={handleSubmit} onFieldChange={handleFieldChange}>\n <FormFieldCheckbox\n label={\n <Translate content={PARENT_CLIENT_OWN_ONLY_MAP[parentClientType]} />\n }\n name=\"ownOnly\"\n />\n <FormFieldText\n size=\"fill\"\n label={<Translate content=\"clientName\" />}\n name=\"searchFilters[clientName]\"\n />\n </ListFilterForm>\n </ListFilterPanel>\n );\n};\n\nFilters.propTypes = {\n parentClientType: PropTypes.oneOf(['admin', 'reseller', 'client']),\n};\n\nexport default Filters;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { Toolbar, ToolbarExpander, ToolbarGroup } from '@plesk/ui-library';\nimport { GraphQlList } from 'components/common/GraphQlList';\nimport Progress from 'components/common/TrafficUsage/Progress';\nimport { Locale } from 'jsw';\nimport './List.less';\n\nconst Translate = Locale.getTranslate('components.pages.TrafficUsageByDomains.Viewer.List');\n\nconst List = ({\n filterButton = null,\n showClientNameColumn = true,\n ...listProps\n}) => {\n const columns = [\n {\n key: 'domainName',\n title: <Translate content=\"domainName\" />,\n type: 'title',\n sortable: true,\n render: ({ domainId, domainName }) => (\n <Link to={`./${domainId}`}>{domainName}</Link>\n ),\n },\n showClientNameColumn && {\n key: 'clientName',\n title: <Translate content=\"clientName\" />,\n sortable: true,\n },\n {\n key: 'totalUsage',\n title: <Translate content=\"totalUsage\" />,\n className: 'traffic-usage-by-domains-list-unit-column',\n render: ({ totalUsageFormatted }) => totalUsageFormatted,\n sortable: true,\n align: 'right',\n width: '100px',\n },\n {\n key: 'subscriptionLimit',\n title: <Translate content=\"subscriptionLimit\" />,\n className: 'traffic-usage-by-domains-list-unit-column',\n render: ({ subscriptionLimitFormatted }) => subscriptionLimitFormatted,\n sortable: true,\n align: 'right',\n width: '150px',\n },\n {\n key: 'subscriptionLimitRemaining',\n title: <Translate content=\"subscriptionLimitRemaining\" />,\n className: 'traffic-usage-by-domains-list-unit-column',\n render: ({ subscriptionLimitRemainingFormatted }) => subscriptionLimitRemainingFormatted || '-',\n sortable: true,\n align: 'right',\n width: '150px',\n },\n {\n key: 'subscriptionLimitUsagePercent',\n title: <Translate content=\"subscriptionLimitUsagePercent\" />,\n render: ({ subscriptionLimitUsagePercent }) => typeof subscriptionLimitUsagePercent === 'number'\n ? <Progress progress={subscriptionLimitUsagePercent} />\n : '-',\n sortable: true,\n align: 'right',\n width: '200px',\n },\n ].filter(Boolean);\n\n return (\n <GraphQlList\n rowKey=\"domainName\"\n columns={columns}\n toolbar={(\n <Toolbar>\n <ToolbarExpander />\n <ToolbarGroup groupable={false}>\n {filterButton}\n <GraphQlList.SearchBar name=\"domainName\" />\n </ToolbarGroup>\n </Toolbar>\n )}\n {...listProps}\n />\n );\n};\n\nList.propTypes = {\n filterButton: PropTypes.node,\n showClientNameColumn: PropTypes.bool,\n};\n\nexport default List;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport TotalUsageInfo from 'components/common/TrafficUsage/TotalUsageInfo';\n\nconst TotalUsage = ({ intervalKey = undefined, interval, queryParams }) => {\n const { data, previousData, loading } = useQuery(queryParams.query, {\n variables: { intervalKey, ...(queryParams.variables ?? {}) },\n });\n const totalTrafficData = queryParams.extractTrafficData(data ?? previousData);\n\n return (\n <TotalUsageInfo\n loading={loading}\n trafficData={totalTrafficData}\n intervalKey={intervalKey}\n interval={interval}\n />\n );\n};\n\nTotalUsage.propTypes = {\n intervalKey: PropTypes.string,\n interval: PropTypes.shape({\n year: PropTypes.number.isRequired,\n month: PropTypes.number.isRequired,\n }).isRequired,\n queryParams: PropTypes.object.isRequired,\n};\n\nexport default TotalUsage;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState } from 'react';\nimport { useLoaderData, useOutletContext } from 'react-router-dom';\nimport { Columns, Column } from '@plesk/ui-library';\nimport { useGraphQlList } from 'components/common/GraphQlList';\nimport ListFilterButton from 'components/common/ListFilterButton';\nimport HeaderLayout from 'components/common/TrafficUsage/HeaderLayout';\nimport IntervalSelect from 'components/common/TrafficUsage/IntervalSelect';\nimport Filters from './Filters';\nimport List from './List';\nimport TotalUsage from './TotalUsage';\n\nconst TrafficUsageByDomainsPage = () => {\n const {\n trafficUsageIntervals,\n listQueryParams,\n totalUsageQueryParams,\n showFilters = true,\n showClientNameColumn,\n parentClientType,\n } = useLoaderData();\n\n const [intervalKey, setIntervalKey] = useState(undefined);\n\n const { listProps, listInput } = useGraphQlList({\n ...listQueryParams,\n inputVariables: { intervalKey },\n });\n\n const [isFilterVisible, setIsFilterVisible] = useState(false);\n\n const outletContext = useOutletContext();\n\n const filteredBySearchBar = listInput.searchFilters?.domainName;\n const filteredByFilters = listInput.ownOnly || listInput.searchFilters?.clientName;\n\n const filtered = filteredBySearchBar || filteredByFilters;\n\n const interval = trafficUsageIntervals.find(({ key }) => intervalKey === key)\n ?? trafficUsageIntervals.at(-1);\n\n return (\n <>\n <HeaderLayout>\n <Columns gap=\"xs\">\n {outletContext?.trafficUsagePageDropdown && <Column>{outletContext?.trafficUsagePageDropdown}</Column>}\n <Column>\n <IntervalSelect\n value={intervalKey}\n onChange={setIntervalKey}\n intervals={trafficUsageIntervals}\n />\n </Column>\n </Columns>\n </HeaderLayout>\n <TotalUsage\n intervalKey={intervalKey}\n interval={interval}\n queryParams={totalUsageQueryParams}\n />\n <List\n filterButton={showFilters && (\n <ListFilterButton\n filtered={filteredByFilters}\n onClick={() => setIsFilterVisible(!isFilterVisible)}\n />\n )}\n sidebar={isFilterVisible && <Filters parentClientType={parentClientType} />}\n filtered={filtered}\n showClientNameColumn={showClientNameColumn}\n {...listProps}\n />\n </>\n );\n};\n\nexport default TrafficUsageByDomainsPage;\n"],"names":["ListFilterButton","filtered","className","props","_jsx","Badge","intent","hidden","children","Button","icon","locale","Locale","getSection","Form","applyButton","cancelButton","submitButton","lmsg","fill","ListFilterPanel","onClear","Panel","title","extra","ghost","onClick","propTypes","PropTypes","HeaderLayout","isRequired","getIntervalLabel","year","month","formattedTotalUsage","getFormattedMonth","Date","toLocaleDateString","document","documentElement","lang","IntervalSelect","value","intervals","onChange","reversedIntervals","reverse","current","find","key","Dropdown","menu","Menu","map","interval","MenuItem","Progress","progress","_jsxs","toFixed","ProgressBar","Math","min","Translate","getTranslate","monthLocale","TotalUsageInfo","loading","trafficData","renderUsage","Skeleton","width","isUnlimited","totalUsageFormatted","content","params","used","limit","limitFormatted","percent","limitUsagePercent","component","usage","toString","classNames","defaultValues","ownOnly","searchFilters","clientName","getInitialValues","values","PARENT_CLIENT_OWN_ONLY_MAP","admin","reseller","client","Filters","parentClientType","listInput","setFilters","useContext","GraphQlListContext","setValues","useState","handleSubmit","ListFilterForm","onSubmit","onFieldChange","handleFieldChange","name","setIn","FormFieldCheckbox","label","FormFieldText","size","List","filterButton","showClientNameColumn","listProps","columns","type","sortable","render","domainId","domainName","Link","to","align","subscriptionLimitFormatted","subscriptionLimitRemainingFormatted","subscriptionLimitUsagePercent","filter","Boolean","GraphQlList","rowKey","toolbar","Toolbar","ToolbarExpander","ToolbarGroup","groupable","SearchBar","TotalUsage","intervalKey","queryParams","data","previousData","useQuery","query","variables","totalTrafficData","extractTrafficData","TrafficUsageByDomainsPage","trafficUsageIntervals","listQueryParams","totalUsageQueryParams","showFilters","useLoaderData","setIntervalKey","undefined","useGraphQlList","inputVariables","isFilterVisible","setIsFilterVisible","outletContext","useOutletContext","filteredBySearchBar","filteredByFilters","at","_Fragment","Columns","gap","trafficUsagePageDropdown","Column","sidebar"],"sourceRoot":""}
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
AspDotNetSettingsPage
---
0755
DatabasesPage
---
0755
InfoAndStatisticsPage
---
0755
OdbcPage
---
0755
SummaryReportLayoutsPage
---
0755
VirtualDirectoryPage
---
0755
ActionLogPage.js
13088 bytes
0644
ActionLogPage.js.map
47064 bytes
0644
AssignIpAddressToResellerForm.js
6725 bytes
0644
AssignIpAddressToResellerForm.js.map
21526 bytes
0644
BandwidthLimitingPage.js
6881 bytes
0644
BandwidthLimitingPage.js.map
20714 bytes
0644
BrandingPage.js
12229 bytes
0644
BrandingPage.js.map
40616 bytes
0644
ChangeSubscriptionsOwnerPage.js
20015 bytes
0644
ChangeSubscriptionsOwnerPage.js.map
68681 bytes
0644
ConfigureMailClientPage.js
19148 bytes
0644
ConfigureMailClientPage.js.map
54780 bytes
0644
ConnectionInfo.js
19482 bytes
0644
ConnectionInfo.js.map
60127 bytes
0644
CreateMassMailTemplatePage.js
7938 bytes
0644
CreateMassMailTemplatePage.js.map
25649 bytes
0644
DatabasesPage.js
24239 bytes
0644
DatabasesPage.js.map
82958 bytes
0644
DomainsResourceUsagePage.js
2519 bytes
0644
DomainsResourceUsagePage.js.map
7223 bytes
0644
EditMassMailTemplatePage.js
6276 bytes
0644
EditMassMailTemplatePage.js.map
19693 bytes
0644
FirewallGeneralPage.js
13911 bytes
0644
FirewallGeneralPage.js.map
45778 bytes
0644
FirewallIcmpPage.js
7583 bytes
0644
FirewallIcmpPage.js.map
26718 bytes
0644
FirewallRulesPage.js
14054 bytes
0644
FirewallRulesPage.js.map
49533 bytes
0644
HomeCustomizationPage.js
7699 bytes
0644
HomeCustomizationPage.js.map
26789 bytes
0644
HomePage.js
108563 bytes
0644
HomePage.js.map
343571 bytes
0644
HostingSettingsPage.js
58717 bytes
0644
HostingSettingsPage.js.map
182095 bytes
0644
HotlinkProtectionPage.js
5459 bytes
0644
HotlinkProtectionPage.js.map
16592 bytes
0644
InfoAndStatisticsPage.js
1517 bytes
0644
InfoAndStatisticsPage.js.map
4468 bytes
0644
IpAddressDomainsPage.js
2527 bytes
0644
IpAddressDomainsPage.js.map
9631 bytes
0644
MassMailPage.js
3803 bytes
0644
MassMailPage.js.map
11880 bytes
0644
MoveDatabasePage.js
2348 bytes
0644
MoveDatabasePage.js.map
9743 bytes
0644
OdbcAddPage.js
5856 bytes
0644
OdbcAddPage.js.map
19713 bytes
0644
OdbcEditPage.js
8922 bytes
0644
OdbcEditPage.js.map
32573 bytes
0644
PanelNotificationsSettings.js
8676 bytes
0644
PanelNotificationsSettings.js.map
30239 bytes
0644
ProtectedDirectoryAddPage.js
7824 bytes
0644
ProtectedDirectoryAddPage.js.map
25902 bytes
0644
ProtectedDirectoryEditPage.js
8522 bytes
0644
ProtectedDirectoryEditPage.js.map
27389 bytes
0644
ProtectedDirectoryListPage.js
7523 bytes
0644
ProtectedDirectoryListPage.js.map
23418 bytes
0644
ProtectedDirectoryUserAddPage.js
5359 bytes
0644
ProtectedDirectoryUserAddPage.js.map
19045 bytes
0644
ProtectedDirectoryUserListPage.js
6399 bytes
0644
ProtectedDirectoryUserListPage.js.map
21441 bytes
0644
ProtectedDirectoryUserPasswordPage.js
4683 bytes
0644
ProtectedDirectoryUserPasswordPage.js.map
16610 bytes
0644
ScheduledBackupListPage.js
32356 bytes
0644
ScheduledBackupListPage.js.map
106674 bytes
0644
ScheduledBackupPage.js
23406 bytes
0644
ScheduledBackupPage.js.map
73098 bytes
0644
SendMassMailPage.js
14172 bytes
0644
SendMassMailPage.js.map
42796 bytes
0644
ServerAboutPage.js
4471 bytes
0644
ServerAboutPage.js.map
12644 bytes
0644
ServerComponentsPage.js
34358 bytes
0644
ServerComponentsPage.js.map
113247 bytes
0644
ServerInformationPage.js
5907 bytes
0644
ServerInformationPage.js.map
17780 bytes
0644
ServerSettingsPage.js
10390 bytes
0644
ServerSettingsPage.js.map
31759 bytes
0644
SpamFilterBlackListPage.js
9240 bytes
0644
SpamFilterBlackListPage.js.map
35310 bytes
0644
SpamFilterSettingsPage.js
6210 bytes
0644
SpamFilterSettingsPage.js.map
22487 bytes
0644
SpamFilterWhiteListPage.js
9240 bytes
0644
SpamFilterWhiteListPage.js.map
35318 bytes
0644
SummaryReportLayoutsPage.js
10170 bytes
0644
SummaryReportLayoutsPage.js.map
36379 bytes
0644
SummaryReportPage.js
20200 bytes
0644
SummaryReportPage.js.map
60542 bytes
0644
SummaryReportSchedulesPage.js
18905 bytes
0644
SummaryReportSchedulesPage.js.map
65098 bytes
0644
SystemTimePage.js
12937 bytes
0644
SystemTimePage.js.map
42357 bytes
0644
TrafficHistoryReportPage.js
4937 bytes
0644
TrafficHistoryReportPage.js.map
18836 bytes
0644
TrafficUsageByClientsPage.js
6100 bytes
0644
TrafficUsageByClientsPage.js.map
18770 bytes
0644
TrafficUsageByDomainPage.js
9382 bytes
0644
TrafficUsageByDomainPage.js.map
32899 bytes
0644
TrafficUsageByDomainsPage.js
8416 bytes
0644
TrafficUsageByDomainsPage.js.map
26009 bytes
0644
TrafficUsageByResellerPage.js
5505 bytes
0644
TrafficUsageByResellerPage.js.map
16280 bytes
0644
TsSessionPage.js
7464 bytes
0644
TsSessionPage.js.map
25275 bytes
0644
TsSessionsPage.js
11824 bytes
0644
TsSessionsPage.js.map
43136 bytes
0644
VirtualDirectoryPage.js
1938 bytes
0644
VirtualDirectoryPage.js.map
5771 bytes
0644
VirtualHostTemplatePage.js
11914 bytes
0644
VirtualHostTemplatePage.js.map
44898 bytes
0644
N4ST4R_ID | Naxtarrr