diff --git a/frontend/app/components/Dashboard/components/WidgetChart/WidgetChart.tsx b/frontend/app/components/Dashboard/components/WidgetChart/WidgetChart.tsx
index 0460053a5..abdbc9066 100644
--- a/frontend/app/components/Dashboard/components/WidgetChart/WidgetChart.tsx
+++ b/frontend/app/components/Dashboard/components/WidgetChart/WidgetChart.tsx
@@ -181,9 +181,10 @@ function WidgetChart(props: Props) {
}
prevMetricRef.current = _metric;
const timestmaps = drillDownPeriod.toTimestamps();
+ const density = props.isPreview ? metric.density : dashboardStore.selectedDensity
const payload = isSaved
- ? { ...metricParams }
- : { ...params, ...timestmaps, ..._metric.toJson() };
+ ? { ...metricParams, density }
+ : { ...params, ...timestmaps, ..._metric.toJson(), density };
debounceRequest(
_metric,
payload,
diff --git a/frontend/app/components/Dashboard/components/WidgetDateRange/RangeGranularity.tsx b/frontend/app/components/Dashboard/components/WidgetDateRange/RangeGranularity.tsx
index 02d9a970c..18a2b7815 100644
--- a/frontend/app/components/Dashboard/components/WidgetDateRange/RangeGranularity.tsx
+++ b/frontend/app/components/Dashboard/components/WidgetDateRange/RangeGranularity.tsx
@@ -55,7 +55,7 @@ function RangeGranularity({
}
const PAST_24_HR_MS = 24 * 60 * 60 * 1000;
-function calculateGranularities(periodDurationMs: number) {
+export function calculateGranularities(periodDurationMs: number) {
const granularities = [
{ label: 'Hourly', durationMs: 60 * 60 * 1000 },
{ label: 'Daily', durationMs: 24 * 60 * 60 * 1000 },
diff --git a/frontend/app/components/shared/Filters/FilterAutoComplete/AutocompleteModal.tsx b/frontend/app/components/shared/Filters/FilterAutoComplete/AutocompleteModal.tsx
index e8d86beb4..88042887c 100644
--- a/frontend/app/components/shared/Filters/FilterAutoComplete/AutocompleteModal.tsx
+++ b/frontend/app/components/shared/Filters/FilterAutoComplete/AutocompleteModal.tsx
@@ -125,7 +125,7 @@ export function AutocompleteModal({
if (index === blocksAmount - 1 && blocksAmount > 1) {
str += ' and ';
}
- str += `"${block.trim()}"`;
+ str += block.trim();
if (index < blocksAmount - 2) {
str += ', ';
}
@@ -188,10 +188,10 @@ export function AutocompleteModal({
{query.length ? (
- {t('Apply')} {queryStr}
+ {t('Apply')} {queryStr}
) : null}
diff --git a/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx b/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx
index 2b6fa260a..41fc685b1 100644
--- a/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx
+++ b/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx
@@ -128,8 +128,10 @@ const FilterAutoComplete = observer(
};
const handleFocus = () => {
+ if (!initialFocus) {
+ setOptions(topValues.map((i) => ({ value: i.value, label: i.value })));
+ }
setInitialFocus(true);
- setOptions(topValues.map((i) => ({ value: i.value, label: i.value })));
};
return (
diff --git a/frontend/app/mstore/dashboardStore.ts b/frontend/app/mstore/dashboardStore.ts
index 723b97c7d..f985b97ca 100644
--- a/frontend/app/mstore/dashboardStore.ts
+++ b/frontend/app/mstore/dashboardStore.ts
@@ -1,4 +1,4 @@
-import { makeAutoObservable, runInAction } from 'mobx';
+import { makeAutoObservable, runInAction, reaction } from 'mobx';
import { dashboardService, metricService } from 'App/services';
import { toast } from 'react-toastify';
import Period, { LAST_24_HOURS, LAST_7_DAYS } from 'Types/app/period';
@@ -6,6 +6,7 @@ import { getRE } from 'App/utils';
import Filter from './types/filter';
import Widget from './types/widget';
import Dashboard from './types/dashboard';
+import { calculateGranularities } from '@/components/Dashboard/components/WidgetDateRange/RangeGranularity';
interface DashboardFilter {
query?: string;
@@ -36,7 +37,7 @@ export default class DashboardStore {
drillDownPeriod: Record = Period({ rangeName: LAST_24_HOURS });
- selectedDensity: number = 7; // depends on default drilldown, 7 points here!!!;
+ selectedDensity: number = 7;
comparisonPeriods: Record = {};
@@ -83,10 +84,25 @@ export default class DashboardStore {
makeAutoObservable(this);
this.resetDrillDownFilter();
+
+ this.createDensity(this.period.getDuration());
+ reaction(
+ () => this.period,
+ (period) => {
+ this.createDensity(period.getDuration());
+ }
+ )
}
- setDensity = (density: any) => {
- this.selectedDensity = parseInt(density, 10);
+ createDensity = (duration: number) => {
+ const densityOpts = calculateGranularities(duration);
+ const defaultOption = densityOpts[densityOpts.length - 2];
+
+ this.setDensity(defaultOption.key)
+ }
+
+ setDensity = (density: number) => {
+ this.selectedDensity = density;
};
get sortedDashboards() {
@@ -529,7 +545,7 @@ export default class DashboardStore {
const data = await metricService.getMetricChartData(
metric,
params,
- isSaved,
+ isSaved
);
resolve(metric.setData(data, period, isComparison, density));
} catch (error) {
diff --git a/frontend/app/mstore/types/widget.ts b/frontend/app/mstore/types/widget.ts
index 2809ef63f..5ce757500 100644
--- a/frontend/app/mstore/types/widget.ts
+++ b/frontend/app/mstore/types/widget.ts
@@ -163,6 +163,7 @@ export default class Widget {
fromJson(json: any, period?: any) {
json.config = json.config || {};
runInAction(() => {
+ this.dashboardId = json.dashboardId;
this.metricId = json.metricId;
this.widgetId = json.widgetId;
this.metricValue = this.metricValueFromArray(