Skip to content

Commit 5b45d49

Browse files
authored
Merge pull request #2654 from JohnDuprey/dev
Add Extension Sync Status page
2 parents c71c763 + eff03f1 commit 5b45d49

File tree

4 files changed

+109
-0
lines changed

4 files changed

+109
-0
lines changed

src/_nav.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,11 @@ const _nav = [
821821
name: 'Extensions Settings',
822822
to: '/cipp/extensions',
823823
},
824+
{
825+
component: CNavItem,
826+
name: 'Extension Sync',
827+
to: '/cipp/extension-sync',
828+
},
824829
{
825830
component: CNavItem,
826831
name: 'User Settings',

src/importsMap.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ import React from 'react'
137137
"/license": React.lazy(() => import('./views/pages/license/License')),
138138
"/cipp/settings": React.lazy(() => import('./views/cipp/app-settings/CIPPSettings')),
139139
"/cipp/extensions": React.lazy(() => import('./views/cipp/Extensions')),
140+
"/cipp/extension-sync": React.lazy(() => import('./views/cipp/ExtensionSync')),
140141
"/cipp/setup": React.lazy(() => import('./views/cipp/Setup')),
141142
"/tenant/administration/securescore": React.lazy(() => import('./views/tenant/administration/SecureScore')),
142143
"/tenant/administration/gdap": React.lazy(() => import('./views/tenant/administration/GDAPWizard')),

src/routes.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,12 @@
938938
"component": "views/cipp/Extensions",
939939
"allowedRoles": ["admin"]
940940
},
941+
{
942+
"path": "/cipp/extension-sync",
943+
"name": "Extension Sync",
944+
"component": "views/cipp/ExtensionSync",
945+
"allowedRoles": ["admin"]
946+
},
941947
{
942948
"path": "/cipp/setup",
943949
"name": "Setup",

src/views/cipp/ExtensionSync.jsx

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import React, { useState } from 'react'
2+
import { CCol, CRow } from '@coreui/react'
3+
import { useSelector } from 'react-redux'
4+
5+
import { useLazyGenericGetRequestQuery, useLazyGenericPostRequestQuery } from 'src/store/api/app'
6+
7+
import { CippPage, CippPageList } from 'src/components/layout'
8+
import { CellTip, cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
9+
import 'react-datepicker/dist/react-datepicker.css'
10+
import { CellBadge, cellBadgeFormatter, cellDateFormatter } from 'src/components/tables'
11+
import { TitleButton } from 'src/components/buttons'
12+
13+
const ExtensionSync = () => {
14+
const [ExecuteGetRequest, getResults] = useLazyGenericGetRequestQuery()
15+
const tenantDomain = useSelector((state) => state.app.currentTenant.defaultDomainName)
16+
const [refreshState, setRefreshState] = useState(false)
17+
const [genericPostRequest, postResults] = useLazyGenericPostRequestQuery()
18+
19+
const columns = [
20+
{
21+
name: 'Tenant',
22+
selector: (row) => row['Tenant'],
23+
sortable: true,
24+
cell: cellGenericFormatter(),
25+
exportSelector: 'Tenants',
26+
},
27+
{
28+
name: 'Sync Type',
29+
selector: (row) => row['SyncType'],
30+
sortable: true,
31+
cell: cellBadgeFormatter({ color: 'info' }),
32+
exportSelector: 'SyncType',
33+
},
34+
{
35+
name: 'Task',
36+
selector: (row) => row['Name'],
37+
sortable: true,
38+
cell: cellGenericFormatter(),
39+
exportSelector: 'Name',
40+
},
41+
{
42+
name: 'Scheduled Time',
43+
selector: (row) => row['ScheduledTime'],
44+
sortable: true,
45+
cell: cellDateFormatter({ format: 'short' }),
46+
exportSelector: 'ScheduledTime',
47+
},
48+
{
49+
name: 'Last Run',
50+
selector: (row) => row['ExecutedTime'],
51+
sortable: true,
52+
cell: cellDateFormatter({ format: 'short' }),
53+
exportSelector: 'ExecutedTime',
54+
},
55+
{
56+
name: 'Repeats every',
57+
selector: (row) => row['RepeatsEvery'],
58+
sortable: true,
59+
cell: (row) => CellTip(row['RepeatsEvery']),
60+
exportSelector: 'RepeatsEvery',
61+
},
62+
{
63+
name: 'Results',
64+
selector: (row) => row['Results'],
65+
sortable: true,
66+
cell: cellGenericFormatter(),
67+
exportSelector: 'Results',
68+
},
69+
]
70+
71+
return (
72+
<CippPage title={`Extension Sync`} tenantSelector={false}>
73+
<>
74+
<CRow>
75+
<CCol>
76+
<CippPageList
77+
key={refreshState}
78+
capabilities={{
79+
allTenants: true,
80+
helpContext: 'https://google.com',
81+
}}
82+
title="Extension Sync"
83+
tenantSelector={false}
84+
datatable={{
85+
columns,
86+
reportName: `Extension Sync Report`,
87+
path: `/api/ListExtensionSync`,
88+
}}
89+
/>
90+
</CCol>
91+
</CRow>
92+
</>
93+
</CippPage>
94+
)
95+
}
96+
97+
export default ExtensionSync

0 commit comments

Comments
 (0)