diff --git a/src/webportal/src/app/job-submission/components/basic-section.jsx b/src/webportal/src/app/job-submission/components/basic-section.jsx index bf04c619df..9be988fc04 100644 --- a/src/webportal/src/app/job-submission/components/basic-section.jsx +++ b/src/webportal/src/app/job-submission/components/basic-section.jsx @@ -58,7 +58,7 @@ export const BasicSection = props => { />
- + {sectionTooltip && } diff --git a/src/webportal/src/app/job-submission/components/controls/tooltip-icon.jsx b/src/webportal/src/app/job-submission/components/controls/tooltip-icon.jsx index eb3ddaba84..60f6bed474 100644 --- a/src/webportal/src/app/job-submission/components/controls/tooltip-icon.jsx +++ b/src/webportal/src/app/job-submission/components/controls/tooltip-icon.jsx @@ -24,22 +24,11 @@ */ import React from 'react'; -import { DirectionalHint, TooltipHost, Icon } from 'office-ui-fabric-react'; +import { IconButton } from 'office-ui-fabric-react'; import PropTypes from 'prop-types'; export const TooltipIcon = ({ content }) => { - return ( - - - - ); + return ; }; TooltipIcon.propTypes = { diff --git a/src/webportal/src/app/job-submission/components/customized-components.jsx b/src/webportal/src/app/job-submission/components/customized-components.jsx index e44d34b64f..9fcf35b860 100644 --- a/src/webportal/src/app/job-submission/components/customized-components.jsx +++ b/src/webportal/src/app/job-submission/components/customized-components.jsx @@ -66,7 +66,7 @@ export const CSpinButton = props => { const _onValidate = value => _onChange(value, onValidate, value); return ( - + {label &&
{label}
} {tooltip && } - + { @@ -67,7 +66,6 @@ export const JobInformation = React.memo( - + {title} {tooltip && } diff --git a/src/webportal/src/app/job-submission/components/tab-form-content.jsx b/src/webportal/src/app/job-submission/components/tab-form-content.jsx index 3918a8cbe5..ed7ad65927 100644 --- a/src/webportal/src/app/job-submission/components/tab-form-content.jsx +++ b/src/webportal/src/app/job-submission/components/tab-form-content.jsx @@ -66,7 +66,6 @@ export const TabFormContent = ({ {!isSingle && ( _onValueChange('name', value)} diff --git a/src/webportal/src/app/job-submission/components/tools/job-ssh.jsx b/src/webportal/src/app/job-submission/components/tools/job-ssh.jsx index cd8ec13c85..409485970b 100644 --- a/src/webportal/src/app/job-submission/components/tools/job-ssh.jsx +++ b/src/webportal/src/app/job-submission/components/tools/job-ssh.jsx @@ -7,6 +7,7 @@ import { PAI_PLUGIN, USERSSH_TYPE_OPTIONS, SSH_KEY_BITS, + PROTOCOL_TOOLTIPS, } from '../../utils/constants'; import { SSHPlugin } from '../../models/plugin/ssh-plugin'; import SSHGenerator from './ssh-generator'; @@ -116,25 +117,16 @@ export const JobSSH = ({ extras, onExtrasChange }) => { return ( - + SSH - - - - - + + {!isEmpty(sshPlugin.userssh) && ( { return ( - + TensorBoard - + By default, tensorBoard will read logs under{' '} diff --git a/src/webportal/src/app/job-submission/utils/constants.js b/src/webportal/src/app/job-submission/utils/constants.js index 3d71d98ef0..a6f9b3a6f1 100644 --- a/src/webportal/src/app/job-submission/utils/constants.js +++ b/src/webportal/src/app/job-submission/utils/constants.js @@ -84,32 +84,27 @@ export const PAI_ENV_VAR = [ }, ]; export const PROTOCOL_TOOLTIPS = { - jobName: - 'Name for the job, need to be unique, should be string in ^[A-Za-z0-9\\-._~]+$ format.', - taskRoleName: 'Name of the taskRole, string in ^[A-Za-z0-9\\-._~]+$ format.', - taskRoleContainerSize: [ - 'Resource required per container instance', - 'CPU number and memory number will be auto scaled with GPU number by default.', - ], - hivedSkuType: [ - 'SKU defines a resource unit in all resource dimensions, ', - 'including GPU, CPU, and memory.', - ], - taskRole: [ - 'Task roles are different types of task in the protocol.', - 'One job may have one or more task roles, each task role has one or more instances, and each instance runs inside one container.', - ], + taskRoleContainerSize: + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/quick-start.html', + hivedSkuType: + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/quick-start.html', + taskRole: + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-run-distributed-job.html#taskrole-and-instance', parameters: - 'Parameters are key-value pairs that you could save your frequently used values and reference them in command section by their keys.', - secrets: `Secrets are used to store sensitive data. The value will be masked and won't be seen by other users.`, + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-use-advanced-job-settings.html#parameters-and-secrets', + secrets: `https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-use-advanced-job-settings.html#parameters-and-secrets`, data: - 'Data section is used to generate pre-command that download/mount your data to specific path in container.', + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-manage-data.html', tools: - 'Tools section is used to configure the tools that are useful for jobs.', + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-debug-jobs.html#how-to-debug-jobs', dockerImage: - 'Please contact admin to make sure which cuda versions in docker image is supported by gpu drivers.', + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/docker-images-and-job-examples.html', teamStorage: - "Team share storage is external storage defined by cluster admin. Select an element means the external storage will be mount to 'path' and user can treat it as local path.", + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-manage-data.html#use-storage-in-jobs', + tensorboard: + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-debug-jobs.html#how-to-use-tensorboard-plugin', + ssh: + 'https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-debug-jobs.html#how-to-use-ssh', }; export const COMMAND_PLACEHOLDER = `'You could define your own Parameters, Secrets or Data mount point on the right sidebar.