Skip to content
29 changes: 29 additions & 0 deletions packages/base/src/__snapshots__/App.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1363,6 +1363,35 @@ exports[`App render App when token is existed 1`] = `
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
>
<div
class="ant-space ant-space-horizontal ant-space-align-center basic-tooltips-wrapper css-4jbtl9"
>
<div
class="ant-space-item"
>
<div
class="action-item user-activity"
>
<svg
color="currentColor"
height="18"
viewBox="0 0 16 16"
width="18"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8 1.333A6.67 6.67 0 0 1 14.666 8 6.67 6.67 0 0 1 8 14.667 6.67 6.67 0 0 1 1.333 8 6.67 6.67 0 0 1 8 1.333m-3.985 8.944c.979 1.46 2.448 2.39 4.091 2.39s3.113-.93 4.091-2.39a5.98 5.98 0 0 0-4.09-1.61 5.98 5.98 0 0 0-4.092 1.61M8 7.333a2 2 0 1 0 0-4 2 2 0 0 0 0 4"
fill="currentColor"
/>
</svg>
</div>
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
Expand Down
1 change: 1 addition & 0 deletions packages/base/src/locale/en-US/dmsMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export default {
title: 'Global settings',
userCenter: 'User center',
reportStatistics: 'Report statistics',
userActivity: 'User activity',
viewRule: 'View rule',
ruleManage: 'Rule management',
system: 'System settings',
Expand Down
4 changes: 3 additions & 1 deletion packages/base/src/locale/en-US/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import dmsDataExport from './dmsDataExport';
import dmsGlobalDataSource from './dmsGlobalDataSource';
import resourceOverview from './resourceOverview';
import availabilityZone from './availabilityZone';
import userActivity from './userActivity';

// eslint-disable-next-line import/no-anonymous-default-export
export default {
Expand All @@ -33,6 +34,7 @@ export default {
dmsDataExport,
dmsGlobalDataSource,
resourceOverview,
availabilityZone
availabilityZone,
userActivity
}
};
45 changes: 45 additions & 0 deletions packages/base/src/locale/en-US/userActivity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// eslint-disable-next-line import/no-anonymous-default-export
export default {
title: 'User activity',
statDate: 'Stat date',
dateRange: 'Trend range',
refresh: 'Refresh',
summary: {
dau: 'Daily active users',
requestCount: 'Total requests',
avgRequestPerUser: 'Avg requests per user',
errorRate: 'Error rate',
errorCount: 'Error requests',
peakHour: 'Peak hour',
peakHourRequests: 'Peak hour requests'
},
dailyTrend: {
title: 'Daily activity trend',
dau: 'DAU',
requestCount: 'Requests',
errorCount: 'Errors',
emptyText: 'No data in selected range'
},
moduleDistribution: {
title: 'Module distribution',
requestCount: 'Requests',
percent: 'Share',
emptyText: 'No module data for selected date'
},
hourlyDistribution: {
title: '24-hour distribution',
hour: 'Hour',
requestCount: 'Requests',
activeUsers: 'Active users',
emptyText: 'No hourly data for selected date'
},
userRanking: {
title: 'User activity ranking',
userName: 'User',
activeDays: 'Active days',
requestCount: 'Requests',
topModule: 'Top business module',
lastActiveAt: 'Last active',
emptyText: 'No user activity in selected range'
}
};
1 change: 1 addition & 0 deletions packages/base/src/locale/zh-CN/dmsMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export default {
title: '全局设置',
userCenter: '用户中心',
reportStatistics: '报表统计',
userActivity: '用户使用情况',
viewRule: '查看规则',
ruleManage: '规则管理',
system: '系统设置',
Expand Down
4 changes: 3 additions & 1 deletion packages/base/src/locale/zh-CN/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import dmsAccount from './dmsAccount';
import dmsDataExport from './dmsDataExport';
import dmsGlobalDataSource from './dmsGlobalDataSource';
import resourceOverview from './resourceOverview';
import userActivity from './userActivity';
import availabilityZone from './availabilityZone';
// eslint-disable-next-line import/no-anonymous-default-export
export default {
Expand All @@ -33,6 +34,7 @@ export default {
dmsDataExport,
dmsGlobalDataSource,
resourceOverview,
availabilityZone
availabilityZone,
userActivity
}
};
45 changes: 45 additions & 0 deletions packages/base/src/locale/zh-CN/userActivity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// eslint-disable-next-line import/no-anonymous-default-export
export default {
title: '用户使用情况',
statDate: '统计日期',
dateRange: '趋势区间',
refresh: '刷新',
summary: {
dau: '日活跃用户',
requestCount: '请求总数',
avgRequestPerUser: '人均请求数',
errorRate: '错误率',
errorCount: '错误请求数',
peakHour: '高峰时段',
peakHourRequests: '高峰请求数'
},
dailyTrend: {
title: '日活跃趋势',
dau: '日活跃用户',
requestCount: '请求数',
errorCount: '错误数',
emptyText: '所选区间暂无数据'
},
moduleDistribution: {
title: '模块访问分布',
requestCount: '请求数',
percent: '占比',
emptyText: '所选日期暂无模块访问数据'
},
hourlyDistribution: {
title: '24 小时访问分布',
hour: '时段',
requestCount: '请求数',
activeUsers: '活跃用户数',
emptyText: '所选日期暂无时段数据'
},
userRanking: {
title: '用户活跃排行',
userName: '用户名',
activeDays: '活跃天数',
requestCount: '请求数',
topModule: '最常用业务模块',
lastActiveAt: '最近活跃时间',
emptyText: '所选区间暂无用户活跃数据'
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,35 @@ exports[`base/Nav/QuickActions render navigate event 1`] = `
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
>
<div
class="ant-space ant-space-horizontal ant-space-align-center basic-tooltips-wrapper css-4jbtl9"
>
<div
class="ant-space-item"
>
<div
class="action-item user-activity"
>
<svg
color="currentColor"
height="18"
viewBox="0 0 16 16"
width="18"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8 1.333A6.67 6.67 0 0 1 14.666 8 6.67 6.67 0 0 1 8 14.667 6.67 6.67 0 0 1 1.333 8 6.67 6.67 0 0 1 8 1.333m-3.985 8.944c.979 1.46 2.448 2.39 4.091 2.39s3.113-.93 4.091-2.39a5.98 5.98 0 0 0-4.09-1.61 5.98 5.98 0 0 0-4.092 1.61M8 7.333a2 2 0 1 0 0-4 2 2 0 0 0 0 4"
fill="currentColor"
/>
</svg>
</div>
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
Expand Down Expand Up @@ -249,6 +278,35 @@ exports[`base/Nav/QuickActions render quick action when current user is admin 1`
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
>
<div
class="ant-space ant-space-horizontal ant-space-align-center basic-tooltips-wrapper css-4jbtl9"
>
<div
class="ant-space-item"
>
<div
class="action-item user-activity"
>
<svg
color="currentColor"
height="18"
viewBox="0 0 16 16"
width="18"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M8 1.333A6.67 6.67 0 0 1 14.666 8 6.67 6.67 0 0 1 8 14.667 6.67 6.67 0 0 1 1.333 8 6.67 6.67 0 0 1 8 1.333m-3.985 8.944c.979 1.46 2.448 2.39 4.091 2.39s3.113-.93 4.091-2.39a5.98 5.98 0 0 0-4.09-1.61 5.98 5.98 0 0 0-4.092 1.61M8 7.333a2 2 0 1 0 0-4 2 2 0 0 0 0 4"
fill="currentColor"
/>
</svg>
</div>
</div>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ describe('base/Nav/QuickActions', () => {
const { baseElement } = customRender();
expect(baseElement).toMatchSnapshot();
const actions = getAllBySelector('.action-item');
expect(actions).toHaveLength(4);
expect(actions).toHaveLength(5);

fireEvent.click(actions[0]);
await act(async () => jest.advanceTimersByTime(0));
Expand All @@ -189,14 +189,22 @@ describe('base/Nav/QuickActions', () => {
expect(navigateSpy).toHaveBeenCalledTimes(3);
expect(navigateSpy).toHaveBeenNthCalledWith(
3,
ROUTE_PATHS.SQLE.RULE.index.path
ROUTE_PATHS.BASE.USER_ACTIVITY
);

fireEvent.click(actions[3]);
await act(async () => jest.advanceTimersByTime(0));
expect(navigateSpy).toHaveBeenCalledTimes(4);
expect(navigateSpy).toHaveBeenNthCalledWith(
4,
ROUTE_PATHS.SQLE.RULE.index.path
);

fireEvent.click(actions[4]);
await act(async () => jest.advanceTimersByTime(0));
expect(navigateSpy).toHaveBeenCalledTimes(5);
expect(navigateSpy).toHaveBeenNthCalledWith(
5,
ROUTE_PATHS.SQLE.KNOWLEDGE.index.path
);
});
Expand All @@ -212,7 +220,7 @@ describe('base/Nav/QuickActions', () => {
pathname: ROUTE_PATHS.SQLE.KNOWLEDGE.index.path
});
customRender();
expect(getAllBySelector('.action-item')[3]).toHaveClass(
expect(getAllBySelector('.action-item')[4]).toHaveClass(
'action-item-active'
);

Expand All @@ -221,7 +229,7 @@ describe('base/Nav/QuickActions', () => {
pathname: `${ROUTE_PATHS.SQLE.KNOWLEDGE.index.path}/${ROUTE_PATHS.SQLE.KNOWLEDGE.refined.path}`
});
customRender();
expect(getAllBySelector('.action-item')[3]).toHaveClass(
expect(getAllBySelector('.action-item')[4]).toHaveClass(
'action-item-active'
);
});
Expand Down
10 changes: 10 additions & 0 deletions packages/base/src/page/Nav/SideMenu/QuickActions/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
// #if [ee]
TodoListOutlined,
UserCircleFilled,
// #endif
SignalFilled,
ProfileSquareFilled,
Expand Down Expand Up @@ -86,6 +87,15 @@ const QuickActions: React.FC<QuickActionsProps> = ({
icon: <SignalFilled width={18} height={18} color="currentColor" />,
permission: PERMISSIONS.PAGES.SQLE.REPORT_STATISTICS
},
// #if [ee]
{
key: 'user-activity',
title: t('dmsMenu.globalSettings.userActivity'),
path: ROUTE_PATHS.BASE.USER_ACTIVITY,
icon: <UserCircleFilled width={18} height={18} color="currentColor" />,
permission: PERMISSIONS.PAGES.BASE.USER_ACTIVITY
},
// #endif
{
key: 'view-rule',
title: t('dmsMenu.globalSettings.viewRule'),
Expand Down
Loading
Loading