diff --git a/frontend/app/components/shared/Filters/FilterValue/FilterValue.tsx b/frontend/app/components/shared/Filters/FilterValue/FilterValue.tsx
index 4a13b2c4a..8984899ea 100644
--- a/frontend/app/components/shared/Filters/FilterValue/FilterValue.tsx
+++ b/frontend/app/components/shared/Filters/FilterValue/FilterValue.tsx
@@ -40,7 +40,6 @@ function FilterValue(props: Props) {
}
return _;
});
- console.log(item ,{ ...filter, value: newValues });
props.onUpdate({ ...filter, value: newValues });
};
@@ -50,9 +49,9 @@ function FilterValue(props: Props) {
setDurationValues({ ...durationValues, ...newValues });
};
- const handleBlur = (e: any) => {
+ const handleBlur = () => {
if (filter.type === FilterType.DURATION) {
- const { maxDuration, minDuration, key } = filter;
+ const { maxDuration, minDuration } = filter;
if (maxDuration || minDuration) return;
if (maxDuration !== durationValues.maxDuration || minDuration !== durationValues.minDuration) {
props.onUpdate({ ...filter, value: [durationValues.minDuration, durationValues.maxDuration] });
diff --git a/frontend/app/mstore/types/widget.ts b/frontend/app/mstore/types/widget.ts
index 69d9e556e..753691d3d 100644
--- a/frontend/app/mstore/types/widget.ts
+++ b/frontend/app/mstore/types/widget.ts
@@ -1,7 +1,6 @@
-import { makeAutoObservable, runInAction, observable, action } from "mobx"
+import { makeAutoObservable, runInAction } from "mobx"
import FilterSeries from "./filterSeries";
import { DateTime } from 'luxon';
-import { metricService, errorService } from "App/services";
import Session from "App/mstore/types/session";
import Funnelissue from 'App/mstore/types/funnelIssue';
import { issueOptions } from 'App/constants/filterOptions';
@@ -30,9 +29,9 @@ export default class Widget {
config: any = {}
page: number = 1
limit: number = 5
+ thumbnail?: string
params: any = { density: 70 }
-
period: Record
= Period({ rangeName: LAST_24_HOURS }) // temp value in detail view
hasChanged: boolean = false
@@ -85,7 +84,7 @@ export default class Widget {
this.metricFormat = json.metricFormat
this.viewType = json.viewType
this.name = json.name
- this.series = json.series ? json.series.map((series: any) => new FilterSeries().fromJson(series)) : [],
+ this.series = json.series ? json.series.map((series: any) => new FilterSeries().fromJson(series)) : []
this.dashboards = json.dashboards || []
this.owner = json.ownerEmail
this.lastModified = json.editedAt || json.createdAt ? DateTime.fromMillis(json.editedAt || json.createdAt) : null
@@ -93,6 +92,7 @@ export default class Widget {
this.position = json.config.position
this.predefinedKey = json.predefinedKey
this.category = json.category
+ this.thumbnail = json.thumbnail
if (period) {
this.period = period
@@ -130,6 +130,7 @@ export default class Widget {
viewType: this.viewType,
name: this.name,
series: this.series.map((series: any) => series.toJson()),
+ thumbnail: this.thumbnail,
config: {
...this.config,
col: (this.metricType === 'funnel' || this.metricOf === FilterKey.ERRORS || this.metricOf === FilterKey.SESSIONS) ? 4 : 2
@@ -156,7 +157,7 @@ export default class Widget {
}
fetchSessions(metricId: any, filter: any): Promise {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve) => {
metricService.fetchSessions(metricId, filter).then((response: any[]) => {
resolve(response.map((cat: { sessions: any[]; }) => {
return {
@@ -169,7 +170,7 @@ export default class Widget {
}
fetchIssues(filter: any): Promise {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve) => {
metricService.fetchIssues(filter).then((response: any) => {
const significantIssues = response.issues.significant ? response.issues.significant.map((issue: any) => new Funnelissue().fromJSON(issue)) : []
const insignificantIssues = response.issues.insignificant ? response.issues.insignificant.map((issue: any) => new Funnelissue().fromJSON(issue)) : []
diff --git a/frontend/app/player/web/WebPlayer.ts b/frontend/app/player/web/WebPlayer.ts
index 267dfdd4d..db7ae9451 100644
--- a/frontend/app/player/web/WebPlayer.ts
+++ b/frontend/app/player/web/WebPlayer.ts
@@ -76,7 +76,9 @@ export default class WebPlayer extends Player {
// this.updateMarketTargets() ??
}
- scaleFullPage =() => {
+ scaleFullPage = () => {
+ window.removeEventListener('resize', this.scale)
+ window.addEventListener('resize', this.screen.scaleFullPage)
return this.screen.scaleFullPage()
}
diff --git a/frontend/app/player/web/addons/TargetMarker.ts b/frontend/app/player/web/addons/TargetMarker.ts
index 0066243b5..e20b4c6c4 100644
--- a/frontend/app/player/web/addons/TargetMarker.ts
+++ b/frontend/app/player/web/addons/TargetMarker.ts
@@ -39,6 +39,7 @@ export default class TargetMarker {
private clickMapOverlay: HTMLDivElement
private clickContainers: HTMLDivElement[] = []
private smallClicks: HTMLDivElement[] = []
+ private onMarkerClick: (selector: string) => void
static INITIAL_STATE: State = {
markedTargets: null,
activeTargetIndex: 0
@@ -145,14 +146,12 @@ export default class TargetMarker {
this.clickMapOverlay?.remove()
const overlay = document.createElement("div")
const iframeSize = this.screen.iframeStylesRef
- console.log(iframeSize)
const scaleRatio = this.screen.getScale()
Object.assign(overlay.style, clickmapStyles.overlayStyle({ height: iframeSize.height, width: iframeSize.width, scale: scaleRatio }))
this.clickMapOverlay = overlay
selections.forEach((s, i) => {
const el = this.screen.getElementBySelector(s.selector);
- console.log(el, s.selector)
if (!el) return;
const bubbleContainer = document.createElement("div")
@@ -183,6 +182,7 @@ export default class TargetMarker {
border.onclick = (e) => {
e.stopPropagation()
+ this.onMarkerClick?.(s.selector)
this.clickContainers.forEach(container => {
if (container.id === containerId) {
container.style.visibility = "visible"
@@ -226,4 +226,8 @@ export default class TargetMarker {
}
}
+ setOnMarkerClick(cb: (selector: string) => void) {
+ this.onMarkerClick = cb
+ }
+
}
diff --git a/frontend/app/player/web/addons/clickmapStyles.ts b/frontend/app/player/web/addons/clickmapStyles.ts
index d69c5f7fa..522a2b285 100644
--- a/frontend/app/player/web/addons/clickmapStyles.ts
+++ b/frontend/app/player/web/addons/clickmapStyles.ts
@@ -9,7 +9,6 @@ export const clickmapStyles = {
background: 'rgba(0,0,0, 0.15)',
zIndex: 9 * 10e3,
transformOrigin: 'left top',
- // pointerEvents: 'none',
}),
totalClicks: {
fontSize: '16px',
diff --git a/frontend/app/services/MetricService.ts b/frontend/app/services/MetricService.ts
index bc72c40a1..251aa5190 100644
--- a/frontend/app/services/MetricService.ts
+++ b/frontend/app/services/MetricService.ts
@@ -36,15 +36,14 @@ export default class MetricService {
/**
* Save a metric.
- * @param metric
+ * @param metric
* @returns
*/
- saveMetric(metric: Widget, dashboardId?: string): Promise {
+ saveMetric(metric: Widget): Promise {
const data = metric.toJson()
const isCreating = !data[Widget.ID_KEY];
- const method = isCreating ? 'post' : 'put';
const url = isCreating ? '/cards' : '/cards/' + data[Widget.ID_KEY];
- return this.client[method](url, data)
+ return this.client.post(url, data)
.then(r => r.json())
.then((response: { data: any; }) => response.data || {})
.catch(e => Promise.reject(e))
@@ -82,7 +81,8 @@ export default class MetricService {
/**
* Fetch sessions from the server.
- * @param filter
+ * @param metricId {String}
+ * @param filter
* @returns
*/
fetchSessions(metricId: string, filter: any): Promise {