Skip to content

Commit

Permalink
Merge pull request #942 from Piumal1999/feature-governance
Browse files Browse the repository at this point in the history
UI Improvements to Governance Dashboards
  • Loading branch information
AnuGayan authored Feb 27, 2025
2 parents 53c2ad4 + 14f774e commit bbf0d57
Show file tree
Hide file tree
Showing 21 changed files with 345 additions and 199 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import ListRoles from 'AppComponents//RolePermissions/ListRoles.jsx';
import TenantConfSave from 'AppComponents/AdvancedSettings/TenantConfSave';
import Policies from 'AppComponents/Governance/Policies';
import RulesetCatalog from 'AppComponents/Governance/RulesetCatalog';
import Overview from 'AppComponents/Governance/Overview';
import BusinessIcon from '@mui/icons-material/Business';
import Organizations from 'AppComponents/Organizations/ListOrganizations';

Expand Down Expand Up @@ -70,6 +69,7 @@ import AccountTreeIcon from '@mui/icons-material/AccountTree';
import ListApis from '../APISettings/ListApis';
import UsageReport from '../APISettings/UsageReport';
import ListLabels from '../Labels/ListLabels';
import ComplianceDashboard from '../Governance/ComplianceDashboard';

const RouteMenuMapping = (intl) => [
{
Expand Down Expand Up @@ -318,13 +318,13 @@ const RouteMenuMapping = (intl) => [
}),
children: [
{
id: 'Overview',
id: 'Compliance',
displayText: intl.formatMessage({
id: 'Base.RouteMenuMapping.overview',
defaultMessage: 'Overview',
id: 'Base.RouteMenuMapping.compliance',
defaultMessage: 'Compliance',
}),
path: '/governance/overview',
component: Overview,
path: '/governance/compliance',
component: ComplianceDashboard,
icon: <BarChartIcon />,
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export default function Compliance(props) {
width='full'
title={(
<FormattedMessage
id='Governance.Overview.Compliance.title'
id='Governance.ComplianceDashboard.Compliance.title'
defaultMessage='Compliance Summary - {artifactName}'
values={{ artifactName }}
/>
Expand All @@ -104,15 +104,15 @@ export default function Compliance(props) {
>
<Box sx={{ display: 'flex', alignItems: 'center', paddingBottom: 4 }}>
<RouterLink
to='/governance/overview'
to='/governance/compliance'
style={{
display: 'flex', alignItems: 'center', textDecoration: 'none', color: 'inherit',
}}
>
<ArrowBackIcon />
<FormattedMessage
id='Governance.Overview.Compliance.back.to.overview'
defaultMessage='Back to Overview'
id='Governance.ComplianceDashboard.Compliance.back.to.compliance'
defaultMessage='Back to Compliance Dashboard'
/>
</RouterLink>
</Box>
Expand Down Expand Up @@ -140,7 +140,7 @@ export default function Compliance(props) {
sx={{ fontWeight: 'medium' }}
>
<FormattedMessage
id='Governance.Overview.Compliance.check.progress'
id='Governance.ComplianceDashboard.Compliance.check.progress'
defaultMessage='Compliance Check in Progress'
/>
</Typography>
Expand All @@ -150,7 +150,7 @@ export default function Compliance(props) {
align='center'
>
<FormattedMessage
id='Governance.Overview.Compliance.check.progress.message'
id='Governance.ComplianceDashboard.Compliance.check.progress.message'
defaultMessage='The compliance check is currently in progress. This may take a few moments.'
/>
</Typography>
Expand All @@ -164,7 +164,7 @@ export default function Compliance(props) {
width='full'
title={(
<FormattedMessage
id='Governance.Overview.Compliance.title'
id='Governance.ComplianceDashboard.Compliance.title'
defaultMessage='Compliance Summary - {artifactName}'
values={{ artifactName }}
/>
Expand All @@ -179,20 +179,20 @@ export default function Compliance(props) {
}}
>
<RouterLink
to='/governance/overview'
to='/governance/compliance'
style={{
display: 'flex', alignItems: 'center', textDecoration: 'none', color: 'inherit',
}}
>
<ArrowBackIcon />
<FormattedMessage
id='Governance.Overview.Compliance.back.to.overview'
defaultMessage='Back to Overview'
id='Governance.ComplianceDashboard.Compliance.back.to.compliance'
defaultMessage='Back to Compliance Dashboard'
/>
</RouterLink>
<Typography variant='body2'>
<FormattedMessage
id='Governance.Overview.Compliance.api.owner'
id='Governance.ComplianceDashboard.Compliance.api.owner'
defaultMessage='API Owner: {owner}'
values={{ owner: artifactOwner }}
/>
Expand Down Expand Up @@ -225,7 +225,7 @@ export default function Compliance(props) {
sx={{ fontWeight: 'bold', mb: 2 }}
>
<FormattedMessage
id='Governance.Overview.Compliance.policy.adherence.summary'
id='Governance.ComplianceDashboard.Compliance.policy.adherence.summary'
defaultMessage='Policy Adherence Summary'
/>
</Typography>
Expand All @@ -243,26 +243,26 @@ export default function Compliance(props) {
sx={{ fontWeight: 'bold', mb: 2 }}
>
<FormattedMessage
id='Governance.Overview.Compliance.ruleset.adherence'
id='Governance.ComplianceDashboard.Compliance.ruleset.adherence'
defaultMessage='Ruleset Adherence'
/>
</Typography>
<DonutChart
colors={['#2E96FF', '#FF5252', 'grey']}
colors={['#00B81D', '#FF5252', 'grey']}
data={[
{
id: 0,
value: statusCounts.passed,
label: `${intl.formatMessage({
id: 'Governance.Overview.Compliance.passed',
id: 'Governance.ComplianceDashboard.Compliance.passed',
defaultMessage: 'Passed',
})} (${statusCounts.passed})`,
},
{
id: 1,
value: statusCounts.failed,
label: `${intl.formatMessage({
id: 'Governance.Overview.Compliance.failed',
id: 'Governance.ComplianceDashboard.Compliance.failed',
defaultMessage: 'Failed',
})} (${statusCounts.failed})`,
},
Expand Down Expand Up @@ -295,7 +295,7 @@ export default function Compliance(props) {
sx={{ fontWeight: 'bold', mb: 2 }}
>
<FormattedMessage
id='Governance.Overview.Compliance.ruleset.adherence.summary'
id='Governance.ComplianceDashboard.Compliance.ruleset.adherence.summary'
defaultMessage='Ruleset Adherence Summary'
/>
</Typography>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
return (
<Typography variant='body2' color='textSecondary'>
{intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.pending',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.pending',
defaultMessage: 'N/A - Waiting for policy evaluation',
})}
</Typography>
Expand All @@ -66,7 +66,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
return (
<Typography variant='body2' color='textSecondary'>
{intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.not.applied',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.not.applied',
defaultMessage: 'N/A - Policy not applied',
})}
</Typography>
Expand All @@ -81,7 +81,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
<Box sx={{ display: 'flex', mb: 0.5 }}>
<Typography variant='body2' sx={{ fontWeight: 'bold' }} color='textSecondary'>
{intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.followed.count',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.followed.count',
defaultMessage: '{followed}/{total} Followed',
}, { followed, total })}
</Typography>
Expand Down Expand Up @@ -150,7 +150,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
{
name: 'name',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.column.policy',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.column.policy',
defaultMessage: 'Policy',
}),
options: {
Expand All @@ -176,7 +176,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
{
name: 'status',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.column.status',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.column.status',
defaultMessage: 'Status',
}),
options: {
Expand Down Expand Up @@ -218,7 +218,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
{
name: 'rulesetsList',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.column.rulesets',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.column.rulesets',
defaultMessage: 'Rulesets',
}),
options: {
Expand Down Expand Up @@ -266,7 +266,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
sx={{ fontWeight: 'medium' }}
>
{intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.empty.title',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.empty.title',
defaultMessage: 'No Policies Applied',
})}
</Typography>
Expand All @@ -276,7 +276,7 @@ export default function PolicyAdherenceSummaryTable({ artifactId }) {
align='center'
>
{intl.formatMessage({
id: 'Governance.Overview.APICompliance.PolicyAdherence.empty.helper',
id: 'Governance.ComplianceDashboard.APICompliance.PolicyAdherence.empty.helper',
defaultMessage: 'No governance policies have been applied to this API.',
})}
</Typography>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ export default function RuleViolationSummary({ artifactId }) {
{
name: 'name',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.column.rule',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.column.rule',
defaultMessage: 'Rule',
}),
options: {
Expand All @@ -209,7 +209,7 @@ export default function RuleViolationSummary({ artifactId }) {
{
name: 'violatedPath',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.column.path',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.column.path',
defaultMessage: 'Path',
}),
options: {
Expand All @@ -222,7 +222,7 @@ export default function RuleViolationSummary({ artifactId }) {
{
name: 'message',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.column.message',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.column.message',
defaultMessage: 'Message',
}),
options: {
Expand All @@ -239,7 +239,7 @@ export default function RuleViolationSummary({ artifactId }) {
{
name: 'name',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.column.rule',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.column.rule',
defaultMessage: 'Rule',
}),
options: {
Expand All @@ -251,7 +251,7 @@ export default function RuleViolationSummary({ artifactId }) {
{
name: 'description',
label: intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.column.description',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.column.description',
defaultMessage: 'Description',
}),
options: {
Expand Down Expand Up @@ -407,22 +407,22 @@ export default function RuleViolationSummary({ artifactId }) {
switch (tabIndex) {
case 0:
return intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.empty.errors',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.empty.errors',
defaultMessage: 'No Error violations found',
});
case 1:
return intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.empty.warnings',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.empty.warnings',
defaultMessage: 'No Warning violations found',
});
case 2:
return intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.empty.info',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.empty.info',
defaultMessage: 'No Info violations found',
});
case 3:
return intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.empty.passed',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.empty.passed',
defaultMessage: 'No Passed rules found',
});
default:
Expand Down Expand Up @@ -485,31 +485,31 @@ export default function RuleViolationSummary({ artifactId }) {
icon={<ReportIcon color='error' />}
iconPosition='start'
label={intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.tab.errors',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.tab.errors',
defaultMessage: 'Errors ({count})',
}, { count: getTotalRuleCount(complianceData.errors) })}
/>
<Tab
icon={<WarningIcon color='warning' />}
iconPosition='start'
label={intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.tab.warnings',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.tab.warnings',
defaultMessage: 'Warnings ({count})',
}, { count: getTotalRuleCount(complianceData.warnings) })}
/>
<Tab
icon={<InfoIcon color='info' />}
iconPosition='start'
label={intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.tab.info',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.tab.info',
defaultMessage: 'Info ({count})',
}, { count: getTotalRuleCount(complianceData.info) })}
/>
<Tab
icon={<CheckCircleIcon color='success' />}
iconPosition='start'
label={intl.formatMessage({
id: 'Governance.Overview.APICompliance.RuleViolation.tab.passed',
id: 'Governance.ComplianceDashboard.APICompliance.RuleViolation.tab.passed',
defaultMessage: 'Passed ({count})',
}, { count: getTotalRuleCount(complianceData.passed) })}
/>
Expand Down
Loading

0 comments on commit bbf0d57

Please sign in to comment.