Skip to content

Commit

Permalink
WIP: Add modal warning for removal of default workflow.
Browse files Browse the repository at this point in the history
  • Loading branch information
jelliotartz committed Oct 17, 2017
1 parent ab9a3c2 commit d2f9a3e
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
17 changes: 17 additions & 0 deletions app/components/workflow-default-dialog.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import React from 'react';

const WorkflowDefaultDialog = ({ onSuccess }) => {

return (
<div>
<div>
You are about to make the default workflow inactive,
which will remove the 'default' setting from this workflow.
Go to project builder => workflows to set a default workflow.
</div>
<button type="submit" onSubmit={onSuccess}>ok</button>
</div>
)
}

export default WorkflowDefaultDialog;
41 changes: 39 additions & 2 deletions app/pages/admin/project-status.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ import ExperimentalFeatures from './project-status/experimental-features';
import Toggle from './project-status/toggle';
import RedirectToggle from './project-status/redirect-toggle';

import WorkflowDefaultDialog from '../../components/workflow-default-dialog'
import Dialog from 'modal-form/dialog';

class ProjectStatus extends Component {
constructor(props) {
super(props);
Expand All @@ -20,12 +23,14 @@ class ProjectStatus extends Component {
this.renderError = this.renderError.bind(this);
this.renderWorkflows = this.renderWorkflows.bind(this);
this.handleToggle = this.handleToggle.bind(this);
this.handleRemoveDefault = this.handleRemoveDefault.bind(this);

this.state = {
project: null,
error: null,
usedWorkflowLevels: [],
workflows: []
workflows: [],
workflowSetting: {}
};
}

Expand Down Expand Up @@ -75,19 +80,48 @@ class ProjectStatus extends Component {

handleToggle(event, workflow) {
this.setState({ error: null });
const checked = event.target.checked;
let checked = event.target.checked;

const defaultWorkflowId = this.state.project.configuration.default_workflow

if (defaultWorkflowId === workflow.id && workflow.active) {
Dialog.alert(
<WorkflowDefaultDialog closeButton={true} required/>
).then(() => {
this.handleRemoveDefault()
})
.catch((error) => {
console.error(error)
})
}

return workflow.update({ 'active': checked }).save()
.then(() => this.getWorkflows())
.catch(error => this.setState({ error }))
}

handleRemoveDefault() {
return this.state.project.update({ 'configuration.default_workflow': undefined }).save()
.then(() => this.getProject())
.catch(error => this.setState({ error }))
}

renderError() {
if (this.state.error) {
return <div>{this.state.error}</div>;
}
}

renderDefaultWorkflowAsterisk(workflow) {
const defaultWorkflowId = this.state.project.configuration.default_workflow

if (defaultWorkflowId === workflow.id) {
return (
' * '
)
}
}

renderWorkflows() {
if (this.state.workflows.length === 0) {
return <div>No workflows found</div>;
Expand All @@ -98,6 +132,7 @@ class ProjectStatus extends Component {
{this.state.workflows.map((workflow) => {
return (
<li key={workflow.id} className="section-list__item">
{this.renderDefaultWorkflowAsterisk(workflow)}
<WorkflowToggle
workflow={workflow}
name="active"
Expand Down Expand Up @@ -164,6 +199,8 @@ class ProjectStatus extends Component {
<div className="project-status__section">
<h4>Workflow Settings</h4>
<small>The workflow level dropdown is for the workflow assignment experimental feature.</small>
<br />
<small>An asterisk (*) denotes a default workflow.</small>
{this.renderError()}
{this.renderWorkflows()}
</div>
Expand Down

0 comments on commit d2f9a3e

Please sign in to comment.