Unverified Commit b0bcde86 authored by Lijiaoa's avatar Lijiaoa Committed by GitHub
Browse files

Refine webui (#4548)

parent b4d8aebb
import * as React from 'react'; import * as React from 'react';
import { import { Stack, FocusTrapCallout, DefaultButton, FocusZone, PrimaryButton } from '@fluentui/react';
Stack, import { killJob } from '@static/function';
FocusTrapCallout, import { blocked } from '@components/fluent/Icon';
DefaultButton, import { styles } from '@components/experiment/overview/params/basicInfoStyles';
FocusZone,
PrimaryButton,
getTheme,
mergeStyleSets,
FontWeights
} from '@fluentui/react';
import { killJob } from '../../static/function';
import { blocked } from '../buttons/Icon';
const theme = getTheme();
const styles = mergeStyleSets({
buttonArea: {
verticalAlign: 'top',
display: 'inline-block',
textAlign: 'center',
height: 32
},
callout: {
maxWidth: 300
},
header: {
padding: '18px 24px 12px'
},
title: [
theme.fonts.xLarge,
{
margin: 0,
color: theme.palette.neutralPrimary,
fontWeight: FontWeights.semilight
}
],
inner: {
height: '100%',
padding: '0 24px 20px'
},
actions: {
position: 'relative',
marginTop: 20,
width: '100%',
whiteSpace: 'nowrap'
},
buttons: {
display: 'flex',
justifyContent: 'flex-end',
padding: '0 24px 24px'
},
subtext: [
theme.fonts.small,
{
margin: 0,
color: theme.palette.neutralPrimary,
fontWeight: FontWeights.semilight
}
]
});
interface KillJobState { interface KillJobState {
isCalloutVisible: boolean; isCalloutVisible: boolean;
...@@ -74,23 +19,6 @@ class KillJob extends React.Component<KillJobProps, KillJobState> { ...@@ -74,23 +19,6 @@ class KillJob extends React.Component<KillJobProps, KillJobState> {
this.state = { isCalloutVisible: false }; this.state = { isCalloutVisible: false };
} }
onDismiss = (): void => {
this.setState(() => ({ isCalloutVisible: false }));
};
onKill = (): void => {
this.setState({ isCalloutVisible: false }, () => {
const { trial } = this.props;
killJob(trial.key, trial.id, trial.status);
});
};
openPromot = (event: React.SyntheticEvent<EventTarget>): void => {
event.preventDefault();
event.stopPropagation();
this.setState({ isCalloutVisible: true });
};
render(): React.ReactNode { render(): React.ReactNode {
const { isCalloutVisible } = this.state; const { isCalloutVisible } = this.state;
const prompString = 'Are you sure to cancel this trial?'; const prompString = 'Are you sure to cancel this trial?';
...@@ -135,6 +63,23 @@ class KillJob extends React.Component<KillJobProps, KillJobState> { ...@@ -135,6 +63,23 @@ class KillJob extends React.Component<KillJobProps, KillJobState> {
</div> </div>
); );
} }
private onDismiss = (): void => {
this.setState(() => ({ isCalloutVisible: false }));
};
private onKill = (): void => {
this.setState({ isCalloutVisible: false }, () => {
const { trial } = this.props;
killJob(trial.key, trial.id, trial.status);
});
};
private openPromot = (event: React.SyntheticEvent<EventTarget>): void => {
event.preventDefault();
event.stopPropagation();
this.setState({ isCalloutVisible: true });
};
} }
export default KillJob; export default KillJob;
import React, { useState } from 'react'; import React, { useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Stack, PrimaryButton } from '@fluentui/react'; import { Stack, PrimaryButton } from '@fluentui/react';
import { searchConditonsGap } from '../../modals/ChildrenGap'; import { gap10 } from '@components/fluent/ChildrenGap';
import { getSearchInputValueBySearchList } from './searchFunction'; import { getSearchInputValueBySearchList } from './searchFunction';
// This file is for search trial ['Trial id', 'Trial No.'] // This file is for search trial ['Trial id', 'Trial No.']
...@@ -62,7 +62,7 @@ function GeneralSearch(props): any { ...@@ -62,7 +62,7 @@ function GeneralSearch(props): any {
return ( return (
// Trial id & Trial No. // Trial id & Trial No.
<Stack horizontal className='filterConditions' tokens={searchConditonsGap}> <Stack horizontal className='filterConditions' tokens={gap10}>
<span>{searchName === 'Trial id' ? 'Includes' : 'Equals to'}</span> <span>{searchName === 'Trial id' ? 'Includes' : 'Equals to'}</span>
<input type='text' className='input input-padding' onChange={updateFirstInputVal} value={firstInputVal} /> <input type='text' className='input input-padding' onChange={updateFirstInputVal} value={firstInputVal} />
<PrimaryButton text='Apply' className='btn-vertical-middle' onClick={startFilterTrial} /> <PrimaryButton text='Apply' className='btn-vertical-middle' onClick={startFilterTrial} />
......
...@@ -8,8 +8,8 @@ import { ...@@ -8,8 +8,8 @@ import {
DirectionalHint, DirectionalHint,
SearchBox SearchBox
} from '@fluentui/react'; } from '@fluentui/react';
import { EXPERIMENT } from '../../../static/datamodel'; import { EXPERIMENT } from '@static/datamodel';
import { SearchItems } from '../../../static/interface'; import { SearchItems } from '@static/interface';
import SearchParameterConditions from './SearchParameterConditions'; import SearchParameterConditions from './SearchParameterConditions';
import GeneralSearch from './GeneralSearch'; import GeneralSearch from './GeneralSearch';
import { classNames, isChoiceType } from './searchFunction'; import { classNames, isChoiceType } from './searchFunction';
......
import React, { useState } from 'react'; import React, { useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Stack, PrimaryButton, Dropdown, IDropdownOption } from '@fluentui/react'; import { Stack, PrimaryButton, Dropdown, IDropdownOption } from '@fluentui/react';
import { EXPERIMENT } from '../../../static/datamodel'; import { EXPERIMENT } from '@static/datamodel';
import { getDropdownOptions, getSearchInputValueBySearchList } from './searchFunction'; import { getDropdownOptions, getSearchInputValueBySearchList } from './searchFunction';
import { searchConditonsGap } from '../../modals/ChildrenGap'; import { gap10 } from '@components/fluent/ChildrenGap';
// This file is for filtering trial parameters and trial status // This file is for filtering trial parameters and trial status
...@@ -131,7 +131,7 @@ function SearchParameterConditions(props): any { ...@@ -131,7 +131,7 @@ function SearchParameterConditions(props): any {
return ( return (
// for trial parameters & Status // for trial parameters & Status
<Stack horizontal className='filterConditions' tokens={searchConditonsGap}> <Stack horizontal className='filterConditions' tokens={gap10}>
<Dropdown <Dropdown
selectedKey={operatorVal} selectedKey={operatorVal}
options={operatorList.map(item => ({ options={operatorList.map(item => ({
......
import { mergeStyleSets } from '@fluentui/react'; import { mergeStyleSets } from '@fluentui/react';
import { trialJobStatus } from '../../../static/const'; import { trialJobStatus } from '@static/const';
import { EXPERIMENT } from '../../../static/datamodel'; import { EXPERIMENT } from '@static/datamodel';
import { TableObj, SearchItems } from '../../../static/interface'; import { TableObj, SearchItems } from '@static/interface';
const classNames = mergeStyleSets({ const classNames = mergeStyleSets({
menu: { menu: {
......
...@@ -2,9 +2,9 @@ import React, { useState, useEffect } from 'react'; ...@@ -2,9 +2,9 @@ import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import axios from 'axios'; import axios from 'axios';
import { DefaultButton, IContextualMenuProps } from '@fluentui/react'; import { DefaultButton, IContextualMenuProps } from '@fluentui/react';
import { MANAGER_IP } from '../../../static/const'; import { MANAGER_IP } from '@static/const';
import { disableTensorboard, getTensorboardMenu } from '../../../static/function'; import { disableTensorboard, getTensorboardMenu } from '@static/function';
import { Tensorboard } from '../../../static/interface'; import { Tensorboard } from '@static/interface';
import TensorboardDialog from './TensorboardDialog'; import TensorboardDialog from './TensorboardDialog';
function TensorboardUI(props): any { function TensorboardUI(props): any {
......
import * as React from 'react'; import * as React from 'react';
import { Stack, DetailsList, DefaultButton, Icon, SearchBox, IColumn, IStackTokens } from '@fluentui/react'; import { Stack, DetailsList, DefaultButton, Icon, SearchBox, IColumn, IStackTokens } from '@fluentui/react';
import { ExperimentsManager } from '../../static/model/experimentsManager'; import { ExperimentsManager } from '@model/experimentsManager';
import { expformatTimestamp, copyAndSort } from '../../static/function'; import { expformatTimestamp, copyAndSort } from '@static/function';
import { AllExperimentList, SortInfo } from '../../static/interface'; import { AllExperimentList, SortInfo } from '@static/interface';
import MessageInfo from '../modals/MessageInfo'; import MessageInfo from '@components/common/MessageInfo';
import { compareDate, filterByStatusOrPlatform, getSortedSource } from './expFunction'; import { compareDate, filterByStatusOrPlatform, getSortedSource } from './expFunction';
import { MAXSCREENCOLUMNWIDHT, MINSCREENCOLUMNWIDHT } from './experimentConst'; import { MAXSCREENCOLUMNWIDHT, MINSCREENCOLUMNWIDHT } from './experimentConst';
import { Hearder } from './Header'; import { Hearder } from './Header';
import TrialIdColumn from './TrialIdColumn'; import TrialIdColumn from './TrialIdColumn';
import FilterBtns from './FilterBtns'; import FilterBtns from './FilterBtns';
import { TitleContext } from '../overview/TitleContext'; import { TitleContext } from '../experiment/overview/TitleContext';
import { Title } from '../overview/Title'; import { Title } from '../experiment/overview/Title';
import '../../App.scss'; import '@style/App.scss';
import '../../static/style/common.scss'; import '@style/nav/nav.scss';
import '../../static/style/nav/nav.scss'; import '@style/common/common.scss';
import '../../static/style/experiment/experiment.scss'; import '@style/common/experimentStatusColor.scss';
import '../../static/style/overview/probar.scss'; import '@style/common/trialStatus.css';
import '../../static/style/tableStatus.css'; import '@style/experimentManagement/experiment.scss';
const expTokens: IStackTokens = { const expTokens: IStackTokens = {
childrenGap: 25 childrenGap: 25
......
import * as React from 'react'; import * as React from 'react';
import { DefaultButton, Icon, Dropdown, DatePicker, DayOfWeek } from '@fluentui/react'; import { DefaultButton, Icon, Dropdown, DatePicker, DayOfWeek } from '@fluentui/react';
import { EXPERIMENTSTATUS } from '../../static/const'; import { EXPERIMENTSTATUS } from '@static/const';
import { fillOptions } from './expFunction'; import { fillOptions } from './expFunction';
interface FilterBtnsProps { interface FilterBtnsProps {
......
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { Stack, StackItem, CommandBarButton } from '@fluentui/react'; import { Stack, StackItem, CommandBarButton } from '@fluentui/react';
import { RevToggleKey } from '../buttons/Icon'; import { RevToggleKey } from '../fluent/Icon';
import { NNILOGO } from '../stateless-component/NNItabs'; import { NNILOGO } from '../nav/slideNav/NNItabs';
import { stackTokens, stackStyle } from '../NavConst'; import { gap15, stackStyle } from '../fluent/ChildrenGap';
export const Hearder = (): any => ( export const Hearder = (): any => (
<div className='header'> <div className='header'>
...@@ -14,7 +14,7 @@ export const Hearder = (): any => ( ...@@ -14,7 +14,7 @@ export const Hearder = (): any => (
<span className='logoTitle'>Neural Network Intelligence</span> <span className='logoTitle'>Neural Network Intelligence</span>
</StackItem> </StackItem>
<StackItem grow={70} className='navOptions'> <StackItem grow={70} className='navOptions'>
<Stack horizontal horizontalAlign='end' tokens={stackTokens} styles={stackStyle}> <Stack horizontal horizontalAlign='end' tokens={gap15} styles={stackStyle}>
<Link to='/oview' className='experiment'> <Link to='/oview' className='experiment'>
<CommandBarButton iconProps={RevToggleKey} text='Back to the experiment' /> <CommandBarButton iconProps={RevToggleKey} text='Back to the experiment' />
</Link> </Link>
......
import * as React from 'react'; import * as React from 'react';
import { Stack } from '@fluentui/react'; import { Stack } from '@fluentui/react';
import { AllExperimentList } from '../../static/interface'; import { AllExperimentList } from '@static/interface';
import CopyButton from '../public-child/CopyButton'; import CopyButton from '../common/CopyButton';
interface TrialIdColumnProps { interface TrialIdColumnProps {
item: AllExperimentList; item: AllExperimentList;
......
import { AllExperimentList, SortInfo } from '../../static/interface'; import { AllExperimentList, SortInfo } from '@static/interface';
import { copyAndSort } from '../../static/function'; import { copyAndSort } from '@static/function';
function compareDate(date1: Date, date2: Date): boolean { function compareDate(date1: Date, date2: Date): boolean {
if (date1 !== undefined && date2 !== undefined) { if (date1 !== undefined && date2 !== undefined) {
......
import { IStackTokens, IStackStyles } from '@fluentui/react'; import { IStackTokens, IStackStyles } from '@fluentui/react';
const stackTokens: IStackTokens = { // name: gap + specific gap number
const gap10: IStackTokens = {
childrenGap: 10
};
const gap15: IStackTokens = {
childrenGap: 15 childrenGap: 15
}; };
const stackStyle: IStackStyles = { const stackStyle: IStackStyles = {
root: { root: {
minWidth: 400, minWidth: 400,
...@@ -12,4 +19,4 @@ const stackStyle: IStackStyles = { ...@@ -12,4 +19,4 @@ const stackStyle: IStackStyles = {
} }
}; };
export { stackTokens, stackStyle }; export { gap10, gap15, stackStyle };
import { IStackTokens } from '@fluentui/react';
const searchConditonsGap: IStackTokens = {
childrenGap: 10
};
export { searchConditonsGap };
import * as React from 'react'; import * as React from 'react';
import axios from 'axios'; import axios from 'axios';
import { WEBUIDOC, MANAGER_IP } from '../static/const';
import { Stack, StackItem, CommandBarButton, IContextualMenuProps } from '@fluentui/react'; import { Stack, StackItem, CommandBarButton, IContextualMenuProps } from '@fluentui/react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { infoIconAbout, timeIcon, disableUpdates, requency, closeTimer, ChevronRightMed } from './buttons/Icon'; import { WEBUIDOC, MANAGER_IP } from '@static/const';
import ExperimentSummaryPanel from './modals/ExperimentSummaryPanel'; import ExperimentSummaryPanel from './slideNav/ExperimentSummaryPanel';
import { OVERVIEWTABS, DETAILTABS, NNILOGO } from './stateless-component/NNItabs'; import { OVERVIEWTABS, DETAILTABS, NNILOGO } from './slideNav/NNItabs';
import { EXPERIMENT } from '../static/datamodel'; import { EXPERIMENT } from '@static/datamodel';
import { stackTokens, stackStyle } from './NavConst'; import { gap15, stackStyle } from '@components/fluent/ChildrenGap';
import '../static/style/nav/nav.scss'; import {
import '../static/style/icon.scss'; infoIconAbout,
timeIcon,
disableUpdates,
requency,
closeTimer,
ChevronRightMed
} from '@components/fluent/Icon';
import '@style/nav/nav.scss';
import '@style/icon.scss';
interface NavState { interface NavState {
version: string; version: string;
...@@ -121,7 +128,7 @@ class NavCon extends React.Component<NavProps, NavState> { ...@@ -121,7 +128,7 @@ class NavCon extends React.Component<NavProps, NavState> {
<span>{DETAILTABS}</span> <span>{DETAILTABS}</span>
</StackItem> </StackItem>
<StackItem grow={70} className='navOptions'> <StackItem grow={70} className='navOptions'>
<Stack horizontal horizontalAlign='end' tokens={stackTokens} styles={stackStyle}> <Stack horizontal horizontalAlign='end' tokens={gap15} styles={stackStyle}>
{/* refresh button danyi*/} {/* refresh button danyi*/}
{/* TODO: fix bug */} {/* TODO: fix bug */}
{/* <CommandBarButton {/* <CommandBarButton
......
import * as React from 'react'; import * as React from 'react';
import { downFile } from '../../static/function';
import { Stack, PrimaryButton, DefaultButton, Panel, StackItem } from '@fluentui/react'; import { Stack, PrimaryButton, DefaultButton, Panel, StackItem } from '@fluentui/react';
import { DRAWEROPTION } from '../../static/const';
import { EXPERIMENT, TRIALS } from '../../static/datamodel';
import { caclMonacoEditorHeight } from '../../static/function';
import MonacoEditor from 'react-monaco-editor'; import MonacoEditor from 'react-monaco-editor';
import '../../static/style/logDrawer.scss'; import { downFile } from '@static/function';
import { DRAWEROPTION } from '@static/const';
import { EXPERIMENT, TRIALS } from '@static/datamodel';
import { caclMonacoEditorHeight } from '@static/function';
import '@style/logPanel.scss';
interface ExpDrawerProps { interface ExpDrawerProps {
closeExpDrawer: () => void; closeExpDrawer: () => void;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment