Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
cp
/
public
/
javascript
/
views
/
admin
/
services
/
File Content:
list.js.map
{"version":3,"file":"javascript/views/admin/services/list.js?0ab80473bd789ebe1f39","mappings":"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","sources":["webpack:///./views/admin/services/list/ServicesListPage.js","webpack:///./views/admin/services/list/StartupDialog.js","webpack:///./queries/SetServiceAction.graphql"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState, useMemo, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useMutation } from '@apollo/client';\nimport {\n List,\n ListAction,\n ListActions,\n Toolbar,\n Button,\n Status,\n Tooltip,\n ToolbarGroup,\n ToolbarExpander,\n SearchBar,\n Action,\n Icon,\n} from '@plesk/ui-library';\nimport { Locale, api } from 'jsw';\nimport { addToast } from 'helpers/toasts';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport StartupDialog from './StartupDialog';\n\nconst Translate = Locale.getTranslate('admin.components.lists.services');\nconst locale = Locale.getSection('admin.components.lists.services');\nconst TranslateOperations = Locale.getTranslate('admin.controllers.services.operation');\n\nimport SET_SERVICE_ACTION from 'queries/SetServiceAction.graphql';\n\nconst START = 'start';\nconst STOP = 'stop';\nconst RESTART = 'restart';\nconst CHANGE_STARTUP = 'changeStartup';\nconst NOT_CONFIGURED = 'notConfigured';\nconst NOT_INSTALLED = 'notInstalled';\n\nconst ServicesListPage = ({\n data: initialData,\n showGroupedData = false,\n showStartupTypeColumn = false,\n}) => {\n const [loading, setLoading] = useState(false);\n const [startupDialogData, setStartupDialogData] = useState(null);\n const [data, setData] = useState(initialData.data);\n const [filter, setFilter] = useState('');\n const [setServiceAction, { loading: serviceActionLoading }] = useMutation(SET_SERVICE_ACTION);\n const fetchRetryTimeout = useRef();\n const [serviceStatus, setServiceStatus] = useState({});\n\n useEffect(() => () => {\n if (fetchRetryTimeout.current) {\n clearTimeout(fetchRetryTimeout.current);\n }\n }, []);\n\n const filteredData = useMemo(() => {\n if (!filter) {\n return data;\n }\n\n return data.filter(({ name }) => name.toLowerCase().includes(filter.toLowerCase()));\n }, [filter, data]);\n\n\n const groupedData = useMemo(() => {\n if (!showGroupedData) {\n return filteredData;\n }\n\n const groups = filteredData.reduce((acc, curr) => {\n acc[curr.group] ||= {\n key: curr.group,\n name: locale.lmsg(`${curr.group}ComponentName`),\n data: [],\n };\n acc[curr.group].data.push(curr);\n return acc;\n }, {});\n\n return Object.values(groups);\n }, [showGroupedData, filteredData]);\n\n const handleServiceActionSubmit = async ({ serviceId, actionType, isStartupAction }) => {\n const action = isStartupAction ? CHANGE_STARTUP : actionType;\n setServiceStatus(state => ({ ...state, [serviceId]: action }));\n try {\n await setServiceAction({\n variables: {\n serviceId,\n actionType: actionType.toUpperCase(),\n },\n });\n addToast({ intent: 'success', message: <TranslateOperations content={`${action}ActionSuccess`} /> });\n } catch ({ message }) {\n // No response from server when start/stop/restart web and nginx services is considered as success\n if (!['nginx', 'web'].includes(serviceId)) {\n addToast({ intent: 'danger', message: <TranslateOperations content={`${action}ActionError`} params={{ error: message }} /> });\n }\n }\n await fetchServicesData(true, false);\n\n setServiceStatus(state => {\n delete state[serviceId];\n return { ...state };\n });\n\n isStartupAction && handleStartupDialogClose();\n };\n\n const handleStartupDialogClose = () => setStartupDialogData(null);\n\n const fetchServicesData = async (retryOnFail = false, triggerLoading = true) => {\n triggerLoading && setLoading(true);\n\n try {\n const result = await api.get('/admin/services/list-data');\n setData(() => result.data);\n setLoading(false);\n } catch {\n if (retryOnFail) {\n fetchRetryTimeout.current = setTimeout(async () => {\n await fetchServicesData(true, triggerLoading);\n }, 1000);\n } else {\n setLoading(false);\n }\n }\n };\n\n return (\n <>\n <List\n id=\"admin-services-list\"\n className=\"admin-services-list\"\n sortColumn=\"name\"\n loading={loading}\n filtered={filter.length > 0}\n data={groupedData}\n rowProps={({ data }) => ({ virtual: Array.isArray(data) })}\n toolbar={\n <Toolbar>\n <ToolbarGroup title=\"Refetch\">\n <Button disabled={loading || serviceActionLoading} icon=\"refresh\" onClick={fetchServicesData}>\n <Translate content=\"buttonRefreshComponents\" />\n </Button>\n </ToolbarGroup>\n <ToolbarExpander />\n <ToolbarGroup title=\"Search\">\n <SearchBar\n id=\"admin-services-list-search-text-name\"\n onSearch={setFilter}\n inputProps={{ placeholder: Locale.getSection('admin.components.lists.services').lmsg('searchTitle') }}\n />\n </ToolbarGroup>\n </Toolbar>\n }\n columns={[\n {\n key: 'name',\n type: 'title',\n className: 'admin-services-list__title',\n title: (<Translate content=\"nameColumnHeader\" />),\n render: ({ name, data }) => {\n const children = (\n <b>{name}</b>\n );\n\n return data ? {\n colSpan: showStartupTypeColumn ? 4 : 3,\n children,\n } : children;\n },\n },\n {\n key: 'status',\n title: (<Translate content=\"stateColumnHeader\" />),\n className: 'admin-services-list__state',\n render: ({ id, state }) => serviceStatus[id] ? (\n <Action progress>\n <Translate content={`do-${serviceStatus[id]}`} />\n </Action>\n ) : (\n <Status id={`${id}-state`} intent={state === 'active' ? 'success' : 'inactive'}>\n <Translate content={`${state}State`} />\n </Status>\n ),\n },\n showStartupTypeColumn && {\n key: 'startup',\n className: 'admin-services-list__state',\n title: (<Translate content=\"startupTypeColumnHeader\" />),\n render: ({ id, startupType, name }) => (\n <Tooltip title={<Translate content=\"changeStartupTypeTooltip\" />}>\n <Action onClick={() => setStartupDialogData({ serviceId: id, actionType: startupType, name })}>\n <Translate content={`${startupType}StartupType`} />\n </Action>\n </Tooltip>\n ),\n },\n {\n key: 'actions',\n className: 'admin-services-list__actions',\n render: ({ id, state, status }) => {\n if ([NOT_INSTALLED, NOT_CONFIGURED].includes(state)) {\n return null;\n }\n\n const renderButton = actionType => (\n <ListAction\n component=\"a\"\n key={`${id}-${actionType}`}\n id={`${id}-${actionType}`}\n data-action-name={actionType}\n disabled={!!serviceStatus[id]}\n primary\n icon={<Icon name={{ start: 'start', stop: 'stop-circle', restart: 'reload' }[actionType]} />}\n onClick={() => handleServiceActionSubmit({ serviceId: id, actionType })}\n >\n <Translate content={`${status}-${actionType}`} />\n </ListAction>\n );\n return (\n <ListActions>\n { status === 'running' ? [\n renderButton(STOP),\n renderButton(RESTART),\n ] : [\n renderButton(START),\n ]}\n </ListActions>\n );\n },\n },\n ].filter(Boolean)}\n />\n {startupDialogData ? (\n <StartupDialog\n data={startupDialogData}\n onSubmit={handleServiceActionSubmit}\n onClose={handleStartupDialogClose}\n loading={serviceActionLoading}\n />\n ) : null}\n </>);\n};\n\nServicesListPage.propTypes = {\n data: PropTypes.object.isRequired,\n showGroupedData: PropTypes.bool,\n showStartupTypeColumn: PropTypes.bool,\n};\n\nexport default withPageLayout(ServicesListPage);\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Dialog, FormFieldRadioButtons } from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\n\nimport { Locale } from 'jsw';\nimport { useState } from 'react';\n\nconst ChangeStartupFormTranslate = Locale.getTranslate('admin.components.forms.services.change-startup-type');\n\nconst StartupDialog = ({\n data: { name, serviceId, actionType } = {},\n loading = false,\n onClose,\n onSubmit,\n}) => {\n const [values] = useState({ actionType });\n\n const handleSubmit = ({ actionType }) => onSubmit({ serviceId, actionType, isStartupAction: true });\n\n return (\n <Dialog\n isOpen\n size=\"xs\"\n title={name}\n onClose={onClose}\n form={{\n values,\n onSubmit: handleSubmit,\n state: loading ? 'submit' : undefined,\n }}\n >\n <FormFieldRadioButtons\n label={<ChangeStartupFormTranslate content=\"startupTypeLabel\" />}\n name=\"actionType\"\n options={[\n { value: 'disabled', label: <ChangeStartupFormTranslate content=\"disabledStartupTypeLabel\" /> },\n { value: 'manual', label: <ChangeStartupFormTranslate content=\"manualStartupTypeLabel\" /> },\n { value: 'auto', label: <ChangeStartupFormTranslate content=\"autoStartupTypeLabel\" /> },\n ]}\n />\n </Dialog>\n );\n};\n\nStartupDialog.propTypes = {\n data: PropTypes.shape({\n name: PropTypes.string.isRequired,\n serviceId: PropTypes.string.isRequired,\n actionType: PropTypes.string.isRequired,\n }),\n onClose: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n loading: PropTypes.bool,\n};\n\nexport default StartupDialog;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"SetServiceAction\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"serviceId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"actionType\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ServiceActionEnum\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"setServiceAction\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"serviceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"serviceId\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"actionType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"actionType\"}}}]}}],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":162}};\n doc.loc.source = {\"body\":\"mutation SetServiceAction($serviceId: String!, $actionType: ServiceActionEnum!) {\\n setServiceAction(input: {serviceId: $serviceId, actionType: $actionType})\\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[\"SetServiceAction\"] = oneQuery(doc, \"SetServiceAction\");\n \n"],"names":["Translate","Locale","getTranslate","locale","getSection","TranslateOperations","NOT_CONFIGURED","NOT_INSTALLED","ServicesListPage","data","initialData","showGroupedData","showStartupTypeColumn","loading","setLoading","useState","startupDialogData","setStartupDialogData","setData","filter","setFilter","setServiceAction","serviceActionLoading","useMutation","SET_SERVICE_ACTION","fetchRetryTimeout","useRef","serviceStatus","setServiceStatus","useEffect","current","clearTimeout","filteredData","useMemo","name","toLowerCase","includes","groupedData","groups","reduce","acc","curr","group","key","lmsg","push","Object","values","handleServiceActionSubmit","async","serviceId","actionType","isStartupAction","action","state","variables","toUpperCase","addToast","intent","message","_jsx","content","params","error","fetchServicesData","handleStartupDialogClose","retryOnFail","triggerLoading","result","api","get","setTimeout","_jsxs","_Fragment","children","List","id","className","sortColumn","filtered","length","rowProps","virtual","Array","isArray","toolbar","Toolbar","ToolbarGroup","title","Button","disabled","icon","onClick","ToolbarExpander","SearchBar","onSearch","inputProps","placeholder","columns","type","render","colSpan","Action","progress","Status","startupType","Tooltip","status","renderButton","ListAction","component","primary","Icon","start","stop","restart","ListActions","Boolean","StartupDialog","onSubmit","onClose","propTypes","PropTypes","isRequired","withPageLayout","ChangeStartupFormTranslate","Dialog","isOpen","size","form","handleSubmit","undefined","FormFieldRadioButtons","label","options","value","doc","loc","source","collectFragmentReferences","node","refs","kind","add","selectionSet","selections","forEach","selection","variableDefinitions","def","definitions","definitionRefs","findOperation","i","element","Set","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","oneQuery"],"sourceRoot":""}
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
list.js
7596 bytes
0644
list.js.map
27228 bytes
0644
N4ST4R_ID | Naxtarrr