@plusscommunities/pluss-circles-web-groups 1.5.11-beta.2 → 1.5.11-beta.4
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/index.cjs.js +108 -91
- package/dist/index.esm.js +108 -91
- package/dist/index.umd.js +108 -91
- package/package.json +1 -1
- package/package.json-e +1 -1
- package/src/components/AnalyticsHub.js +170 -140
package/dist/index.cjs.js
CHANGED
|
@@ -784,14 +784,14 @@ var Circles$1 = reactRedux.connect(mapStateToProps$3, {
|
|
|
784
784
|
circleRemoved
|
|
785
785
|
})(Circles);
|
|
786
786
|
|
|
787
|
-
function ownKeys$
|
|
788
|
-
function _objectSpread$
|
|
787
|
+
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
788
|
+
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
789
789
|
const {
|
|
790
790
|
Actions: Actions$1,
|
|
791
791
|
Components: Components$3,
|
|
792
792
|
Session: Session$2,
|
|
793
793
|
Apis,
|
|
794
|
-
Colours: Colours$
|
|
794
|
+
Colours: Colours$3,
|
|
795
795
|
Helper: Helper$2
|
|
796
796
|
} = PlussCore__namespace;
|
|
797
797
|
class AddCircle extends React.Component {
|
|
@@ -810,7 +810,7 @@ class AddCircle extends React.Component {
|
|
|
810
810
|
users: ___default["default"].sortBy(res.data.results.Items, u => {
|
|
811
811
|
return (u.displayName || "").toLowerCase();
|
|
812
812
|
}).map(u => {
|
|
813
|
-
return _objectSpread$
|
|
813
|
+
return _objectSpread$5(_objectSpread$5({}, u), {}, {
|
|
814
814
|
userId: u.userId || u.Id
|
|
815
815
|
});
|
|
816
816
|
})
|
|
@@ -1188,7 +1188,7 @@ class AddCircle extends React.Component {
|
|
|
1188
1188
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.SVGIcon, {
|
|
1189
1189
|
className: "removeIcon marginLeft-8",
|
|
1190
1190
|
icon: "close",
|
|
1191
|
-
colour: Colours$
|
|
1191
|
+
colour: Colours$3.COLOUR_DUSK,
|
|
1192
1192
|
onClick: () => {
|
|
1193
1193
|
this.onSelectUser(user);
|
|
1194
1194
|
}
|
|
@@ -1238,14 +1238,14 @@ var AddCircle$1 = reactRedux.connect(mapStateToProps$2, {
|
|
|
1238
1238
|
addRecentlyCreated: Actions$1.addRecentlyCreated
|
|
1239
1239
|
})(reactRouter.withRouter(AddCircle));
|
|
1240
1240
|
|
|
1241
|
-
function ownKeys$
|
|
1242
|
-
function _objectSpread$
|
|
1241
|
+
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1242
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1243
1243
|
const {
|
|
1244
1244
|
Components: Components$2,
|
|
1245
1245
|
Helper: Helper$1,
|
|
1246
1246
|
Actions,
|
|
1247
1247
|
Session: Session$1,
|
|
1248
|
-
Colours: Colours$
|
|
1248
|
+
Colours: Colours$2
|
|
1249
1249
|
} = PlussCore__namespace;
|
|
1250
1250
|
class Circle extends React.Component {
|
|
1251
1251
|
constructor(props) {
|
|
@@ -1416,7 +1416,7 @@ class Circle extends React.Component {
|
|
|
1416
1416
|
// Optimistically update UI - mark as deleted immediately
|
|
1417
1417
|
const updatedMessages = this.state.messages.map(m => {
|
|
1418
1418
|
if (m._id === messageToDelete._id) {
|
|
1419
|
-
return _objectSpread$
|
|
1419
|
+
return _objectSpread$4(_objectSpread$4({}, m), {}, {
|
|
1420
1420
|
deleted: true,
|
|
1421
1421
|
text: " "
|
|
1422
1422
|
});
|
|
@@ -1845,7 +1845,7 @@ class Circle extends React.Component {
|
|
|
1845
1845
|
onClick: () => {
|
|
1846
1846
|
this.onReply(null);
|
|
1847
1847
|
},
|
|
1848
|
-
colour: Colours$
|
|
1848
|
+
colour: Colours$2.COLOUR_DUSK
|
|
1849
1849
|
})));
|
|
1850
1850
|
}
|
|
1851
1851
|
renderDeleteConfirmPopup() {
|
|
@@ -1908,7 +1908,7 @@ class Circle extends React.Component {
|
|
|
1908
1908
|
showMessageDate: !this.state.showMessageDate
|
|
1909
1909
|
}),
|
|
1910
1910
|
rightContent: !___default["default"].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default["default"].createElement(Components$2.SVGIcon, {
|
|
1911
|
-
colour: Colours$
|
|
1911
|
+
colour: Colours$2.COLOUR_DUSK_LIGHT,
|
|
1912
1912
|
icon: "close",
|
|
1913
1913
|
className: "timepicker_clear",
|
|
1914
1914
|
onClick: this.onClearDate
|
|
@@ -1947,11 +1947,14 @@ var Circle$1 = reactRedux.connect(mapStateToProps$1, {
|
|
|
1947
1947
|
setNavData: Actions.setNavData
|
|
1948
1948
|
})(Circle);
|
|
1949
1949
|
|
|
1950
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1951
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1950
1952
|
const {
|
|
1951
1953
|
Analytics: Analytics$1,
|
|
1952
1954
|
Session,
|
|
1953
1955
|
Components: Components$1,
|
|
1954
|
-
Helper
|
|
1956
|
+
Helper,
|
|
1957
|
+
Colours: Colours$1
|
|
1955
1958
|
} = PlussCore__namespace;
|
|
1956
1959
|
const getInitialState = () => ({
|
|
1957
1960
|
isLoading: true,
|
|
@@ -2040,84 +2043,97 @@ const AnalyticsHub = _ref => {
|
|
|
2040
2043
|
getData();
|
|
2041
2044
|
}, [startTime, endTime, userType, userCategory, selectedSites]);
|
|
2042
2045
|
const getData = async () => {
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2046
|
+
try {
|
|
2047
|
+
setFailedSites([]);
|
|
2048
|
+
if (comparisonMode) {
|
|
2049
|
+
setComparisonData({
|
|
2050
|
+
messages: [],
|
|
2051
|
+
staffMessages: [],
|
|
2052
|
+
residentMessages: [],
|
|
2053
|
+
groupMessages: [],
|
|
2054
|
+
privateMessages: [],
|
|
2055
|
+
activeGroups: [],
|
|
2056
|
+
isLoading: true
|
|
2057
|
+
});
|
|
2058
|
+
const multiSiteResultsObj = await Analytics$1.fetchMultiSiteData(selectedSites, async site => {
|
|
2059
|
+
const {
|
|
2060
|
+
data
|
|
2061
|
+
} = await analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2062
|
+
userType,
|
|
2063
|
+
userCategory
|
|
2064
|
+
});
|
|
2065
|
+
return data;
|
|
2066
|
+
});
|
|
2067
|
+
const roles = auth.user.Roles;
|
|
2068
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
2069
|
+
let [, data] = _ref2;
|
|
2070
|
+
return data === null;
|
|
2071
|
+
}).map(_ref3 => {
|
|
2072
|
+
let [site] = _ref3;
|
|
2073
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
2074
|
+
});
|
|
2075
|
+
setFailedSites(failed);
|
|
2076
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
2077
|
+
let [, data] = _ref4;
|
|
2078
|
+
return data !== null;
|
|
2079
|
+
}).map(_ref5 => {
|
|
2080
|
+
let [site, data] = _ref5;
|
|
2081
|
+
return {
|
|
2082
|
+
site,
|
|
2083
|
+
data
|
|
2084
|
+
};
|
|
2085
|
+
});
|
|
2086
|
+
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
2087
|
+
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
2088
|
+
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
2089
|
+
}));
|
|
2090
|
+
setComparisonData({
|
|
2091
|
+
messages: buildComparison("Message", "total"),
|
|
2092
|
+
staffMessages: buildComparison("StaffMessage", "total"),
|
|
2093
|
+
residentMessages: buildComparison("ResidentMessage", "total"),
|
|
2094
|
+
groupMessages: buildComparison("GroupMessage", "total"),
|
|
2095
|
+
privateMessages: buildComparison("PrivateMessage", "total"),
|
|
2096
|
+
activeGroups: buildComparison("GroupMessage", "unique"),
|
|
2097
|
+
isLoading: false
|
|
2098
|
+
});
|
|
2099
|
+
} else {
|
|
2100
|
+
setAnalyticsData(getInitialState());
|
|
2101
|
+
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2102
|
+
const timeDifference = endTime - startTime;
|
|
2103
|
+
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2057
2104
|
userType,
|
|
2058
2105
|
userCategory
|
|
2059
|
-
})
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
site,
|
|
2078
|
-
data
|
|
2106
|
+
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2107
|
+
userType,
|
|
2108
|
+
userCategory
|
|
2109
|
+
})]);
|
|
2110
|
+
const data = {
|
|
2111
|
+
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2112
|
+
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2113
|
+
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2114
|
+
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2115
|
+
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2116
|
+
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2117
|
+
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2118
|
+
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2119
|
+
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2120
|
+
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2121
|
+
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2122
|
+
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2123
|
+
isLoading: false
|
|
2079
2124
|
};
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
isLoading: false
|
|
2093
|
-
});
|
|
2094
|
-
} else {
|
|
2095
|
-
setAnalyticsData(getInitialState());
|
|
2096
|
-
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2097
|
-
const timeDifference = endTime - startTime;
|
|
2098
|
-
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2099
|
-
userType,
|
|
2100
|
-
userCategory
|
|
2101
|
-
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2102
|
-
userType,
|
|
2103
|
-
userCategory
|
|
2104
|
-
})]);
|
|
2105
|
-
const data = {
|
|
2106
|
-
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2107
|
-
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2108
|
-
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2109
|
-
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2110
|
-
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2111
|
-
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2112
|
-
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2113
|
-
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2114
|
-
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2115
|
-
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2116
|
-
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2117
|
-
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2118
|
-
isLoading: false
|
|
2119
|
-
};
|
|
2120
|
-
setAnalyticsData(data);
|
|
2125
|
+
setAnalyticsData(data);
|
|
2126
|
+
}
|
|
2127
|
+
} catch (err) {
|
|
2128
|
+
if (comparisonMode) {
|
|
2129
|
+
setComparisonData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2130
|
+
isLoading: false
|
|
2131
|
+
}));
|
|
2132
|
+
} else {
|
|
2133
|
+
setAnalyticsData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2134
|
+
isLoading: false
|
|
2135
|
+
}));
|
|
2136
|
+
}
|
|
2121
2137
|
}
|
|
2122
2138
|
};
|
|
2123
2139
|
const isReadyToOpenCSV = () => {
|
|
@@ -2154,14 +2170,14 @@ const AnalyticsHub = _ref => {
|
|
|
2154
2170
|
return null;
|
|
2155
2171
|
}
|
|
2156
2172
|
const source = getExportSource();
|
|
2157
|
-
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g,
|
|
2173
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, "-")).join("_");
|
|
2158
2174
|
return /*#__PURE__*/React__default["default"].createElement(Components$1.ExportCsvPopup, {
|
|
2159
2175
|
onClose: () => {
|
|
2160
2176
|
setIsExportOpen(false);
|
|
2161
2177
|
},
|
|
2162
2178
|
columns: exportColumns,
|
|
2163
2179
|
source: source,
|
|
2164
|
-
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ?
|
|
2180
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? "_comparison" : "").concat(filterSuffix ? "_".concat(filterSuffix) : "", "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
2165
2181
|
});
|
|
2166
2182
|
};
|
|
2167
2183
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -2181,9 +2197,10 @@ const AnalyticsHub = _ref => {
|
|
|
2181
2197
|
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components$1.Text, {
|
|
2182
2198
|
type: "help",
|
|
2183
2199
|
style: {
|
|
2184
|
-
color:
|
|
2200
|
+
color: Colours$1.COLOUR_RED,
|
|
2201
|
+
marginTop: 8
|
|
2185
2202
|
}
|
|
2186
|
-
}, "Data unavailable for: ", failedSites.join(
|
|
2203
|
+
}, "Data unavailable for: ", failedSites.join(", ")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2187
2204
|
className: "analyticsSection dashboardSection_content"
|
|
2188
2205
|
}, (() => {
|
|
2189
2206
|
const chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
|
package/dist/index.esm.js
CHANGED
|
@@ -753,14 +753,14 @@ var Circles$1 = connect(mapStateToProps$3, {
|
|
|
753
753
|
circleRemoved
|
|
754
754
|
})(Circles);
|
|
755
755
|
|
|
756
|
-
function ownKeys$
|
|
757
|
-
function _objectSpread$
|
|
756
|
+
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
757
|
+
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
758
758
|
const {
|
|
759
759
|
Actions: Actions$1,
|
|
760
760
|
Components: Components$3,
|
|
761
761
|
Session: Session$2,
|
|
762
762
|
Apis,
|
|
763
|
-
Colours: Colours$
|
|
763
|
+
Colours: Colours$3,
|
|
764
764
|
Helper: Helper$2
|
|
765
765
|
} = PlussCore;
|
|
766
766
|
class AddCircle extends Component {
|
|
@@ -779,7 +779,7 @@ class AddCircle extends Component {
|
|
|
779
779
|
users: _.sortBy(res.data.results.Items, u => {
|
|
780
780
|
return (u.displayName || "").toLowerCase();
|
|
781
781
|
}).map(u => {
|
|
782
|
-
return _objectSpread$
|
|
782
|
+
return _objectSpread$5(_objectSpread$5({}, u), {}, {
|
|
783
783
|
userId: u.userId || u.Id
|
|
784
784
|
});
|
|
785
785
|
})
|
|
@@ -1157,7 +1157,7 @@ class AddCircle extends Component {
|
|
|
1157
1157
|
}, /*#__PURE__*/React.createElement(Components$3.SVGIcon, {
|
|
1158
1158
|
className: "removeIcon marginLeft-8",
|
|
1159
1159
|
icon: "close",
|
|
1160
|
-
colour: Colours$
|
|
1160
|
+
colour: Colours$3.COLOUR_DUSK,
|
|
1161
1161
|
onClick: () => {
|
|
1162
1162
|
this.onSelectUser(user);
|
|
1163
1163
|
}
|
|
@@ -1207,14 +1207,14 @@ var AddCircle$1 = connect(mapStateToProps$2, {
|
|
|
1207
1207
|
addRecentlyCreated: Actions$1.addRecentlyCreated
|
|
1208
1208
|
})(withRouter(AddCircle));
|
|
1209
1209
|
|
|
1210
|
-
function ownKeys$
|
|
1211
|
-
function _objectSpread$
|
|
1210
|
+
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1211
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1212
1212
|
const {
|
|
1213
1213
|
Components: Components$2,
|
|
1214
1214
|
Helper: Helper$1,
|
|
1215
1215
|
Actions,
|
|
1216
1216
|
Session: Session$1,
|
|
1217
|
-
Colours: Colours$
|
|
1217
|
+
Colours: Colours$2
|
|
1218
1218
|
} = PlussCore;
|
|
1219
1219
|
class Circle extends Component {
|
|
1220
1220
|
constructor(props) {
|
|
@@ -1385,7 +1385,7 @@ class Circle extends Component {
|
|
|
1385
1385
|
// Optimistically update UI - mark as deleted immediately
|
|
1386
1386
|
const updatedMessages = this.state.messages.map(m => {
|
|
1387
1387
|
if (m._id === messageToDelete._id) {
|
|
1388
|
-
return _objectSpread$
|
|
1388
|
+
return _objectSpread$4(_objectSpread$4({}, m), {}, {
|
|
1389
1389
|
deleted: true,
|
|
1390
1390
|
text: " "
|
|
1391
1391
|
});
|
|
@@ -1814,7 +1814,7 @@ class Circle extends Component {
|
|
|
1814
1814
|
onClick: () => {
|
|
1815
1815
|
this.onReply(null);
|
|
1816
1816
|
},
|
|
1817
|
-
colour: Colours$
|
|
1817
|
+
colour: Colours$2.COLOUR_DUSK
|
|
1818
1818
|
})));
|
|
1819
1819
|
}
|
|
1820
1820
|
renderDeleteConfirmPopup() {
|
|
@@ -1877,7 +1877,7 @@ class Circle extends Component {
|
|
|
1877
1877
|
showMessageDate: !this.state.showMessageDate
|
|
1878
1878
|
}),
|
|
1879
1879
|
rightContent: !_.isEmpty(this.state.messageDate) && /*#__PURE__*/React.createElement(Components$2.SVGIcon, {
|
|
1880
|
-
colour: Colours$
|
|
1880
|
+
colour: Colours$2.COLOUR_DUSK_LIGHT,
|
|
1881
1881
|
icon: "close",
|
|
1882
1882
|
className: "timepicker_clear",
|
|
1883
1883
|
onClick: this.onClearDate
|
|
@@ -1916,11 +1916,14 @@ var Circle$1 = connect(mapStateToProps$1, {
|
|
|
1916
1916
|
setNavData: Actions.setNavData
|
|
1917
1917
|
})(Circle);
|
|
1918
1918
|
|
|
1919
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1920
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1919
1921
|
const {
|
|
1920
1922
|
Analytics: Analytics$1,
|
|
1921
1923
|
Session,
|
|
1922
1924
|
Components: Components$1,
|
|
1923
|
-
Helper
|
|
1925
|
+
Helper,
|
|
1926
|
+
Colours: Colours$1
|
|
1924
1927
|
} = PlussCore;
|
|
1925
1928
|
const getInitialState = () => ({
|
|
1926
1929
|
isLoading: true,
|
|
@@ -2009,84 +2012,97 @@ const AnalyticsHub = _ref => {
|
|
|
2009
2012
|
getData();
|
|
2010
2013
|
}, [startTime, endTime, userType, userCategory, selectedSites]);
|
|
2011
2014
|
const getData = async () => {
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2015
|
+
try {
|
|
2016
|
+
setFailedSites([]);
|
|
2017
|
+
if (comparisonMode) {
|
|
2018
|
+
setComparisonData({
|
|
2019
|
+
messages: [],
|
|
2020
|
+
staffMessages: [],
|
|
2021
|
+
residentMessages: [],
|
|
2022
|
+
groupMessages: [],
|
|
2023
|
+
privateMessages: [],
|
|
2024
|
+
activeGroups: [],
|
|
2025
|
+
isLoading: true
|
|
2026
|
+
});
|
|
2027
|
+
const multiSiteResultsObj = await Analytics$1.fetchMultiSiteData(selectedSites, async site => {
|
|
2028
|
+
const {
|
|
2029
|
+
data
|
|
2030
|
+
} = await analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2031
|
+
userType,
|
|
2032
|
+
userCategory
|
|
2033
|
+
});
|
|
2034
|
+
return data;
|
|
2035
|
+
});
|
|
2036
|
+
const roles = auth.user.Roles;
|
|
2037
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
2038
|
+
let [, data] = _ref2;
|
|
2039
|
+
return data === null;
|
|
2040
|
+
}).map(_ref3 => {
|
|
2041
|
+
let [site] = _ref3;
|
|
2042
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
2043
|
+
});
|
|
2044
|
+
setFailedSites(failed);
|
|
2045
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
2046
|
+
let [, data] = _ref4;
|
|
2047
|
+
return data !== null;
|
|
2048
|
+
}).map(_ref5 => {
|
|
2049
|
+
let [site, data] = _ref5;
|
|
2050
|
+
return {
|
|
2051
|
+
site,
|
|
2052
|
+
data
|
|
2053
|
+
};
|
|
2054
|
+
});
|
|
2055
|
+
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
2056
|
+
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
2057
|
+
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
2058
|
+
}));
|
|
2059
|
+
setComparisonData({
|
|
2060
|
+
messages: buildComparison("Message", "total"),
|
|
2061
|
+
staffMessages: buildComparison("StaffMessage", "total"),
|
|
2062
|
+
residentMessages: buildComparison("ResidentMessage", "total"),
|
|
2063
|
+
groupMessages: buildComparison("GroupMessage", "total"),
|
|
2064
|
+
privateMessages: buildComparison("PrivateMessage", "total"),
|
|
2065
|
+
activeGroups: buildComparison("GroupMessage", "unique"),
|
|
2066
|
+
isLoading: false
|
|
2067
|
+
});
|
|
2068
|
+
} else {
|
|
2069
|
+
setAnalyticsData(getInitialState());
|
|
2070
|
+
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2071
|
+
const timeDifference = endTime - startTime;
|
|
2072
|
+
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2026
2073
|
userType,
|
|
2027
2074
|
userCategory
|
|
2028
|
-
})
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
site,
|
|
2047
|
-
data
|
|
2075
|
+
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2076
|
+
userType,
|
|
2077
|
+
userCategory
|
|
2078
|
+
})]);
|
|
2079
|
+
const data = {
|
|
2080
|
+
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2081
|
+
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2082
|
+
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2083
|
+
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2084
|
+
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2085
|
+
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2086
|
+
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2087
|
+
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2088
|
+
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2089
|
+
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2090
|
+
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2091
|
+
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2092
|
+
isLoading: false
|
|
2048
2093
|
};
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
isLoading: false
|
|
2062
|
-
});
|
|
2063
|
-
} else {
|
|
2064
|
-
setAnalyticsData(getInitialState());
|
|
2065
|
-
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2066
|
-
const timeDifference = endTime - startTime;
|
|
2067
|
-
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2068
|
-
userType,
|
|
2069
|
-
userCategory
|
|
2070
|
-
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2071
|
-
userType,
|
|
2072
|
-
userCategory
|
|
2073
|
-
})]);
|
|
2074
|
-
const data = {
|
|
2075
|
-
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2076
|
-
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2077
|
-
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2078
|
-
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2079
|
-
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2080
|
-
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2081
|
-
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2082
|
-
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2083
|
-
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2084
|
-
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2085
|
-
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2086
|
-
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2087
|
-
isLoading: false
|
|
2088
|
-
};
|
|
2089
|
-
setAnalyticsData(data);
|
|
2094
|
+
setAnalyticsData(data);
|
|
2095
|
+
}
|
|
2096
|
+
} catch (err) {
|
|
2097
|
+
if (comparisonMode) {
|
|
2098
|
+
setComparisonData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2099
|
+
isLoading: false
|
|
2100
|
+
}));
|
|
2101
|
+
} else {
|
|
2102
|
+
setAnalyticsData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2103
|
+
isLoading: false
|
|
2104
|
+
}));
|
|
2105
|
+
}
|
|
2090
2106
|
}
|
|
2091
2107
|
};
|
|
2092
2108
|
const isReadyToOpenCSV = () => {
|
|
@@ -2123,14 +2139,14 @@ const AnalyticsHub = _ref => {
|
|
|
2123
2139
|
return null;
|
|
2124
2140
|
}
|
|
2125
2141
|
const source = getExportSource();
|
|
2126
|
-
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g,
|
|
2142
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, "-")).join("_");
|
|
2127
2143
|
return /*#__PURE__*/React.createElement(Components$1.ExportCsvPopup, {
|
|
2128
2144
|
onClose: () => {
|
|
2129
2145
|
setIsExportOpen(false);
|
|
2130
2146
|
},
|
|
2131
2147
|
columns: exportColumns,
|
|
2132
2148
|
source: source,
|
|
2133
|
-
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ?
|
|
2149
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? "_comparison" : "").concat(filterSuffix ? "_".concat(filterSuffix) : "", "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
2134
2150
|
});
|
|
2135
2151
|
};
|
|
2136
2152
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -2150,9 +2166,10 @@ const AnalyticsHub = _ref => {
|
|
|
2150
2166
|
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React.createElement(Components$1.Text, {
|
|
2151
2167
|
type: "help",
|
|
2152
2168
|
style: {
|
|
2153
|
-
color:
|
|
2169
|
+
color: Colours$1.COLOUR_RED,
|
|
2170
|
+
marginTop: 8
|
|
2154
2171
|
}
|
|
2155
|
-
}, "Data unavailable for: ", failedSites.join(
|
|
2172
|
+
}, "Data unavailable for: ", failedSites.join(", ")), /*#__PURE__*/React.createElement("div", {
|
|
2156
2173
|
className: "analyticsSection dashboardSection_content"
|
|
2157
2174
|
}, (() => {
|
|
2158
2175
|
const chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
|
package/dist/index.umd.js
CHANGED
|
@@ -774,14 +774,14 @@
|
|
|
774
774
|
circleRemoved
|
|
775
775
|
})(Circles);
|
|
776
776
|
|
|
777
|
-
function ownKeys$
|
|
778
|
-
function _objectSpread$
|
|
777
|
+
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
778
|
+
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
779
779
|
const {
|
|
780
780
|
Actions: Actions$1,
|
|
781
781
|
Components: Components$3,
|
|
782
782
|
Session: Session$2,
|
|
783
783
|
Apis,
|
|
784
|
-
Colours: Colours$
|
|
784
|
+
Colours: Colours$3,
|
|
785
785
|
Helper: Helper$2
|
|
786
786
|
} = PlussCore__namespace;
|
|
787
787
|
class AddCircle extends React.Component {
|
|
@@ -800,7 +800,7 @@
|
|
|
800
800
|
users: ___default["default"].sortBy(res.data.results.Items, u => {
|
|
801
801
|
return (u.displayName || "").toLowerCase();
|
|
802
802
|
}).map(u => {
|
|
803
|
-
return _objectSpread$
|
|
803
|
+
return _objectSpread$5(_objectSpread$5({}, u), {}, {
|
|
804
804
|
userId: u.userId || u.Id
|
|
805
805
|
});
|
|
806
806
|
})
|
|
@@ -1178,7 +1178,7 @@
|
|
|
1178
1178
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.SVGIcon, {
|
|
1179
1179
|
className: "removeIcon marginLeft-8",
|
|
1180
1180
|
icon: "close",
|
|
1181
|
-
colour: Colours$
|
|
1181
|
+
colour: Colours$3.COLOUR_DUSK,
|
|
1182
1182
|
onClick: () => {
|
|
1183
1183
|
this.onSelectUser(user);
|
|
1184
1184
|
}
|
|
@@ -1228,14 +1228,14 @@
|
|
|
1228
1228
|
addRecentlyCreated: Actions$1.addRecentlyCreated
|
|
1229
1229
|
})(reactRouter.withRouter(AddCircle));
|
|
1230
1230
|
|
|
1231
|
-
function ownKeys$
|
|
1232
|
-
function _objectSpread$
|
|
1231
|
+
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1232
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1233
1233
|
const {
|
|
1234
1234
|
Components: Components$2,
|
|
1235
1235
|
Helper: Helper$1,
|
|
1236
1236
|
Actions,
|
|
1237
1237
|
Session: Session$1,
|
|
1238
|
-
Colours: Colours$
|
|
1238
|
+
Colours: Colours$2
|
|
1239
1239
|
} = PlussCore__namespace;
|
|
1240
1240
|
class Circle extends React.Component {
|
|
1241
1241
|
constructor(props) {
|
|
@@ -1406,7 +1406,7 @@
|
|
|
1406
1406
|
// Optimistically update UI - mark as deleted immediately
|
|
1407
1407
|
const updatedMessages = this.state.messages.map(m => {
|
|
1408
1408
|
if (m._id === messageToDelete._id) {
|
|
1409
|
-
return _objectSpread$
|
|
1409
|
+
return _objectSpread$4(_objectSpread$4({}, m), {}, {
|
|
1410
1410
|
deleted: true,
|
|
1411
1411
|
text: " "
|
|
1412
1412
|
});
|
|
@@ -1835,7 +1835,7 @@
|
|
|
1835
1835
|
onClick: () => {
|
|
1836
1836
|
this.onReply(null);
|
|
1837
1837
|
},
|
|
1838
|
-
colour: Colours$
|
|
1838
|
+
colour: Colours$2.COLOUR_DUSK
|
|
1839
1839
|
})));
|
|
1840
1840
|
}
|
|
1841
1841
|
renderDeleteConfirmPopup() {
|
|
@@ -1898,7 +1898,7 @@
|
|
|
1898
1898
|
showMessageDate: !this.state.showMessageDate
|
|
1899
1899
|
}),
|
|
1900
1900
|
rightContent: !___default["default"].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default["default"].createElement(Components$2.SVGIcon, {
|
|
1901
|
-
colour: Colours$
|
|
1901
|
+
colour: Colours$2.COLOUR_DUSK_LIGHT,
|
|
1902
1902
|
icon: "close",
|
|
1903
1903
|
className: "timepicker_clear",
|
|
1904
1904
|
onClick: this.onClearDate
|
|
@@ -1937,11 +1937,14 @@
|
|
|
1937
1937
|
setNavData: Actions.setNavData
|
|
1938
1938
|
})(Circle);
|
|
1939
1939
|
|
|
1940
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1941
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1940
1942
|
const {
|
|
1941
1943
|
Analytics: Analytics$1,
|
|
1942
1944
|
Session,
|
|
1943
1945
|
Components: Components$1,
|
|
1944
|
-
Helper
|
|
1946
|
+
Helper,
|
|
1947
|
+
Colours: Colours$1
|
|
1945
1948
|
} = PlussCore__namespace;
|
|
1946
1949
|
const getInitialState = () => ({
|
|
1947
1950
|
isLoading: true,
|
|
@@ -2030,84 +2033,97 @@
|
|
|
2030
2033
|
getData();
|
|
2031
2034
|
}, [startTime, endTime, userType, userCategory, selectedSites]);
|
|
2032
2035
|
const getData = async () => {
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2036
|
+
try {
|
|
2037
|
+
setFailedSites([]);
|
|
2038
|
+
if (comparisonMode) {
|
|
2039
|
+
setComparisonData({
|
|
2040
|
+
messages: [],
|
|
2041
|
+
staffMessages: [],
|
|
2042
|
+
residentMessages: [],
|
|
2043
|
+
groupMessages: [],
|
|
2044
|
+
privateMessages: [],
|
|
2045
|
+
activeGroups: [],
|
|
2046
|
+
isLoading: true
|
|
2047
|
+
});
|
|
2048
|
+
const multiSiteResultsObj = await Analytics$1.fetchMultiSiteData(selectedSites, async site => {
|
|
2049
|
+
const {
|
|
2050
|
+
data
|
|
2051
|
+
} = await analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2052
|
+
userType,
|
|
2053
|
+
userCategory
|
|
2054
|
+
});
|
|
2055
|
+
return data;
|
|
2056
|
+
});
|
|
2057
|
+
const roles = auth.user.Roles;
|
|
2058
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
2059
|
+
let [, data] = _ref2;
|
|
2060
|
+
return data === null;
|
|
2061
|
+
}).map(_ref3 => {
|
|
2062
|
+
let [site] = _ref3;
|
|
2063
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
2064
|
+
});
|
|
2065
|
+
setFailedSites(failed);
|
|
2066
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
2067
|
+
let [, data] = _ref4;
|
|
2068
|
+
return data !== null;
|
|
2069
|
+
}).map(_ref5 => {
|
|
2070
|
+
let [site, data] = _ref5;
|
|
2071
|
+
return {
|
|
2072
|
+
site,
|
|
2073
|
+
data
|
|
2074
|
+
};
|
|
2075
|
+
});
|
|
2076
|
+
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
2077
|
+
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
2078
|
+
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
2079
|
+
}));
|
|
2080
|
+
setComparisonData({
|
|
2081
|
+
messages: buildComparison("Message", "total"),
|
|
2082
|
+
staffMessages: buildComparison("StaffMessage", "total"),
|
|
2083
|
+
residentMessages: buildComparison("ResidentMessage", "total"),
|
|
2084
|
+
groupMessages: buildComparison("GroupMessage", "total"),
|
|
2085
|
+
privateMessages: buildComparison("PrivateMessage", "total"),
|
|
2086
|
+
activeGroups: buildComparison("GroupMessage", "unique"),
|
|
2087
|
+
isLoading: false
|
|
2088
|
+
});
|
|
2089
|
+
} else {
|
|
2090
|
+
setAnalyticsData(getInitialState());
|
|
2091
|
+
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2092
|
+
const timeDifference = endTime - startTime;
|
|
2093
|
+
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2047
2094
|
userType,
|
|
2048
2095
|
userCategory
|
|
2049
|
-
})
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
site,
|
|
2068
|
-
data
|
|
2096
|
+
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2097
|
+
userType,
|
|
2098
|
+
userCategory
|
|
2099
|
+
})]);
|
|
2100
|
+
const data = {
|
|
2101
|
+
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2102
|
+
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2103
|
+
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2104
|
+
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2105
|
+
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2106
|
+
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2107
|
+
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2108
|
+
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2109
|
+
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2110
|
+
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2111
|
+
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2112
|
+
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2113
|
+
isLoading: false
|
|
2069
2114
|
};
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
isLoading: false
|
|
2083
|
-
});
|
|
2084
|
-
} else {
|
|
2085
|
-
setAnalyticsData(getInitialState());
|
|
2086
|
-
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
2087
|
-
const timeDifference = endTime - startTime;
|
|
2088
|
-
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime, endTime, true, {
|
|
2089
|
-
userType,
|
|
2090
|
-
userCategory
|
|
2091
|
-
}), analyticsActions.getAggregateEntityStats(site, values.entityKey, startTime - timeDifference, startTime, true, {
|
|
2092
|
-
userType,
|
|
2093
|
-
userCategory
|
|
2094
|
-
})]);
|
|
2095
|
-
const data = {
|
|
2096
|
-
messages: Analytics$1.countActivities(currentStatsResponse.data, "Message", "total"),
|
|
2097
|
-
prevMessages: Analytics$1.countActivities(prevStatsResponse.data, "Message", "total"),
|
|
2098
|
-
staffMessages: Analytics$1.countActivities(currentStatsResponse.data, "StaffMessage", "total"),
|
|
2099
|
-
prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, "StaffMessage", "total"),
|
|
2100
|
-
residentMessages: Analytics$1.countActivities(currentStatsResponse.data, "ResidentMessage", "total"),
|
|
2101
|
-
prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, "ResidentMessage", "total"),
|
|
2102
|
-
groupMessages: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "total"),
|
|
2103
|
-
prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "total"),
|
|
2104
|
-
privateMessages: Analytics$1.countActivities(currentStatsResponse.data, "PrivateMessage", "total"),
|
|
2105
|
-
prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, "PrivateMessage", "total"),
|
|
2106
|
-
activeGroups: Analytics$1.countActivities(currentStatsResponse.data, "GroupMessage", "unique"),
|
|
2107
|
-
prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, "GroupMessage", "unique"),
|
|
2108
|
-
isLoading: false
|
|
2109
|
-
};
|
|
2110
|
-
setAnalyticsData(data);
|
|
2115
|
+
setAnalyticsData(data);
|
|
2116
|
+
}
|
|
2117
|
+
} catch (err) {
|
|
2118
|
+
if (comparisonMode) {
|
|
2119
|
+
setComparisonData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2120
|
+
isLoading: false
|
|
2121
|
+
}));
|
|
2122
|
+
} else {
|
|
2123
|
+
setAnalyticsData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
|
|
2124
|
+
isLoading: false
|
|
2125
|
+
}));
|
|
2126
|
+
}
|
|
2111
2127
|
}
|
|
2112
2128
|
};
|
|
2113
2129
|
const isReadyToOpenCSV = () => {
|
|
@@ -2144,14 +2160,14 @@
|
|
|
2144
2160
|
return null;
|
|
2145
2161
|
}
|
|
2146
2162
|
const source = getExportSource();
|
|
2147
|
-
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g,
|
|
2163
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, "-")).join("_");
|
|
2148
2164
|
return /*#__PURE__*/React__default["default"].createElement(Components$1.ExportCsvPopup, {
|
|
2149
2165
|
onClose: () => {
|
|
2150
2166
|
setIsExportOpen(false);
|
|
2151
2167
|
},
|
|
2152
2168
|
columns: exportColumns,
|
|
2153
2169
|
source: source,
|
|
2154
|
-
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ?
|
|
2170
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? "_comparison" : "").concat(filterSuffix ? "_".concat(filterSuffix) : "", "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
2155
2171
|
});
|
|
2156
2172
|
};
|
|
2157
2173
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -2171,9 +2187,10 @@
|
|
|
2171
2187
|
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components$1.Text, {
|
|
2172
2188
|
type: "help",
|
|
2173
2189
|
style: {
|
|
2174
|
-
color:
|
|
2190
|
+
color: Colours$1.COLOUR_RED,
|
|
2191
|
+
marginTop: 8
|
|
2175
2192
|
}
|
|
2176
|
-
}, "Data unavailable for: ", failedSites.join(
|
|
2193
|
+
}, "Data unavailable for: ", failedSites.join(", ")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2177
2194
|
className: "analyticsSection dashboardSection_content"
|
|
2178
2195
|
}, (() => {
|
|
2179
2196
|
const chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
|
package/package.json
CHANGED
package/package.json-e
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect } from "react";
|
|
2
2
|
import moment from "moment";
|
|
3
3
|
import {
|
|
4
|
-
faEye,
|
|
5
4
|
faMessage,
|
|
6
5
|
faPeopleArrows,
|
|
7
6
|
faUserGroup,
|
|
@@ -14,7 +13,7 @@ import { analyticsActions } from "../apis";
|
|
|
14
13
|
import { values } from "../values.config";
|
|
15
14
|
import { PlussCore } from "../feature.config";
|
|
16
15
|
|
|
17
|
-
const { Analytics, Session, Components, Helper } = PlussCore;
|
|
16
|
+
const { Analytics, Session, Components, Helper, Colours } = PlussCore;
|
|
18
17
|
|
|
19
18
|
const getInitialState = () => ({
|
|
20
19
|
isLoading: true,
|
|
@@ -93,142 +92,155 @@ const AnalyticsHub = ({
|
|
|
93
92
|
}, [startTime, endTime, userType, userCategory, selectedSites]);
|
|
94
93
|
|
|
95
94
|
const getData = async () => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
95
|
+
try {
|
|
96
|
+
setFailedSites([]);
|
|
97
|
+
if (comparisonMode) {
|
|
98
|
+
setComparisonData({
|
|
99
|
+
messages: [],
|
|
100
|
+
staffMessages: [],
|
|
101
|
+
residentMessages: [],
|
|
102
|
+
groupMessages: [],
|
|
103
|
+
privateMessages: [],
|
|
104
|
+
activeGroups: [],
|
|
105
|
+
isLoading: true,
|
|
106
|
+
});
|
|
107
|
+
const multiSiteResultsObj = await Analytics.fetchMultiSiteData(
|
|
108
|
+
selectedSites,
|
|
109
|
+
async (site) => {
|
|
110
|
+
const { data } = await analyticsActions.getAggregateEntityStats(
|
|
111
|
+
site,
|
|
112
|
+
values.entityKey,
|
|
113
|
+
startTime,
|
|
114
|
+
endTime,
|
|
115
|
+
true,
|
|
116
|
+
{ userType, userCategory },
|
|
117
|
+
);
|
|
118
|
+
return data;
|
|
119
|
+
},
|
|
120
|
+
);
|
|
121
|
+
const roles = auth.user.Roles;
|
|
122
|
+
const failed = Object.entries(multiSiteResultsObj)
|
|
123
|
+
.filter(([, data]) => data === null)
|
|
124
|
+
.map(([site]) => Helper.getSiteNameFromRoles(site, roles));
|
|
125
|
+
setFailedSites(failed);
|
|
126
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj)
|
|
127
|
+
.filter(([, data]) => data !== null)
|
|
128
|
+
.map(([site, data]) => ({ site, data }));
|
|
129
|
+
const buildComparison = (activityKey, countType) =>
|
|
130
|
+
multiSiteResults.map((result) => ({
|
|
131
|
+
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
132
|
+
value: Analytics.countActivities(
|
|
133
|
+
result.data,
|
|
134
|
+
activityKey,
|
|
135
|
+
countType,
|
|
136
|
+
),
|
|
137
|
+
}));
|
|
138
|
+
setComparisonData({
|
|
139
|
+
messages: buildComparison("Message", "total"),
|
|
140
|
+
staffMessages: buildComparison("StaffMessage", "total"),
|
|
141
|
+
residentMessages: buildComparison("ResidentMessage", "total"),
|
|
142
|
+
groupMessages: buildComparison("GroupMessage", "total"),
|
|
143
|
+
privateMessages: buildComparison("PrivateMessage", "total"),
|
|
144
|
+
activeGroups: buildComparison("GroupMessage", "unique"),
|
|
145
|
+
isLoading: false,
|
|
146
|
+
});
|
|
147
|
+
} else {
|
|
148
|
+
setAnalyticsData(getInitialState());
|
|
149
|
+
const site =
|
|
150
|
+
selectedSites && selectedSites.length === 1
|
|
151
|
+
? selectedSites[0]
|
|
152
|
+
: auth.site;
|
|
153
|
+
const timeDifference = endTime - startTime;
|
|
154
|
+
const [currentStatsResponse, prevStatsResponse] = await Promise.all([
|
|
155
|
+
analyticsActions.getAggregateEntityStats(
|
|
110
156
|
site,
|
|
111
157
|
values.entityKey,
|
|
112
158
|
startTime,
|
|
113
159
|
endTime,
|
|
114
160
|
true,
|
|
115
161
|
{ userType, userCategory },
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
.filter(([, data]) => data !== null)
|
|
127
|
-
.map(([site, data]) => ({ site, data }));
|
|
128
|
-
const buildComparison = (activityKey, countType) =>
|
|
129
|
-
multiSiteResults.map((result) => ({
|
|
130
|
-
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
131
|
-
value: Analytics.countActivities(result.data, activityKey, countType),
|
|
132
|
-
}));
|
|
133
|
-
setComparisonData({
|
|
134
|
-
messages: buildComparison("Message", "total"),
|
|
135
|
-
staffMessages: buildComparison("StaffMessage", "total"),
|
|
136
|
-
residentMessages: buildComparison("ResidentMessage", "total"),
|
|
137
|
-
groupMessages: buildComparison("GroupMessage", "total"),
|
|
138
|
-
privateMessages: buildComparison("PrivateMessage", "total"),
|
|
139
|
-
activeGroups: buildComparison("GroupMessage", "unique"),
|
|
140
|
-
isLoading: false,
|
|
141
|
-
});
|
|
142
|
-
} else {
|
|
143
|
-
setAnalyticsData(getInitialState());
|
|
144
|
-
const site =
|
|
145
|
-
selectedSites && selectedSites.length === 1
|
|
146
|
-
? selectedSites[0]
|
|
147
|
-
: auth.site;
|
|
148
|
-
const timeDifference = endTime - startTime;
|
|
149
|
-
const [currentStatsResponse, prevStatsResponse] = await Promise.all([
|
|
150
|
-
analyticsActions.getAggregateEntityStats(
|
|
151
|
-
site,
|
|
152
|
-
values.entityKey,
|
|
153
|
-
startTime,
|
|
154
|
-
endTime,
|
|
155
|
-
true,
|
|
156
|
-
{ userType, userCategory },
|
|
157
|
-
),
|
|
158
|
-
analyticsActions.getAggregateEntityStats(
|
|
159
|
-
site,
|
|
160
|
-
values.entityKey,
|
|
161
|
-
startTime - timeDifference,
|
|
162
|
-
startTime,
|
|
163
|
-
true,
|
|
164
|
-
{ userType, userCategory },
|
|
165
|
-
),
|
|
166
|
-
]);
|
|
162
|
+
),
|
|
163
|
+
analyticsActions.getAggregateEntityStats(
|
|
164
|
+
site,
|
|
165
|
+
values.entityKey,
|
|
166
|
+
startTime - timeDifference,
|
|
167
|
+
startTime,
|
|
168
|
+
true,
|
|
169
|
+
{ userType, userCategory },
|
|
170
|
+
),
|
|
171
|
+
]);
|
|
167
172
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
173
|
+
const data = {
|
|
174
|
+
messages: Analytics.countActivities(
|
|
175
|
+
currentStatsResponse.data,
|
|
176
|
+
"Message",
|
|
177
|
+
"total",
|
|
178
|
+
),
|
|
179
|
+
prevMessages: Analytics.countActivities(
|
|
180
|
+
prevStatsResponse.data,
|
|
181
|
+
"Message",
|
|
182
|
+
"total",
|
|
183
|
+
),
|
|
184
|
+
staffMessages: Analytics.countActivities(
|
|
185
|
+
currentStatsResponse.data,
|
|
186
|
+
"StaffMessage",
|
|
187
|
+
"total",
|
|
188
|
+
),
|
|
189
|
+
prevStaffMessages: Analytics.countActivities(
|
|
190
|
+
prevStatsResponse.data,
|
|
191
|
+
"StaffMessage",
|
|
192
|
+
"total",
|
|
193
|
+
),
|
|
194
|
+
residentMessages: Analytics.countActivities(
|
|
195
|
+
currentStatsResponse.data,
|
|
196
|
+
"ResidentMessage",
|
|
197
|
+
"total",
|
|
198
|
+
),
|
|
199
|
+
prevResidentMessages: Analytics.countActivities(
|
|
200
|
+
prevStatsResponse.data,
|
|
201
|
+
"ResidentMessage",
|
|
202
|
+
"total",
|
|
203
|
+
),
|
|
204
|
+
groupMessages: Analytics.countActivities(
|
|
205
|
+
currentStatsResponse.data,
|
|
206
|
+
"GroupMessage",
|
|
207
|
+
"total",
|
|
208
|
+
),
|
|
209
|
+
prevGroupMessages: Analytics.countActivities(
|
|
210
|
+
prevStatsResponse.data,
|
|
211
|
+
"GroupMessage",
|
|
212
|
+
"total",
|
|
213
|
+
),
|
|
214
|
+
privateMessages: Analytics.countActivities(
|
|
215
|
+
currentStatsResponse.data,
|
|
216
|
+
"PrivateMessage",
|
|
217
|
+
"total",
|
|
218
|
+
),
|
|
219
|
+
prevPrivateMessages: Analytics.countActivities(
|
|
220
|
+
prevStatsResponse.data,
|
|
221
|
+
"PrivateMessage",
|
|
222
|
+
"total",
|
|
223
|
+
),
|
|
224
|
+
activeGroups: Analytics.countActivities(
|
|
225
|
+
currentStatsResponse.data,
|
|
226
|
+
"GroupMessage",
|
|
227
|
+
"unique",
|
|
228
|
+
),
|
|
229
|
+
prevActiveGroups: Analytics.countActivities(
|
|
230
|
+
prevStatsResponse.data,
|
|
231
|
+
"GroupMessage",
|
|
232
|
+
"unique",
|
|
233
|
+
),
|
|
234
|
+
isLoading: false,
|
|
235
|
+
};
|
|
236
|
+
setAnalyticsData(data);
|
|
237
|
+
}
|
|
238
|
+
} catch (err) {
|
|
239
|
+
if (comparisonMode) {
|
|
240
|
+
setComparisonData((prev) => ({ ...prev, isLoading: false }));
|
|
241
|
+
} else {
|
|
242
|
+
setAnalyticsData((prev) => ({ ...prev, isLoading: false }));
|
|
243
|
+
}
|
|
232
244
|
}
|
|
233
245
|
};
|
|
234
246
|
|
|
@@ -246,11 +258,26 @@ const AnalyticsHub = ({
|
|
|
246
258
|
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
247
259
|
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
248
260
|
messages: site.value,
|
|
249
|
-
staffMessages:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
261
|
+
staffMessages:
|
|
262
|
+
(comparisonData.staffMessages[i] &&
|
|
263
|
+
comparisonData.staffMessages[i].value) ||
|
|
264
|
+
0,
|
|
265
|
+
residentMessages:
|
|
266
|
+
(comparisonData.residentMessages[i] &&
|
|
267
|
+
comparisonData.residentMessages[i].value) ||
|
|
268
|
+
0,
|
|
269
|
+
groupMessages:
|
|
270
|
+
(comparisonData.groupMessages[i] &&
|
|
271
|
+
comparisonData.groupMessages[i].value) ||
|
|
272
|
+
0,
|
|
273
|
+
privateMessages:
|
|
274
|
+
(comparisonData.privateMessages[i] &&
|
|
275
|
+
comparisonData.privateMessages[i].value) ||
|
|
276
|
+
0,
|
|
277
|
+
activeGroups:
|
|
278
|
+
(comparisonData.activeGroups[i] &&
|
|
279
|
+
comparisonData.activeGroups[i].value) ||
|
|
280
|
+
0,
|
|
254
281
|
}));
|
|
255
282
|
}
|
|
256
283
|
return [
|
|
@@ -272,7 +299,10 @@ const AnalyticsHub = ({
|
|
|
272
299
|
return null;
|
|
273
300
|
}
|
|
274
301
|
const source = getExportSource();
|
|
275
|
-
const filterSuffix = [userType, userCategory]
|
|
302
|
+
const filterSuffix = [userType, userCategory]
|
|
303
|
+
.filter(Boolean)
|
|
304
|
+
.map((f) => f.toLowerCase().replace(/\s+/g, "-"))
|
|
305
|
+
.join("_");
|
|
276
306
|
return (
|
|
277
307
|
<Components.ExportCsvPopup
|
|
278
308
|
onClose={() => {
|
|
@@ -280,7 +310,7 @@ const AnalyticsHub = ({
|
|
|
280
310
|
}}
|
|
281
311
|
columns={exportColumns}
|
|
282
312
|
source={source}
|
|
283
|
-
filename={`${values.analyticsKey}analytics${comparisonMode ?
|
|
313
|
+
filename={`${values.analyticsKey}analytics${comparisonMode ? "_comparison" : ""}${filterSuffix ? `_${filterSuffix}` : ""}_${source[0].startDate}_${source[0].endDate}.csv`}
|
|
284
314
|
/>
|
|
285
315
|
);
|
|
286
316
|
};
|
|
@@ -306,8 +336,8 @@ const AnalyticsHub = ({
|
|
|
306
336
|
</Components.Button>
|
|
307
337
|
</div>
|
|
308
338
|
{failedSites.length > 0 && (
|
|
309
|
-
<Components.Text type="help" style={{ color:
|
|
310
|
-
Data unavailable for: {failedSites.join(
|
|
339
|
+
<Components.Text type="help" style={{ color: Colours.COLOUR_RED, marginTop: 8 }}>
|
|
340
|
+
Data unavailable for: {failedSites.join(", ")}
|
|
311
341
|
</Components.Text>
|
|
312
342
|
)}
|
|
313
343
|
<div className="analyticsSection dashboardSection_content">
|