diff --git a/src/scenario/scenario-users-table.js b/src/scenario/scenario-users-table.js
index c93b356..26eb06f 100644
--- a/src/scenario/scenario-users-table.js
+++ b/src/scenario/scenario-users-table.js
@@ -16,11 +16,11 @@
******************************************************************************/
import React, {Component} from "react";
-import {Button, Form, InputGroup} from "react-bootstrap";
+import { Form, InputGroup} from "react-bootstrap";
import {Redirect} from "react-router-dom";
import Table from "../common/table";
import TableColumn from "../common/table-column";
-import Icon from "../common/icon";
+import IconButton from "../common/icon-button";
import DeleteDialog from "../common/dialogs/delete-dialog";
import AppDispatcher from "../common/app-dispatcher";
@@ -82,15 +82,6 @@ class ScenarioUsersTable extends Component {
return (
);
}
- const altButtonStyle = {
- marginLeft: '10px',
- }
-
- const iconStyle = {
- height: '30px',
- width: '30px'
- }
-
return (
{/*Scenario Users table*/}
@@ -124,6 +115,7 @@ class ScenarioUsersTable extends Component {
deleteUserName: this.props.scenario.users[index].username,
modalUserIndex: index
})}
+ locked={this.props.locked}
/>
@@ -141,13 +133,14 @@ class ScenarioUsersTable extends Component {
/>
-
+ this.addUser()}
+ icon='plus'
+ disabled={this.props.locked}
+ hidetooltip={this.props.locked}
+ />
diff --git a/src/scenario/scenario.js b/src/scenario/scenario.js
index 1e1033c..ac618d7 100644
--- a/src/scenario/scenario.js
+++ b/src/scenario/scenario.js
@@ -20,6 +20,7 @@ import { Container } from 'flux/utils';
import AppDispatcher from '../common/app-dispatcher';
import IconButton from '../common/icon-button';
+import IconToggleButton from '../common/icon-toggle-button';
import ScenarioStore from './scenario-store';
import ICStore from '../ic/ic-store';
@@ -70,26 +71,24 @@ class Scenario extends React.Component {
}
componentDidMount() {
-
- let token = localStorage.getItem("token")
let scenarioID = parseInt(this.props.match.params.scenario, 10)
//load selected scenario
AppDispatcher.dispatch({
type: 'scenarios/start-load',
data: scenarioID,
- token: token
+ token: this.state.sessionToken
});
AppDispatcher.dispatch({
type: 'scenarios/start-load-users',
data: scenarioID,
- token: token
+ token: this.state.sessionToken
});
// load ICs to enable that component configs and dashboards work with them
AppDispatcher.dispatch({
type: 'ics/start-load',
- token: token
+ token: this.state.sessionToken
});
}
@@ -112,11 +111,35 @@ class Scenario extends React.Component {
this.setState({ filesEditModal: false });
}
+ /* ##############################################
+ * Change locked state of scenario
+ ############################################## */
+
+ onChangeLock() {
+ let data = {};
+ data.id = this.state.scenario.id;
+ data.isLocked = !this.state.scenario.isLocked;
+
+ AppDispatcher.dispatch({
+ type: 'scenarios/start-edit',
+ data,
+ token: this.state.sessionToken
+ });
+ }
+
/* ##############################################
* Render method
############################################## */
render() {
+ const buttonStyle = {
+ marginLeft: '10px',
+ }
+
+ const iconStyle = {
+ height: '30px',
+ width: '30px'
+ }
const tableHeadingStyle = {
paddingTop: '30px'
@@ -126,16 +149,36 @@ class Scenario extends React.Component {
return
Loading Scenario...
;
}
+ let tooltip = this.state.scenario.isLocked ? "View files of scenario" : "Add, edit or delete files of scenario";
+
return
-
{this.state.scenario.name}
+
+ {this.state.scenario.name}
+
+ this.onChangeLock()}
+ checked={this.state.scenario.isLocked}
+ checkedIcon='lock'
+ uncheckedIcon='lock-open'
+ tooltipChecked='Scenario is locked, cannot be edited'
+ tooltipUnchecked='Scenario is unlocked, can be edited'
+ disabled={this.state.currentUser.role !== "Admin"}
+ buttonStyle={buttonStyle}
+ iconStyle={iconStyle}
+ />
+
+
diff --git a/src/scenario/scenarios.js b/src/scenario/scenarios.js
index 9d81a74..89b52d9 100644
--- a/src/scenario/scenarios.js
+++ b/src/scenario/scenarios.js
@@ -73,7 +73,7 @@ class Scenarios extends Component {
}
closeNewModal(data) {
- if(data) {
+ if (data) {
AppDispatcher.dispatch({
type: 'scenarios/start-add',
data: data,
@@ -218,7 +218,7 @@ class Scenarios extends Component {
jsonObj["configs"] = this.getConfigs(scenario.id);
jsonObj["dashboards"] = this.getDashboards(scenario.id);
- if(jsonObj) {
+ if (jsonObj) {
AppDispatcher.dispatch({
type: 'scenarios/start-add',
data: jsonObj,
@@ -227,68 +227,99 @@ class Scenarios extends Component {
}
}
- modifyRunningColumn(running){
- return
+ isLocked(index) {
+ return this.state.scenarios[index].isLocked;
+ }
+
+ onLock(index) {
+ let data = {};
+ data.id = this.state.scenarios[index].id;
+ data.isLocked = !this.state.scenarios[index].isLocked;
+
+ AppDispatcher.dispatch({
+ type: 'scenarios/start-edit',
+ data,
+ token: this.state.sessionToken
+ });
}
render() {
+ const buttonStyle = {
+ marginLeft: '10px',
+ }
+
+ const iconStyle = {
+ height: '30px',
+ width: '30px'
+ }
+
return
-
Scenarios
+ Scenarios
- this.setState({ newModal: true })}
- icon='plus'
- />
- this.setState({ importModal: true })}
- icon='upload'
- />
-
-
-
-
- {this.state.currentUser.role === "Admin" ?
-
- : <>>
- }
- this.setState({ newModal: true })}
+ icon='plus'
+ buttonStyle={buttonStyle}
+ iconStyle={iconStyle}
/>
- this.modifyRunningColumn(running)}
+ this.setState({ importModal: true })}
+ icon='upload'
+ buttonStyle={buttonStyle}
+ iconStyle={iconStyle}
/>
+
+
+
+
+ {this.state.currentUser.role === "Admin" ?
this.setState({ editModal: true, modalScenario: this.state.scenarios[index] })}
- onDelete={index => this.setState({ deleteModal: true, modalScenario: this.state.scenarios[index] })}
- onExport={index => this.exportScenario(index)}
- onDuplicate={index => this.duplicateScenario(index)}
+ title='ID'
+ dataKey='id'
/>
-
+ : <>>
+ }
+
+ {this.state.currentUser.role === "Admin" ?
+ this.onLock(index)}
+ isLocked={index => this.isLocked(index)}
+ />
+ : <>>
+ }
+ this.setState({ editModal: true, modalScenario: this.state.scenarios[index] })}
+ onDelete={index => this.setState({ deleteModal: true, modalScenario: this.state.scenarios[index] })}
+ onExport={index => this.exportScenario(index)}
+ onDuplicate={index => this.duplicateScenario(index)}
+ isLocked={index => this.isLocked(index)}
+ />
+
-
this.closeNewModal(data)} />
- this.closeEditModal(data)} scenario={this.state.modalScenario} />
- this.closeImportModal(data)} nodes={this.state.nodes} />
+ this.closeNewModal(data)} />
+ this.closeEditModal(data)} scenario={this.state.modalScenario} />
+ this.closeImportModal(data)} nodes={this.state.nodes} />
- this.closeDeleteModal(e)} />
- ;
+
this.closeDeleteModal(e)} />
+