diff --git a/src/app/api/standards.jsx b/src/app/api/standards.jsx index 6a92277199..fc9a73b138 100755 --- a/src/app/api/standards.jsx +++ b/src/app/api/standards.jsx @@ -84,6 +84,38 @@ const useFetchAccessibilityStandards = () => { }); }; +const useFetchCodeSets = () => { + const axios = useAxios(); + return useQuery(['code-sets'], async () => { + const response = await axios.get('code-sets'); + return response.data; + }); +}; + +const useFetchConformanceMethods = () => { + const axios = useAxios(); + return useQuery(['conformance-methods'], async () => { + const response = await axios.get('conformance-methods'); + return response.data; + }); +}; + +const useFetchCqms = (props = { active: true }) => { + const params = Object + .entries(props) + .filter(([key, value]) => key !== 'active' && value) + .filter(([key]) => (key !== 'active')) + .map(([key, value]) => `${key}=${value}`) + .join('&'); + let query = 'cqms'; + if (params.length > 0) { query += `?${params}`; } + const axios = useAxios(); + return useQuery(['cqms', params], async () => { + const response = await axios.get(query); + return response.data.filter((cc) => !props.active || cc.startDay < jsJoda.LocalDate.now()); + }); +}; + const useFetchCriteria = (props = { enabled: true, active: true }) => { const params = Object .entries(props) @@ -142,6 +174,14 @@ const useFetchFunctionalitiesTested = () => { }); }; +const useFetchG1g2 = () => { + const axios = useAxios(); + return useQuery(['g1g2'], async () => { + const response = await axios.get('data/measures'); + return response.data.data; + }); +}; + const useFetchQmsStandards = () => { const axios = useAxios(); return useQuery(['qms-standards'], async () => { @@ -174,6 +214,14 @@ const useFetchSvaps = () => { }); }; +const useFetchTestData = () => { + const axios = useAxios(); + return useQuery(['test-data'], async () => { + const response = await axios.get('data/test_data'); + return response.data.data; + }); +}; + const useFetchTestTools = () => { const axios = useAxios(); return useQuery(['test-tools'], async () => { @@ -345,16 +393,21 @@ export { useDeleteTestTool, useDeleteUcdProcess, useFetchAccessibilityStandards, + useFetchCodeSets, + useFetchConformanceMethods, + useFetchCqms, useFetchCriteria, useFetchCriteriaForFunctionalitiesTested, useFetchCriteriaForStandards, useFetchCriteriaForSvaps, useFetchCriteriaForTestTools, useFetchFunctionalitiesTested, + useFetchG1g2, useFetchQmsStandards, useFetchRules, useFetchStandards, useFetchSvaps, + useFetchTestData, useFetchTestTools, useFetchUcdProcesses, usePostAccessibilityStandard, diff --git a/src/app/components/system-maintenance/certification-criteria/certification-criteria-view.jsx b/src/app/components/system-maintenance/certification-criterion/certification-criteria-view.jsx similarity index 100% rename from src/app/components/system-maintenance/certification-criteria/certification-criteria-view.jsx rename to src/app/components/system-maintenance/certification-criterion/certification-criteria-view.jsx diff --git a/src/app/components/system-maintenance/certification-criteria/certification-criteria.jsx b/src/app/components/system-maintenance/certification-criterion/certification-criteria.jsx similarity index 100% rename from src/app/components/system-maintenance/certification-criteria/certification-criteria.jsx rename to src/app/components/system-maintenance/certification-criterion/certification-criteria.jsx diff --git a/src/app/components/system-maintenance/certification-criteria/certification-criteria.test.jsx b/src/app/components/system-maintenance/certification-criterion/certification-criteria.test.jsx similarity index 100% rename from src/app/components/system-maintenance/certification-criteria/certification-criteria.test.jsx rename to src/app/components/system-maintenance/certification-criterion/certification-criteria.test.jsx diff --git a/src/app/components/system-maintenance/code-set/code-sets-view.jsx b/src/app/components/system-maintenance/code-set/code-sets-view.jsx new file mode 100755 index 0000000000..93926afe7a --- /dev/null +++ b/src/app/components/system-maintenance/code-set/code-sets-view.jsx @@ -0,0 +1,97 @@ +import React, { useEffect, useState } from 'react'; +import { + Paper, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, + makeStyles, +} from '@material-ui/core'; +import { arrayOf, object } from 'prop-types'; + +import { ChplSortableHeaders, sortComparator } from 'components/util/sortable-headers'; +import { sortCriteria } from 'services/criteria.service'; +import { getDisplayDateFormat } from 'services/date-util'; +import { utilStyles } from 'themes'; + +const headers = [ + { property: 'name', text: 'Name', sortable: true }, + { property: 'startDay', text: 'Start Date', sortable: true }, + { property: 'requiredDay', text: 'Required Date', sortable: true }, + { text: 'Applicable Criteria' }, +]; + +const useStyles = makeStyles({ + ...utilStyles, +}); + +function ChplCodeSetsView({ codeSets: initialCodeSets }) { + const [codeSets, setCodeSets] = useState([]); + const [order, setOrder] = useState('asc'); + const [orderBy, setOrderBy] = useState('name'); + const classes = useStyles(); + + useEffect(() => { + setCodeSets(initialCodeSets + .map((item) => ({ + ...item, + criteriaDisplay: item.criteria + .sort(sortCriteria) + .map((c) => c.number) + .join(', '), + })) + .sort(sortComparator('name'))); + }, [initialCodeSets]); + + const handleTableSort = (event, property, orderDirection) => { + const descending = orderDirection === 'desc'; + const updated = codeSets.sort(sortComparator(property, descending)); + setOrderBy(property); + setOrder(orderDirection); + setCodeSets(updated); + }; + + return ( + <> + + + + + { codeSets + .map((item) => ( + + + { item.name } + + + { getDisplayDateFormat(item.startDay) } + + + { getDisplayDateFormat(item.requiredDay) } + + + { item.criteriaDisplay } + + + ))} + +
+
+ + ); +} + +export default ChplCodeSetsView; + +ChplCodeSetsView.propTypes = { + codeSets: arrayOf(object).isRequired, +}; diff --git a/src/app/components/system-maintenance/code-set/code-sets.jsx b/src/app/components/system-maintenance/code-set/code-sets.jsx new file mode 100755 index 0000000000..77a2dd2740 --- /dev/null +++ b/src/app/components/system-maintenance/code-set/code-sets.jsx @@ -0,0 +1,60 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { + Button, + Card, + CardContent, + CardHeader, + CircularProgress, +} from '@material-ui/core'; + +import ChplCodeSetsView from './code-sets-view'; + +import { useFetchCodeSets } from 'api/standards'; +import { BreadcrumbContext } from 'shared/contexts'; + +function ChplCodeSets() { + const { append, display } = useContext(BreadcrumbContext); + const { data, isLoading, isSuccess } = useFetchCodeSets(); + const [codeSets, setCodeSets] = useState([]); + + useEffect(() => { + append( + , + ); + display('codeSets.viewall.disabled'); + }, []); + + useEffect(() => { + if (isLoading || !isSuccess) { return; } + setCodeSets(data); + }, [data, isLoading, isSuccess]); + + if (isLoading) { + return ( + + ); + } + + return ( + + + + + + + ); +} + +export default ChplCodeSets; + +ChplCodeSets.propTypes = { +}; diff --git a/src/app/components/system-maintenance/conformance-method/conformance-methods-view.jsx b/src/app/components/system-maintenance/conformance-method/conformance-methods-view.jsx new file mode 100755 index 0000000000..d993cd3955 --- /dev/null +++ b/src/app/components/system-maintenance/conformance-method/conformance-methods-view.jsx @@ -0,0 +1,99 @@ +import React, { useEffect, useState } from 'react'; +import { + Paper, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, + makeStyles, +} from '@material-ui/core'; +import { arrayOf, object } from 'prop-types'; + +import { ChplSortableHeaders, sortComparator } from 'components/util/sortable-headers'; +import { sortCriteria } from 'services/criteria.service'; +import { getDisplayDateFormat } from 'services/date-util'; +import { utilStyles } from 'themes'; + +const headers = [ + { property: 'name', text: 'Name', sortable: true }, + { property: 'removalDate', text: 'Removal Date', sortable: true }, + { text: 'Applicable Criteria' }, +]; + +const useStyles = makeStyles({ + ...utilStyles, +}); + +function ChplConformanceMethodsView({ conformanceMethods: initialConformanceMethods }) { + const [conformanceMethods, setConformanceMethods] = useState([]); + const [order, setOrder] = useState('asc'); + const [orderBy, setOrderBy] = useState('name'); + const classes = useStyles(); + + useEffect(() => { + setConformanceMethods(initialConformanceMethods + .map((item) => ({ + ...item, + criteriaDisplay: item.criteria + .sort(sortCriteria) + .map((c) => c.number) + .join(', '), + })) + .sort(sortComparator('name'))); + }, [initialConformanceMethods]); + + const handleTableSort = (event, property, orderDirection) => { + const descending = orderDirection === 'desc'; + const updated = conformanceMethods.sort(sortComparator(property, descending)); + setOrderBy(property); + setOrder(orderDirection); + setConformanceMethods(updated); + }; + + return ( + <> + + + + + { conformanceMethods + .map((item) => ( + + + { item.removed + && ( + <> + Removed | + + )} + { item.name } + + + { getDisplayDateFormat(item.removalDate) } + + + { item.criteriaDisplay } + + + ))} + +
+
+ + ); +} + +export default ChplConformanceMethodsView; + +ChplConformanceMethodsView.propTypes = { + conformanceMethods: arrayOf(object).isRequired, +}; diff --git a/src/app/components/system-maintenance/conformance-method/conformance-methods.jsx b/src/app/components/system-maintenance/conformance-method/conformance-methods.jsx new file mode 100755 index 0000000000..fa8f018cc3 --- /dev/null +++ b/src/app/components/system-maintenance/conformance-method/conformance-methods.jsx @@ -0,0 +1,60 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { + Button, + Card, + CardContent, + CardHeader, + CircularProgress, +} from '@material-ui/core'; + +import ChplConformanceMethodsView from './conformance-methods-view'; + +import { useFetchConformanceMethods } from 'api/standards'; +import { BreadcrumbContext } from 'shared/contexts'; + +function ChplConformanceMethods() { + const { append, display } = useContext(BreadcrumbContext); + const { data, isLoading, isSuccess } = useFetchConformanceMethods(); + const [conformanceMethods, setConformanceMethods] = useState([]); + + useEffect(() => { + append( + , + ); + display('conformanceMethods.viewall.disabled'); + }, []); + + useEffect(() => { + if (isLoading || !isSuccess) { return; } + setConformanceMethods(data); + }, [data, isLoading, isSuccess]); + + if (isLoading) { + return ( + + ); + } + + return ( + + + + + + + ); +} + +export default ChplConformanceMethods; + +ChplConformanceMethods.propTypes = { +}; diff --git a/src/app/components/system-maintenance/cqm/cqms-view.jsx b/src/app/components/system-maintenance/cqm/cqms-view.jsx new file mode 100755 index 0000000000..7d9a3cc4ba --- /dev/null +++ b/src/app/components/system-maintenance/cqm/cqms-view.jsx @@ -0,0 +1,104 @@ +import React, { useEffect, useState } from 'react'; +import { + Paper, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, + makeStyles, +} from '@material-ui/core'; +import { arrayOf } from 'prop-types'; + +import { ChplSortableHeaders, sortComparator } from 'components/util/sortable-headers'; +import { cqm as cqmPropType } from 'shared/prop-types'; +import { utilStyles } from 'themes'; + +const headers = [ + { property: 'display', text: 'ID', sortable: true }, + { property: 'title', text: 'Title', sortable: true }, + { property: 'description', text: 'Description', sortable: true }, + { property: 'domain', text: 'Domain', sortable: true }, + { text: 'Version(s)' }, +]; + +const useStyles = makeStyles({ + ...utilStyles, +}); + +const sortVersion = (a, b) => { + const aNum = parseInt(a.substring(1), 10); + const bNum = parseInt(b.substring(1), 10); + return aNum - bNum; +}; + +function ChplCqmsView({ cqms: initialCqms }) { + const [cqms, setCqms] = useState([]); + const [order, setOrder] = useState('asc'); + const [orderBy, setOrderBy] = useState('value'); + const classes = useStyles(); + + useEffect(() => { + setCqms(initialCqms + .map((c) => ({ + ...c, + display: c.cmsId ? c.cmsId : `NQF-${c.nqfNumber}`, + versionDisplay: c.versions.sort(sortVersion).join(', '), + })) + .sort(sortComparator('value'))); + }, [initialCqms]); + + const handleTableSort = (event, property, orderDirection) => { + const descending = orderDirection === 'desc'; + const updated = cqms.sort(sortComparator(property, descending)); + setOrderBy(property); + setOrder(orderDirection); + setCqms(updated); + }; + + return ( + <> + + + + + { cqms + .map((item) => ( + + + { item.display } + + + { item.title } + + + { item.description } + + + { item.domain } + + + { item.versionDisplay } + + + ))} + +
+
+ + ); +} + +export default ChplCqmsView; + +ChplCqmsView.propTypes = { + cqms: arrayOf(cqmPropType).isRequired, +}; diff --git a/src/app/components/system-maintenance/cqm/cqms.jsx b/src/app/components/system-maintenance/cqm/cqms.jsx new file mode 100755 index 0000000000..0153931ba6 --- /dev/null +++ b/src/app/components/system-maintenance/cqm/cqms.jsx @@ -0,0 +1,60 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { + Button, + Card, + CardContent, + CardHeader, + CircularProgress, +} from '@material-ui/core'; + +import ChplCqmsView from './cqms-view'; + +import { useFetchCqms } from 'api/standards'; +import { BreadcrumbContext } from 'shared/contexts'; + +function ChplCqms() { + const { append, display } = useContext(BreadcrumbContext); + const { data, isLoading, isSuccess } = useFetchCqms({ active: false }); + const [cqms, setCqms] = useState([]); + + useEffect(() => { + append( + , + ); + display('cqms.viewall.disabled'); + }, []); + + useEffect(() => { + if (isLoading || !isSuccess) { return; } + setCqms(data); + }, [data, isLoading, isSuccess]); + + if (isLoading) { + return ( + + ); + } + + return ( + + + + + + + ); +} + +export default ChplCqms; + +ChplCqms.propTypes = { +}; diff --git a/src/app/components/system-maintenance/g1g2/g1g2-view.jsx b/src/app/components/system-maintenance/g1g2/g1g2-view.jsx new file mode 100755 index 0000000000..860f379dab --- /dev/null +++ b/src/app/components/system-maintenance/g1g2/g1g2-view.jsx @@ -0,0 +1,107 @@ +import React, { useEffect, useState } from 'react'; +import { + Paper, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, + makeStyles, +} from '@material-ui/core'; +import { arrayOf, object } from 'prop-types'; + +import { ChplSortableHeaders, sortComparator } from 'components/util/sortable-headers'; +import { sortCriteria } from 'services/criteria.service'; +import { utilStyles } from 'themes'; + +const headers = [ + { property: 'abbreviation', text: 'Abbreviation', sortable: true }, + { property: 'domainDisplay', text: 'Domain', sortable: true }, + { property: 'requiredTest', text: 'Required Test', sortable: true }, + { property: 'name', text: 'Name', sortable: true }, + { text: 'Applicable Criteria' }, +]; + +const useStyles = makeStyles({ + ...utilStyles, +}); + +function ChplG1g2View({ g1g2: initialG1g2 }) { + const [g1g2, setG1g2] = useState([]); + const [order, setOrder] = useState('asc'); + const [orderBy, setOrderBy] = useState('abbreviation'); + const classes = useStyles(); + + useEffect(() => { + setG1g2(initialG1g2 + .map((item) => ({ + ...item, + domainDisplay: item.domain.name, + criteriaDisplay: item.allowedCriteria + .sort(sortCriteria) + .map((c) => c.number) + .join(', '), + })) + .sort(sortComparator('abbreviation'))); + }, [initialG1g2]); + + const handleTableSort = (event, property, orderDirection) => { + const descending = orderDirection === 'desc'; + const updated = g1g2.sort(sortComparator(property, descending)); + setOrderBy(property); + setOrder(orderDirection); + setG1g2(updated); + }; + + return ( + <> + + + + + { g1g2 + .map((item) => ( + + + { item.abbreviation } + + + { item.domainDisplay } + + + { item.removed + && ( + <> + Removed | + + )} + { item.requiredTest } + + + { item.name } + + + { item.criteriaDisplay } + + + ))} + +
+
+ + ); +} + +export default ChplG1g2View; + +ChplG1g2View.propTypes = { + g1g2: arrayOf(object).isRequired, +}; diff --git a/src/app/components/system-maintenance/g1g2/g1g2.jsx b/src/app/components/system-maintenance/g1g2/g1g2.jsx new file mode 100755 index 0000000000..4885029f04 --- /dev/null +++ b/src/app/components/system-maintenance/g1g2/g1g2.jsx @@ -0,0 +1,60 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { + Button, + Card, + CardContent, + CardHeader, + CircularProgress, +} from '@material-ui/core'; + +import ChplG1g2View from './g1g2-view'; + +import { useFetchG1g2 } from 'api/standards'; +import { BreadcrumbContext } from 'shared/contexts'; + +function ChplG1g2() { + const { append, display } = useContext(BreadcrumbContext); + const { data, isLoading, isSuccess } = useFetchG1g2(); + const [g1g2, setG1g2] = useState([]); + + useEffect(() => { + append( + , + ); + display('g1g2.viewall.disabled'); + }, []); + + useEffect(() => { + if (isLoading || !isSuccess) { return; } + setG1g2(data); + }, [data, isLoading, isSuccess]); + + if (isLoading) { + return ( + + ); + } + + return ( + + + + + + + ); +} + +export default ChplG1g2; + +ChplG1g2.propTypes = { +}; diff --git a/src/app/components/system-maintenance/test-data/test-data-view.jsx b/src/app/components/system-maintenance/test-data/test-data-view.jsx new file mode 100755 index 0000000000..874e9f9ec6 --- /dev/null +++ b/src/app/components/system-maintenance/test-data/test-data-view.jsx @@ -0,0 +1,94 @@ +import React, { useEffect, useState } from 'react'; +import { + Paper, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, + makeStyles, +} from '@material-ui/core'; +import { arrayOf, object } from 'prop-types'; + +import { ChplSortableHeaders, sortComparator } from 'components/util/sortable-headers'; +import { utilStyles } from 'themes'; + +const headers = [ + { property: 'name', text: 'Name', sortable: true }, + { property: 'description', text: 'Description', sortable: true }, + { text: 'Applicable Criteria' }, +]; + +const useStyles = makeStyles({ + ...utilStyles, +}); + +function ChplTestDataView({ testData: initialTestData }) { + const [testData, setTestData] = useState([]); + const [order, setOrder] = useState('asc'); + const [orderBy, setOrderBy] = useState('name'); + const classes = useStyles(); + + useEffect(() => { + setTestData(initialTestData + .map((item) => ({ + ...item, + criteriaDisplay: item.criteria.number, + })) + .sort(sortComparator('name'))); + }, [initialTestData]); + + const handleTableSort = (event, property, orderDirection) => { + const descending = orderDirection === 'desc'; + const updated = testData.sort(sortComparator(property, descending)); + setOrderBy(property); + setOrder(orderDirection); + setTestData(updated); + }; + + return ( + <> + + + + + { testData + .map((item) => ( + + + { item.removed + && ( + <> + Removed | + + )} + { item.name } + + + { item.description } + + + { item.criteriaDisplay } + + + ))} + +
+
+ + ); +} + +export default ChplTestDataView; + +ChplTestDataView.propTypes = { + testData: arrayOf(object).isRequired, +}; diff --git a/src/app/components/system-maintenance/test-data/test-data.jsx b/src/app/components/system-maintenance/test-data/test-data.jsx new file mode 100755 index 0000000000..0f60878cf2 --- /dev/null +++ b/src/app/components/system-maintenance/test-data/test-data.jsx @@ -0,0 +1,60 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { + Button, + Card, + CardContent, + CardHeader, + CircularProgress, +} from '@material-ui/core'; + +import ChplTestDataView from './test-data-view'; + +import { useFetchTestData } from 'api/standards'; +import { BreadcrumbContext } from 'shared/contexts'; + +function ChplTestData() { + const { append, display } = useContext(BreadcrumbContext); + const { data, isLoading, isSuccess } = useFetchTestData(); + const [testData, setTestData] = useState([]); + + useEffect(() => { + append( + , + ); + display('testData.viewall.disabled'); + }, []); + + useEffect(() => { + if (isLoading || !isSuccess) { return; } + setTestData(data); + }, [data, isLoading, isSuccess]); + + if (isLoading) { + return ( + + ); + } + + return ( + + + + + + + ); +} + +export default ChplTestData; + +ChplTestData.propTypes = { +}; diff --git a/src/app/pages/administration/system-maintenance/system-maintenance.jsx b/src/app/pages/administration/system-maintenance/system-maintenance.jsx index 19fa5042b1..4b5410b9be 100755 --- a/src/app/pages/administration/system-maintenance/system-maintenance.jsx +++ b/src/app/pages/administration/system-maintenance/system-maintenance.jsx @@ -11,29 +11,39 @@ import { Divider, ListItemText, } from '@material-ui/core'; -import CodeOutlinedIcon from '@material-ui/icons/CodeOutlined'; +import AccessibilityNewOutlinedIcon from '@material-ui/icons/AccessibilityNewOutlined'; +import AccountBalanceOutlinedIcon from '@material-ui/icons/AccountBalanceOutlined'; import AnnouncementOutlinedIcon from '@material-ui/icons/AnnouncementOutlined'; -import SubscriptionsOutlinedIcon from '@material-ui/icons/SubscriptionsOutlined'; -import BookOutlinedIcon from '@material-ui/icons/BookOutlined'; -import TrendingUpOutlinedIcon from '@material-ui/icons/TrendingUpOutlined'; -import PlaylistAddCheckOutlinedIcon from '@material-ui/icons/PlaylistAddCheckOutlined'; import AssessmentOutlinedIcon from '@material-ui/icons/AssessmentOutlined'; -import AccessibilityNewOutlinedIcon from '@material-ui/icons/AccessibilityNewOutlined'; +import AssignmentTurnedInOutlinedIcon from '@material-ui/icons/AssignmentTurnedInOutlined'; +import BeenhereOutlinedIcon from '@material-ui/icons/BeenhereOutlined'; +import BookOutlinedIcon from '@material-ui/icons/BookOutlined'; +import BuildOutlinedIcon from '@material-ui/icons/BuildOutlined'; +import DataUsageOutlinedIcon from '@material-ui/icons/DataUsageOutlined'; +import CodeOutlinedIcon from '@material-ui/icons/CodeOutlined'; import PlayArrowOutlinedIcon from '@material-ui/icons/PlayArrowOutlined'; +import PlaylistAddCheckOutlinedIcon from '@material-ui/icons/PlaylistAddCheckOutlined'; +import SettingsEthernetIcon from '@material-ui/icons/SettingsEthernet'; +import SpeedOutlinedIcon from '@material-ui/icons/SpeedOutlined'; +import SubscriptionsOutlinedIcon from '@material-ui/icons/SubscriptionsOutlined'; import TouchAppOutlinedIcon from '@material-ui/icons/TouchAppOutlined'; -import BuildOutlinedIcon from '@material-ui/icons/BuildOutlined'; -import BeenhereOutlinedIcon from '@material-ui/icons/BeenhereOutlined'; +import TrendingUpOutlinedIcon from '@material-ui/icons/TrendingUpOutlined'; import ChplAccessibilityStandards from 'components/system-maintenance/accessibility-standard/accessibility-standards'; import ChplAnnouncements from 'components/system-maintenance/announcement/announcements'; import ChplApiKeys from 'components/system-maintenance/api-key/api-keys'; -import ChplCertificationCriteria from 'components/system-maintenance/certification-criteria/certification-criteria'; +import ChplCertificationCriteria from 'components/system-maintenance/certification-criterion/certification-criteria'; +import ChplCodeSets from 'components/system-maintenance/code-set/code-sets'; +import ChplConformanceMethods from 'components/system-maintenance/conformance-method/conformance-methods'; +import ChplCqms from 'components/system-maintenance/cqm/cqms'; import ChplFunctionalitiesTested from 'components/system-maintenance/functionality-tested/functionalities-tested'; +import ChplG1g2 from 'components/system-maintenance/g1g2/g1g2'; import ChplManageSubscriptions from 'pages/subscriptions/manage-subscriptions'; import ChplQmsStandards from 'components/system-maintenance/qms-standard/qms-standards'; import ChplStandards from 'components/system-maintenance/standard/standards'; import ChplSvaps from 'components/system-maintenance/svap/svaps'; import ChplSystemJobs from 'components/jobs/system-jobs'; +import ChplTestData from 'components/system-maintenance/test-data/test-data'; import ChplTestTools from 'components/system-maintenance/test-tool/test-tools'; import ChplUcdProcesses from 'components/system-maintenance/ucd-process/ucd-processes'; import { eventTrack } from 'services/analytics.service'; @@ -124,16 +134,36 @@ const maintenanceItems = [{ primary: 'Certification Criteria', secondary: 'Table of the Certification Criteria values', icon: , +}, { + id: 'codeSets', + primary: 'Code Sets', + secondary: 'Table of Code Sets', + icon: , +}, { + id: 'conformanceMethods', + primary: 'Conformance Methods', + secondary: 'Table of Conformance Methods', + icon: , +}, { + id: 'cqms', + primary: 'CQMs', + secondary: 'Table of the CQM values', + icon: , }, { id: 'functionalitiesTested', primary: 'Functionalities Tested', secondary: 'Table of the Functionality Tested values used during testing of certification criterion functionality', icon: , +}, { + id: 'g1g2', + primary: 'G1/G2 Measures', + secondary: 'Table of G1/G2 Measures', + icon: , }, { id: 'qmsStandards', primary: 'QMS Standards', secondary: 'Add and update the QMS Standards available to be applied to listings', - icon: , + icon: , }, { id: 'standards', primary: 'Standards', @@ -156,6 +186,11 @@ const maintenanceItems = [{ secondary: 'View and schedule system-related jobs', roles: ['chpl-admin'], icon: , +}, { + id: 'testData', + primary: 'Test Data', + secondary: 'Table of Test Data', + icon: , }, { id: 'testTools', primary: 'Test Tools', @@ -228,10 +263,14 @@ function ChplSystemMaintenance() { hide('announcements.edit.disabled'); hide('apiKeys.viewall.disabled'); hide('certificationCriteria.viewall.disabled'); + hide('codeSets.viewall.disabled'); + hide('conformanceMethods.viewall.disabled'); + hide('cqms.viewall.disabled'); hide('functionalitiesTested.viewall.disabled'); hide('functionalitiesTested.viewall'); hide('functionalitiesTested.add.disabled'); hide('functionalitiesTested.edit.disabled'); + hide('g1g2.viewall.disabled'); hide('manageSubscriptions.viewall.disabled'); hide('qmsStandards.viewall.disabled'); hide('qmsStandards.viewall'); @@ -241,6 +280,7 @@ function ChplSystemMaintenance() { hide('standards.viewall'); hide('standards.add.disabled'); hide('standards.edit.disabled'); + hide('testData.viewall.disabled'); hide('testTools.viewall.disabled'); hide('testTools.viewall'); hide('testTools.add.disabled'); @@ -315,12 +355,17 @@ function ChplSystemMaintenance() { { active === 'announcements' && } { active === 'apiKeys' && } { active === 'certificationCriteria' && } - { active === 'qmsStandards' && } + { active === 'codeSets' && } + { active === 'conformanceMethods' && } + { active === 'cqms' && } { active === 'functionalitiesTested' && } - { active === 'subscriptions' && } + { active === 'g1g2' && } + { active === 'qmsStandards' && } { active === 'standards' && } + { active === 'subscriptions' && } { active === 'svaps' && } { active === 'systemJobs' && } + { active === 'testData' && } { active === 'testTools' && } { active === 'ucdProcesses' && }