mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-22 01:16:07 +02:00
feat(archive): archive view can be sorted as feature view
This commit is contained in:
parent
b3734cde61
commit
e7d70abb0c
@ -2,8 +2,8 @@ import React from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Link } from 'react-router';
|
import { Link } from 'react-router';
|
||||||
import Feature from './../feature/feature-list-item-component';
|
import Feature from './../feature/feature-list-item-component';
|
||||||
import { Icon, Card, List, ListItem, Chip } from 'react-mdl';
|
import { CardActions, Menu, MenuItem, Icon, Card, List, Chip } from 'react-mdl';
|
||||||
import { styles as commonStyles } from '../common';
|
import { MenuItemWithIcon, DropdownButton, styles as commonStyles } from '../common';
|
||||||
import styles from './archive.scss';
|
import styles from './archive.scss';
|
||||||
|
|
||||||
class ArchiveList extends React.PureComponent {
|
class ArchiveList extends React.PureComponent {
|
||||||
@ -20,6 +20,12 @@ class ArchiveList extends React.PureComponent {
|
|||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
this.props.fetchArchive();
|
this.props.fetchArchive();
|
||||||
}
|
}
|
||||||
|
setSort(v) {
|
||||||
|
this.props.updateSetting('sort', typeof v === 'string' ? v.trim() : '');
|
||||||
|
}
|
||||||
|
toggleMetrics() {
|
||||||
|
this.props.updateSetting('showLastHour', !this.props.settings.showLastHour);
|
||||||
|
}
|
||||||
renderStrategyDetail(feature) {
|
renderStrategyDetail(feature) {
|
||||||
let strategiesList = (
|
let strategiesList = (
|
||||||
<span>
|
<span>
|
||||||
@ -68,30 +74,59 @@ class ArchiveList extends React.PureComponent {
|
|||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<Card shadow={0} className={commonStyles.fullwidth}>
|
<Card shadow={0} className={commonStyles.fullwidth}>
|
||||||
|
<CardActions>
|
||||||
|
<DropdownButton id="metric" label={`Last ${settings.showLastHour ? 'hour' : 'minute'}`} />
|
||||||
|
<Menu target="metric" onClick={() => this.toggleMetrics()} style={{ width: '168px' }}>
|
||||||
|
<MenuItemWithIcon
|
||||||
|
icon="hourglass_empty"
|
||||||
|
disabled={!settings.showLastHour}
|
||||||
|
data-target="minute"
|
||||||
|
label="Last minute"
|
||||||
|
/>
|
||||||
|
<MenuItemWithIcon
|
||||||
|
icon="hourglass_full"
|
||||||
|
disabled={settings.showLastHour}
|
||||||
|
data-target="hour"
|
||||||
|
label="Last hour"
|
||||||
|
/>
|
||||||
|
</Menu>
|
||||||
|
<DropdownButton id="sorting" label={`By ${settings.sort}`} />
|
||||||
|
<Menu
|
||||||
|
target="sorting"
|
||||||
|
onClick={e => this.setSort(e.target.getAttribute('data-target'))}
|
||||||
|
style={{ width: '168px' }}
|
||||||
|
>
|
||||||
|
<MenuItem disabled={settings.sort === 'name'} data-target="name">
|
||||||
|
Name
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem disabled={settings.sort === 'enabled'} data-target="enabled">
|
||||||
|
Enabled
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem disabled={settings.sort === 'created'} data-target="created">
|
||||||
|
Created
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem disabled={settings.sort === 'strategies'} data-target="strategies">
|
||||||
|
Strategies
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem disabled={settings.sort === 'metrics'} data-target="metrics">
|
||||||
|
Metrics
|
||||||
|
</MenuItem>
|
||||||
|
</Menu>
|
||||||
|
</CardActions>
|
||||||
|
<hr />
|
||||||
{archive && archive.length > 0 ? (
|
{archive && archive.length > 0 ? (
|
||||||
<div>
|
<List>
|
||||||
<div style={{ position: 'relative' }}>
|
{archive.map((feature, i) => (
|
||||||
<List>
|
<Feature
|
||||||
<ListItem className={styles.archiveList}>
|
key={i}
|
||||||
<span className={styles.listItemToggle}>Toggle name</span>
|
settings={settings}
|
||||||
<span className={styles.listItemRevive}>Revive</span>
|
metricsLastHour={featureMetrics.lastHour[feature.name]}
|
||||||
</ListItem>
|
metricsLastMinute={featureMetrics.lastMinute[feature.name]}
|
||||||
<hr />
|
feature={feature}
|
||||||
<List>
|
revive={revive}
|
||||||
{archive.map((feature, i) => (
|
/>
|
||||||
<Feature
|
))}
|
||||||
key={i}
|
</List>
|
||||||
settings={settings}
|
|
||||||
metricsLastHour={featureMetrics.lastHour[feature.name]}
|
|
||||||
metricsLastMinute={featureMetrics.lastMinute[feature.name]}
|
|
||||||
feature={feature}
|
|
||||||
revive={revive}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</List>
|
|
||||||
</List>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
) : (
|
) : (
|
||||||
<div className={commonStyles.emptyState}>
|
<div className={commonStyles.emptyState}>
|
||||||
<Icon name="archive" className="mdl-color-text--grey-300" style={{ fontSize: '56px' }} />
|
<Icon name="archive" className="mdl-color-text--grey-300" style={{ fontSize: '56px' }} />
|
||||||
|
@ -46,7 +46,7 @@ class StrategyConfigure extends React.Component {
|
|||||||
/* eslint-enable */
|
/* eslint-enable */
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
strategy: PropTypes.object.isRequired,
|
strategy: PropTypes.object.isRequired,
|
||||||
strategyDefinition: PropTypes.object.isRequired,
|
strategyDefinition: PropTypes.object,
|
||||||
updateStrategy: PropTypes.func,
|
updateStrategy: PropTypes.func,
|
||||||
removeStrategy: PropTypes.func,
|
removeStrategy: PropTypes.func,
|
||||||
moveStrategy: PropTypes.func,
|
moveStrategy: PropTypes.func,
|
||||||
|
Loading…
Reference in New Issue
Block a user