@reltio/components 1.4.1432 → 1.4.1434
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/cjs/components/BasicViewHeader/BasicViewHeader.js +3 -2
- package/cjs/components/DateIntervalSelector/DateIntervalSelector.js +4 -11
- package/cjs/components/ReltioMap/hooks/useFitMapBounds.d.ts +6 -0
- package/cjs/components/ReltioMap/hooks/useFitMapBounds.js +28 -0
- package/cjs/components/ReltioMap/index.js +46 -59
- package/cjs/components/activityLog/ActivityLogFilter/helpers.js +8 -2
- package/cjs/components/workflow/cards/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +1 -1
- package/esm/components/BasicViewHeader/BasicViewHeader.js +3 -2
- package/esm/components/DateIntervalSelector/DateIntervalSelector.js +4 -11
- package/esm/components/ReltioMap/hooks/useFitMapBounds.d.ts +6 -0
- package/esm/components/ReltioMap/hooks/useFitMapBounds.js +24 -0
- package/esm/components/ReltioMap/index.js +47 -60
- package/esm/components/activityLog/ActivityLogFilter/helpers.js +9 -3
- package/esm/components/workflow/cards/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +1 -1
- package/package.json +3 -3
|
@@ -26,14 +26,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
var react_1 = __importDefault(require("react"));
|
|
29
|
+
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
29
30
|
var Toolbar_1 = __importDefault(require("@material-ui/core/Toolbar"));
|
|
30
31
|
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
31
32
|
var styles_1 = require("./styles");
|
|
32
33
|
var BasicViewHeader = function (_a) {
|
|
33
|
-
var
|
|
34
|
+
var _b = _a.title, title = _b === void 0 ? '' : _b, _c = _a.children, children = _c === void 0 ? null : _c, _d = _a.classes, classes = _d === void 0 ? {} : _d, otherProps = __rest(_a, ["title", "children", "classes"]);
|
|
34
35
|
var styles = (0, styles_1.useStyles)();
|
|
35
36
|
return (react_1.default.createElement(Toolbar_1.default, __assign({ className: classes.root, classes: { root: styles.toolbar } }, otherProps),
|
|
36
|
-
react_1.default.createElement(Typography_1.default, { className: classes.title, classes: { root: styles.title }, variant: "h6" }, title),
|
|
37
|
+
react_1.default.createElement(Typography_1.default, { className: classes.title, classes: { root: styles.title }, variant: "h6" }, ui_i18n_1.default.text(title)),
|
|
37
38
|
children));
|
|
38
39
|
};
|
|
39
40
|
exports.default = BasicViewHeader;
|
|
@@ -5,20 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
7
|
var ramda_1 = require("ramda");
|
|
8
|
-
var
|
|
8
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
9
9
|
var capitalize_1 = __importDefault(require("@material-ui/core/utils/capitalize"));
|
|
10
10
|
var TextField_1 = __importDefault(require("@material-ui/core/TextField"));
|
|
11
11
|
var SimpleDropDownSelector_1 = __importDefault(require("../SimpleDropDownSelector/SimpleDropDownSelector"));
|
|
12
12
|
var utils_1 = require("../../core/utils");
|
|
13
13
|
var styles_1 = require("./styles");
|
|
14
|
-
var periods = [
|
|
15
|
-
ui_i18n_1.default.text('minutes'),
|
|
16
|
-
ui_i18n_1.default.text('hours'),
|
|
17
|
-
ui_i18n_1.default.text('days'),
|
|
18
|
-
ui_i18n_1.default.text('weeks'),
|
|
19
|
-
ui_i18n_1.default.text('months'),
|
|
20
|
-
ui_i18n_1.default.text('years')
|
|
21
|
-
];
|
|
14
|
+
var periods = ['minutes', 'hours', 'days', 'weeks', 'months', 'years'];
|
|
22
15
|
var DateIntervalSelector = function (_a) {
|
|
23
16
|
var _b = _a.interval, value = _b[0], unit = _b[1], onChange = _a.onChange, onFocus = _a.onFocus;
|
|
24
17
|
var styles = (0, styles_1.useStyles)();
|
|
@@ -31,9 +24,9 @@ var DateIntervalSelector = function (_a) {
|
|
|
31
24
|
var onUnitChange = (0, ramda_1.pipe)(getIntervalFromUnit, onChange);
|
|
32
25
|
return (react_1.default.createElement("div", { className: styles.root },
|
|
33
26
|
react_1.default.createElement(TextField_1.default, { type: "number", value: value || '', onChange: onNumberChange, inputProps: { min: 1, onFocus: onFocus }, InputProps: { classes: { root: styles.input } }, className: styles.inputNumber }),
|
|
34
|
-
react_1.default.createElement(SimpleDropDownSelector_1.default, { label: '', placeholder: (0, capitalize_1.default)(unit), className: styles.inputUnit, value: { value: unit, label: (0, capitalize_1.default)(unit) }, options: periods.map(function (value) { return ({
|
|
27
|
+
react_1.default.createElement(SimpleDropDownSelector_1.default, { label: '', placeholder: (0, capitalize_1.default)(unit), className: styles.inputUnit, value: { value: unit, label: (0, capitalize_1.default)((0, mdm_sdk_1.getIntervalUnitLabel)(unit)) }, options: periods.map(function (value) { return ({
|
|
35
28
|
value: value,
|
|
36
|
-
label: (0, capitalize_1.default)(value)
|
|
29
|
+
label: (0, capitalize_1.default)((0, mdm_sdk_1.getIntervalUnitLabel)(value))
|
|
37
30
|
}); }), onChange: onUnitChange, TextFieldProps: {
|
|
38
31
|
inputProps: { onFocus: onFocus },
|
|
39
32
|
InputProps: { classes: { root: styles.input } }
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFitMapBounds = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var hooks_1 = require("../../../hooks");
|
|
6
|
+
var helpers_1 = require("../helpers");
|
|
7
|
+
var useFitMapBounds = function (_a) {
|
|
8
|
+
var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
|
|
9
|
+
var apiIsLoaded = Boolean(map && window.google);
|
|
10
|
+
var prevMarkers = (0, hooks_1.usePrevious)(markers);
|
|
11
|
+
var prevActiveOverlay = (0, hooks_1.usePrevious)(activeOverlay);
|
|
12
|
+
var prevApiIsLoaded = (0, hooks_1.usePrevious)(apiIsLoaded);
|
|
13
|
+
(0, react_1.useEffect)(function () {
|
|
14
|
+
var activeOverlayChanged = prevActiveOverlay !== activeOverlay;
|
|
15
|
+
var markersChanged = prevMarkers !== markers;
|
|
16
|
+
var apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;
|
|
17
|
+
var shouldUseFitMapBoundsForOverlay = apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);
|
|
18
|
+
var shouldUseFitMapBoundsForMarkers = apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);
|
|
19
|
+
if (shouldUseFitMapBoundsForMarkers) {
|
|
20
|
+
(0, helpers_1.fitMapBoundsForMarkers)(markers, map, activeOverlay);
|
|
21
|
+
}
|
|
22
|
+
else if (shouldUseFitMapBoundsForOverlay) {
|
|
23
|
+
(0, helpers_1.fitMapBoundsForOverlay)(map, activeOverlay);
|
|
24
|
+
}
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, [apiIsLoaded, markers, activeOverlay]);
|
|
27
|
+
};
|
|
28
|
+
exports.useFitMapBounds = useFitMapBounds;
|
|
@@ -47,39 +47,24 @@ var TopCenterMapControls_1 = require("./MapControls/TopCenterMapControls/TopCent
|
|
|
47
47
|
var helpers_1 = require("./helpers");
|
|
48
48
|
var EntityMarker_1 = __importDefault(require("./EntityMarker/EntityMarker"));
|
|
49
49
|
var constants_1 = require("../../constants");
|
|
50
|
+
var useFitMapBounds_1 = require("./hooks/useFitMapBounds");
|
|
50
51
|
var styles_1 = require("./styles");
|
|
51
|
-
var hooks_1 = require("../../hooks");
|
|
52
52
|
var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
|
|
53
53
|
var libraries = ['drawing'];
|
|
54
|
-
var useFitMapBounds = function (_a) {
|
|
55
|
-
var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
|
|
56
|
-
var prevMarkers = (0, hooks_1.usePrevious)(markers);
|
|
57
|
-
var prevActiveOverlay = (0, hooks_1.usePrevious)(activeOverlay);
|
|
58
|
-
var apiIsLoaded = map && window.google;
|
|
59
|
-
(0, react_1.useEffect)(function () {
|
|
60
|
-
if (apiIsLoaded && !isSearchOnMapMove && markers.length && markers !== prevMarkers) {
|
|
61
|
-
(0, helpers_1.fitMapBoundsForMarkers)(markers, map, activeOverlay);
|
|
62
|
-
}
|
|
63
|
-
else if (apiIsLoaded && activeOverlay && activeOverlay !== prevActiveOverlay) {
|
|
64
|
-
(0, helpers_1.fitMapBoundsForOverlay)(map, activeOverlay);
|
|
65
|
-
}
|
|
66
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
|
-
}, [map, markers, activeOverlay]);
|
|
68
|
-
};
|
|
69
54
|
var ReltioMap = function (_a) {
|
|
70
|
-
var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay,
|
|
55
|
+
var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, _c = _a.overlayOptions, overlayOptions = _c === void 0 ? {} : _c, _d = _a.drawingModes, drawingModes = _d === void 0 ? [] : _d, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, _e = _a.mapOptions, mapOptions = _e === void 0 ? {} : _e, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
|
|
71
56
|
var styles = (0, styles_1.useStyles)();
|
|
72
|
-
var
|
|
57
|
+
var _f = (0, api_1.useJsApiLoader)({
|
|
73
58
|
googleMapsApiKey: mapKey,
|
|
74
59
|
libraries: libraries
|
|
75
|
-
}), isLoaded =
|
|
60
|
+
}), isLoaded = _f.isLoaded, loadError = _f.loadError;
|
|
76
61
|
var mapMoveEndTimer = (0, react_1.useRef)(null);
|
|
77
|
-
var
|
|
78
|
-
var
|
|
79
|
-
var
|
|
80
|
-
useFitMapBounds({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
|
|
81
|
-
var allOverlayOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS),
|
|
82
|
-
var googleMapOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_GOOGLE_MAP_OPTIONS),
|
|
62
|
+
var _g = (0, react_1.useState)(null), map = _g[0], setMap = _g[1];
|
|
63
|
+
var _h = (0, react_1.useState)(null), polygon = _h[0], setPolygon = _h[1];
|
|
64
|
+
var _j = (0, react_1.useState)(null), drawingMode = _j[0], setDrawingMode = _j[1];
|
|
65
|
+
(0, useFitMapBounds_1.useFitMapBounds)({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
|
|
66
|
+
var allOverlayOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS), overlayOptions)); }, [overlayOptions]);
|
|
67
|
+
var googleMapOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_GOOGLE_MAP_OPTIONS), mapOptions)); }, [mapOptions]);
|
|
83
68
|
var handleChangeIsSearchOnMapMove = (0, react_1.useCallback)(function (isSearchOnMapMove) {
|
|
84
69
|
onMapBoundsChanged(isSearchOnMapMove ? (0, helpers_1.getMapBoundsPolygon)(map) : null);
|
|
85
70
|
setDrawingMode(null);
|
|
@@ -89,39 +74,39 @@ var ReltioMap = function (_a) {
|
|
|
89
74
|
clearTimeout(mapMoveEndTimer.current);
|
|
90
75
|
}, []);
|
|
91
76
|
var handleMapMoveEnd = (0, react_1.useCallback)(function () {
|
|
92
|
-
if (isSearchOnMapMove)
|
|
93
|
-
|
|
94
|
-
|
|
77
|
+
if (!isSearchOnMapMove)
|
|
78
|
+
return;
|
|
79
|
+
onMapBoundsChanged((0, helpers_1.getMapBoundsPolygon)(map));
|
|
95
80
|
}, [isSearchOnMapMove, map, onMapBoundsChanged]);
|
|
96
81
|
var handleMapIdle = (0, react_1.useCallback)(function () {
|
|
97
|
-
if (isSearchOnMapMove)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
82
|
+
if (!isSearchOnMapMove)
|
|
83
|
+
return;
|
|
84
|
+
clearTimeout(mapMoveEndTimer.current);
|
|
85
|
+
mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
|
|
101
86
|
}, [handleMapMoveEnd, isSearchOnMapMove]);
|
|
102
87
|
var handleOverlayChange = (0, react_1.useCallback)(function (e, propOverlay) {
|
|
103
88
|
var _a;
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
89
|
+
var _b;
|
|
90
|
+
var polygonStateOverlay = polygon && { type: constants_1.MAP_DRAWING_MODES.POLYGON, overlay: polygon };
|
|
91
|
+
var stateOverlay = propOverlay || polygonStateOverlay;
|
|
92
|
+
if ((0, ramda_1.isEmpty)(stateOverlay) || !onOverlayUpdated)
|
|
93
|
+
return;
|
|
94
|
+
var overlay = stateOverlay.overlay, type = stateOverlay.type;
|
|
95
|
+
var getPolygonLatLngCoordinates = function () {
|
|
96
|
+
return overlay
|
|
97
|
+
.getPath()
|
|
98
|
+
.getArray()
|
|
99
|
+
.map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
|
|
100
|
+
};
|
|
101
|
+
var getCircleParameters = function () { return ({ radius: overlay.getRadius() / 1000, center: overlay.getCenter() }); };
|
|
102
|
+
var typeActions = (_a = {},
|
|
103
|
+
_a[constants_1.MAP_DRAWING_MODES.POLYGON] = getPolygonLatLngCoordinates,
|
|
104
|
+
_a[constants_1.MAP_DRAWING_MODES.CIRCLE] = getCircleParameters,
|
|
105
|
+
_a);
|
|
106
|
+
var data = (_b = typeActions[type]) === null || _b === void 0 ? void 0 : _b.call(typeActions);
|
|
107
|
+
if (!data)
|
|
108
|
+
return;
|
|
109
|
+
onOverlayUpdated({ data: data, type: type });
|
|
125
110
|
}, [onOverlayUpdated, polygon]);
|
|
126
111
|
var handleOverlayComplete = (0, react_1.useCallback)(function (type) { return function (overlay) {
|
|
127
112
|
handleOverlayChange(null, { type: type, overlay: overlay });
|
|
@@ -145,16 +130,18 @@ var ReltioMap = function (_a) {
|
|
|
145
130
|
if (!isLoaded) {
|
|
146
131
|
return loadingElement;
|
|
147
132
|
}
|
|
133
|
+
var shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);
|
|
134
|
+
var shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);
|
|
135
|
+
var shouldRenderCenterMapControls = map && isSearchEnabled;
|
|
136
|
+
var shouldRenderPolygon = !(0, helpers_1.getDrawingMode)(drawingMode) && activeOverlay && (0, ramda_1.propEq)('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay);
|
|
148
137
|
return (react_1.default.createElement(api_1.GoogleMap, { mapTypeId: window.google.maps.MapTypeId.ROADMAP, options: googleMapOptions, onLoad: setMap, zoom: defaultZoom, center: defaultCenter, onZoomChanged: handleMapMoveStart, onDragStart: handleMapMoveStart, onIdle: handleMapIdle, mapContainerClassName: mapContainerClassName },
|
|
149
|
-
|
|
138
|
+
shouldRenderRightMapControls && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
|
|
150
139
|
react_1.default.createElement(TopRightMapControls_1.TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
|
|
151
|
-
|
|
140
|
+
shouldRenderCenterMapControls && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
|
|
152
141
|
react_1.default.createElement(TopCenterMapControls_1.TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
|
|
153
142
|
markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
(0, ramda_1.propEq)('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay) && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
|
|
157
|
-
isSearchEnabled && Boolean(drawingModes.length) && (react_1.default.createElement(api_1.DrawingManager, { onPolygonComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.CIRCLE), drawingMode: (0, helpers_1.getDrawingMode)(drawingMode), options: {
|
|
143
|
+
shouldRenderPolygon && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
|
|
144
|
+
shouldRenderDrawingManager && (react_1.default.createElement(api_1.DrawingManager, { onPolygonComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.CIRCLE), drawingMode: (0, helpers_1.getDrawingMode)(drawingMode), options: {
|
|
158
145
|
drawingControl: false,
|
|
159
146
|
circleOptions: allOverlayOptions,
|
|
160
147
|
polygonOptions: allOverlayOptions
|
|
@@ -25,9 +25,15 @@ var getFilterLabel = function (filters) {
|
|
|
25
25
|
};
|
|
26
26
|
switch (date.type) {
|
|
27
27
|
case mdm_sdk_1.DateRangeTypes.WITHIN:
|
|
28
|
-
return ui_i18n_1.default.text('Within ${amount} ${unit}', {
|
|
28
|
+
return ui_i18n_1.default.text('Within ${amount} ${unit}', {
|
|
29
|
+
amount: date.period[0],
|
|
30
|
+
unit: (0, mdm_sdk_1.getIntervalUnitLabel)(date.period[1])
|
|
31
|
+
});
|
|
29
32
|
case mdm_sdk_1.DateRangeTypes.AGO:
|
|
30
|
-
return ui_i18n_1.default.text('More than ${amount} ${unit} ago', {
|
|
33
|
+
return ui_i18n_1.default.text('More than ${amount} ${unit} ago', {
|
|
34
|
+
amount: date.period[0],
|
|
35
|
+
unit: (0, mdm_sdk_1.getIntervalUnitLabel)(date.period[1])
|
|
36
|
+
});
|
|
31
37
|
case mdm_sdk_1.DateRangeTypes.BETWEEN:
|
|
32
38
|
return ui_i18n_1.default.text('${startDate} to ${endDate}', {
|
|
33
39
|
startDate: formatDateValue(date.period[0]),
|
|
@@ -61,7 +61,7 @@ var GenericWorkflowTaskCard = function (_a) {
|
|
|
61
61
|
react_1.default.createElement(LineDecorator_1.default, { plain: true, first: true, transparent: !isExpanded },
|
|
62
62
|
react_1.default.createElement("div", { className: styles.mainInfo },
|
|
63
63
|
react_1.default.createElement("div", { className: styles.title },
|
|
64
|
-
react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.caption, styles.flex) }, processDefinitionDisplayName),
|
|
64
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.caption, styles.flex) }, ui_i18n_1.default.text(processDefinitionDisplayName)),
|
|
65
65
|
react_1.default.createElement(Flag_1.default, { className: styles.flag }),
|
|
66
66
|
react_1.default.createElement(Tooltip_1.default, { title: ui_i18n_1.default.text('Due date') },
|
|
67
67
|
react_1.default.createElement("span", { className: styles.date }, ui_i18n_1.default.date(dueDate, 'L'))),
|
|
@@ -21,14 +21,15 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
import React from 'react';
|
|
24
|
+
import i18n from 'ui-i18n';
|
|
24
25
|
import Toolbar from '@material-ui/core/Toolbar';
|
|
25
26
|
import Typography from '@material-ui/core/Typography';
|
|
26
27
|
import { useStyles } from './styles';
|
|
27
28
|
var BasicViewHeader = function (_a) {
|
|
28
|
-
var
|
|
29
|
+
var _b = _a.title, title = _b === void 0 ? '' : _b, _c = _a.children, children = _c === void 0 ? null : _c, _d = _a.classes, classes = _d === void 0 ? {} : _d, otherProps = __rest(_a, ["title", "children", "classes"]);
|
|
29
30
|
var styles = useStyles();
|
|
30
31
|
return (React.createElement(Toolbar, __assign({ className: classes.root, classes: { root: styles.toolbar } }, otherProps),
|
|
31
|
-
React.createElement(Typography, { className: classes.title, classes: { root: styles.title }, variant: "h6" }, title),
|
|
32
|
+
React.createElement(Typography, { className: classes.title, classes: { root: styles.title }, variant: "h6" }, i18n.text(title)),
|
|
32
33
|
children));
|
|
33
34
|
};
|
|
34
35
|
export default BasicViewHeader;
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { pipe } from 'ramda';
|
|
3
|
-
import
|
|
3
|
+
import { getIntervalUnitLabel } from '@reltio/mdm-sdk';
|
|
4
4
|
import capitalize from '@material-ui/core/utils/capitalize';
|
|
5
5
|
import TextField from '@material-ui/core/TextField';
|
|
6
6
|
import SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';
|
|
7
7
|
import { getValue } from '../../core/utils';
|
|
8
8
|
import { useStyles } from './styles';
|
|
9
|
-
var periods = [
|
|
10
|
-
i18n.text('minutes'),
|
|
11
|
-
i18n.text('hours'),
|
|
12
|
-
i18n.text('days'),
|
|
13
|
-
i18n.text('weeks'),
|
|
14
|
-
i18n.text('months'),
|
|
15
|
-
i18n.text('years')
|
|
16
|
-
];
|
|
9
|
+
var periods = ['minutes', 'hours', 'days', 'weeks', 'months', 'years'];
|
|
17
10
|
var DateIntervalSelector = function (_a) {
|
|
18
11
|
var _b = _a.interval, value = _b[0], unit = _b[1], onChange = _a.onChange, onFocus = _a.onFocus;
|
|
19
12
|
var styles = useStyles();
|
|
@@ -26,9 +19,9 @@ var DateIntervalSelector = function (_a) {
|
|
|
26
19
|
var onUnitChange = pipe(getIntervalFromUnit, onChange);
|
|
27
20
|
return (React.createElement("div", { className: styles.root },
|
|
28
21
|
React.createElement(TextField, { type: "number", value: value || '', onChange: onNumberChange, inputProps: { min: 1, onFocus: onFocus }, InputProps: { classes: { root: styles.input } }, className: styles.inputNumber }),
|
|
29
|
-
React.createElement(SimpleDropDownSelector, { label: '', placeholder: capitalize(unit), className: styles.inputUnit, value: { value: unit, label: capitalize(unit) }, options: periods.map(function (value) { return ({
|
|
22
|
+
React.createElement(SimpleDropDownSelector, { label: '', placeholder: capitalize(unit), className: styles.inputUnit, value: { value: unit, label: capitalize(getIntervalUnitLabel(unit)) }, options: periods.map(function (value) { return ({
|
|
30
23
|
value: value,
|
|
31
|
-
label: capitalize(value)
|
|
24
|
+
label: capitalize(getIntervalUnitLabel(value))
|
|
32
25
|
}); }), onChange: onUnitChange, TextFieldProps: {
|
|
33
26
|
inputProps: { onFocus: onFocus },
|
|
34
27
|
InputProps: { classes: { root: styles.input } }
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { usePrevious } from '../../../hooks';
|
|
3
|
+
import { fitMapBoundsForMarkers, fitMapBoundsForOverlay } from '../helpers';
|
|
4
|
+
export var useFitMapBounds = function (_a) {
|
|
5
|
+
var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
|
|
6
|
+
var apiIsLoaded = Boolean(map && window.google);
|
|
7
|
+
var prevMarkers = usePrevious(markers);
|
|
8
|
+
var prevActiveOverlay = usePrevious(activeOverlay);
|
|
9
|
+
var prevApiIsLoaded = usePrevious(apiIsLoaded);
|
|
10
|
+
useEffect(function () {
|
|
11
|
+
var activeOverlayChanged = prevActiveOverlay !== activeOverlay;
|
|
12
|
+
var markersChanged = prevMarkers !== markers;
|
|
13
|
+
var apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;
|
|
14
|
+
var shouldUseFitMapBoundsForOverlay = apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);
|
|
15
|
+
var shouldUseFitMapBoundsForMarkers = apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);
|
|
16
|
+
if (shouldUseFitMapBoundsForMarkers) {
|
|
17
|
+
fitMapBoundsForMarkers(markers, map, activeOverlay);
|
|
18
|
+
}
|
|
19
|
+
else if (shouldUseFitMapBoundsForOverlay) {
|
|
20
|
+
fitMapBoundsForOverlay(map, activeOverlay);
|
|
21
|
+
}
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
23
|
+
}, [apiIsLoaded, markers, activeOverlay]);
|
|
24
|
+
};
|
|
@@ -9,48 +9,33 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
import React, { useCallback,
|
|
12
|
+
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
13
13
|
import { propEq, isEmpty, prop } from 'ramda';
|
|
14
14
|
import { GoogleMap, useJsApiLoader, Polygon, DrawingManager, MarkerClusterer } from '@react-google-maps/api';
|
|
15
15
|
import { MapControlContainer } from './MapControls/MapControlContainer/MapControlContrainer';
|
|
16
16
|
import { TopRightMapControls } from './MapControls/TopRightMapControls/TopRightMapControls';
|
|
17
17
|
import { TopCenterMapControls } from './MapControls/TopCenterMapControls/TopCenterMapControls';
|
|
18
|
-
import { getMapBoundsPolygon, getDrawingMode
|
|
18
|
+
import { getMapBoundsPolygon, getDrawingMode } from './helpers';
|
|
19
19
|
import EntityMarker from './EntityMarker/EntityMarker';
|
|
20
20
|
import { DEFAULT_GOOGLE_MAP_OPTIONS, DEFAULT_OVERLAY_OPTIONS, MAP_DRAWING_MODES } from '../../constants';
|
|
21
|
+
import { useFitMapBounds } from './hooks/useFitMapBounds';
|
|
21
22
|
import { useStyles } from './styles';
|
|
22
|
-
import { usePrevious } from '../../hooks';
|
|
23
23
|
var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
|
|
24
24
|
var libraries = ['drawing'];
|
|
25
|
-
var useFitMapBounds = function (_a) {
|
|
26
|
-
var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
|
|
27
|
-
var prevMarkers = usePrevious(markers);
|
|
28
|
-
var prevActiveOverlay = usePrevious(activeOverlay);
|
|
29
|
-
var apiIsLoaded = map && window.google;
|
|
30
|
-
useEffect(function () {
|
|
31
|
-
if (apiIsLoaded && !isSearchOnMapMove && markers.length && markers !== prevMarkers) {
|
|
32
|
-
fitMapBoundsForMarkers(markers, map, activeOverlay);
|
|
33
|
-
}
|
|
34
|
-
else if (apiIsLoaded && activeOverlay && activeOverlay !== prevActiveOverlay) {
|
|
35
|
-
fitMapBoundsForOverlay(map, activeOverlay);
|
|
36
|
-
}
|
|
37
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
-
}, [map, markers, activeOverlay]);
|
|
39
|
-
};
|
|
40
25
|
export var ReltioMap = function (_a) {
|
|
41
|
-
var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay,
|
|
26
|
+
var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, _c = _a.overlayOptions, overlayOptions = _c === void 0 ? {} : _c, _d = _a.drawingModes, drawingModes = _d === void 0 ? [] : _d, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, _e = _a.mapOptions, mapOptions = _e === void 0 ? {} : _e, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
|
|
42
27
|
var styles = useStyles();
|
|
43
|
-
var
|
|
28
|
+
var _f = useJsApiLoader({
|
|
44
29
|
googleMapsApiKey: mapKey,
|
|
45
30
|
libraries: libraries
|
|
46
|
-
}), isLoaded =
|
|
31
|
+
}), isLoaded = _f.isLoaded, loadError = _f.loadError;
|
|
47
32
|
var mapMoveEndTimer = useRef(null);
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
33
|
+
var _g = useState(null), map = _g[0], setMap = _g[1];
|
|
34
|
+
var _h = useState(null), polygon = _h[0], setPolygon = _h[1];
|
|
35
|
+
var _j = useState(null), drawingMode = _j[0], setDrawingMode = _j[1];
|
|
51
36
|
useFitMapBounds({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
|
|
52
|
-
var allOverlayOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_OVERLAY_OPTIONS),
|
|
53
|
-
var googleMapOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_GOOGLE_MAP_OPTIONS),
|
|
37
|
+
var allOverlayOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_OVERLAY_OPTIONS), overlayOptions)); }, [overlayOptions]);
|
|
38
|
+
var googleMapOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_GOOGLE_MAP_OPTIONS), mapOptions)); }, [mapOptions]);
|
|
54
39
|
var handleChangeIsSearchOnMapMove = useCallback(function (isSearchOnMapMove) {
|
|
55
40
|
onMapBoundsChanged(isSearchOnMapMove ? getMapBoundsPolygon(map) : null);
|
|
56
41
|
setDrawingMode(null);
|
|
@@ -60,39 +45,39 @@ export var ReltioMap = function (_a) {
|
|
|
60
45
|
clearTimeout(mapMoveEndTimer.current);
|
|
61
46
|
}, []);
|
|
62
47
|
var handleMapMoveEnd = useCallback(function () {
|
|
63
|
-
if (isSearchOnMapMove)
|
|
64
|
-
|
|
65
|
-
|
|
48
|
+
if (!isSearchOnMapMove)
|
|
49
|
+
return;
|
|
50
|
+
onMapBoundsChanged(getMapBoundsPolygon(map));
|
|
66
51
|
}, [isSearchOnMapMove, map, onMapBoundsChanged]);
|
|
67
52
|
var handleMapIdle = useCallback(function () {
|
|
68
|
-
if (isSearchOnMapMove)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
53
|
+
if (!isSearchOnMapMove)
|
|
54
|
+
return;
|
|
55
|
+
clearTimeout(mapMoveEndTimer.current);
|
|
56
|
+
mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
|
|
72
57
|
}, [handleMapMoveEnd, isSearchOnMapMove]);
|
|
73
58
|
var handleOverlayChange = useCallback(function (e, propOverlay) {
|
|
74
59
|
var _a;
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
60
|
+
var _b;
|
|
61
|
+
var polygonStateOverlay = polygon && { type: MAP_DRAWING_MODES.POLYGON, overlay: polygon };
|
|
62
|
+
var stateOverlay = propOverlay || polygonStateOverlay;
|
|
63
|
+
if (isEmpty(stateOverlay) || !onOverlayUpdated)
|
|
64
|
+
return;
|
|
65
|
+
var overlay = stateOverlay.overlay, type = stateOverlay.type;
|
|
66
|
+
var getPolygonLatLngCoordinates = function () {
|
|
67
|
+
return overlay
|
|
68
|
+
.getPath()
|
|
69
|
+
.getArray()
|
|
70
|
+
.map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
|
|
71
|
+
};
|
|
72
|
+
var getCircleParameters = function () { return ({ radius: overlay.getRadius() / 1000, center: overlay.getCenter() }); };
|
|
73
|
+
var typeActions = (_a = {},
|
|
74
|
+
_a[MAP_DRAWING_MODES.POLYGON] = getPolygonLatLngCoordinates,
|
|
75
|
+
_a[MAP_DRAWING_MODES.CIRCLE] = getCircleParameters,
|
|
76
|
+
_a);
|
|
77
|
+
var data = (_b = typeActions[type]) === null || _b === void 0 ? void 0 : _b.call(typeActions);
|
|
78
|
+
if (!data)
|
|
79
|
+
return;
|
|
80
|
+
onOverlayUpdated({ data: data, type: type });
|
|
96
81
|
}, [onOverlayUpdated, polygon]);
|
|
97
82
|
var handleOverlayComplete = useCallback(function (type) { return function (overlay) {
|
|
98
83
|
handleOverlayChange(null, { type: type, overlay: overlay });
|
|
@@ -116,16 +101,18 @@ export var ReltioMap = function (_a) {
|
|
|
116
101
|
if (!isLoaded) {
|
|
117
102
|
return loadingElement;
|
|
118
103
|
}
|
|
104
|
+
var shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);
|
|
105
|
+
var shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);
|
|
106
|
+
var shouldRenderCenterMapControls = map && isSearchEnabled;
|
|
107
|
+
var shouldRenderPolygon = !getDrawingMode(drawingMode) && activeOverlay && propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay);
|
|
119
108
|
return (React.createElement(GoogleMap, { mapTypeId: window.google.maps.MapTypeId.ROADMAP, options: googleMapOptions, onLoad: setMap, zoom: defaultZoom, center: defaultCenter, onZoomChanged: handleMapMoveStart, onDragStart: handleMapMoveStart, onIdle: handleMapIdle, mapContainerClassName: mapContainerClassName },
|
|
120
|
-
|
|
109
|
+
shouldRenderRightMapControls && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
|
|
121
110
|
React.createElement(TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
|
|
122
|
-
|
|
111
|
+
shouldRenderCenterMapControls && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
|
|
123
112
|
React.createElement(TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
|
|
124
113
|
markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay) && (React.createElement(Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
|
|
128
|
-
isSearchEnabled && Boolean(drawingModes.length) && (React.createElement(DrawingManager, { onPolygonComplete: handleOverlayComplete(MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE), drawingMode: getDrawingMode(drawingMode), options: {
|
|
114
|
+
shouldRenderPolygon && (React.createElement(Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
|
|
115
|
+
shouldRenderDrawingManager && (React.createElement(DrawingManager, { onPolygonComplete: handleOverlayComplete(MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE), drawingMode: getDrawingMode(drawingMode), options: {
|
|
129
116
|
drawingControl: false,
|
|
130
117
|
circleOptions: allOverlayOptions,
|
|
131
118
|
polygonOptions: allOverlayOptions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import i18n from 'ui-i18n';
|
|
2
2
|
import { curry, join, identity, isNil, map, pipe, reject, sortBy, defaultTo, pluck } from 'ramda';
|
|
3
|
-
import { DataTypes, formatDataTypeValue, DateRangeTypes } from '@reltio/mdm-sdk';
|
|
3
|
+
import { DataTypes, formatDataTypeValue, DateRangeTypes, getIntervalUnitLabel } from '@reltio/mdm-sdk';
|
|
4
4
|
import { getActivityLabel } from '../utils/activities';
|
|
5
5
|
export var getFilterLabel = function (filters) {
|
|
6
6
|
var getLabel = curry(function (unit, pluralUnit, values) {
|
|
@@ -19,9 +19,15 @@ export var getFilterLabel = function (filters) {
|
|
|
19
19
|
};
|
|
20
20
|
switch (date.type) {
|
|
21
21
|
case DateRangeTypes.WITHIN:
|
|
22
|
-
return i18n.text('Within ${amount} ${unit}', {
|
|
22
|
+
return i18n.text('Within ${amount} ${unit}', {
|
|
23
|
+
amount: date.period[0],
|
|
24
|
+
unit: getIntervalUnitLabel(date.period[1])
|
|
25
|
+
});
|
|
23
26
|
case DateRangeTypes.AGO:
|
|
24
|
-
return i18n.text('More than ${amount} ${unit} ago', {
|
|
27
|
+
return i18n.text('More than ${amount} ${unit} ago', {
|
|
28
|
+
amount: date.period[0],
|
|
29
|
+
unit: getIntervalUnitLabel(date.period[1])
|
|
30
|
+
});
|
|
25
31
|
case DateRangeTypes.BETWEEN:
|
|
26
32
|
return i18n.text('${startDate} to ${endDate}', {
|
|
27
33
|
startDate: formatDateValue(date.period[0]),
|
|
@@ -33,7 +33,7 @@ var GenericWorkflowTaskCard = function (_a) {
|
|
|
33
33
|
React.createElement(LineDecorator, { plain: true, first: true, transparent: !isExpanded },
|
|
34
34
|
React.createElement("div", { className: styles.mainInfo },
|
|
35
35
|
React.createElement("div", { className: styles.title },
|
|
36
|
-
React.createElement("div", { className: classnames(styles.caption, styles.flex) }, processDefinitionDisplayName),
|
|
36
|
+
React.createElement("div", { className: classnames(styles.caption, styles.flex) }, i18n.text(processDefinitionDisplayName)),
|
|
37
37
|
React.createElement(FlagIcon, { className: styles.flag }),
|
|
38
38
|
React.createElement(Tooltip, { title: i18n.text('Due date') },
|
|
39
39
|
React.createElement("span", { className: styles.date }, i18n.date(dueDate, 'L'))),
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1434",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@date-io/moment": "^1.3.5",
|
|
9
9
|
"@react-google-maps/api": "2.7.0",
|
|
10
|
-
"@reltio/mdm-module": "^1.4.
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
10
|
+
"@reltio/mdm-module": "^1.4.1434",
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1434",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-cloud": "^1.2.5",
|
|
14
14
|
"d3-geo": "^2.0.1",
|