- {item.differences &&
Changed: }
-
{ item.label }
- { property.value.map((v, vIdx) =>
-
- {v && v.indexOf(item.key) > -1 &&
true }
- {(!v || !(v.indexOf(item.key) > -1)) &&
false }
+
+ {item.differences &&
Changed: }
+
{ item.label }
+ { property.value.map((v, vIdx) =>
+
+ {v && v.indexOf(item.key) > -1 && true }
+ {(!v || !(v.indexOf(item.key) > -1)) && false }
+
+ )}
- )}
-
)}
>
: ''}
diff --git a/ui/src/app/metadata/domain/provider/component/ProviderList.js b/ui/src/app/metadata/domain/provider/component/ProviderList.js
index a771fac38..9c353e0de 100644
--- a/ui/src/app/metadata/domain/provider/component/ProviderList.js
+++ b/ui/src/app/metadata/domain/provider/component/ProviderList.js
@@ -1,16 +1,17 @@
import React from 'react';
import { Link } from 'react-router-dom';
-import { Badge, UncontrolledPopover, PopoverBody } from 'reactstrap';
-
+import { Badge, } from 'reactstrap';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faChevronCircleDown, faChevronCircleUp } from '@fortawesome/free-solid-svg-icons';
import FormattedDate from '../../../../core/components/FormattedDate';
import Translate from '../../../../i18n/components/translate';
+import { Scroller } from '../../../../dashboard/component/Scroller';
-export default function ProviderList({ entities, onDelete }) {
+export default function ProviderList({ entities, reorder = true, first, last, onOrderUp, onOrderDown }) {
return (
-
+
+ {(limited) =>
@@ -23,25 +24,36 @@ export default function ProviderList({ entities, onDelete }) {
- {entities.map((provider, idx) =>
+ {limited.map((provider, idx) =>
- { idx + 1 }
-
+ :
+ —
+ }
+
+
- |
-
+ }
+
);
}
diff --git a/ui/src/app/metadata/domain/source/component/SourceList.js b/ui/src/app/metadata/domain/source/component/SourceList.js
index 482e21b0c..a8358c912 100644
--- a/ui/src/app/metadata/domain/source/component/SourceList.js
+++ b/ui/src/app/metadata/domain/source/component/SourceList.js
@@ -5,8 +5,13 @@ import { Badge, UncontrolledPopover, PopoverBody, Button, Modal, ModalHeader, Mo
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faTrash, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
+
+
import FormattedDate from '../../../../core/components/FormattedDate';
import Translate from '../../../../i18n/components/translate';
+import { Scroller } from '../../../../dashboard/component/Scroller';
+
+
export default function SourceList({ entities, onDelete }) {
@@ -16,63 +21,68 @@ export default function SourceList({ entities, onDelete }) {
const [deleting, setDeleting] = React.useState(null);
-
-
const deleteSource = (id) => {
onDelete(deleting);
setDeleting(null);
}
return (
-
-
-
-
- | Title |
- Entity ID |
- Author |
- Created Date |
- Enabled |
- |
-
-
-
- {entities.map((source, idx) =>
-
- |
- {source.serviceProviderName }
- |
-
- {source.entityId}
- |
-
- {source.createdBy }
- |
- |
-
-
-
-
- |
-
- setDeleting(source.id) }>
- Delete
-
-
- { source.serviceEnabled &&
-
- A metadata source must be disabled before it can be deleted.
-
- }
- |
+ <>
+
+ {(limited) =>
+
+
+
+
+
+ | Title |
+ Entity ID |
+ Author |
+ Created Date |
+ Enabled |
+ |
- ) }
-
-
-
setDeleting(null)}>
+
+
+ {limited.map((source, idx) =>
+
+ |
+ {source.serviceProviderName}
+ |
+
+ {source.entityId}
+ |
+
+ {source.createdBy}
+ |
+ |
+
+
+
+
+ |
+
+ setDeleting(source.id)}>
+ Delete
+
+
+ {source.serviceEnabled &&
+
+ A metadata source must be disabled before it can be deleted.
+
+ }
+ |
+
+ )}
+
+
+
+ }
+
+
setDeleting(null)}>
Delete Metadata Source?
@@ -89,7 +99,7 @@ export default function SourceList({ entities, onDelete }) {
-
+ >
);
}
diff --git a/ui/src/app/metadata/hooks/api.js b/ui/src/app/metadata/hooks/api.js
index 3402e7eb8..0b74f445c 100644
--- a/ui/src/app/metadata/hooks/api.js
+++ b/ui/src/app/metadata/hooks/api.js
@@ -2,17 +2,26 @@ import useFetch from 'use-http';
import API_BASE_PATH from '../../App.constant';
-const paths = {
- source: 'EntityDescriptor',
- provider: 'MetadataResolver'
+const lists = {
+ source: 'EntityDescriptors',
+ provider: 'MetadataResolvers'
};
+const details = {
+ source: 'EntityDescriptor',
+ provider: 'MetadataResolvers'
+}
+
const schema = {
source: 'MetadataSources'
}
export function getMetadataPath(type) {
- return `/${paths[type]}`;
+ return `/${details[type]}`;
+}
+
+export function getMetadataListPath(type) {
+ return `/${lists[type]}`;
}
export function getSchemaPath(type) {
@@ -20,13 +29,16 @@ export function getSchemaPath(type) {
}
export function useMetadataEntities(type = 'source') {
- return useFetch(`${API_BASE_PATH}${getMetadataPath(type)}s`);
+ return useFetch(`${API_BASE_PATH}${getMetadataListPath(type)}`);
}
export function useMetadataEntity(type = 'source') {
return useFetch(`${API_BASE_PATH}${getMetadataPath(type)}`);
}
+export function useMetadataProviderOrder() {
+ return useFetch(`${API_BASE_PATH}/MetadataResolversPositionOrder`)
+}
export function useMetadataSchema() {
return useFetch(`${API_BASE_PATH}/ui`);
diff --git a/ui/src/setupProxy.js b/ui/src/setupProxy.js
index 44319e180..abb8ec30d 100644
--- a/ui/src/setupProxy.js
+++ b/ui/src/setupProxy.js
@@ -6,8 +6,10 @@ module.exports = function (app) {
'/api',
createProxyMiddleware({
target: 'http://localhost:8080',
- secure: false,
- logLevel: "debug"
+ changeOrigin: true,
+ onProxyRes: function (proxyRes, req, res) {
+ proxyRes.headers['Access-Control-Allow-Origin'] = '*';
+ }
})
);
@@ -15,8 +17,7 @@ module.exports = function (app) {
'/actuator',
createProxyMiddleware({
target: 'http://localhost:8080',
- secure: false,
- logLevel: "debug"
+ changeOrigin: true
})
);
@@ -24,8 +25,7 @@ module.exports = function (app) {
'/login',
createProxyMiddleware({
target: 'http://localhost:8080',
- secure: false,
- logLevel: "debug"
+ changeOrigin: true
})
);
@@ -33,8 +33,7 @@ module.exports = function (app) {
'/logout',
createProxyMiddleware({
target: 'http://localhost:8080',
- secure: false,
- logLevel: "debug"
+ changeOrigin: true
})
);
};
diff --git a/ui/src/theme/project/list.scss b/ui/src/theme/project/list.scss
index 5acc06806..be94eddd0 100644
--- a/ui/src/theme/project/list.scss
+++ b/ui/src/theme/project/list.scss
@@ -22,3 +22,7 @@
padding: 0px;
}
}
+
+.infinite-scroll-component {
+ overflow: unset !important;
+}
\ No newline at end of file
diff --git a/ui/yarn.lock b/ui/yarn.lock
index ac9e26a66..5f9867d98 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -9087,6 +9087,13 @@ react-error-overlay@^6.0.9:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
+react-infinite-scroll-component@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz#7e511e7aa0f728ac3e51f64a38a6079ac522407f"
+ integrity sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ==
+ dependencies:
+ throttle-debounce "^2.1.0"
+
react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -10616,6 +10623,11 @@ throat@^5.0.0:
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
+throttle-debounce@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2"
+ integrity sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==
+
through2@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"