diff --git a/src/_nav.jsx b/src/_nav.jsx
index 26f7e0764890..da05474f3a34 100644
--- a/src/_nav.jsx
+++ b/src/_nav.jsx
@@ -162,6 +162,11 @@ const _nav = [
name: 'Tenant Offboarding',
to: '/tenant/administration/tenant-offboarding-wizard',
},
+ {
+ component: CNavItem,
+ name: 'Partner Relationships',
+ to: '/tenant/administration/partner-relationships',
+ },
],
},
{
diff --git a/src/components/tables/CippTable.jsx b/src/components/tables/CippTable.jsx
index 1651911c7be5..3ba432f63677 100644
--- a/src/components/tables/CippTable.jsx
+++ b/src/components/tables/CippTable.jsx
@@ -16,6 +16,7 @@ import {
CAccordionHeader,
CAccordionBody,
CAccordionItem,
+ CTooltip,
} from '@coreui/react'
import DataTable, { createTheme } from 'react-data-table-component'
import PropTypes from 'prop-types'
@@ -31,13 +32,12 @@ import {
faSync,
} from '@fortawesome/free-solid-svg-icons'
import { cellGenericFormatter } from './CellGenericFormat'
-import { ModalService } from '../utilities'
+import { CippCodeOffCanvas, ModalService } from '../utilities'
import { useLazyGenericGetRequestQuery, useLazyGenericPostRequestQuery } from 'src/store/api/app'
import { debounce } from 'lodash-es'
import { useSearchParams } from 'react-router-dom'
import CopyToClipboard from 'react-copy-to-clipboard'
import { setDefaultColumns } from 'src/store/features/app'
-import M365Licenses from 'src/data/M365Licenses'
const FilterComponent = ({ filterText, onFilter, onClear, filterlist, onFilterPreset }) => (
<>
@@ -155,6 +155,7 @@ export default function CippTable({
const [filterviaURL, setFilterviaURL] = React.useState(false)
const [originalColumns, setOrginalColumns] = React.useState(columns)
const [updatedColumns, setUpdatedColumns] = React.useState(columns)
+ const [codeOffcanvasVisible, setCodeOffcanvasVisible] = useState(false)
if (defaultColumns && defaultColumnsSet === false && endpointName) {
const defaultColumnsArray = defaultColumns.split(',').filter((item) => item)
@@ -604,16 +605,18 @@ export default function CippTable({
}
if (refreshFunction) {
defaultActions.push([
- {
- refreshFunction((Math.random() + 1).toString(36).substring(7))
- }}
- className="m-1"
- size="sm"
- >
-
- ,
+
+ {
+ refreshFunction((Math.random() + 1).toString(36).substring(7))
+ }}
+ className="m-1"
+ size="sm"
+ >
+
+
+ ,
])
}
@@ -814,6 +817,20 @@ export default function CippTable({
>,
])
}
+ defaultActions.push([
+
+ {
+ setCodeOffcanvasVisible(true)
+ }}
+ className="m-1"
+ size="sm"
+ >
+
+
+ ,
+ ])
return (
<>
@@ -981,6 +998,13 @@ export default function CippTable({
{...rest}
/>
{selectedRows.length >= 1 && Selected {selectedRows.length} items}
+ setCodeOffcanvasVisible(false)}
+ title="API Response"
+ />
>
)}
diff --git a/src/importsMap.jsx b/src/importsMap.jsx
index 0121566555bd..1ce828c16643 100644
--- a/src/importsMap.jsx
+++ b/src/importsMap.jsx
@@ -33,6 +33,7 @@ import React from 'react'
"/identity/reports/azure-ad-connect-report": React.lazy(() => import('./views/identity/reports/AzureADConnectReport')),
"/tenant/administration/tenants": React.lazy(() => import('./views/tenant/administration/Tenants')),
"/tenant/administration/tenants/edit": React.lazy(() => import('./views/tenant/administration/EditTenant')),
+ "/tenant/administration/partner-relationships": React.lazy(() => import('./views/tenant/administration/PartnerRelationships')),
"/tenant/administration/domains": React.lazy(() => import('./views/tenant/administration/Domains')),
"/tenant/administration/alertswizard": React.lazy(() => import('./views/tenant/administration/AlertWizard')),
"/tenant/administration/alertrules": React.lazy(() => import('./views/tenant/administration/AlertRules')),
diff --git a/src/routes.json b/src/routes.json
index 3d8eb476d3fb..7355cb3b9905 100644
--- a/src/routes.json
+++ b/src/routes.json
@@ -222,6 +222,12 @@
"component": "views/tenant/administration/EditTenant",
"allowedRoles": ["admin", "editor", "readonly"]
},
+ {
+ "path": "/tenant/administration/partner-relationships",
+ "name": "Partner Relationships",
+ "component": "views/tenant/administration/PartnerRelationships",
+ "allowedRoles": ["admin", "editor", "readonly"]
+ },
{
"path": "/tenant/administration/domains",
"name": "Domains",
diff --git a/src/views/tenant/administration/GraphExplorer.jsx b/src/views/tenant/administration/GraphExplorer.jsx
index 42cfc7f0e2da..bad378c27d3a 100644
--- a/src/views/tenant/administration/GraphExplorer.jsx
+++ b/src/views/tenant/administration/GraphExplorer.jsx
@@ -500,6 +500,11 @@ const GraphExplorer = () => {
placeholder="Select the number of rows to return"
/>
+
+
{
placeholder="Enter OData search query"
/>
+
+
diff --git a/src/views/tenant/administration/PartnerRelationships.jsx b/src/views/tenant/administration/PartnerRelationships.jsx
new file mode 100644
index 000000000000..ea05fcb9e02b
--- /dev/null
+++ b/src/views/tenant/administration/PartnerRelationships.jsx
@@ -0,0 +1,78 @@
+import React, { useEffect } from 'react'
+import { useSelector } from 'react-redux'
+import { CippPageList } from 'src/components/layout'
+import { cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
+
+const PartnerRelationships = () => {
+ const tenant = useSelector((state) => state.app.currentTenant)
+ const [tenantColumnSet, setTenantColumn] = React.useState(false)
+ useEffect(() => {
+ if (tenant.defaultDomainName === 'AllTenants') {
+ setTenantColumn(false)
+ }
+ if (tenant.defaultDomainName !== 'AllTenants') {
+ setTenantColumn(true)
+ }
+ }, [tenant.defaultDomainName, tenantColumnSet])
+
+ const columns = [
+ {
+ name: 'Tenant',
+ selector: (row) => row.Tenant,
+ sortable: true,
+ exportSelector: 'Tenant',
+ omit: tenantColumnSet,
+ cell: cellGenericFormatter(),
+ },
+ {
+ name: 'Partner',
+ selector: (row) => row.TenantInfo?.displayName,
+ sortable: true,
+ exportSelector: 'TenantInfo/displayName',
+ cell: cellGenericFormatter(),
+ },
+ {
+ name: 'Service Provider',
+ selector: (row) => row['isServiceProvider'],
+ sortable: true,
+ exportSelector: 'isServiceProvider',
+ cell: cellGenericFormatter(),
+ },
+ {
+ name: 'Multi Tenant',
+ selector: (row) => row['isInMultiTenantOrganization'],
+ sortable: true,
+ exportSelector: 'isInMultiTenantOrganization',
+ cell: cellGenericFormatter(),
+ },
+ {
+ name: 'Partner Info',
+ selector: (row) => row['TenantInfo'],
+ sortable: true,
+ exportSelector: 'TenantInfo',
+ cell: cellGenericFormatter(),
+ },
+ ]
+ return (
+
+
+
+ )
+}
+
+export default PartnerRelationships