mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat(archive): make read-only view for feature item
This commit is contained in:
		
							parent
							
								
									a88f0da822
								
							
						
					
					
						commit
						b3734cde61
					
				| @ -45,7 +45,7 @@ const prepare = (methods, dispatch) => { | ||||
|     methods.onCancel = evt => { | ||||
|         evt.preventDefault(); | ||||
|         methods.clear(); | ||||
|         window.history.back(); | ||||
|         hashHistory.push(`/features`); | ||||
|     }; | ||||
| 
 | ||||
|     methods.addStrategy = v => { | ||||
|  | ||||
| @ -0,0 +1,42 @@ | ||||
| import React, { Component } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import StrategiesSection from './strategies-section-container'; | ||||
| import { Button, Icon } from 'react-mdl'; | ||||
| 
 | ||||
| class ViewFeatureComponent extends Component { | ||||
|     // static displayName = `UpdateFeatureComponent-{getDisplayName(Component)}`; | ||||
|     componentWillMount() { | ||||
|         // TODO unwind this stuff | ||||
|         if (this.props.initCallRequired === true) { | ||||
|             this.props.init(this.props.input); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     render() { | ||||
|         const { input, onCancel } = this.props; | ||||
| 
 | ||||
|         const { | ||||
|             name, // eslint-disable-line | ||||
|         } = input; | ||||
|         const configuredStrategies = input.strategies || []; | ||||
| 
 | ||||
|         return ( | ||||
|             <section style={{ padding: '16px' }}> | ||||
|                 <StrategiesSection configuredStrategies={configuredStrategies} /> | ||||
|                 <br /> | ||||
|                 <Button type="cancel" ripple raised onClick={onCancel} style={{ float: 'right' }}> | ||||
|                     <Icon name="cancel" />    Cancel | ||||
|                 </Button> | ||||
|             </section> | ||||
|         ); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| ViewFeatureComponent.propTypes = { | ||||
|     input: PropTypes.object, | ||||
|     onCancel: PropTypes.func.isRequired, | ||||
|     initCallRequired: PropTypes.bool, | ||||
|     init: PropTypes.func, | ||||
| }; | ||||
| 
 | ||||
| export default ViewFeatureComponent; | ||||
| @ -0,0 +1,40 @@ | ||||
| import { connect } from 'react-redux'; | ||||
| import { createMapper, createActions } from '../../input-helpers'; | ||||
| import ViewFeatureToggleComponent from './form-view-feature-component'; | ||||
| import { hashHistory } from 'react-router'; | ||||
| 
 | ||||
| const ID = 'view-feature-toggle'; | ||||
| function getId(props) { | ||||
|     return [ID, props.featureToggle.name]; | ||||
| } | ||||
| // TODO: need to scope to the active featureToggle | ||||
| // best is to emulate the "input-storage"? | ||||
| const mapStateToProps = createMapper({ | ||||
|     id: getId, | ||||
|     getDefault: (state, ownProps) => { | ||||
|         ownProps.featureToggle.strategies.forEach((strategy, index) => { | ||||
|             strategy.id = Math.round(Math.random() * 1000000 * (1 + index)); | ||||
|         }); | ||||
|         return ownProps.featureToggle; | ||||
|     }, | ||||
|     prepare: props => { | ||||
|         props.editmode = true; | ||||
|         return props; | ||||
|     }, | ||||
| }); | ||||
| 
 | ||||
| const prepare = methods => { | ||||
|     methods.onCancel = evt => { | ||||
|         evt.preventDefault(); | ||||
|         methods.clear(); | ||||
|         hashHistory.push(`/archive`); | ||||
|     }; | ||||
|     return methods; | ||||
| }; | ||||
| 
 | ||||
| const actions = createActions({ | ||||
|     id: getId, | ||||
|     prepare, | ||||
| }); | ||||
| 
 | ||||
| export default connect(mapStateToProps, actions)(ViewFeatureToggleComponent); | ||||
| @ -5,7 +5,7 @@ import { Menu, MenuItem, IconButton } from 'react-mdl'; | ||||
| class AddStrategy extends React.Component { | ||||
|     static propTypes = { | ||||
|         strategies: PropTypes.array.isRequired, | ||||
|         addStrategy: PropTypes.func.isRequired, | ||||
|         addStrategy: PropTypes.func, | ||||
|         fetchStrategies: PropTypes.func.isRequired, | ||||
|     }; | ||||
| 
 | ||||
|  | ||||
| @ -9,9 +9,9 @@ class StrategiesList extends React.Component { | ||||
|     static propTypes = { | ||||
|         strategies: PropTypes.array.isRequired, | ||||
|         configuredStrategies: PropTypes.array.isRequired, | ||||
|         updateStrategy: PropTypes.func.isRequired, | ||||
|         removeStrategy: PropTypes.func.isRequired, | ||||
|         moveStrategy: PropTypes.func.isRequired, | ||||
|         updateStrategy: PropTypes.func, | ||||
|         removeStrategy: PropTypes.func, | ||||
|         moveStrategy: PropTypes.func, | ||||
|     }; | ||||
| 
 | ||||
|     render() { | ||||
| @ -27,8 +27,8 @@ class StrategiesList extends React.Component { | ||||
|                 key={strategy.id} | ||||
|                 strategy={strategy} | ||||
|                 moveStrategy={moveStrategy} | ||||
|                 removeStrategy={removeStrategy.bind(null, i)} | ||||
|                 updateStrategy={updateStrategy.bind(null, i)} | ||||
|                 removeStrategy={removeStrategy ? removeStrategy.bind(null, i) : null} | ||||
|                 updateStrategy={updateStrategy ? updateStrategy.bind(null, i) : null} | ||||
|                 strategyDefinition={strategies.find(s => s.name === strategy.name)} | ||||
|             /> | ||||
|         )); | ||||
|  | ||||
| @ -8,9 +8,9 @@ import { HeaderTitle } from '../../common'; | ||||
| class StrategiesSectionComponent extends React.Component { | ||||
|     static propTypes = { | ||||
|         strategies: PropTypes.array.isRequired, | ||||
|         addStrategy: PropTypes.func.isRequired, | ||||
|         removeStrategy: PropTypes.func.isRequired, | ||||
|         updateStrategy: PropTypes.func.isRequired, | ||||
|         addStrategy: PropTypes.func, | ||||
|         removeStrategy: PropTypes.func, | ||||
|         updateStrategy: PropTypes.func, | ||||
|         fetchStrategies: PropTypes.func.isRequired, | ||||
|     }; | ||||
| 
 | ||||
|  | ||||
| @ -47,9 +47,9 @@ class StrategyConfigure extends React.Component { | ||||
|     static propTypes = { | ||||
|         strategy: PropTypes.object.isRequired, | ||||
|         strategyDefinition: PropTypes.object.isRequired, | ||||
|         updateStrategy: PropTypes.func.isRequired, | ||||
|         removeStrategy: PropTypes.func.isRequired, | ||||
|         moveStrategy: PropTypes.func.isRequired, | ||||
|         updateStrategy: PropTypes.func, | ||||
|         removeStrategy: PropTypes.func, | ||||
|         moveStrategy: PropTypes.func, | ||||
|         isDragging: PropTypes.bool.isRequired, | ||||
|         connectDragPreview: PropTypes.func.isRequired, | ||||
|         connectDragSource: PropTypes.func.isRequired, | ||||
| @ -170,7 +170,11 @@ class StrategyConfigure extends React.Component { | ||||
|                         <Link title="View strategy" to={`/strategies/view/${name}`} className={styles.editLink}> | ||||
|                             <Icon name="link" /> | ||||
|                         </Link> | ||||
|                         <IconButton title="Remove strategy from toggle" name="delete" onClick={this.handleRemove} /> | ||||
|                         {this.props.removeStrategy ? ( | ||||
|                             <IconButton title="Remove strategy from toggle" name="delete" onClick={this.handleRemove} /> | ||||
|                         ) : ( | ||||
|                             <span /> | ||||
|                         )} | ||||
|                         {connectDragSource( | ||||
|                             <span className={styles.reorderIcon}> | ||||
|                                 <Icon name="reorder" /> | ||||
|  | ||||
| @ -6,6 +6,7 @@ import { hashHistory, Link } from 'react-router'; | ||||
| import HistoryComponent from '../history/history-list-toggle-container'; | ||||
| import MetricComponent from './metric-container'; | ||||
| import EditFeatureToggle from './form/form-update-feature-container'; | ||||
| import ViewFeatureToggle from './form/form-view-feature-container'; | ||||
| import { styles as commonStyles } from '../common'; | ||||
| 
 | ||||
| const TABS = { | ||||
| @ -49,7 +50,10 @@ export default class ViewFeatureToggleComponent extends React.Component { | ||||
|         if (TABS[activeTab] === TABS.history) { | ||||
|             return <HistoryComponent toggleName={featureToggleName} />; | ||||
|         } else if (TABS[activeTab] === TABS.strategies) { | ||||
|             return <EditFeatureToggle featureToggle={featureToggle} /> | ||||
|             if (this.isFeatureView) { | ||||
|                 return <EditFeatureToggle featureToggle={featureToggle} /> | ||||
|             } | ||||
|             return <ViewFeatureToggle featureToggle={featureToggle} /> | ||||
| 
 | ||||
|         } else { | ||||
|             return <MetricComponent featureToggle={featureToggle} />; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user