Skip to content

Commit 57cc7c8

Browse files
sandrodw3brianchandotcom
authored andcommitted
LPD-91502 Render connect to AC state and filters
1 parent f176d51 commit 57cc7c8

5 files changed

Lines changed: 116 additions & 6 deletions

File tree

modules/apps/site/site-cms-site-initializer/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99
compileOnly group: "jakarta.servlet.jsp", name: "jakarta.servlet.jsp-api", version: "3.1.1"
1010
compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.4.0"
1111
compileOnly group: "org.osgi", name: "osgi.core", version: "6.0.0"
12+
compileOnly project(":apps:analytics:analytics-settings-rest-api")
1213
compileOnly project(":apps:asset:asset-api")
1314
compileOnly project(":apps:asset:asset-categories-admin-web-api")
1415
compileOnly project(":apps:asset:asset-tags-api")

modules/apps/site/site-cms-site-initializer/src/main/java/com/liferay/site/cms/site/initializer/internal/display/context/ViewDashboardDisplayContext.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package com.liferay.site.cms.site.initializer.internal.display.context;
77

8+
import com.liferay.analytics.settings.rest.manager.AnalyticsSettingsManager;
89
import com.liferay.learn.LearnMessageUtil;
910
import com.liferay.object.constants.ObjectFolderConstants;
1011
import com.liferay.portal.kernel.exception.PortalException;
@@ -13,8 +14,10 @@
1314
import com.liferay.portal.kernel.log.LogFactoryUtil;
1415
import com.liferay.portal.kernel.model.Group;
1516
import com.liferay.portal.kernel.model.GroupConstants;
17+
import com.liferay.portal.kernel.model.role.RoleConstants;
1618
import com.liferay.portal.kernel.service.GroupLocalService;
1719
import com.liferay.portal.kernel.service.LayoutLocalServiceUtil;
20+
import com.liferay.portal.kernel.service.RoleLocalService;
1821
import com.liferay.portal.kernel.theme.ThemeDisplay;
1922
import com.liferay.portal.kernel.util.HashMapBuilder;
2023
import com.liferay.portal.kernel.util.PortalUtil;
@@ -27,9 +30,13 @@
2730
public class ViewDashboardDisplayContext {
2831

2932
public ViewDashboardDisplayContext(
30-
GroupLocalService groupLocalService, ThemeDisplay themeDisplay) {
33+
AnalyticsSettingsManager analyticsSettingsManager,
34+
GroupLocalService groupLocalService, RoleLocalService roleLocalService,
35+
ThemeDisplay themeDisplay) {
3136

37+
_analyticsSettingsManager = analyticsSettingsManager;
3238
_groupLocalService = groupLocalService;
39+
_roleLocalService = roleLocalService;
3340
_themeDisplay = themeDisplay;
3441
}
3542

@@ -60,6 +67,24 @@ public Map<String, Object> getConstants() {
6067

6168
public Map<String, Object> getReactData() throws PortalException {
6269
return HashMapBuilder.<String, Object>put(
70+
"admin",
71+
() -> _roleLocalService.hasUserRole(
72+
_themeDisplay.getUserId(), _themeDisplay.getCompanyId(),
73+
RoleConstants.ADMINISTRATOR, true)
74+
).put(
75+
"analyticsEnabled",
76+
() -> {
77+
try {
78+
return _analyticsSettingsManager.isAnalyticsEnabled(
79+
_themeDisplay.getCompanyId());
80+
}
81+
catch (Exception exception) {
82+
_log.error(exception);
83+
84+
return false;
85+
}
86+
}
87+
).put(
6388
"constants", getConstants()
6489
).put(
6590
"dashboard",
@@ -78,7 +103,9 @@ public Map<String, Object> getReactData() throws PortalException {
78103
private static final Log _log = LogFactoryUtil.getLog(
79104
ViewDashboardDisplayContext.class);
80105

106+
private final AnalyticsSettingsManager _analyticsSettingsManager;
81107
private final GroupLocalService _groupLocalService;
108+
private final RoleLocalService _roleLocalService;
82109
private final ThemeDisplay _themeDisplay;
83110

84111
}

modules/apps/site/site-cms-site-initializer/src/main/java/com/liferay/site/cms/site/initializer/internal/fragment/renderer/ViewDashboardJSPSectionFragmentRenderer.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55

66
package com.liferay.site.cms.site.initializer.internal.fragment.renderer;
77

8+
import com.liferay.analytics.settings.rest.manager.AnalyticsSettingsManager;
89
import com.liferay.fragment.renderer.FragmentRenderer;
10+
import com.liferay.portal.kernel.service.RoleLocalService;
911
import com.liferay.portal.kernel.theme.ThemeDisplay;
1012
import com.liferay.portal.kernel.util.WebKeys;
1113
import com.liferay.site.cms.site.initializer.internal.display.context.ViewDashboardDisplayContext;
1214

1315
import jakarta.servlet.http.HttpServletRequest;
1416

1517
import org.osgi.service.component.annotations.Component;
18+
import org.osgi.service.component.annotations.Reference;
1619

1720
/**
1821
* @author Adriano Interaminense
@@ -31,7 +34,7 @@ protected ViewDashboardDisplayContext getDisplayContext(
3134
HttpServletRequest httpServletRequest) {
3235

3336
return new ViewDashboardDisplayContext(
34-
groupLocalService,
37+
_analyticsSettingsManager, groupLocalService, _roleLocalService,
3538
(ThemeDisplay)httpServletRequest.getAttribute(
3639
WebKeys.THEME_DISPLAY));
3740
}
@@ -41,4 +44,10 @@ protected String getJSPPath() {
4144
return "/view_dashboard.jsp";
4245
}
4346

47+
@Reference
48+
private AnalyticsSettingsManager _analyticsSettingsManager;
49+
50+
@Reference
51+
private RoleLocalService _roleLocalService;
52+
4453
}

modules/apps/site/site-cms-site-initializer/src/main/resources/META-INF/resources/js/main_view/dashboard/Dashboards.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,14 @@ const TABS = {
2727
type TabId = keyof typeof TABS;
2828

2929
function Wrapper({
30+
admin,
31+
analyticsEnabled,
3032
constants,
3133
freeTier,
3234
learnResources,
3335
}: {
36+
admin: boolean;
37+
analyticsEnabled: boolean;
3438
constants: {[key: string]: string};
3539
freeTier: boolean;
3640
learnResources: ILearnResourceContext;
@@ -45,6 +49,8 @@ function Wrapper({
4549

4650
<ClayTooltipProvider>
4751
<Dashboards
52+
admin={admin}
53+
analyticsEnabled={analyticsEnabled}
4854
constants={constants}
4955
freeTier={freeTier}
5056
learnResources={learnResources}
@@ -55,10 +61,14 @@ function Wrapper({
5561
}
5662

5763
function Dashboards({
64+
admin,
65+
analyticsEnabled,
5866
constants,
5967
freeTier,
6068
learnResources,
6169
}: {
70+
admin: boolean;
71+
analyticsEnabled: boolean;
6272
constants: {[key: string]: string};
6373
freeTier: boolean;
6474
learnResources: ILearnResourceContext;
@@ -90,7 +100,12 @@ function Dashboards({
90100
<InventoryDashboard constants={constants} />
91101
) : null}
92102

93-
{tabId === 'performance' ? <PerformanceDashboard /> : null}
103+
{tabId === 'performance' ? (
104+
<PerformanceDashboard
105+
admin={admin}
106+
analyticsEnabled={analyticsEnabled}
107+
/>
108+
) : null}
94109
</ClayLayout.Container>
95110
</>
96111
);

modules/apps/site/site-cms-site-initializer/src/main/resources/META-INF/resources/js/main_view/dashboard/performance/PerformanceDashboard.tsx

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,66 @@
33
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
44
*/
55

6-
import React from 'react';
6+
import ClayLayout from '@clayui/layout';
7+
import {
8+
ConnectToAnalyticsCloud,
9+
RangeSelector,
10+
RangeSelectors,
11+
RangeSelectorsDropdown,
12+
} from '@liferay/analytics-reports-js-components-web';
13+
import React, {useState} from 'react';
714

8-
export default function PerformanceDashboard() {
9-
return <div />;
15+
import {
16+
SpaceOption,
17+
SpacesDropdown,
18+
initialSpace,
19+
} from '../common/SpacesDropdown';
20+
21+
const initialRangeSelector: RangeSelector = {
22+
rangeEnd: '',
23+
rangeKey: RangeSelectors.Last7Days,
24+
rangeStart: '',
25+
};
26+
27+
export default function PerformanceDashboard({
28+
admin,
29+
analyticsEnabled,
30+
}: {
31+
admin: boolean;
32+
analyticsEnabled: boolean;
33+
}) {
34+
const [rangeSelector, setRangeSelector] =
35+
useState<RangeSelector>(initialRangeSelector);
36+
const [space, setSpace] = useState<SpaceOption>(initialSpace);
37+
38+
if (!analyticsEnabled) {
39+
return <ConnectToAnalyticsCloud admin={admin} />;
40+
}
41+
42+
return (
43+
<ClayLayout.Row className="mb-4">
44+
<ClayLayout.Col size={12}>
45+
<div className="d-flex">
46+
<SpacesDropdown
47+
className="mr-3"
48+
onSelectSpace={setSpace}
49+
selectedSpace={space}
50+
/>
51+
52+
<RangeSelectorsDropdown
53+
activeRangeSelector={rangeSelector}
54+
availableRangeKeys={[
55+
RangeSelectors.Last24Hours,
56+
RangeSelectors.Last7Days,
57+
RangeSelectors.Last28Days,
58+
RangeSelectors.Last30Days,
59+
RangeSelectors.Last90Days,
60+
]}
61+
borderless={false}
62+
onChange={setRangeSelector}
63+
/>
64+
</div>
65+
</ClayLayout.Col>
66+
</ClayLayout.Row>
67+
);
1068
}

0 commit comments

Comments
 (0)