null}>
diff --git a/frontend/app/components/Dashboard/components/WidgetView/WidgetView.tsx b/frontend/app/components/Dashboard/components/WidgetView/WidgetView.tsx
index c4ef52bb2..1edec1c49 100644
--- a/frontend/app/components/Dashboard/components/WidgetView/WidgetView.tsx
+++ b/frontend/app/components/Dashboard/components/WidgetView/WidgetView.tsx
@@ -24,11 +24,9 @@ function WidgetView(props: Props) {
const [expanded, setExpanded] = useState(!metricId || metricId === 'create');
React.useEffect(() => {
- if (metricId && metricId !== 'create' && (!widget || !widget.exists())) {
+ if (metricId && metricId !== 'create') {
metricStore.fetch(metricId);
- }
-
- if (metricId === 'create') {
+ } else if (metricId === 'create') {
metricStore.init();
}
}, [])
diff --git a/frontend/app/mstore/metricStore.ts b/frontend/app/mstore/metricStore.ts
index f2920acaf..8a9ec96f7 100644
--- a/frontend/app/mstore/metricStore.ts
+++ b/frontend/app/mstore/metricStore.ts
@@ -90,6 +90,7 @@ export default class MetricStore implements IMetricStore {
// State Actions
init(metric?: IWidget|null) {
+ console.log('metric', metric);
// const _metric = new Widget().fromJson(sampleJsonErrors)
// this.instance.update(metric || _metric)
diff --git a/frontend/app/mstore/types/funnel.ts b/frontend/app/mstore/types/funnel.ts
index 43bc5a8b3..0085816c8 100644
--- a/frontend/app/mstore/types/funnel.ts
+++ b/frontend/app/mstore/types/funnel.ts
@@ -1,4 +1,3 @@
-// import Filter, { IFilter } from "./filter"
import FunnelStage from './funnelStage'
export interface IFunnel {
@@ -22,27 +21,15 @@ export default class Funnel implements IFunnel {
}
fromJSON(json: any) {
- const firstStage = json.stages[0]
- const lastStage = json.stages[json.stages.length - 1]
- this.lostConversions = json.totalDropDueToIssues
- this.conversionImpact = this.lostConversions ? Math.round((this.lostConversions / firstStage.sessionsCount) * 100) : 0;
- this.stages = json.stages ? json.stages.map((stage: any) => new FunnelStage().fromJSON(stage)) : []
- this.affectedUsers = firstStage.usersCount ? firstStage.usersCount - lastStage.usersCount : 0;
+ if (json.stages.length >= 1) {
+ const firstStage = json.stages[0]
+ const lastStage = json.stages[json.stages.length - 1]
+ this.lostConversions = json.totalDropDueToIssues
+ this.conversionImpact = this.lostConversions ? Math.round((this.lostConversions / firstStage.sessionsCount) * 100) : 0;
+ this.stages = json.stages ? json.stages.map((stage: any) => new FunnelStage().fromJSON(stage)) : []
+ this.affectedUsers = firstStage.usersCount ? firstStage.usersCount - lastStage.usersCount : 0;
+ }
return this
}
-
- // toJSON(): any {
- // return {
- // // funnelId: this.funnelId,
- // // name: this.name,
- // // filter: this.filter.toJson(),
- // // sessionsCount: this.sessionsCount,
- // // conversionRate: this.conversionRate,
- // }
- // }
-
- // exists(): boolean {
- // return this.funnelId !== ''
- // }
}
\ No newline at end of file
diff --git a/frontend/app/mstore/types/widget.ts b/frontend/app/mstore/types/widget.ts
index 3fbe21893..a78b7f35f 100644
--- a/frontend/app/mstore/types/widget.ts
+++ b/frontend/app/mstore/types/widget.ts
@@ -217,8 +217,10 @@ export default class Widget implements IWidget {
fetchIssues(filter: any): Promise
{
return new Promise((resolve, reject) => {
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)) : []
resolve({
- issues: response.issues.insignificant ? response.issues.insignificant.map((issue: any) => new Funnelissue().fromJSON(issue)) : [],
+ issues: significantIssues.length > 0 ? significantIssues : insignificantIssues,
})
})
})