feat(ui) - issues - widget

This commit is contained in:
Shekar Siri 2022-06-13 17:39:27 +02:00
parent bea34112c9
commit 06855c41f4
6 changed files with 0 additions and 154 deletions

View file

@ -1,20 +0,0 @@
import { SideMenuitem } from "UI";
import Divider from 'Components/Errors/ui/Divider';
function SideMenuDividedItem({ className, noTopDivider = false, noBottomDivider = false, ...props }) {
return (
<div className={className}>
{ !noTopDivider && <Divider /> }
<SideMenuitem
className="my-3"
{ ...props }
/>
{ !noBottomDivider && <Divider /> }
</div>
);
}
SideMenuDividedItem.displayName = "SideMenuDividedItem";
export default SideMenuDividedItem;

View file

@ -1,13 +0,0 @@
import cn from 'classnames';
import stl from './sideMenuHeader.module.css';
function SideMenuHeader({ text, className }) {
return (
<div className={ cn(className, stl.label, "uppercase color-gray") }>
{ text }
</div>
)
}
SideMenuHeader.displayName = "SideMenuHeader";
export default SideMenuHeader;

View file

@ -1,45 +0,0 @@
import { SideMenuitem } from 'UI';
import SideMenuHeader from './SideMenuHeader';
import { setShowAlerts } from 'Duck/dashboard';
import stl from './sideMenuSection.module.css';
import { connect } from 'react-redux';
import { NavLink } from 'react-router-dom';
import { withSiteId } from 'App/routes';
import CustomMetrics from 'Shared/CustomMetrics';
function SideMenuSection({ title, items, onItemClick, setShowAlerts, siteId, activeSection }) {
return (
<>
<SideMenuHeader className="mb-4" text={ title }/>
{ items.filter(i => i.section === 'metrics').map(item =>
<SideMenuitem
key={ item.key }
active={ item.active }
title={ item.label }
iconName={ item.icon }
onClick={() => onItemClick(item)}
/>
)}
<div className={stl.divider} />
<div className="my-3">
<SideMenuitem
id="menu-manage-alerts"
title="Manage Alerts"
iconName="bell-plus"
onClick={() => setShowAlerts(true)}
/>
</div>
<div className={stl.divider} />
<div className="my-3">
<CustomMetrics />
</div>
</>
);
}
SideMenuSection.displayName = "SideMenuSection";
export default connect(state => ({
siteId: state.getIn([ 'site', 'siteId' ])
}), { setShowAlerts })(SideMenuSection);

View file

@ -1,4 +0,0 @@
.label {
letter-spacing: 0.2em;
color: gray;
}

View file

@ -1,5 +0,0 @@
.divider {
height: 1px;
width: 100%;
background-color: $gray-light;
}

View file

@ -1,67 +0,0 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { fetchList } from 'Duck/customMetrics';
import CustomMetricWidget from './CustomMetricWidget';
import AlertFormModal from 'App/components/Alerts/AlertFormModal';
import { init as initAlert } from 'Duck/alerts';
import LazyLoad from 'react-lazyload';
import CustomMetrics from 'App/components/shared/CustomMetrics';
interface Props {
fetchList: Function;
list: any;
onClickEdit: (e) => void;
initAlert: Function;
}
function CustomMetricsWidgets(props: Props) {
const { list } = props;
const [activeMetricId, setActiveMetricId] = useState(null);
const activeList = list.filter(item => item.active);
useEffect(() => {
props.fetchList()
}, [])
return (
<>
<div className="gap-4 grid grid-cols-2">
{activeList.map((item: any) => (
<LazyLoad>
<CustomMetricWidget
key={item.metricId}
metric={item}
onClickEdit={props.onClickEdit}
onAlertClick={(e) => {
setActiveMetricId(item.metricId)
props.initAlert({ query: { left: item.series.first().seriesId }})
}}
/>
</LazyLoad>
))}
</div>
{list.size === 0 && (
<div className="flex items-center py-2">
<div className="mr-2 color-gray-medium">Be proactive by monitoring the metrics you care about the most.</div>
<CustomMetrics />
</div>
)}
{list.size > 0 && activeList && activeList.size === 0 && (
<div className="flex items-center py-2">
<div className="mr-2 color-gray-medium">It's blank here, add a metric to this section.</div>
</div>
)}
<AlertFormModal
showModal={!!activeMetricId}
metricId={activeMetricId}
onClose={() => setActiveMetricId(null)}
/>
</>
);
}
export default connect(state => ({
list: state.getIn(['customMetrics', 'list']),
}), { fetchList, initAlert })(CustomMetricsWidgets);