@plusscommunities/pluss-maintenance-web 1.1.37-beta.0 → 1.1.37-beta.2
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 +38 -6
- package/dist/index.esm.js +38 -6
- package/dist/index.umd.js +38 -6
- package/package.json +1 -1
- package/src/components/AnalyticsHub.js +27 -4
package/dist/index.cjs.js
CHANGED
|
@@ -5824,6 +5824,7 @@ const AnalyticsHub = _ref => {
|
|
|
5824
5824
|
} = _ref;
|
|
5825
5825
|
const [analyticsData, setAnalyticsData] = React.useState(getInitialState());
|
|
5826
5826
|
const [isExportOpen, setIsExportOpen] = React.useState(false);
|
|
5827
|
+
const [failedSites, setFailedSites] = React.useState([]);
|
|
5827
5828
|
const [comparisonData, setComparisonData] = React.useState({
|
|
5828
5829
|
requests: [],
|
|
5829
5830
|
completedRequests: [],
|
|
@@ -5844,7 +5845,10 @@ const AnalyticsHub = _ref => {
|
|
|
5844
5845
|
const exportColumns = [{
|
|
5845
5846
|
label: "Select All",
|
|
5846
5847
|
key: ""
|
|
5847
|
-
}, {
|
|
5848
|
+
}, ...(comparisonMode ? [{
|
|
5849
|
+
label: "Site",
|
|
5850
|
+
key: "site"
|
|
5851
|
+
}] : []), {
|
|
5848
5852
|
label: "Start Date",
|
|
5849
5853
|
key: "startDate"
|
|
5850
5854
|
}, {
|
|
@@ -5880,14 +5884,25 @@ const AnalyticsHub = _ref => {
|
|
|
5880
5884
|
});
|
|
5881
5885
|
return data;
|
|
5882
5886
|
});
|
|
5883
|
-
const
|
|
5884
|
-
|
|
5887
|
+
const roles = auth.user.Roles;
|
|
5888
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5889
|
+
let [, data] = _ref2;
|
|
5890
|
+
return data === null;
|
|
5891
|
+
}).map(_ref3 => {
|
|
5892
|
+
let [site] = _ref3;
|
|
5893
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5894
|
+
});
|
|
5895
|
+
setFailedSites(failed);
|
|
5896
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5897
|
+
let [, data] = _ref4;
|
|
5898
|
+
return data !== null;
|
|
5899
|
+
}).map(_ref5 => {
|
|
5900
|
+
let [site, data] = _ref5;
|
|
5885
5901
|
return {
|
|
5886
5902
|
site,
|
|
5887
5903
|
data
|
|
5888
5904
|
};
|
|
5889
5905
|
});
|
|
5890
|
-
const roles = auth.user.Roles;
|
|
5891
5906
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5892
5907
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5893
5908
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5925,6 +5940,17 @@ const AnalyticsHub = _ref => {
|
|
|
5925
5940
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5926
5941
|
};
|
|
5927
5942
|
const getExportSource = () => {
|
|
5943
|
+
if (comparisonMode) {
|
|
5944
|
+
const sites = comparisonData.requests || [];
|
|
5945
|
+
return sites.map((site, i) => ({
|
|
5946
|
+
site: site.name,
|
|
5947
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5948
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5949
|
+
requests: site.value,
|
|
5950
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5951
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5952
|
+
}));
|
|
5953
|
+
}
|
|
5928
5954
|
return [{
|
|
5929
5955
|
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5930
5956
|
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
@@ -5938,13 +5964,14 @@ const AnalyticsHub = _ref => {
|
|
|
5938
5964
|
return null;
|
|
5939
5965
|
}
|
|
5940
5966
|
const source = getExportSource();
|
|
5967
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5941
5968
|
return /*#__PURE__*/React__default["default"].createElement(Components.ExportCsvPopup, {
|
|
5942
5969
|
onClose: () => {
|
|
5943
5970
|
setIsExportOpen(false);
|
|
5944
5971
|
},
|
|
5945
5972
|
columns: exportColumns,
|
|
5946
5973
|
source: source,
|
|
5947
|
-
filename: "".concat(values.analyticsKey, "
|
|
5974
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5948
5975
|
});
|
|
5949
5976
|
};
|
|
5950
5977
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -5961,7 +5988,12 @@ const AnalyticsHub = _ref => {
|
|
|
5961
5988
|
},
|
|
5962
5989
|
isActive: isReadyToOpenCSV(),
|
|
5963
5990
|
leftIcon: "file-code-o"
|
|
5964
|
-
}, "Export CSV")), /*#__PURE__*/React__default["default"].createElement(
|
|
5991
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components.Text, {
|
|
5992
|
+
type: "help",
|
|
5993
|
+
style: {
|
|
5994
|
+
color: '#c02743'
|
|
5995
|
+
}
|
|
5996
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5965
5997
|
className: "analyticsSection dashboardSection_content"
|
|
5966
5998
|
}, (() => {
|
|
5967
5999
|
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
|
@@ -5793,6 +5793,7 @@ const AnalyticsHub = _ref => {
|
|
|
5793
5793
|
} = _ref;
|
|
5794
5794
|
const [analyticsData, setAnalyticsData] = useState(getInitialState());
|
|
5795
5795
|
const [isExportOpen, setIsExportOpen] = useState(false);
|
|
5796
|
+
const [failedSites, setFailedSites] = useState([]);
|
|
5796
5797
|
const [comparisonData, setComparisonData] = useState({
|
|
5797
5798
|
requests: [],
|
|
5798
5799
|
completedRequests: [],
|
|
@@ -5813,7 +5814,10 @@ const AnalyticsHub = _ref => {
|
|
|
5813
5814
|
const exportColumns = [{
|
|
5814
5815
|
label: "Select All",
|
|
5815
5816
|
key: ""
|
|
5816
|
-
}, {
|
|
5817
|
+
}, ...(comparisonMode ? [{
|
|
5818
|
+
label: "Site",
|
|
5819
|
+
key: "site"
|
|
5820
|
+
}] : []), {
|
|
5817
5821
|
label: "Start Date",
|
|
5818
5822
|
key: "startDate"
|
|
5819
5823
|
}, {
|
|
@@ -5849,14 +5853,25 @@ const AnalyticsHub = _ref => {
|
|
|
5849
5853
|
});
|
|
5850
5854
|
return data;
|
|
5851
5855
|
});
|
|
5852
|
-
const
|
|
5853
|
-
|
|
5856
|
+
const roles = auth.user.Roles;
|
|
5857
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5858
|
+
let [, data] = _ref2;
|
|
5859
|
+
return data === null;
|
|
5860
|
+
}).map(_ref3 => {
|
|
5861
|
+
let [site] = _ref3;
|
|
5862
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5863
|
+
});
|
|
5864
|
+
setFailedSites(failed);
|
|
5865
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5866
|
+
let [, data] = _ref4;
|
|
5867
|
+
return data !== null;
|
|
5868
|
+
}).map(_ref5 => {
|
|
5869
|
+
let [site, data] = _ref5;
|
|
5854
5870
|
return {
|
|
5855
5871
|
site,
|
|
5856
5872
|
data
|
|
5857
5873
|
};
|
|
5858
5874
|
});
|
|
5859
|
-
const roles = auth.user.Roles;
|
|
5860
5875
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5861
5876
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5862
5877
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5894,6 +5909,17 @@ const AnalyticsHub = _ref => {
|
|
|
5894
5909
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5895
5910
|
};
|
|
5896
5911
|
const getExportSource = () => {
|
|
5912
|
+
if (comparisonMode) {
|
|
5913
|
+
const sites = comparisonData.requests || [];
|
|
5914
|
+
return sites.map((site, i) => ({
|
|
5915
|
+
site: site.name,
|
|
5916
|
+
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
5917
|
+
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
5918
|
+
requests: site.value,
|
|
5919
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5920
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5921
|
+
}));
|
|
5922
|
+
}
|
|
5897
5923
|
return [{
|
|
5898
5924
|
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
5899
5925
|
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
@@ -5907,13 +5933,14 @@ const AnalyticsHub = _ref => {
|
|
|
5907
5933
|
return null;
|
|
5908
5934
|
}
|
|
5909
5935
|
const source = getExportSource();
|
|
5936
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5910
5937
|
return /*#__PURE__*/React.createElement(Components.ExportCsvPopup, {
|
|
5911
5938
|
onClose: () => {
|
|
5912
5939
|
setIsExportOpen(false);
|
|
5913
5940
|
},
|
|
5914
5941
|
columns: exportColumns,
|
|
5915
5942
|
source: source,
|
|
5916
|
-
filename: "".concat(values.analyticsKey, "
|
|
5943
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5917
5944
|
});
|
|
5918
5945
|
};
|
|
5919
5946
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -5930,7 +5957,12 @@ const AnalyticsHub = _ref => {
|
|
|
5930
5957
|
},
|
|
5931
5958
|
isActive: isReadyToOpenCSV(),
|
|
5932
5959
|
leftIcon: "file-code-o"
|
|
5933
|
-
}, "Export CSV")), /*#__PURE__*/React.createElement(
|
|
5960
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React.createElement(Components.Text, {
|
|
5961
|
+
type: "help",
|
|
5962
|
+
style: {
|
|
5963
|
+
color: '#c02743'
|
|
5964
|
+
}
|
|
5965
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React.createElement("div", {
|
|
5934
5966
|
className: "analyticsSection dashboardSection_content"
|
|
5935
5967
|
}, (() => {
|
|
5936
5968
|
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
|
@@ -5813,6 +5813,7 @@
|
|
|
5813
5813
|
} = _ref;
|
|
5814
5814
|
const [analyticsData, setAnalyticsData] = React.useState(getInitialState());
|
|
5815
5815
|
const [isExportOpen, setIsExportOpen] = React.useState(false);
|
|
5816
|
+
const [failedSites, setFailedSites] = React.useState([]);
|
|
5816
5817
|
const [comparisonData, setComparisonData] = React.useState({
|
|
5817
5818
|
requests: [],
|
|
5818
5819
|
completedRequests: [],
|
|
@@ -5833,7 +5834,10 @@
|
|
|
5833
5834
|
const exportColumns = [{
|
|
5834
5835
|
label: "Select All",
|
|
5835
5836
|
key: ""
|
|
5836
|
-
}, {
|
|
5837
|
+
}, ...(comparisonMode ? [{
|
|
5838
|
+
label: "Site",
|
|
5839
|
+
key: "site"
|
|
5840
|
+
}] : []), {
|
|
5837
5841
|
label: "Start Date",
|
|
5838
5842
|
key: "startDate"
|
|
5839
5843
|
}, {
|
|
@@ -5869,14 +5873,25 @@
|
|
|
5869
5873
|
});
|
|
5870
5874
|
return data;
|
|
5871
5875
|
});
|
|
5872
|
-
const
|
|
5873
|
-
|
|
5876
|
+
const roles = auth.user.Roles;
|
|
5877
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5878
|
+
let [, data] = _ref2;
|
|
5879
|
+
return data === null;
|
|
5880
|
+
}).map(_ref3 => {
|
|
5881
|
+
let [site] = _ref3;
|
|
5882
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5883
|
+
});
|
|
5884
|
+
setFailedSites(failed);
|
|
5885
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5886
|
+
let [, data] = _ref4;
|
|
5887
|
+
return data !== null;
|
|
5888
|
+
}).map(_ref5 => {
|
|
5889
|
+
let [site, data] = _ref5;
|
|
5874
5890
|
return {
|
|
5875
5891
|
site,
|
|
5876
5892
|
data
|
|
5877
5893
|
};
|
|
5878
5894
|
});
|
|
5879
|
-
const roles = auth.user.Roles;
|
|
5880
5895
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5881
5896
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5882
5897
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5914,6 +5929,17 @@
|
|
|
5914
5929
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5915
5930
|
};
|
|
5916
5931
|
const getExportSource = () => {
|
|
5932
|
+
if (comparisonMode) {
|
|
5933
|
+
const sites = comparisonData.requests || [];
|
|
5934
|
+
return sites.map((site, i) => ({
|
|
5935
|
+
site: site.name,
|
|
5936
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5937
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5938
|
+
requests: site.value,
|
|
5939
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5940
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5941
|
+
}));
|
|
5942
|
+
}
|
|
5917
5943
|
return [{
|
|
5918
5944
|
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5919
5945
|
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
@@ -5927,13 +5953,14 @@
|
|
|
5927
5953
|
return null;
|
|
5928
5954
|
}
|
|
5929
5955
|
const source = getExportSource();
|
|
5956
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5930
5957
|
return /*#__PURE__*/React__default["default"].createElement(Components.ExportCsvPopup, {
|
|
5931
5958
|
onClose: () => {
|
|
5932
5959
|
setIsExportOpen(false);
|
|
5933
5960
|
},
|
|
5934
5961
|
columns: exportColumns,
|
|
5935
5962
|
source: source,
|
|
5936
|
-
filename: "".concat(values.analyticsKey, "
|
|
5963
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5937
5964
|
});
|
|
5938
5965
|
};
|
|
5939
5966
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -5950,7 +5977,12 @@
|
|
|
5950
5977
|
},
|
|
5951
5978
|
isActive: isReadyToOpenCSV(),
|
|
5952
5979
|
leftIcon: "file-code-o"
|
|
5953
|
-
}, "Export CSV")), /*#__PURE__*/React__default["default"].createElement(
|
|
5980
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components.Text, {
|
|
5981
|
+
type: "help",
|
|
5982
|
+
style: {
|
|
5983
|
+
color: '#c02743'
|
|
5984
|
+
}
|
|
5985
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5954
5986
|
className: "analyticsSection dashboardSection_content"
|
|
5955
5987
|
}, (() => {
|
|
5956
5988
|
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
|
@@ -36,6 +36,7 @@ const AnalyticsHub = ({
|
|
|
36
36
|
}) => {
|
|
37
37
|
const [analyticsData, setAnalyticsData] = useState(getInitialState());
|
|
38
38
|
const [isExportOpen, setIsExportOpen] = useState(false);
|
|
39
|
+
const [failedSites, setFailedSites] = useState([]);
|
|
39
40
|
const [comparisonData, setComparisonData] = useState({
|
|
40
41
|
requests: [],
|
|
41
42
|
completedRequests: [],
|
|
@@ -63,6 +64,7 @@ const AnalyticsHub = ({
|
|
|
63
64
|
|
|
64
65
|
const exportColumns = [
|
|
65
66
|
{ label: "Select All", key: "" },
|
|
67
|
+
...(comparisonMode ? [{ label: "Site", key: "site" }] : []),
|
|
66
68
|
{ label: "Start Date", key: "startDate" },
|
|
67
69
|
{ label: "End Date", key: "endDate" },
|
|
68
70
|
{ label: `${values.textSingularName}s`, key: "requests" },
|
|
@@ -99,10 +101,14 @@ const AnalyticsHub = ({
|
|
|
99
101
|
return data;
|
|
100
102
|
},
|
|
101
103
|
);
|
|
102
|
-
const multiSiteResults = Object.entries(multiSiteResultsObj).map(
|
|
103
|
-
([site, data]) => ({ site, data }),
|
|
104
|
-
);
|
|
105
104
|
const roles = auth.user.Roles;
|
|
105
|
+
const failed = Object.entries(multiSiteResultsObj)
|
|
106
|
+
.filter(([, data]) => data === null)
|
|
107
|
+
.map(([site]) => Helper.getSiteNameFromRoles(site, roles));
|
|
108
|
+
setFailedSites(failed);
|
|
109
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj)
|
|
110
|
+
.filter(([, data]) => data !== null)
|
|
111
|
+
.map(([site, data]) => ({ site, data }));
|
|
106
112
|
const buildComparison = (activityKey, countType) =>
|
|
107
113
|
multiSiteResults.map((result) => ({
|
|
108
114
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
@@ -184,6 +190,17 @@ const AnalyticsHub = ({
|
|
|
184
190
|
};
|
|
185
191
|
|
|
186
192
|
const getExportSource = () => {
|
|
193
|
+
if (comparisonMode) {
|
|
194
|
+
const sites = comparisonData.requests || [];
|
|
195
|
+
return sites.map((site, i) => ({
|
|
196
|
+
site: site.name,
|
|
197
|
+
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
198
|
+
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
199
|
+
requests: site.value,
|
|
200
|
+
completedRequests: (comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value) || 0,
|
|
201
|
+
comments: (comparisonData.comments[i] && comparisonData.comments[i].value) || 0,
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
187
204
|
return [
|
|
188
205
|
{
|
|
189
206
|
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
@@ -200,6 +217,7 @@ const AnalyticsHub = ({
|
|
|
200
217
|
return null;
|
|
201
218
|
}
|
|
202
219
|
const source = getExportSource();
|
|
220
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map((f) => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
203
221
|
return (
|
|
204
222
|
<Components.ExportCsvPopup
|
|
205
223
|
onClose={() => {
|
|
@@ -207,7 +225,7 @@ const AnalyticsHub = ({
|
|
|
207
225
|
}}
|
|
208
226
|
columns={exportColumns}
|
|
209
227
|
source={source}
|
|
210
|
-
filename={`${values.analyticsKey}
|
|
228
|
+
filename={`${values.analyticsKey}analytics${comparisonMode ? '_comparison' : ''}${filterSuffix ? `_${filterSuffix}` : ''}_${source[0].startDate}_${source[0].endDate}.csv`}
|
|
211
229
|
/>
|
|
212
230
|
);
|
|
213
231
|
};
|
|
@@ -232,6 +250,11 @@ const AnalyticsHub = ({
|
|
|
232
250
|
Export CSV
|
|
233
251
|
</Components.Button>
|
|
234
252
|
</div>
|
|
253
|
+
{failedSites.length > 0 && (
|
|
254
|
+
<Components.Text type="help" style={{ color: '#c02743' }}>
|
|
255
|
+
Data unavailable for: {failedSites.join(', ')}
|
|
256
|
+
</Components.Text>
|
|
257
|
+
)}
|
|
235
258
|
<div className="analyticsSection dashboardSection_content">
|
|
236
259
|
{(() => {
|
|
237
260
|
const chartSuffix = [
|