1 import React, {PropTypes, Component} from 'react';
3 import i18n from 'nfvo-utils/i18n/i18n.js';
4 import Modal from 'nfvo-components/modal/Modal.jsx';
6 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
7 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
8 import FlowRelatedView from './ImportantLogic.jsx';
9 import FlowsEditorModal from './FlowsEditorModal.js';
10 import SequenceDiagram from './SequenceDiagram.jsx';
12 class FlowsListEditorView extends Component {
15 flowList: PropTypes.array,
16 currentFlow: PropTypes.object,
17 isDisplayModal: PropTypes.bool,
18 isModalInEditMode: PropTypes.bool,
19 isCheckedOut: PropTypes.bool,
20 shouldShowWorkflowsEditor: PropTypes.bool,
22 onAddWorkflowClick: PropTypes.func,
23 onEditFlowDetailsClick: PropTypes.func,
24 onEditFlowDiagramClick: PropTypes.func,
25 onDeleteFlowClick: PropTypes.func,
26 onSequenceDiagramSaveClick: PropTypes.func,
27 onSequenceDiagramCloseClick: PropTypes.func
35 let CurrentView = null;
36 if (this.props.shouldShowWorkflowsEditor) {
37 CurrentView = this.renderWorkflowsEditor();
40 CurrentView = this.renderSequenceDiagramTool();
46 renderWorkflowsEditor() {
47 let {isDisplayModal, onAddWorkflowClick, isCheckedOut} = this.props;
48 const {localFilter} = this.state;
51 <div className='workflows license-agreement-list-editor'>
52 <FlowRelatedView display={localFilter}/>
54 plusButtonTitle={i18n('Add Workflow')}
55 onAdd={onAddWorkflowClick}
56 filterValue={localFilter}
57 onFilter={filter => this.setState({localFilter: filter})}
58 isCheckedOut={isCheckedOut}>
59 {this.filterList().map(flow => this.renderWorkflowListItem(flow, isCheckedOut))}
62 {isDisplayModal && this.renderWorkflowEditorModal()}
68 renderWorkflowEditorModal() {
69 let { isDisplayModal, isModalInEditMode} = this.props;
71 <Modal show={isDisplayModal} animation={true} className='workflows-editor-modal'>
74 {`${isModalInEditMode ? i18n('Edit Workflow') : i18n('Create New Workflow')}`}
78 <FlowsEditorModal isNewArtifact={!isModalInEditMode}/>
84 renderSequenceDiagramTool() {
85 let {onSequenceDiagramSaveClick, onSequenceDiagramCloseClick, currentFlow} = this.props;
88 onSave={sequenceDiagramModel => onSequenceDiagramSaveClick({...currentFlow, sequenceDiagramModel})}
89 onClose={onSequenceDiagramCloseClick}
90 model={currentFlow.sequenceDiagramModel}/>
95 let {flowList} = this.props;
96 let {localFilter} = this.state;
97 if (localFilter.trim()) {
98 const filter = new RegExp(escape(localFilter), 'i');
99 return flowList.filter(({name = '', description = ''}) => {
100 return escape(name).match(filter) || escape(description).match(filter);
108 renderWorkflowListItem(flow, isCheckedOut) {
109 let {uniqueId, artifactName, description} = flow;
110 let {onEditFlowDetailsClick, onEditFlowDiagramClick, onDeleteFlowClick} = this.props;
114 onSelect={() => onEditFlowDetailsClick(flow)}
115 onDelete={() => onDeleteFlowClick(flow)}
116 onEdit={() => onEditFlowDiagramClick(flow)}
117 className='list-editor-item-view'
118 isCheckedOut={isCheckedOut}>
119 <div className='list-editor-item-view-field'>
120 <div className='title'>{i18n('Name')}</div>
121 <div className='text name'>{artifactName}</div>
123 <div className='list-editor-item-view-field'>
124 <div className='title'>{i18n('Description')}</div>
125 <div className='text description'>{description}</div>
127 </ListEditorItemView>
133 export default FlowsListEditorView;