mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-31 00:16:47 +01:00
clean(archive): reuse part of list-container from feature to diplay list of archives
This commit is contained in:
parent
477768c81d
commit
10fd027eae
@ -2,73 +2,9 @@ import { connect } from 'react-redux';
|
|||||||
import FeatureListComponent from './../feature/list-component';
|
import FeatureListComponent from './../feature/list-component';
|
||||||
import { fetchArchive, revive } from './../../store/archive-actions';
|
import { fetchArchive, revive } from './../../store/archive-actions';
|
||||||
import { updateSettingForGroup } from './../../store/settings/actions';
|
import { updateSettingForGroup } from './../../store/settings/actions';
|
||||||
|
import { mapStateToPropsConfigurable } from '../feature/list-container';
|
||||||
|
|
||||||
const mapStateToProps = state => {
|
const mapStateToProps = mapStateToPropsConfigurable(false);
|
||||||
const featureMetrics = state.featureMetrics.toJS();
|
|
||||||
const settings = state.settings.toJS().feature || {};
|
|
||||||
let features = state.archive.get('list').toArray();
|
|
||||||
if (settings.filter) {
|
|
||||||
try {
|
|
||||||
const regex = new RegExp(settings.filter, 'i');
|
|
||||||
features = features.filter(
|
|
||||||
feature =>
|
|
||||||
regex.test(feature.name) ||
|
|
||||||
regex.test(feature.description) ||
|
|
||||||
feature.strategies.some(s => s && s.name && regex.test(s.name))
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
// Invalid filter regex
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!settings.sort) {
|
|
||||||
settings.sort = 'name';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.sort === 'enabled') {
|
|
||||||
features = features.sort(
|
|
||||||
(a, b) =>
|
|
||||||
// eslint-disable-next-line
|
|
||||||
a.enabled === b.enabled ? 0 : a.enabled ? -1 : 1
|
|
||||||
);
|
|
||||||
} else if (settings.sort === 'created') {
|
|
||||||
features = features.sort((a, b) => (new Date(a.createdAt) > new Date(b.createdAt) ? -1 : 1));
|
|
||||||
} else if (settings.sort === 'name') {
|
|
||||||
features = features.sort((a, b) => {
|
|
||||||
if (a.name < b.name) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (a.name > b.name) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
} else if (settings.sort === 'strategies') {
|
|
||||||
features = features.sort((a, b) => (a.strategies.length > b.strategies.length ? -1 : 1));
|
|
||||||
} else if (settings.sort === 'metrics') {
|
|
||||||
const target = settings.showLastHour ? featureMetrics.lastHour : featureMetrics.lastMinute;
|
|
||||||
|
|
||||||
features = features.sort((a, b) => {
|
|
||||||
if (!target[a.name]) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (!target[b.name]) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (target[a.name].yes > target[b.name].yes) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
features,
|
|
||||||
featureMetrics,
|
|
||||||
settings,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const mapDispatchToProps = {
|
const mapDispatchToProps = {
|
||||||
fetchArchive,
|
fetchArchive,
|
||||||
revive,
|
revive,
|
||||||
|
@ -115,6 +115,7 @@ export default class FeatureListComponent extends React.Component {
|
|||||||
metricsLastHour={featureMetrics.lastHour[feature.name]}
|
metricsLastHour={featureMetrics.lastHour[feature.name]}
|
||||||
metricsLastMinute={featureMetrics.lastMinute[feature.name]}
|
metricsLastMinute={featureMetrics.lastMinute[feature.name]}
|
||||||
feature={feature}
|
feature={feature}
|
||||||
|
toggleFeature={toggleFeature}
|
||||||
revive={revive}
|
revive={revive}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
@ -4,10 +4,10 @@ import { updateSettingForGroup } from '../../store/settings/actions';
|
|||||||
|
|
||||||
import FeatureListComponent from './list-component';
|
import FeatureListComponent from './list-component';
|
||||||
|
|
||||||
const mapStateToProps = state => {
|
export const mapStateToPropsConfigurable = isFeature => state => {
|
||||||
const featureMetrics = state.featureMetrics.toJS();
|
const featureMetrics = state.featureMetrics.toJS();
|
||||||
const settings = state.settings.toJS().feature || {};
|
const settings = state.settings.toJS().feature || {};
|
||||||
let features = state.features.toJS();
|
let features = isFeature ? state.features.toJS() : state.archive.get('list').toArray();
|
||||||
if (settings.filter) {
|
if (settings.filter) {
|
||||||
try {
|
try {
|
||||||
const regex = new RegExp(settings.filter, 'i');
|
const regex = new RegExp(settings.filter, 'i');
|
||||||
@ -69,7 +69,7 @@ const mapStateToProps = state => {
|
|||||||
settings,
|
settings,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
const mapStateToProps = mapStateToPropsConfigurable(true);
|
||||||
const mapDispatchToProps = {
|
const mapDispatchToProps = {
|
||||||
toggleFeature,
|
toggleFeature,
|
||||||
fetchFeatureToggles,
|
fetchFeatureToggles,
|
||||||
|
Loading…
Reference in New Issue
Block a user