Skip to content
Snippets Groups Projects
Commit d8d9fdca authored by Sandro Weber's avatar Sandro Weber
Browse files

Merged in more-icons (pull request #18)

More icons
parents 0b82fbf3 ea14bf0c
No related branches found
No related tags found
No related merge requests found
...@@ -1251,35 +1251,6 @@ ...@@ -1251,35 +1251,6 @@
} }
} }
}, },
"@fortawesome/fontawesome-common-types": {
"version": "0.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz",
"integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w=="
},
"@fortawesome/fontawesome-svg-core": {
"version": "1.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz",
"integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/free-solid-svg-icons": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz",
"integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/react-fontawesome": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.12.tgz",
"integrity": "sha512-kV6HtqotM3K4YIXlTVvomuIi6QgGCvYm++ImyEx2wwgmSppZ6kbbA29ASwjAUBD63j2OFU0yoxeXpZkjrrX0qQ==",
"requires": {
"prop-types": "^15.7.2"
}
},
"@hapi/address": { "@hapi/address": {
"version": "2.1.4", "version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
...@@ -13372,6 +13343,11 @@ ...@@ -13372,6 +13343,11 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz",
"integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==" "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
}, },
"react-icons": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.1.0.tgz",
"integrity": "sha512-FCXBg1JbbR0vWALXIxmFAfozHdVIJmmwCD81Jk0EKOt7Ax4AdBNcaRkWhR0NaKy9ugJgoY3fFvo0PHpte55pXg=="
},
"react-is": { "react-is": {
"version": "16.13.1", "version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
......
...@@ -12,12 +12,10 @@ ...@@ -12,12 +12,10 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "1.2.32",
"@fortawesome/free-solid-svg-icons": "5.15.1",
"@fortawesome/react-fontawesome": "0.1.12",
"react": "^17.0.1", "react": "^17.0.1",
"react-bootstrap": "1.4.0", "react-bootstrap": "1.4.0",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-icons": "4.1.0",
"react-router-dom": "5.2.0", "react-router-dom": "5.2.0",
"react-scripts": "4.0.0", "react-scripts": "4.0.0",
"react-tabs": "3.1.2", "react-tabs": "3.1.2",
......
...@@ -118,4 +118,12 @@ ...@@ -118,4 +118,12 @@
.entity-thumbnail { .entity-thumbnail {
max-width: 230px; max-width: 230px;
max-height: 160px; max-height: 160px;
}
.icon {
margin-right: 3px;
}
.experiment-details {
margin-top: 10px;
} }
\ No newline at end of file
import React from 'react'; import React from 'react';
import { FaPlay, FaTrash, FaFileExport, FaShareAlt, FaClone } from 'react-icons/fa';
import { VscTriangleUp, VscTriangleDown } from 'react-icons/vsc';
import { GoFileSubmodule } from 'react-icons/go';
import timeDDHHMMSS from '../../utility/time-filter.js'; import timeDDHHMMSS from '../../utility/time-filter.js';
import ExperimentStorageService from '../../services/experiments/storage/experiment-storage-service.js'; import ExperimentStorageService from '../../services/experiments/storage/experiment-storage-service.js';
import ExperimentExecutionService from '../../services/experiments/execution/experiment-execution-service.js'; import ExperimentExecutionService from '../../services/experiments/execution/experiment-execution-service.js';
...@@ -139,7 +143,7 @@ export default class ExperimentListElement extends React.Component { ...@@ -139,7 +143,7 @@ export default class ExperimentListElement extends React.Component {
</div> </div>
{this.state.selected && {this.state.selected &&
<div style={{ position: 'relative' }} > <div className='experiment-details' >
<i> <i>
Timeout: Timeout:
{timeDDHHMMSS(exp.configuration.timeout)} {timeDDHHMMSS(exp.configuration.timeout)}
...@@ -172,7 +176,7 @@ export default class ExperimentListElement extends React.Component { ...@@ -172,7 +176,7 @@ export default class ExperimentListElement extends React.Component {
disabled={this.isLaunchDisabled()} disabled={this.isLaunchDisabled()}
className='btn btn-default' className='btn btn-default'
title={this.launchButtonTitle} > title={this.launchButtonTitle} >
<i className='fa fa-plus'></i> Launch <FaPlay className='icon' />Launch
</button> </button>
: null} : null}
...@@ -180,35 +184,38 @@ export default class ExperimentListElement extends React.Component { ...@@ -180,35 +184,38 @@ export default class ExperimentListElement extends React.Component {
this.props.availableServers.length > 0 && this.props.availableServers.length > 0 &&
exp.configuration.experimentFile && exp.configuration.bibiConfSrc ? exp.configuration.experimentFile && exp.configuration.bibiConfSrc ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fa fa-plus'></i> Launch in Single Process Mode <FaPlay className='icon' />Launch in Single Process Mode
</button> </button>
: null} : null}
{this.canLaunchExperiment && this.props.availableServers.length > 1 && {this.canLaunchExperiment && this.props.availableServers.length > 1 &&
exp.configuration.experimentFile && exp.configuration.bibiConfSrc ? exp.configuration.experimentFile && exp.configuration.bibiConfSrc ?
<button className='btn btn-default' > <button className='btn btn-default' >
<i className='fa fa-layer-group'></i> Launch Multiple <FaPlay className='icon' />Launch Multiple
</button> </button>
: null} : null}
{/* isPrivateExperiment */} {/* isPrivateExperiment */}
{this.canLaunchExperiment ? {this.canLaunchExperiment ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fa fa-times'></i> Delete <FaTrash className='icon' />Delete
</button> </button>
: null} : null}
{/* Records button */} {/* Records button */}
{this.canLaunchExperiment ? {this.canLaunchExperiment ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fa fa-sign-in'></i> Recordings » {this.state.showRecordings ?
<VscTriangleUp className='icon' /> : <VscTriangleDown className='icon' />
}
Recordings
</button> </button>
: null} : null}
{/* Export button */} {/* Export button */}
{this.canLaunchExperiment ? {this.canLaunchExperiment ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fa fa-file-export'></i> Export <FaFileExport className='icon' />Export
</button> </button>
: null} : null}
...@@ -218,7 +225,10 @@ export default class ExperimentListElement extends React.Component { ...@@ -218,7 +225,10 @@ export default class ExperimentListElement extends React.Component {
onClick={() => { onClick={() => {
this.setState({ showSimDetails: !this.state.showSimDetails }); this.setState({ showSimDetails: !this.state.showSimDetails });
}}> }}>
<i className='fa fa-sign-in'></i> Simulations » {this.state.showSimDetails ?
<VscTriangleUp className='icon' /> : <VscTriangleDown className='icon' />
}
Simulations
</button> </button>
: null} : null}
...@@ -226,21 +236,21 @@ export default class ExperimentListElement extends React.Component { ...@@ -226,21 +236,21 @@ export default class ExperimentListElement extends React.Component {
{config.canCloneExperiments && (!exp.configuration.privateStorage || {config.canCloneExperiments && (!exp.configuration.privateStorage ||
(exp.configuration.experimentFile && exp.configuration.bibiConfSrc)) ? (exp.configuration.experimentFile && exp.configuration.bibiConfSrc)) ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fa fa-pencil-alt'></i> Clone <FaClone className='icon' />Clone
</button> </button>
: null} : null}
{/* Files button */} {/* Files button */}
{this.canLaunchExperiment ? {this.canLaunchExperiment ?
<button className='btn btn-default' > <button className='btn btn-default' >
<i className='fa fa-list-alt'></i> Files <GoFileSubmodule className='icon' />Files
</button> </button>
: null} : null}
{/* Shared button */} {/* Shared button */}
{this.canLaunchExperiment ? {this.canLaunchExperiment ?
<button className='btn btn-default'> <button className='btn btn-default'>
<i className='fas fa-share-alt'></i> Share <FaShareAlt className='icon' />Share
</button> </button>
: null} : null}
</div> </div>
......
.simulations-details-wrapper { .simulations-details-wrapper {
width: 640px; width: 90%;
text-align: center;
align-items: center;
align-content: center;
} }
.table-header { .table-header {
...@@ -11,11 +14,15 @@ ...@@ -11,11 +14,15 @@
.table-row { .table-row {
display: grid; display: grid;
gap: 10px; gap: 10px;
grid-template-columns: repeat(5, 120px); grid-template-columns: repeat(4, 120px) auto;
padding-top: 10px; padding-top: 10px;
} }
.table-column-last { .table-column-last {
grid-area: 1 / -2 / 2 / -1; grid-area: 1 / -2 / 2 / -1;
}
.icon {
margin-right: 3px;
} }
\ No newline at end of file
import React from 'react'; import React from 'react';
import { FaStop, FaStopCircle } from 'react-icons/fa';
import { ImEnter } from 'react-icons/im';
import timeDDHHMMSS from '../../utility/time-filter.js'; import timeDDHHMMSS from '../../utility/time-filter.js';
import { EXPERIMENT_STATE } from '../../services/experiments/experiment-constants.js'; import { EXPERIMENT_STATE } from '../../services/experiments/experiment-constants.js';
...@@ -78,7 +80,7 @@ export default class SimulationDetails extends React.Component { ...@@ -78,7 +80,7 @@ export default class SimulationDetails extends React.Component {
simulation.stopping || joinExperiment(simulation, exp);"*/ simulation.stopping || joinExperiment(simulation, exp);"*/
type="button" className="btn btn-default" type="button" className="btn btn-default"
disabled={this.isJoinDisabled(simulation)}> disabled={this.isJoinDisabled(simulation)}>
Join » <ImEnter className='icon' />Join
</button> </button>
{/* Stop button enabled provided simulation state is consistent */} {/* Stop button enabled provided simulation state is consistent */}
<button /*analytics-on analytics-event="Stop" analytics-category="Experiment"*/ <button /*analytics-on analytics-event="Stop" analytics-category="Experiment"*/
...@@ -86,7 +88,7 @@ export default class SimulationDetails extends React.Component { ...@@ -86,7 +88,7 @@ export default class SimulationDetails extends React.Component {
type="button" className="btn btn-default" type="button" className="btn btn-default"
disabled={this.isStopDisabled(simulation)} disabled={this.isStopDisabled(simulation)}
title={this.state.titleButtonStop}> title={this.state.titleButtonStop}>
<i className="fa fa-spinner fa-spin" ng-if="simulation.stopping"></i> Stop <FaStop className='icon' />Stop
</button> </button>
</div> </div>
</div> </div>
...@@ -95,7 +97,9 @@ export default class SimulationDetails extends React.Component { ...@@ -95,7 +97,9 @@ export default class SimulationDetails extends React.Component {
} }
<div className='table-row'> <div className='table-row'>
<button className='table-column-last'>Stop All</button> <button className='table-column-last'>
<FaStopCircle className='icon' />Stop All
</button>
</div> </div>
</div > </div >
); );
......
import React from 'react'; import React from 'react';
import Dropdown from 'react-bootstrap/Dropdown'; import Dropdown from 'react-bootstrap/Dropdown';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { FaUserCircle, FaSignOutAlt } from 'react-icons/fa';
import { faUserCircle, faSignOutAlt } from '@fortawesome/free-solid-svg-icons';
import NrpUserService from '../../services/proxy/nrp-user-service.js'; import NrpUserService from '../../services/proxy/nrp-user-service.js';
import AuthenticationService from '../../services/authentication-service.js'; import AuthenticationService from '../../services/authentication-service.js';
...@@ -45,7 +44,7 @@ export default class UserMenu extends React.Component { ...@@ -45,7 +44,7 @@ export default class UserMenu extends React.Component {
variant='success' variant='success'
id='dropdown-basic' id='dropdown-basic'
> >
<FontAwesomeIcon icon={faUserCircle} className='user-icon' /> <FaUserCircle className='user-icon' />
<div className='user-name'> <div className='user-name'>
{this.state.user ? this.state.user.displayName : 'pending ...'} {this.state.user ? this.state.user.displayName : 'pending ...'}
</div> </div>
...@@ -56,7 +55,7 @@ export default class UserMenu extends React.Component { ...@@ -56,7 +55,7 @@ export default class UserMenu extends React.Component {
className='dropdown-item' className='dropdown-item'
onClick={this.onClickLogout} onClick={this.onClickLogout}
> >
<FontAwesomeIcon icon={faSignOutAlt} className='user-icon' /> <FaSignOutAlt className='user-icon' />
Logout Logout
</Dropdown.Item> </Dropdown.Item>
</Dropdown.Menu> </Dropdown.Menu>
......
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