@plusscommunities/pluss-maintenance-web-forms 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
|
@@ -5802,6 +5802,7 @@ const AnalyticsHub = _ref => {
|
|
|
5802
5802
|
} = _ref;
|
|
5803
5803
|
const [analyticsData, setAnalyticsData] = React.useState(getInitialState());
|
|
5804
5804
|
const [isExportOpen, setIsExportOpen] = React.useState(false);
|
|
5805
|
+
const [failedSites, setFailedSites] = React.useState([]);
|
|
5805
5806
|
const [comparisonData, setComparisonData] = React.useState({
|
|
5806
5807
|
requests: [],
|
|
5807
5808
|
completedRequests: [],
|
|
@@ -5822,7 +5823,10 @@ const AnalyticsHub = _ref => {
|
|
|
5822
5823
|
const exportColumns = [{
|
|
5823
5824
|
label: "Select All",
|
|
5824
5825
|
key: ""
|
|
5825
|
-
}, {
|
|
5826
|
+
}, ...(comparisonMode ? [{
|
|
5827
|
+
label: "Site",
|
|
5828
|
+
key: "site"
|
|
5829
|
+
}] : []), {
|
|
5826
5830
|
label: "Start Date",
|
|
5827
5831
|
key: "startDate"
|
|
5828
5832
|
}, {
|
|
@@ -5858,14 +5862,25 @@ const AnalyticsHub = _ref => {
|
|
|
5858
5862
|
});
|
|
5859
5863
|
return data;
|
|
5860
5864
|
});
|
|
5861
|
-
const
|
|
5862
|
-
|
|
5865
|
+
const roles = auth.user.Roles;
|
|
5866
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5867
|
+
let [, data] = _ref2;
|
|
5868
|
+
return data === null;
|
|
5869
|
+
}).map(_ref3 => {
|
|
5870
|
+
let [site] = _ref3;
|
|
5871
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5872
|
+
});
|
|
5873
|
+
setFailedSites(failed);
|
|
5874
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5875
|
+
let [, data] = _ref4;
|
|
5876
|
+
return data !== null;
|
|
5877
|
+
}).map(_ref5 => {
|
|
5878
|
+
let [site, data] = _ref5;
|
|
5863
5879
|
return {
|
|
5864
5880
|
site,
|
|
5865
5881
|
data
|
|
5866
5882
|
};
|
|
5867
5883
|
});
|
|
5868
|
-
const roles = auth.user.Roles;
|
|
5869
5884
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5870
5885
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5871
5886
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5903,6 +5918,17 @@ const AnalyticsHub = _ref => {
|
|
|
5903
5918
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5904
5919
|
};
|
|
5905
5920
|
const getExportSource = () => {
|
|
5921
|
+
if (comparisonMode) {
|
|
5922
|
+
const sites = comparisonData.requests || [];
|
|
5923
|
+
return sites.map((site, i) => ({
|
|
5924
|
+
site: site.name,
|
|
5925
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5926
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5927
|
+
requests: site.value,
|
|
5928
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5929
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5930
|
+
}));
|
|
5931
|
+
}
|
|
5906
5932
|
return [{
|
|
5907
5933
|
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5908
5934
|
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
@@ -5916,13 +5942,14 @@ const AnalyticsHub = _ref => {
|
|
|
5916
5942
|
return null;
|
|
5917
5943
|
}
|
|
5918
5944
|
const source = getExportSource();
|
|
5945
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5919
5946
|
return /*#__PURE__*/React__default["default"].createElement(Components.ExportCsvPopup, {
|
|
5920
5947
|
onClose: () => {
|
|
5921
5948
|
setIsExportOpen(false);
|
|
5922
5949
|
},
|
|
5923
5950
|
columns: exportColumns,
|
|
5924
5951
|
source: source,
|
|
5925
|
-
filename: "".concat(values.analyticsKey, "
|
|
5952
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5926
5953
|
});
|
|
5927
5954
|
};
|
|
5928
5955
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -5939,7 +5966,12 @@ const AnalyticsHub = _ref => {
|
|
|
5939
5966
|
},
|
|
5940
5967
|
isActive: isReadyToOpenCSV(),
|
|
5941
5968
|
leftIcon: "file-code-o"
|
|
5942
|
-
}, "Export CSV")), /*#__PURE__*/React__default["default"].createElement(
|
|
5969
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components.Text, {
|
|
5970
|
+
type: "help",
|
|
5971
|
+
style: {
|
|
5972
|
+
color: '#c02743'
|
|
5973
|
+
}
|
|
5974
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5943
5975
|
className: "analyticsSection dashboardSection_content"
|
|
5944
5976
|
}, (() => {
|
|
5945
5977
|
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
|
@@ -5771,6 +5771,7 @@ const AnalyticsHub = _ref => {
|
|
|
5771
5771
|
} = _ref;
|
|
5772
5772
|
const [analyticsData, setAnalyticsData] = useState(getInitialState());
|
|
5773
5773
|
const [isExportOpen, setIsExportOpen] = useState(false);
|
|
5774
|
+
const [failedSites, setFailedSites] = useState([]);
|
|
5774
5775
|
const [comparisonData, setComparisonData] = useState({
|
|
5775
5776
|
requests: [],
|
|
5776
5777
|
completedRequests: [],
|
|
@@ -5791,7 +5792,10 @@ const AnalyticsHub = _ref => {
|
|
|
5791
5792
|
const exportColumns = [{
|
|
5792
5793
|
label: "Select All",
|
|
5793
5794
|
key: ""
|
|
5794
|
-
}, {
|
|
5795
|
+
}, ...(comparisonMode ? [{
|
|
5796
|
+
label: "Site",
|
|
5797
|
+
key: "site"
|
|
5798
|
+
}] : []), {
|
|
5795
5799
|
label: "Start Date",
|
|
5796
5800
|
key: "startDate"
|
|
5797
5801
|
}, {
|
|
@@ -5827,14 +5831,25 @@ const AnalyticsHub = _ref => {
|
|
|
5827
5831
|
});
|
|
5828
5832
|
return data;
|
|
5829
5833
|
});
|
|
5830
|
-
const
|
|
5831
|
-
|
|
5834
|
+
const roles = auth.user.Roles;
|
|
5835
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5836
|
+
let [, data] = _ref2;
|
|
5837
|
+
return data === null;
|
|
5838
|
+
}).map(_ref3 => {
|
|
5839
|
+
let [site] = _ref3;
|
|
5840
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5841
|
+
});
|
|
5842
|
+
setFailedSites(failed);
|
|
5843
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5844
|
+
let [, data] = _ref4;
|
|
5845
|
+
return data !== null;
|
|
5846
|
+
}).map(_ref5 => {
|
|
5847
|
+
let [site, data] = _ref5;
|
|
5832
5848
|
return {
|
|
5833
5849
|
site,
|
|
5834
5850
|
data
|
|
5835
5851
|
};
|
|
5836
5852
|
});
|
|
5837
|
-
const roles = auth.user.Roles;
|
|
5838
5853
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5839
5854
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5840
5855
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5872,6 +5887,17 @@ const AnalyticsHub = _ref => {
|
|
|
5872
5887
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5873
5888
|
};
|
|
5874
5889
|
const getExportSource = () => {
|
|
5890
|
+
if (comparisonMode) {
|
|
5891
|
+
const sites = comparisonData.requests || [];
|
|
5892
|
+
return sites.map((site, i) => ({
|
|
5893
|
+
site: site.name,
|
|
5894
|
+
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
5895
|
+
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
5896
|
+
requests: site.value,
|
|
5897
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5898
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5899
|
+
}));
|
|
5900
|
+
}
|
|
5875
5901
|
return [{
|
|
5876
5902
|
startDate: moment(startTime + 1).format("D-MM-YYYY"),
|
|
5877
5903
|
endDate: moment(endTime).format("D-MM-YYYY"),
|
|
@@ -5885,13 +5911,14 @@ const AnalyticsHub = _ref => {
|
|
|
5885
5911
|
return null;
|
|
5886
5912
|
}
|
|
5887
5913
|
const source = getExportSource();
|
|
5914
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5888
5915
|
return /*#__PURE__*/React.createElement(Components.ExportCsvPopup, {
|
|
5889
5916
|
onClose: () => {
|
|
5890
5917
|
setIsExportOpen(false);
|
|
5891
5918
|
},
|
|
5892
5919
|
columns: exportColumns,
|
|
5893
5920
|
source: source,
|
|
5894
|
-
filename: "".concat(values.analyticsKey, "
|
|
5921
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5895
5922
|
});
|
|
5896
5923
|
};
|
|
5897
5924
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -5908,7 +5935,12 @@ const AnalyticsHub = _ref => {
|
|
|
5908
5935
|
},
|
|
5909
5936
|
isActive: isReadyToOpenCSV(),
|
|
5910
5937
|
leftIcon: "file-code-o"
|
|
5911
|
-
}, "Export CSV")), /*#__PURE__*/React.createElement(
|
|
5938
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React.createElement(Components.Text, {
|
|
5939
|
+
type: "help",
|
|
5940
|
+
style: {
|
|
5941
|
+
color: '#c02743'
|
|
5942
|
+
}
|
|
5943
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React.createElement("div", {
|
|
5912
5944
|
className: "analyticsSection dashboardSection_content"
|
|
5913
5945
|
}, (() => {
|
|
5914
5946
|
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
|
@@ -5791,6 +5791,7 @@
|
|
|
5791
5791
|
} = _ref;
|
|
5792
5792
|
const [analyticsData, setAnalyticsData] = React.useState(getInitialState());
|
|
5793
5793
|
const [isExportOpen, setIsExportOpen] = React.useState(false);
|
|
5794
|
+
const [failedSites, setFailedSites] = React.useState([]);
|
|
5794
5795
|
const [comparisonData, setComparisonData] = React.useState({
|
|
5795
5796
|
requests: [],
|
|
5796
5797
|
completedRequests: [],
|
|
@@ -5811,7 +5812,10 @@
|
|
|
5811
5812
|
const exportColumns = [{
|
|
5812
5813
|
label: "Select All",
|
|
5813
5814
|
key: ""
|
|
5814
|
-
}, {
|
|
5815
|
+
}, ...(comparisonMode ? [{
|
|
5816
|
+
label: "Site",
|
|
5817
|
+
key: "site"
|
|
5818
|
+
}] : []), {
|
|
5815
5819
|
label: "Start Date",
|
|
5816
5820
|
key: "startDate"
|
|
5817
5821
|
}, {
|
|
@@ -5847,14 +5851,25 @@
|
|
|
5847
5851
|
});
|
|
5848
5852
|
return data;
|
|
5849
5853
|
});
|
|
5850
|
-
const
|
|
5851
|
-
|
|
5854
|
+
const roles = auth.user.Roles;
|
|
5855
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5856
|
+
let [, data] = _ref2;
|
|
5857
|
+
return data === null;
|
|
5858
|
+
}).map(_ref3 => {
|
|
5859
|
+
let [site] = _ref3;
|
|
5860
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5861
|
+
});
|
|
5862
|
+
setFailedSites(failed);
|
|
5863
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5864
|
+
let [, data] = _ref4;
|
|
5865
|
+
return data !== null;
|
|
5866
|
+
}).map(_ref5 => {
|
|
5867
|
+
let [site, data] = _ref5;
|
|
5852
5868
|
return {
|
|
5853
5869
|
site,
|
|
5854
5870
|
data
|
|
5855
5871
|
};
|
|
5856
5872
|
});
|
|
5857
|
-
const roles = auth.user.Roles;
|
|
5858
5873
|
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5859
5874
|
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5860
5875
|
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
@@ -5892,6 +5907,17 @@
|
|
|
5892
5907
|
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5893
5908
|
};
|
|
5894
5909
|
const getExportSource = () => {
|
|
5910
|
+
if (comparisonMode) {
|
|
5911
|
+
const sites = comparisonData.requests || [];
|
|
5912
|
+
return sites.map((site, i) => ({
|
|
5913
|
+
site: site.name,
|
|
5914
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5915
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5916
|
+
requests: site.value,
|
|
5917
|
+
completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
|
|
5918
|
+
comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
|
|
5919
|
+
}));
|
|
5920
|
+
}
|
|
5895
5921
|
return [{
|
|
5896
5922
|
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5897
5923
|
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
@@ -5905,13 +5931,14 @@
|
|
|
5905
5931
|
return null;
|
|
5906
5932
|
}
|
|
5907
5933
|
const source = getExportSource();
|
|
5934
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5908
5935
|
return /*#__PURE__*/React__default["default"].createElement(Components.ExportCsvPopup, {
|
|
5909
5936
|
onClose: () => {
|
|
5910
5937
|
setIsExportOpen(false);
|
|
5911
5938
|
},
|
|
5912
5939
|
columns: exportColumns,
|
|
5913
5940
|
source: source,
|
|
5914
|
-
filename: "".concat(values.analyticsKey, "
|
|
5941
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5915
5942
|
});
|
|
5916
5943
|
};
|
|
5917
5944
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -5928,7 +5955,12 @@
|
|
|
5928
5955
|
},
|
|
5929
5956
|
isActive: isReadyToOpenCSV(),
|
|
5930
5957
|
leftIcon: "file-code-o"
|
|
5931
|
-
}, "Export CSV")), /*#__PURE__*/React__default["default"].createElement(
|
|
5958
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components.Text, {
|
|
5959
|
+
type: "help",
|
|
5960
|
+
style: {
|
|
5961
|
+
color: '#c02743'
|
|
5962
|
+
}
|
|
5963
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5932
5964
|
className: "analyticsSection dashboardSection_content"
|
|
5933
5965
|
}, (() => {
|
|
5934
5966
|
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 = [
|