fix(ui): fix empty metric text, fix metric min height, fix rows etc
This commit is contained in:
parent
901539f27d
commit
3136ce5a2b
68 changed files with 108 additions and 55 deletions
|
|
@ -30,6 +30,7 @@ export default class BreakdownOfLoadedResources extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ export default class CallWithErrors extends React.PureComponent {
|
|||
</div>
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ images.size === 0 }
|
||||
>
|
||||
<Table
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ export default class CallsErrors4xx extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ export default class CallsErrors5xx extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ export default class CpuLoad extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<div className="flex items-center justify-end mb-3">
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ export default class Crashes extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ function CustomMetricPieChart(props: Props) {
|
|||
}
|
||||
}
|
||||
return (
|
||||
<NoContent size="small" show={!data.values || data.values.length === 0} style={{ minHeight: '240px'}}>
|
||||
<NoContent size="small" title="No recordings found" show={!data.values || data.values.length === 0} style={{ minHeight: '240px'}}>
|
||||
<ResponsiveContainer height={ 220 } width="100%">
|
||||
<PieChart>
|
||||
<Pie
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@ function CustomMetricTable(props: Props) {
|
|||
onClick(filters);
|
||||
}
|
||||
return (
|
||||
<div className="" style={{ maxHeight: '240px'}}>
|
||||
<NoContent show={data.values && data.values.length === 0} size="small">
|
||||
<div className="" style={{ height: 240 }}>
|
||||
<NoContent show={data.values && data.values.length === 0} size="small" title="No recordings found">
|
||||
<Table
|
||||
small
|
||||
cols={ getColumns(metric) }
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ function CustomMetricWidget(props: Props) {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ export default class DomBuildingTime extends React.PureComponent {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<React.Fragment>
|
||||
|
|
@ -60,6 +61,7 @@ export default class DomBuildingTime extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.size === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 200 } width="100%">
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ export default class ErrorsByOrigin extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ export default class ErrorsByType extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ export default class ErrorsPerDomain extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.size === 0 }
|
||||
>
|
||||
<div className="w-full pt-3" style={{ height: '240px' }}>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ export default class FPS extends React.PureComponent {
|
|||
return (
|
||||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
title="No recordings found"
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export default class LastFeedbacks extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ sessions.size === 0 }
|
||||
>
|
||||
{ sessions.map(({
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ export default class MemoryConsumption extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.chart.length === 0 }
|
||||
>
|
||||
<div className="flex items-center justify-end mb-3">
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ export default class MostImpactfulErrors extends React.PureComponent {
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ errors.size === 0 }
|
||||
>
|
||||
<Table
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ function BreakdownOfLoadedResources(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
@ -46,4 +47,4 @@ function BreakdownOfLoadedResources(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default BreakdownOfLoadedResources;
|
||||
export default BreakdownOfLoadedResources;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ function CPULoad(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -54,4 +55,4 @@ function CPULoad(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default CPULoad;
|
||||
export default CPULoad;
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ function CallWithErrors(props: Props) {
|
|||
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={{ height: '240px'}}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ function CallsErrors4xx(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -46,4 +47,4 @@ function CallsErrors4xx(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default CallsErrors4xx;
|
||||
export default CallsErrors4xx;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ function CallsErrors5xx(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -46,4 +47,4 @@ function CallsErrors5xx(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default CallsErrors5xx;
|
||||
export default CallsErrors5xx;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ function Crashes(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -52,4 +53,4 @@ function Crashes(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default Crashes;
|
||||
export default Crashes;
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ function DomBuildingTime(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
<>
|
||||
|
|
@ -87,4 +88,4 @@ export default withRequest({
|
|||
requestName: "fetchOptions",
|
||||
endpoint: '/dashboard/' + toUnderscore(WIDGET_KEY) + '/search',
|
||||
method: 'GET'
|
||||
})(DomBuildingTime)
|
||||
})(DomBuildingTime)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ function ErrorsByOrigin(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -49,4 +50,4 @@ function ErrorsByOrigin(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ErrorsByOrigin;
|
||||
export default ErrorsByOrigin;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ function ErrorsByType(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -48,4 +49,4 @@ function ErrorsByType(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ErrorsByType;
|
||||
export default ErrorsByType;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ function ErrorsPerDomain(props: Props) {
|
|||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={{ height: '240px'}}
|
||||
title="No recordings found"
|
||||
>
|
||||
<div className="w-full" style={{ height: '240px' }}>
|
||||
{metric.data.chart.map((item, i) =>
|
||||
|
|
@ -34,4 +35,4 @@ function ErrorsPerDomain(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ErrorsPerDomain;
|
||||
export default ErrorsPerDomain;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ function FPS(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
<>
|
||||
|
|
@ -57,4 +58,4 @@ function FPS(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default FPS;
|
||||
export default FPS;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ function MemoryConsumption(props: Props) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<>
|
||||
<div className="flex items-center justify-end mb-3">
|
||||
|
|
@ -60,4 +61,4 @@ function MemoryConsumption(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default MemoryConsumption;
|
||||
export default MemoryConsumption;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ function ResourceLoadedVsResponseEnd(props: Props) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 246 } width="100%">
|
||||
<ComposedChart
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ function ResourceLoadedVsVisuallyComplete(props: Props) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
<ComposedChart
|
||||
|
|
@ -69,4 +70,4 @@ function ResourceLoadedVsVisuallyComplete(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ResourceLoadedVsVisuallyComplete;
|
||||
export default ResourceLoadedVsVisuallyComplete;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ function ResourceLoadingTime(props: Props) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<>
|
||||
<div className="flex items-center mb-3">
|
||||
|
|
@ -119,4 +120,4 @@ export default withRequest({
|
|||
requestName: "fetchOptions",
|
||||
endpoint: '/dashboard/' + toUnderscore(WIDGET_KEY) + '/search',
|
||||
method: 'GET'
|
||||
})(ResourceLoadingTime)
|
||||
})(ResourceLoadingTime)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ function ResponseTime(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
<>
|
||||
|
|
@ -88,4 +89,4 @@ export default withRequest({
|
|||
requestName: "fetchOptions",
|
||||
endpoint: '/dashboard/' + toUnderscore(WIDGET_KEY) + '/search',
|
||||
method: 'GET'
|
||||
})(ResponseTime)
|
||||
})(ResponseTime)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ function ResponseTimeDistribution(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
>
|
||||
|
|
@ -125,4 +126,4 @@ function ResponseTimeDistribution(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ResponseTimeDistribution;
|
||||
export default ResponseTimeDistribution;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ function SessionsAffectedByJSErrors(props: Props) {
|
|||
const { data, metric } = props;
|
||||
return (
|
||||
<NoContent
|
||||
title="No recordings found"
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={ { height: '240px' } }
|
||||
|
|
@ -44,4 +45,4 @@ function SessionsAffectedByJSErrors(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default SessionsAffectedByJSErrors;
|
||||
export default SessionsAffectedByJSErrors;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ function SessionsImpactedBySlowRequests(props: Props) {
|
|||
|
||||
return (
|
||||
<NoContent
|
||||
title="No recordings found"
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
|
|
@ -52,4 +53,4 @@ function SessionsImpactedBySlowRequests(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default SessionsImpactedBySlowRequests;
|
||||
export default SessionsImpactedBySlowRequests;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ function SessionsPerBrowser(props: Props) {
|
|||
return (
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
>
|
||||
<div className="w-full" style={{ height: '240px' }}>
|
||||
|
|
@ -38,4 +39,4 @@ function SessionsPerBrowser(props: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default SessionsPerBrowser;
|
||||
export default SessionsPerBrowser;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ function SlowestDomains(props: Props) {
|
|||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
style={{ maxHeight: '240px' }}
|
||||
title="No recordings found"
|
||||
>
|
||||
<div className="w-full" style={{ height: '240px' }}>
|
||||
{metric.data.chart.map((item, i) =>
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ function SpeedIndexByLocation(props: Props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<NoContent size="small" show={false} style={{ height: '240px' }}>
|
||||
<NoContent size="small" show={false} style={{ height: '240px' }} title="No recordings found">
|
||||
<div className="absolute right-0 mr-4 top=0 w-full flex justify-end">
|
||||
<AvgLabel text="Avg" count={Math.round(metric.data.value)} unit="ms" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ function TimeToRender(props: Props) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ metric.data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<>
|
||||
<div className="flex items-center mb-3">
|
||||
|
|
@ -88,4 +89,4 @@ export default withRequest({
|
|||
requestName: "fetchOptions",
|
||||
endpoint: '/dashboard/' + toUnderscore(WIDGET_KEY) + '/search',
|
||||
method: 'GET'
|
||||
})(TimeToRender)
|
||||
})(TimeToRender)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ export default class ResourceLoadedVsResponseEnd extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 247 } width="100%">
|
||||
<ComposedChart
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ export default class ResourceLoadedVsVisuallyComplete extends React.PureComponen
|
|||
<Loader loading={ loading } size="small">
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ data.size === 0 }
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ export default class ResourceLoadingTime extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<React.Fragment>
|
||||
<div className="flex items-center mb-3">
|
||||
|
|
@ -96,6 +97,7 @@ export default class ResourceLoadingTime extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 200 } width="100%">
|
||||
<AreaChart
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ export default class ResponseTime extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 207 } width="100%">
|
||||
<AreaChart
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ export default class ResponseTimeDistribution extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<div className="flex items-center justify-end mb-3">
|
||||
<AvgLabel text="Avg" unit="ms" className="ml-3" count={data.avg} />
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ export default class SessionsAffectedByJSErrors extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 207 } width="100%">
|
||||
<ComposedChart
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ export default class SessionsImpactedBySlowRequests extends React.PureComponent
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
<AreaChart
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ export default class SessionsPerBrowser extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<div className="w-full pt-3" style={{ height: '240px' }}>
|
||||
{data.chart.map((item, i) =>
|
||||
|
|
@ -40,4 +41,4 @@ export default class SessionsPerBrowser extends React.PureComponent {
|
|||
</Loader>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ export default class ResponseTime extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.partition && data.partition.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<div className="w-full pt-3" style={{ height: '240px' }}>
|
||||
{data.partition && data.partition.map((item, i) =>
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ export default class SlowestImages extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ images.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<Table
|
||||
cols={ cols }
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ export default class SlowestResources extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.size === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<Table cols={ cols } rows={ data } isTemplate={isTemplate} rowClass="group" compare={compare} />
|
||||
</NoContent>
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ export default class TimeToRender extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 200 } width="100%">
|
||||
<AreaChart
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ export default class TopDomains extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ data.chart.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<ResponsiveContainer height={ 240 } width="100%">
|
||||
<LineChart
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ import { Tooltip } from 'react-tippy';
|
|||
import Breadcrumb from 'Shared/Breadcrumb';
|
||||
import OutsideClickDetectingDiv from 'Shared/OutsideClickDetectingDiv';
|
||||
import AddMetricContainer from '../DashboardWidgetGrid/AddMetricContainer';
|
||||
// @ts-ignore
|
||||
import stl from './DashboardView.module.css';
|
||||
|
||||
interface IProps {
|
||||
siteId: string;
|
||||
|
|
@ -31,7 +29,6 @@ interface IProps {
|
|||
type Props = IProps & RouteComponentProps;
|
||||
|
||||
function DashboardView(props: Props) {
|
||||
const [isTooltipShown, setTooltip] = React.useState(false);
|
||||
const { siteId, dashboardId } = props;
|
||||
const { dashboardStore } = useStore();
|
||||
const { showModal } = useModal();
|
||||
|
|
@ -116,7 +113,7 @@ function DashboardView(props: Props) {
|
|||
{ label: (dashboard && dashboard.name) || '' },
|
||||
]}
|
||||
/>
|
||||
<div className="flex items-center mb-4 justify-between">
|
||||
<div className="flex items-center mb-2 justify-between">
|
||||
<div className="flex items-center" style={{ flex: 3 }}>
|
||||
<PageTitle
|
||||
title={
|
||||
|
|
@ -128,21 +125,22 @@ function DashboardView(props: Props) {
|
|||
onDoubleClick={() => onEdit(true)}
|
||||
className="mr-3 select-none border-b border-b-borderColor-transparent hover:border-dotted hover:border-gray-medium cursor-pointer"
|
||||
actionButton={
|
||||
<OutsideClickDetectingDiv onClickOutside={() => setTooltip(false)}>
|
||||
{/* @ts-ignore */}
|
||||
/* @ts-ignore */
|
||||
<Tooltip
|
||||
interactive
|
||||
useContext
|
||||
// @ts-ignore
|
||||
theme="nopadding"
|
||||
open={isTooltipShown}
|
||||
animation="none"
|
||||
hideDelay={200}
|
||||
duration={0}
|
||||
distance={20}
|
||||
html={<div style={{ padding: 0 }}><AddMetricContainer isPopup siteId={siteId} /></div>}
|
||||
>
|
||||
<Button variant="primary" onClick={() => setTooltip(true)}>
|
||||
<Button variant="primary">
|
||||
Add Metric
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</OutsideClickDetectingDiv>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -166,7 +164,7 @@ function DashboardView(props: Props) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="pb-4">
|
||||
{/* @ts-ignore */}
|
||||
<Tooltip delay={100} arrow title="Double click to rename" className='w-fit !block'>
|
||||
<h2
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ function AddMetric({ metrics, history, siteId, title, description }: IProps) {
|
|||
|
||||
</div>
|
||||
|
||||
<div className="grid h-full grid-cols-4 gap-4 px-8 items-start py-1" style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto', gridTemplateRows: 'max-content' }}>
|
||||
<div className="grid h-full grid-cols-4 gap-4 px-8 items-start py-1" style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto', gridAutoRows: 'max-content' }}>
|
||||
{metrics ? metrics.map((metric: any) => (
|
||||
<WidgetWrapper
|
||||
key={metric.metricId}
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ function AddMetricContainer({ siteId, isPopup }: any) {
|
|||
return (
|
||||
<div style={{ borderColor: 'rgb(238, 238, 238)', height: isPopup ? undefined : 300 }} className={classes}>
|
||||
<AddMetricButton
|
||||
title="+ Add custom Metric"
|
||||
title="+ Add Custom Metric"
|
||||
description="Metrics that are manually created by you or your team"
|
||||
iconName="bar-pencil"
|
||||
onClick={onAddCustomMetrics}
|
||||
|
|
|
|||
|
|
@ -84,17 +84,17 @@ function AddPredefinedMetric({ categories, history, siteId, title, description }
|
|||
<div className="text-disabled-text">{description}</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center">
|
||||
Don’t find the one you need?
|
||||
<Button variant="text-primary" className="font-medium ml-2" onClick={onCreateNew}>
|
||||
+ Create custom metric
|
||||
</Button>
|
||||
</div>
|
||||
<Button variant="text-primary" className="font-medium ml-2" onClick={onCreateNew}>
|
||||
+ Create Custom Metric
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="flex px-8 h-full" style={{ maxHeight: 'calc(100vh - 160px)' }}>
|
||||
<div style={{ flex: 3 }}>
|
||||
<div className="grid grid-cols-1 gap-4 py-1 pr-2" style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto' }}>
|
||||
<div
|
||||
className="grid grid-cols-1 gap-4 py-1 pr-2"
|
||||
style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto', gridAutoRows: 'max-content' }}
|
||||
>
|
||||
{activeCategory &&
|
||||
categories.map((category) => (
|
||||
<WidgetCategoryItem
|
||||
|
|
@ -110,7 +110,7 @@ function AddPredefinedMetric({ categories, history, siteId, title, description }
|
|||
|
||||
<div
|
||||
className="grid h-full grid-cols-4 gap-4 p-1 items-start"
|
||||
style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto', flex: 9 }}
|
||||
style={{ maxHeight: 'calc(100vh - 160px)', overflowY: 'auto', flex: 9, gridAutoRows: 'max-content' }}
|
||||
>
|
||||
{activeCategory &&
|
||||
activeCategory.widgets.map((metric: any) => (
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ function WidgetChart(props: Props) {
|
|||
}
|
||||
return (
|
||||
<Loader loading={loading} style={{ height: `${isOverviewWidget ? 100 : 240}px` }}>
|
||||
{renderChart()}
|
||||
<div style={{ minHeight: isOverviewWidget ? 100 : 240 }}>{renderChart()}</div>
|
||||
</Loader>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ export default class SideSection extends React.PureComponent {
|
|||
<h3 className="text-xl mb-2">Overview</h3>
|
||||
<Trend
|
||||
chart={ data.chart24 }
|
||||
title="Last 24 hours"
|
||||
title="Past 24 hours"
|
||||
/>
|
||||
<div className="mb-6" />
|
||||
<Trend
|
||||
|
|
@ -121,5 +121,3 @@ export default class SideSection extends React.PureComponent {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ function FunnelWidget(props: Props) {
|
|||
}, []);
|
||||
|
||||
return useObserver(() => (
|
||||
<NoContent show={!stages || stages.length === 0}>
|
||||
<NoContent show={!stages || stages.length === 0} title="No recordings found">
|
||||
<div className="w-full">
|
||||
{ !isWidget && (
|
||||
stages.map((filter: any, index: any) => (
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ function Crashes({ player }) {
|
|||
<PanelLayout.Body>
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ filtered.length === 0}
|
||||
>
|
||||
<Autoscroll>
|
||||
|
|
@ -48,4 +49,4 @@ function Crashes({ player }) {
|
|||
);
|
||||
}
|
||||
|
||||
export default observer(Crashes);
|
||||
export default observer(Crashes);
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ function Logs({ player }) {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ filtered.length === 0 }
|
||||
title="No recordings found"
|
||||
>
|
||||
<Autoscroll>
|
||||
{ filtered.map(log =>
|
||||
|
|
@ -57,4 +58,4 @@ function Logs({ player }) {
|
|||
);
|
||||
}
|
||||
|
||||
export default observer(Logs);
|
||||
export default observer(Logs);
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ export default class Exceptions extends React.PureComponent {
|
|||
<NoContent
|
||||
size="small"
|
||||
show={ filtered.length === 0}
|
||||
title="No recordings found"
|
||||
>
|
||||
<Autoscroll>
|
||||
{ filtered.map(e => (
|
||||
|
|
@ -115,4 +116,4 @@ export default class Exceptions extends React.PureComponent {
|
|||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ export default class GraphQL extends React.PureComponent {
|
|||
<BottomBlock.Content>
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ filteredList.length === 0}
|
||||
>
|
||||
<TimeTable
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ export default class GraphQL extends React.PureComponent {
|
|||
<BottomBlock.Content>
|
||||
<NoContent
|
||||
size="small"
|
||||
title="No recordings found"
|
||||
show={ filtered.length === 0}
|
||||
>
|
||||
<TimeTable
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ export default class TimeTable extends React.PureComponent<Props, State> {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<NoContent size="small" show={rows.length === 0}>
|
||||
<NoContent size="small" show={rows.length === 0} title="No recordings found">
|
||||
<div className="relative">
|
||||
<div className={stl.timePart} style={{ left: `${columnsSumWidth}px` }}>
|
||||
{timeColumns.map((_, index) => (
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ export const CUSTOM_RANGE = "CUSTOM_RANGE";
|
|||
const DATE_RANGE_LABELS = {
|
||||
// LAST_30_MINUTES: '30 Minutes',
|
||||
// TODAY: 'Today',
|
||||
LAST_24_HOURS: "Last 24 Hours",
|
||||
LAST_24_HOURS: "Past 24 Hours",
|
||||
// YESTERDAY: 'Yesterday',
|
||||
LAST_7_DAYS: "Past 7 Days",
|
||||
LAST_30_DAYS: "Past 30 Days",
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ const RANGE_LABELS = {
|
|||
[LAST_30_MINUTES]: "Last 30 Minutes",
|
||||
[TODAY]: "Today",
|
||||
[YESTERDAY]: "Yesterday",
|
||||
[LAST_24_HOURS]: "Last 24 Hours",
|
||||
[LAST_24_HOURS]: "Past 24 Hours",
|
||||
[LAST_7_DAYS]: "Last 7 Days",
|
||||
[LAST_30_DAYS]: "Last 30 Days",
|
||||
[THIS_MONTH]: "This Month",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue