@devgateway/dvz-ui-react 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common.css +1 -1
- package/dist/cjs/embeddable/big-number-trend/index.js +1 -1
- package/dist/cjs/embeddable/body/index.js +1 -1
- package/dist/cjs/embeddable/chart/Bar.js +1 -1
- package/dist/cjs/embeddable/chart/Line.js +1 -1
- package/dist/cjs/embeddable/chart/colors/ColorProvider.js +1 -1
- package/dist/cjs/embeddable/chart/colors/ManualColors.js +1 -1
- package/dist/cjs/embeddable/chart/colors/SystemColors.js +1 -1
- package/dist/cjs/embeddable/chart/data/Bar.js +1 -1
- package/dist/cjs/embeddable/chart/data/Line.js +1 -1
- package/dist/cjs/embeddable/chart/data/Utils.js +1 -1
- package/dist/cjs/embeddable/d3Map/BaseLayer.js +1 -1
- package/dist/cjs/embeddable/d3Map/DataLayer.js +1 -1
- package/dist/cjs/embeddable/d3Map/FlowLayer.js +1 -1
- package/dist/cjs/embeddable/data/DataContext.js +1 -1
- package/dist/cjs/embeddable/featuredtabs/index.js +1 -1
- package/dist/cjs/embeddable/filter/index.js +1 -1
- package/dist/cjs/embeddable/filtered-posts/NoData.js +11 -0
- package/dist/cjs/embeddable/filtered-posts/index.js +1 -0
- package/dist/cjs/embeddable/index.js +1 -1
- package/dist/cjs/embeddable/inlinelist/index.js +1 -1
- package/dist/cjs/embeddable/map/MapDataFrame.js +1 -1
- package/dist/cjs/embeddable/map/index.js +2 -2
- package/dist/cjs/embeddable/map/map.js +4 -4
- package/dist/cjs/embeddable/posts-filter/PostsFilterDropdown.js +1 -0
- package/dist/cjs/embeddable/posts-filter/index.js +1 -0
- package/dist/cjs/embeddable/posts-filters-reset-button/index.js +1 -0
- package/dist/cjs/embeddable/posts-pagination/index.js +1 -0
- package/dist/cjs/embeddable/reducers/data-api.js +1 -1
- package/dist/cjs/embeddable/reducers/data.js +1 -1
- package/dist/cjs/embeddable/showcase/index.js +1 -1
- package/dist/cjs/embeddable/time-line/mobile.js +1 -1
- package/dist/cjs/embeddable/vertical-featuredtabs/index.js +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/layout/ClassicHeader.js +1 -1
- package/dist/cjs/layout/CustomSemanticSearch.js +1 -1
- package/dist/cjs/layout/Header.js +3 -3
- package/dist/cjs/layout/Layout.js +1 -1
- package/dist/cjs/layout/SearchControl.js +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/cjs/translations/am.json.js +1 -0
- package/dist/cjs/utils/data.js +1 -1
- package/dist/esm/common.css +1 -1
- package/dist/esm/embeddable/big-number-trend/index.js +36 -36
- package/dist/esm/embeddable/body/index.js +141 -95
- package/dist/esm/embeddable/chart/Bar.js +390 -382
- package/dist/esm/embeddable/chart/Line.js +101 -102
- package/dist/esm/embeddable/chart/colors/ColorProvider.js +42 -39
- package/dist/esm/embeddable/chart/colors/ManualColors.js +40 -29
- package/dist/esm/embeddable/chart/colors/SystemColors.js +28 -17
- package/dist/esm/embeddable/chart/data/Bar.js +112 -114
- package/dist/esm/embeddable/chart/data/Line.js +126 -126
- package/dist/esm/embeddable/chart/data/Utils.js +32 -26
- package/dist/esm/embeddable/d3Map/BaseLayer.js +3 -8
- package/dist/esm/embeddable/d3Map/DataLayer.js +2 -9
- package/dist/esm/embeddable/d3Map/FlowLayer.js +12 -15
- package/dist/esm/embeddable/data/DataContext.js +1 -0
- package/dist/esm/embeddable/featuredtabs/index.js +128 -124
- package/dist/esm/embeddable/filter/index.js +207 -206
- package/dist/esm/embeddable/filtered-posts/NoData.js +31 -0
- package/dist/esm/embeddable/filtered-posts/index.js +123 -0
- package/dist/esm/embeddable/index.js +34 -31
- package/dist/esm/embeddable/inlinelist/index.js +82 -70
- package/dist/esm/embeddable/map/MapDataFrame.js +17 -14
- package/dist/esm/embeddable/map/index.js +180 -169
- package/dist/esm/embeddable/map/map.js +520 -437
- package/dist/esm/embeddable/posts-filter/PostsFilterDropdown.js +190 -0
- package/dist/esm/embeddable/posts-filter/index.js +215 -0
- package/dist/esm/embeddable/posts-filters-reset-button/index.js +33 -0
- package/dist/esm/embeddable/posts-pagination/index.js +69 -0
- package/dist/esm/embeddable/reducers/data-api.js +40 -25
- package/dist/esm/embeddable/reducers/data.js +180 -99
- package/dist/esm/embeddable/showcase/index.js +1 -1
- package/dist/esm/embeddable/time-line/mobile.js +158 -182
- package/dist/esm/embeddable/vertical-featuredtabs/index.js +177 -168
- package/dist/esm/index.js +69 -25
- package/dist/esm/layout/ClassicHeader.js +62 -62
- package/dist/esm/layout/CustomSemanticSearch.js +40 -102
- package/dist/esm/layout/Header.js +152 -144
- package/dist/esm/layout/Layout.js +4 -3
- package/dist/esm/layout/SearchControl.js +130 -113
- package/dist/esm/styles.css +1 -1
- package/dist/esm/translations/am.json.js +46 -0
- package/dist/esm/utils/data.js +4 -9
- package/dist/types/dvz-ui/src/countries.d.ts +7 -0
- package/dist/types/dvz-ui/src/embeddable/chart/colors/ManualColors.d.ts +1 -1
- package/dist/types/dvz-ui/src/embeddable/chart/colors/SystemColors.d.ts +1 -1
- package/dist/types/dvz-ui/src/embeddable/data/DataContext.d.ts +1 -0
- package/dist/types/dvz-ui/src/embeddable/featuredtabs/index.d.ts +1 -0
- package/dist/types/dvz-ui/src/embeddable/filtered-posts/NoData.d.ts +7 -0
- package/dist/types/dvz-ui/src/embeddable/filtered-posts/index.d.ts +21 -0
- package/dist/types/dvz-ui/src/embeddable/inlinelist/index.d.ts +2 -0
- package/dist/types/dvz-ui/src/embeddable/map/MapDataFrame.d.ts +1 -6
- package/dist/types/dvz-ui/src/embeddable/map/map.d.ts +1 -0
- package/dist/types/dvz-ui/src/embeddable/posts-filter/PostsFilterDropdown.d.ts +21 -0
- package/dist/types/dvz-ui/src/embeddable/posts-filter/index.d.ts +25 -0
- package/dist/types/dvz-ui/src/embeddable/posts-filters-reset-button/index.d.ts +3 -0
- package/dist/types/dvz-ui/src/embeddable/posts-pagination/index.d.ts +10 -0
- package/dist/types/dvz-ui/src/embeddable/reducers/data-api.d.ts +11 -0
- package/dist/types/dvz-ui/src/embeddable/reducers/post-reducer.d.ts +158 -0
- package/dist/types/dvz-ui/src/embeddable/time-line/mobile.d.ts +1 -2
- package/dist/types/dvz-ui/src/embeddable/vertical-featuredtabs/index.d.ts +1 -0
- package/dist/types/dvz-ui/src/index.d.ts +3 -0
- package/dist/types/dvz-ui/src/layout/Header.d.ts +2 -2
- package/dist/types/dvz-ui/src/translations/am.json.d.ts +39 -0
- package/package.json +7 -5
- package/dist/cjs/embeddable/posts-with-filters/DropDownFilter.js +0 -1
- package/dist/cjs/embeddable/posts-with-filters/Post.js +0 -1
- package/dist/cjs/embeddable/posts-with-filters/index.js +0 -1
- package/dist/esm/embeddable/posts-with-filters/DropDownFilter.js +0 -25
- package/dist/esm/embeddable/posts-with-filters/Post.js +0 -51
- package/dist/esm/embeddable/posts-with-filters/index.js +0 -206
- package/dist/types/dvz-ui/src/embeddable/posts-with-filters/DropDownFilter.d.ts +0 -4
- package/dist/types/dvz-ui/src/embeddable/posts-with-filters/Post.d.ts +0 -5
- package/dist/types/dvz-ui/src/embeddable/posts-with-filters/index.d.ts +0 -21
- /package/dist/cjs/{utils/countries.js → countries.js} +0 -0
- /package/dist/cjs/embeddable/{posts-with-filters → filtered-posts}/utils.js +0 -0
- /package/dist/esm/{utils/countries.js → countries.js} +0 -0
- /package/dist/esm/embeddable/{posts-with-filters → filtered-posts}/utils.js +0 -0
- /package/dist/types/dvz-ui/src/embeddable/{posts-with-filters → filtered-posts}/utils.d.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as o, jsxs as
|
|
2
|
-
import { useRef as
|
|
1
|
+
import { jsx as o, jsxs as A } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as V, useState as q } from "react";
|
|
3
3
|
import { Container as H } from "semantic-ui-react";
|
|
4
4
|
import J from "../data/DataProvider.js";
|
|
5
5
|
import $ from "../data/DataConsumer.js";
|
|
@@ -10,14 +10,14 @@ import G from "string-template";
|
|
|
10
10
|
const K = (f) => {
|
|
11
11
|
const {
|
|
12
12
|
editing: c = !1,
|
|
13
|
-
unique:
|
|
13
|
+
unique: g,
|
|
14
14
|
intl: u,
|
|
15
|
-
childContent:
|
|
15
|
+
childContent: h,
|
|
16
16
|
"data-csv": m = "",
|
|
17
17
|
"data-dvz-proxy-dataset-id": b,
|
|
18
18
|
"data-no-data-message": T = "No data matches your selection",
|
|
19
|
-
"data-view-mode":
|
|
20
|
-
"data-height":
|
|
19
|
+
"data-view-mode": v = "info",
|
|
20
|
+
"data-height": F,
|
|
21
21
|
"data-app": x,
|
|
22
22
|
"data-measures": C = "{}",
|
|
23
23
|
"data-format": z = "{}",
|
|
@@ -31,15 +31,15 @@ const K = (f) => {
|
|
|
31
31
|
"data-dimension1": r,
|
|
32
32
|
"data-show-percentage-change": S = "false",
|
|
33
33
|
"data-wait-for-filters": D = "false",
|
|
34
|
-
"data-no-data-text":
|
|
35
|
-
} = f,
|
|
34
|
+
"data-no-data-text": w = "-"
|
|
35
|
+
} = f, I = u.locale, j = V(null), s = (n) => c ? n : decodeURIComponent(n), l = (n) => {
|
|
36
36
|
try {
|
|
37
37
|
return JSON.parse(s(n));
|
|
38
38
|
} catch {
|
|
39
39
|
console.error("error parsing value:" + n);
|
|
40
40
|
}
|
|
41
41
|
return null;
|
|
42
|
-
}, t = l(z),
|
|
42
|
+
}, t = l(z), E = t ? {
|
|
43
43
|
style: t.style === "compacted" ? "decimal" : t.style,
|
|
44
44
|
notation: t.style === "compacted" ? "compact" : "standard",
|
|
45
45
|
currency: t.currency,
|
|
@@ -50,31 +50,31 @@ const K = (f) => {
|
|
|
50
50
|
currency: "USD",
|
|
51
51
|
minimumFractionDigits: 2,
|
|
52
52
|
maximumFractionDigits: 2
|
|
53
|
-
}, [X, Y] =
|
|
53
|
+
}, [X, Y] = q(v), O = c ? F - 80 : F - 40, P = {}, M = l(N) || {};
|
|
54
54
|
M && M.forEach && M.forEach((n) => {
|
|
55
55
|
n.value != null && n.value.filter((U) => U != null && U.toString().trim() != "").length > 0 && (P[n.param] = n.value);
|
|
56
56
|
}), b && (P.dvzProxyDatasetId = b);
|
|
57
57
|
const R = [];
|
|
58
|
-
return r != "none" && R.push(r), /* @__PURE__ */ o("div", { ref: j, children: /* @__PURE__ */ o(H, { className: "chart container big-number-trend-container", style: { height:
|
|
58
|
+
return r != "none" && R.push(r), /* @__PURE__ */ o("div", { ref: j, children: /* @__PURE__ */ o(H, { className: "chart container big-number-trend-container", style: { height: F + "px" }, fluid: !0, children: /* @__PURE__ */ o(
|
|
59
59
|
J,
|
|
60
60
|
{
|
|
61
|
-
style: { height: `${
|
|
61
|
+
style: { height: `${O}px` },
|
|
62
62
|
params: P,
|
|
63
63
|
app: x,
|
|
64
64
|
group: y,
|
|
65
65
|
csv: m,
|
|
66
66
|
editing: c,
|
|
67
67
|
waitForFilters: D === "true",
|
|
68
|
-
store: [x,
|
|
68
|
+
store: [x, g, ...R],
|
|
69
69
|
source: R.join("/"),
|
|
70
70
|
children: /* @__PURE__ */ o($, { children: /* @__PURE__ */ o(
|
|
71
71
|
L,
|
|
72
72
|
{
|
|
73
73
|
editing: c,
|
|
74
|
-
locale:
|
|
74
|
+
locale: I,
|
|
75
75
|
intl: u,
|
|
76
76
|
app: x,
|
|
77
|
-
format:
|
|
77
|
+
format: E,
|
|
78
78
|
dimension1: r,
|
|
79
79
|
measure: l(C)[0] || null,
|
|
80
80
|
label: p,
|
|
@@ -83,7 +83,7 @@ const K = (f) => {
|
|
|
83
83
|
labelFontSize: a,
|
|
84
84
|
percentFontSize: d,
|
|
85
85
|
showPercentageChange: S == "true" || S == !0,
|
|
86
|
-
noDataText:
|
|
86
|
+
noDataText: w
|
|
87
87
|
}
|
|
88
88
|
) })
|
|
89
89
|
}
|
|
@@ -91,14 +91,14 @@ const K = (f) => {
|
|
|
91
91
|
}, L = (f) => {
|
|
92
92
|
const {
|
|
93
93
|
editing: c,
|
|
94
|
-
app:
|
|
94
|
+
app: g,
|
|
95
95
|
measure: u,
|
|
96
|
-
dimension1:
|
|
96
|
+
dimension1: h,
|
|
97
97
|
data: m,
|
|
98
98
|
format: b,
|
|
99
99
|
label: T,
|
|
100
|
-
textColor:
|
|
101
|
-
bigNumberFontSize:
|
|
100
|
+
textColor: v,
|
|
101
|
+
bigNumberFontSize: F,
|
|
102
102
|
percentFontSize: x,
|
|
103
103
|
labelFontSize: C,
|
|
104
104
|
showPercentageChange: z,
|
|
@@ -106,7 +106,7 @@ const K = (f) => {
|
|
|
106
106
|
noDataText: N
|
|
107
107
|
} = f;
|
|
108
108
|
let e = [], i, a;
|
|
109
|
-
if (
|
|
109
|
+
if (g == "csv") {
|
|
110
110
|
const { data: s, meta: { fields: l } } = m;
|
|
111
111
|
i = l[0], a = l[1], e = m.data.map((t) => ({
|
|
112
112
|
value: t[i],
|
|
@@ -114,35 +114,35 @@ const K = (f) => {
|
|
|
114
114
|
[i]: t[i]
|
|
115
115
|
}));
|
|
116
116
|
} else
|
|
117
|
-
e = !m.children || m.children.length == 0 ? [] : m.children, a = u, i =
|
|
117
|
+
e = !m.children || m.children.length == 0 ? [] : m.children, a = u, i = h, e = e.map((s) => ({
|
|
118
118
|
value: s.value,
|
|
119
119
|
[a]: s[a],
|
|
120
120
|
[i]: s.value
|
|
121
121
|
}));
|
|
122
122
|
let d = null, p = null, r, S, D;
|
|
123
123
|
e.length > 0 && (e = e.sort((s, l) => B(!1, y.locale, s.value, l.value)), d = e[e.length - 1][a], e.length > 1 && (p = e[e.length - 2][a]), D = y.formatNumber(b.style === "percent" ? d / 100 : d, { ...b }), p && (r = (d - p) / p, S = y.formatNumber(r, { style: "percent", minimumFractionDigits: 2, maximumFractionDigits: 2 }))), d == null && (D = N);
|
|
124
|
-
const
|
|
125
|
-
color: decodeURIComponent(
|
|
126
|
-
fontSize:
|
|
127
|
-
},
|
|
128
|
-
color: decodeURIComponent(
|
|
124
|
+
const w = {
|
|
125
|
+
color: decodeURIComponent(v),
|
|
126
|
+
fontSize: F + "px"
|
|
127
|
+
}, I = {
|
|
128
|
+
color: decodeURIComponent(v),
|
|
129
129
|
fontSize: x + "px"
|
|
130
130
|
}, j = {
|
|
131
|
-
color: decodeURIComponent(
|
|
131
|
+
color: decodeURIComponent(v),
|
|
132
132
|
fontSize: C + "px"
|
|
133
133
|
};
|
|
134
|
-
return /* @__PURE__ */
|
|
134
|
+
return /* @__PURE__ */ A("div", { className: "trend", children: [
|
|
135
135
|
/* @__PURE__ */ o("div", { className: "label", style: j, children: G(T, e[e.length - 1]) }),
|
|
136
|
-
/* @__PURE__ */
|
|
137
|
-
/* @__PURE__ */ o("span", { className: "number", style:
|
|
138
|
-
r && /* @__PURE__ */ o("
|
|
136
|
+
/* @__PURE__ */ A("div", { className: "number-and-icon", children: [
|
|
137
|
+
/* @__PURE__ */ o("span", { className: "number", style: w, children: D }),
|
|
138
|
+
r && /* @__PURE__ */ o("img", { src: r > 0 ? "/trend-up.svg" : "/trend-down.svg", alt: "Arrow", className: "icon" })
|
|
139
139
|
] }),
|
|
140
|
-
z && r && /* @__PURE__ */ o("div", { className: "percentage", style:
|
|
140
|
+
z && r && /* @__PURE__ */ o("div", { className: "percentage", style: I, children: S })
|
|
141
141
|
] });
|
|
142
142
|
}, Q = (f, c) => {
|
|
143
|
-
const { "data-app":
|
|
144
|
-
return
|
|
145
|
-
injectedMeasures:
|
|
143
|
+
const { "data-app": g, "data-group": u } = c, h = f.getIn(["data", "measures", g, u]);
|
|
144
|
+
return h ? {
|
|
145
|
+
injectedMeasures: h
|
|
146
146
|
} : {};
|
|
147
147
|
}, W = {}, se = k(Q, W)(K);
|
|
148
148
|
export {
|
|
@@ -1,47 +1,69 @@
|
|
|
1
1
|
var v = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { jsx as
|
|
5
|
-
import
|
|
6
|
-
import { Container as
|
|
7
|
-
import
|
|
2
|
+
var C = (g, p, s) => p in g ? v(g, p, { enumerable: !0, configurable: !0, writable: !0, value: s }) : g[p] = s;
|
|
3
|
+
var u = (g, p, s) => C(g, typeof p != "symbol" ? p + "" : p, s);
|
|
4
|
+
import { jsx as o, jsxs as f } from "react/jsx-runtime";
|
|
5
|
+
import O from "react";
|
|
6
|
+
import { Container as L } from "semantic-ui-react";
|
|
7
|
+
import w from "./Background.js";
|
|
8
8
|
import S from "./Stomach.js";
|
|
9
9
|
import E from "./Liver.js";
|
|
10
10
|
import N from "./Bounds.js";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
11
|
+
import A from "./Blood.js";
|
|
12
|
+
import b from "./Lungs.js";
|
|
13
|
+
import T from "./Head.js";
|
|
14
|
+
import k from "./Eyes.js";
|
|
15
15
|
import D from "./Brain.js";
|
|
16
16
|
import B from "./Heart.js";
|
|
17
17
|
import q from "./Erectile.js";
|
|
18
|
-
import * as
|
|
19
|
-
import
|
|
20
|
-
import { injectIntl as
|
|
21
|
-
import
|
|
22
|
-
import
|
|
18
|
+
import * as y from "d3";
|
|
19
|
+
import W from "./Ectopic.js";
|
|
20
|
+
import { injectIntl as $, FormattedMessage as x } from "react-intl";
|
|
21
|
+
import Y from "../../translations/en.json.js";
|
|
22
|
+
import z from "../../translations/fr.json.js";
|
|
23
|
+
import G from "../../translations/am.json.js";
|
|
23
24
|
import M from "../../utils/deviceType.js";
|
|
24
|
-
class
|
|
25
|
+
class I extends O.Component {
|
|
25
26
|
constructor(s) {
|
|
26
27
|
super(s);
|
|
27
|
-
|
|
28
|
+
u(this, "localeYDims", {
|
|
29
|
+
en: "60",
|
|
30
|
+
fr: "40",
|
|
31
|
+
am: "40"
|
|
32
|
+
});
|
|
33
|
+
u(this, "localeXdims", {
|
|
34
|
+
en: "-250",
|
|
35
|
+
fr: "-280",
|
|
36
|
+
am: "-280"
|
|
37
|
+
});
|
|
38
|
+
u(this, "titleDims", {
|
|
39
|
+
am: 160,
|
|
40
|
+
fr: 180,
|
|
41
|
+
en: 180
|
|
42
|
+
});
|
|
43
|
+
u(this, "titleLineWidths", {
|
|
28
44
|
Cancers: {
|
|
29
|
-
|
|
45
|
+
am: 125,
|
|
46
|
+
// Wider for Amharic text
|
|
47
|
+
fr: 58,
|
|
48
|
+
en: 58
|
|
49
|
+
},
|
|
50
|
+
OtherConditions: {
|
|
51
|
+
am: 158,
|
|
52
|
+
// Much wider for Amharic text
|
|
53
|
+
fr: 118,
|
|
54
|
+
en: 118
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
u(this, "mobileOptions", {
|
|
58
|
+
Cancers: {
|
|
59
|
+
x: this.titleDims[this.props.intl.locale],
|
|
30
60
|
y: 25
|
|
31
61
|
},
|
|
32
62
|
OtherConditions: {
|
|
33
|
-
x:
|
|
63
|
+
x: this.isIphone() && this.props.intl.locale === "am" ? 370 : 350,
|
|
34
64
|
y: 25
|
|
35
65
|
},
|
|
36
|
-
viewBoxDims: "0 0
|
|
37
|
-
});
|
|
38
|
-
p(this, "localeYDims", {
|
|
39
|
-
en: "60",
|
|
40
|
-
fr: "40"
|
|
41
|
-
});
|
|
42
|
-
p(this, "localeXdims", {
|
|
43
|
-
en: "-250",
|
|
44
|
-
fr: "-280"
|
|
66
|
+
viewBoxDims: "0 0 550 520"
|
|
45
67
|
});
|
|
46
68
|
this.state = {
|
|
47
69
|
counter: 0,
|
|
@@ -49,7 +71,11 @@ class H extends C.Component {
|
|
|
49
71
|
isClicked: !1,
|
|
50
72
|
selectedOption: "Cancers",
|
|
51
73
|
orientation: this.getScreenOrientation()
|
|
52
|
-
}, this.onMouseOut = this.onMouseOut.bind(this), this.onMouseOver = this.onMouseOver.bind(this), this.updateLayout = this.updateLayout.bind(this), this.updateSvgLabels = this.updateSvgLabels.bind(this), this.handleTextClick = this.handleTextClick.bind(this), this.handleOrientationChange = this.handleOrientationChange.bind(this)
|
|
74
|
+
}, this.onMouseOut = this.onMouseOut.bind(this), this.onMouseOver = this.onMouseOver.bind(this), this.updateLayout = this.updateLayout.bind(this), this.updateSvgLabels = this.updateSvgLabels.bind(this), this.handleTextClick = this.handleTextClick.bind(this), this.handleOrientationChange = this.handleOrientationChange.bind(this), this.messages = {
|
|
75
|
+
en: Y,
|
|
76
|
+
fr: z,
|
|
77
|
+
am: G
|
|
78
|
+
};
|
|
53
79
|
}
|
|
54
80
|
updateLayout() {
|
|
55
81
|
this.setState({ isMobile: ["mobile", "tablet"].includes(M()) });
|
|
@@ -58,6 +84,10 @@ class H extends C.Component {
|
|
|
58
84
|
var s;
|
|
59
85
|
return ((s = window.screen.orientation) == null ? void 0 : s.type) || (window.innerWidth > window.innerHeight ? "landscape-primary" : "portrait-primary");
|
|
60
86
|
}
|
|
87
|
+
isIphone() {
|
|
88
|
+
const s = navigator.userAgent.toLowerCase();
|
|
89
|
+
return /iphone/i.test(s);
|
|
90
|
+
}
|
|
61
91
|
handleOrientationChange() {
|
|
62
92
|
setTimeout(() => {
|
|
63
93
|
this.setState({ orientation: this.getScreenOrientation() }, () => {
|
|
@@ -67,28 +97,30 @@ class H extends C.Component {
|
|
|
67
97
|
}
|
|
68
98
|
handleTextClick(s) {
|
|
69
99
|
if (!this.state.isMobile) return;
|
|
70
|
-
const
|
|
71
|
-
if (
|
|
72
|
-
[...
|
|
73
|
-
(
|
|
100
|
+
const e = s.target.closest("svg"), t = s.target.closest(".title"), r = s.target.closest(".title-rect");
|
|
101
|
+
if (t || r) {
|
|
102
|
+
[...e.querySelectorAll(".title, .title-rect, .title-line")].forEach(
|
|
103
|
+
(a) => a.classList.remove("on")
|
|
74
104
|
);
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
105
|
+
const d = t || r, i = d.getAttribute("data-option");
|
|
106
|
+
d.classList.add("on");
|
|
107
|
+
const c = d.closest("g"), h = c.querySelector(".title-rect"), n = c.querySelector(".title");
|
|
108
|
+
h && h.classList.add("on"), n && n.classList.add("on");
|
|
109
|
+
const m = c.querySelector(".title-line");
|
|
110
|
+
m && m.classList.add("on"), i && this.setState({
|
|
111
|
+
selectedOption: i
|
|
80
112
|
});
|
|
81
113
|
}
|
|
82
114
|
}
|
|
83
115
|
onMouseOut() {
|
|
84
|
-
|
|
116
|
+
y.select(".body.parts").selectAll("g.system").transition().duration(0).delay(200).style("opacity", 1), y.select(".body.parts").selectAll("circle").remove(), y.select(".body.parts").selectAll("line").remove();
|
|
85
117
|
}
|
|
86
|
-
onMouseOver(s,
|
|
87
|
-
const r =
|
|
88
|
-
s && (r.selectAll("g.system").transition().duration(200).style("opacity", 0),
|
|
89
|
-
const
|
|
90
|
-
let c, h, n,
|
|
91
|
-
|
|
118
|
+
onMouseOver(s, e, t) {
|
|
119
|
+
const r = y.select(".body.parts"), d = r.select(s);
|
|
120
|
+
s && (r.selectAll("g.system").transition().duration(200).style("opacity", 0), d.transition().style("opacity", 1));
|
|
121
|
+
const i = e.node().getBBox();
|
|
122
|
+
let c, h, n, m;
|
|
123
|
+
i.x < 0 ? (c = i.x + i.width + 5, n = c > 0 ? 30 : -5, h = i.y + i.height / 2, m = i.y + i.height / 2) : (c = i.x - 5, n = 140, h = i.y + i.height / 2, m = i.y + i.height / 2), r.select("svg").append("line").attr("x1", c).attr("y1", h).attr("x2", c).attr("y2", h).transition().duration(100).attr("x2", n).attr("y2", m), r.select("svg").append("line").attr("x1", n).attr("y1", i.y + i.height / 2).attr("x2", n).attr("y2", i.y + i.height / 2).transition().duration(100).delay(100).attr("x2", t.tx).attr("y2", t.ty), r.select("svg").append("circle").attr("r", 0).attr("cx", t.tx).attr("cy", t.ty).attr("opacity", 0.6).attr("fill", "#000").transition().delay(200).duration(30).attr("r", 6);
|
|
92
124
|
}
|
|
93
125
|
componentDidMount() {
|
|
94
126
|
window.addEventListener("resize", this.updateLayout), window.screen.orientation ? window.screen.orientation.addEventListener(
|
|
@@ -97,19 +129,21 @@ class H extends C.Component {
|
|
|
97
129
|
) : window.addEventListener("resize", this.handleOrientationChange), this.updateLayout(), this.updateSvgLabels(), this.addOnClassToSelectedElements();
|
|
98
130
|
}
|
|
99
131
|
addOnClassToSelectedElements() {
|
|
100
|
-
const { selectedOption: s } = this.state,
|
|
101
|
-
|
|
102
|
-
|
|
132
|
+
const { selectedOption: s } = this.state, e = document.querySelector("svg");
|
|
133
|
+
if (!e) return;
|
|
134
|
+
[...e.querySelectorAll(".title, .title-rect, .title-line")].forEach(
|
|
135
|
+
(i) => i.classList.remove("on")
|
|
136
|
+
);
|
|
137
|
+
const t = e.querySelector(`[data-option="${s}"].title`), r = e.querySelector(`[data-option="${s}"].title-rect`);
|
|
138
|
+
let d = null;
|
|
139
|
+
if (t || r) {
|
|
140
|
+
const i = (t || r).closest("g");
|
|
141
|
+
d = i ? i.querySelector(".title-line") : null;
|
|
142
|
+
}
|
|
143
|
+
t && t.classList.add("on"), r && r.classList.add("on"), d && d.classList.add("on");
|
|
103
144
|
}
|
|
104
145
|
updateSvgLabels() {
|
|
105
|
-
const s =
|
|
106
|
-
let t = {
|
|
107
|
-
en: $,
|
|
108
|
-
fr: j
|
|
109
|
-
};
|
|
110
|
-
const e = this.props.intl;
|
|
111
|
-
t = t[e.locale];
|
|
112
|
-
const r = [
|
|
146
|
+
const s = y.select(".body.parts"), e = this.props.intl, t = this.messages[e.locale], r = [
|
|
113
147
|
{
|
|
114
148
|
label: e.formatMessage({
|
|
115
149
|
id: "oropharyngeal.cancer",
|
|
@@ -218,7 +252,7 @@ class H extends C.Component {
|
|
|
218
252
|
tx: 85,
|
|
219
253
|
ty: 275
|
|
220
254
|
}
|
|
221
|
-
],
|
|
255
|
+
], d = [
|
|
222
256
|
{
|
|
223
257
|
label: e.formatMessage({
|
|
224
258
|
id: "stroke",
|
|
@@ -383,20 +417,20 @@ class H extends C.Component {
|
|
|
383
417
|
}
|
|
384
418
|
];
|
|
385
419
|
s.select("svg").selectAll("text.label").remove();
|
|
386
|
-
const { selectedOption:
|
|
420
|
+
const { selectedOption: i, isMobile: c } = this.state, h = i === "Cancers" ? r : d;
|
|
387
421
|
let n = 60;
|
|
388
|
-
const
|
|
389
|
-
e.locale === "en" ? c ? s.select("svg").selectAll("text.label").data(h).enter().append("text").attr("class", "label").attr("x",
|
|
390
|
-
this.onMouseOver(
|
|
391
|
-
tx:
|
|
392
|
-
ty:
|
|
422
|
+
const m = (a, l) => c && this.props.intl.locale === "am" ? 140 : c ? 160 : -250;
|
|
423
|
+
e.locale === "en" ? c ? s.select("svg").selectAll("text.label").data(h).enter().append("text").attr("class", "label").attr("x", m).attr("y", (a, l) => n + l * 25).text((a) => a.label) : (n = 90, s.select("svg").selectAll("text.left").data(r).enter().append("text").attr("class", "label").attr("x", (a, l) => -250).attr("y", (a, l) => n + l * 25).text((a) => a.label), s.select("svg").selectAll("text.right").data(d).enter().append("text").attr("class", "label").attr("x", (a, l) => 200).attr("y", (a, l) => n + l * 25).text((a) => a.label)) : (e.locale === "fr" || e.locale === "am") && (c ? s.select("svg").selectAll("text.label").data(h).enter().append("text").attr("class", "label").attr("x", m).attr("y", (a, l) => n + l * 25).text((a) => a.label) : (s.select("svg").selectAll("text.left").data(r).enter().append("text").attr("class", "label").attr("x", (a, l) => -280).attr("y", (a, l) => n + l * 25).text((a) => a.label), s.select("svg").selectAll("text.right").data(d).enter().append("text").attr("class", "label").attr("x", (a, l) => 200).attr("y", (a, l) => n + l * 25).text((a) => a.label))), s.select("svg").selectAll("text.label").on("mouseover", (a, l) => {
|
|
424
|
+
this.onMouseOver(l.selector, y.select(a.currentTarget), l, {
|
|
425
|
+
tx: l.tx,
|
|
426
|
+
ty: l.ty
|
|
393
427
|
});
|
|
394
|
-
}).on("mouseout", (a,
|
|
428
|
+
}).on("mouseout", (a, l) => {
|
|
395
429
|
this.onMouseOut();
|
|
396
430
|
});
|
|
397
431
|
}
|
|
398
|
-
componentDidUpdate(s,
|
|
399
|
-
(
|
|
432
|
+
componentDidUpdate(s, e) {
|
|
433
|
+
(e.selectedOption !== this.state.selectedOption || e.orientation !== this.state.orientation) && (this.updateSvgLabels(), this.addOnClassToSelectedElements());
|
|
400
434
|
}
|
|
401
435
|
componentWillUnmount() {
|
|
402
436
|
window.removeEventListener("resize", this.updateLayout), window.screen.orientation ? window.screen.orientation.removeEventListener(
|
|
@@ -405,31 +439,32 @@ class H extends C.Component {
|
|
|
405
439
|
) : window.removeEventListener("resize", this.handleOrientationChange);
|
|
406
440
|
}
|
|
407
441
|
render() {
|
|
408
|
-
return /* @__PURE__ */
|
|
442
|
+
return /* @__PURE__ */ o(L, { className: "body parts", children: /* @__PURE__ */ f(
|
|
409
443
|
"svg",
|
|
410
444
|
{
|
|
411
445
|
className: "body root",
|
|
412
446
|
viewBox: this.state.isMobile ? this.mobileOptions.viewBoxDims : "-300 0 900 520",
|
|
413
447
|
xmlns: "http://www.w3.org/2000/svg",
|
|
414
448
|
children: [
|
|
415
|
-
/* @__PURE__ */
|
|
416
|
-
/* @__PURE__ */
|
|
417
|
-
/* @__PURE__ */
|
|
418
|
-
/* @__PURE__ */
|
|
419
|
-
/* @__PURE__ */
|
|
420
|
-
/* @__PURE__ */
|
|
421
|
-
/* @__PURE__ */
|
|
422
|
-
/* @__PURE__ */
|
|
423
|
-
/* @__PURE__ */
|
|
424
|
-
/* @__PURE__ */
|
|
425
|
-
/* @__PURE__ */
|
|
426
|
-
/* @__PURE__ */
|
|
427
|
-
/* @__PURE__ */
|
|
428
|
-
/* @__PURE__ */
|
|
429
|
-
/* @__PURE__ */
|
|
449
|
+
/* @__PURE__ */ o(w, { className: "backGround" }),
|
|
450
|
+
/* @__PURE__ */ o(N, { className: "system bounds" }),
|
|
451
|
+
/* @__PURE__ */ o(T, { className: "system head" }),
|
|
452
|
+
/* @__PURE__ */ o(b, { className: "system larynx" }),
|
|
453
|
+
/* @__PURE__ */ o(b, { className: "system lungs" }),
|
|
454
|
+
/* @__PURE__ */ o(S, { className: "system stomach" }),
|
|
455
|
+
/* @__PURE__ */ o(E, { className: "system liver" }),
|
|
456
|
+
/* @__PURE__ */ o(D, { className: "system brain" }),
|
|
457
|
+
/* @__PURE__ */ o(k, { className: "system eyes" }),
|
|
458
|
+
/* @__PURE__ */ o(A, { className: "system blood" }),
|
|
459
|
+
/* @__PURE__ */ o(B, { className: "system heart" }),
|
|
460
|
+
/* @__PURE__ */ o(q, { className: "system erectile" }),
|
|
461
|
+
/* @__PURE__ */ o(W, { className: "system Ectopic" }),
|
|
462
|
+
/* @__PURE__ */ f("g", { onClick: this.handleTextClick, children: [
|
|
463
|
+
/* @__PURE__ */ o(
|
|
430
464
|
"rect",
|
|
431
465
|
{
|
|
432
466
|
className: "title-rect",
|
|
467
|
+
"data-option": "Cancers",
|
|
433
468
|
x: this.state.isMobile ? this.mobileOptions.Cancers.x - 20 : "",
|
|
434
469
|
y: this.state.isMobile ? this.mobileOptions.Cancers.y - 20 : this.localeYDims[this.props.intl.locale],
|
|
435
470
|
rx: "5",
|
|
@@ -438,32 +473,41 @@ class H extends C.Component {
|
|
|
438
473
|
height: "30"
|
|
439
474
|
}
|
|
440
475
|
),
|
|
441
|
-
/* @__PURE__ */
|
|
476
|
+
/* @__PURE__ */ o(
|
|
442
477
|
"text",
|
|
443
478
|
{
|
|
444
479
|
x: this.state.isMobile ? this.mobileOptions.Cancers.x : this.localeXdims[this.props.intl.locale],
|
|
445
480
|
y: this.state.isMobile ? this.mobileOptions.Cancers.y : this.localeYDims[this.props.intl.locale],
|
|
446
481
|
className: "title",
|
|
447
|
-
|
|
482
|
+
"data-option": "Cancers",
|
|
483
|
+
children: /* @__PURE__ */ o(
|
|
484
|
+
x,
|
|
485
|
+
{
|
|
486
|
+
id: "ailments.title",
|
|
487
|
+
defaultMessage: "{cancers}",
|
|
488
|
+
values: { cancers: this.messages[this.props.intl.locale]["ailments.title"] }
|
|
489
|
+
}
|
|
490
|
+
)
|
|
448
491
|
}
|
|
449
492
|
),
|
|
450
|
-
this.state.isMobile && /* @__PURE__ */
|
|
493
|
+
this.state.isMobile && /* @__PURE__ */ o(
|
|
451
494
|
"rect",
|
|
452
495
|
{
|
|
453
496
|
className: "title-line",
|
|
454
497
|
x: this.state.isMobile ? this.mobileOptions.Cancers.x - 18 : "-250",
|
|
455
498
|
y: this.state.isMobile ? this.mobileOptions.Cancers.y + 7 : "",
|
|
456
|
-
width:
|
|
499
|
+
width: this.titleLineWidths.Cancers[this.props.intl.locale] || this.titleLineWidths.Cancers.en,
|
|
457
500
|
height: "3",
|
|
458
501
|
fill: "#E5EBED"
|
|
459
502
|
}
|
|
460
503
|
)
|
|
461
504
|
] }),
|
|
462
|
-
/* @__PURE__ */
|
|
463
|
-
/* @__PURE__ */
|
|
505
|
+
/* @__PURE__ */ f("g", { onClick: this.handleTextClick, children: [
|
|
506
|
+
/* @__PURE__ */ o(
|
|
464
507
|
"rect",
|
|
465
508
|
{
|
|
466
509
|
className: "title-rect",
|
|
510
|
+
"data-option": "OtherConditions",
|
|
467
511
|
x: this.state.isMobile ? this.mobileOptions.OtherConditions.x - 65 : "",
|
|
468
512
|
y: this.state.isMobile ? this.mobileOptions.OtherConditions.y - 20 : this.localeYDims[this.props.intl.locale],
|
|
469
513
|
rx: "5",
|
|
@@ -472,28 +516,30 @@ class H extends C.Component {
|
|
|
472
516
|
height: "30"
|
|
473
517
|
}
|
|
474
518
|
),
|
|
475
|
-
/* @__PURE__ */
|
|
519
|
+
/* @__PURE__ */ o(
|
|
476
520
|
"text",
|
|
477
521
|
{
|
|
478
522
|
x: this.state.isMobile ? this.mobileOptions.OtherConditions.x - 50 : "200",
|
|
479
523
|
y: this.state.isMobile ? this.mobileOptions.OtherConditions.y : this.localeYDims[this.props.intl.locale],
|
|
480
524
|
className: "title",
|
|
481
|
-
|
|
525
|
+
"data-option": "OtherConditions",
|
|
526
|
+
children: /* @__PURE__ */ o(
|
|
482
527
|
x,
|
|
483
528
|
{
|
|
484
529
|
id: "ailments.otherConditions",
|
|
485
|
-
defaultMessage: "
|
|
530
|
+
defaultMessage: "{otherConditions}",
|
|
531
|
+
values: { otherConditions: this.messages[this.props.intl.locale]["ailments.otherConditions"] }
|
|
486
532
|
}
|
|
487
533
|
)
|
|
488
534
|
}
|
|
489
535
|
),
|
|
490
|
-
this.state.isMobile && /* @__PURE__ */
|
|
536
|
+
this.state.isMobile && /* @__PURE__ */ o(
|
|
491
537
|
"rect",
|
|
492
538
|
{
|
|
493
539
|
className: "title-line",
|
|
494
540
|
x: this.state.isMobile ? this.mobileOptions.OtherConditions.x - 68 : "200",
|
|
495
541
|
y: this.state.isMobile ? this.mobileOptions.OtherConditions.y + 7 : "60",
|
|
496
|
-
width:
|
|
542
|
+
width: this.titleLineWidths.OtherConditions[this.props.intl.locale] || this.titleLineWidths.OtherConditions.en,
|
|
497
543
|
height: "3",
|
|
498
544
|
fill: "#E5EBED"
|
|
499
545
|
}
|
|
@@ -504,7 +550,7 @@ class H extends C.Component {
|
|
|
504
550
|
) });
|
|
505
551
|
}
|
|
506
552
|
}
|
|
507
|
-
const
|
|
553
|
+
const ne = $(I);
|
|
508
554
|
export {
|
|
509
|
-
|
|
555
|
+
ne as default
|
|
510
556
|
};
|