diff --git a/front-end/package.json b/front-end/package.json index 8094bf1e..f1172356 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -51,6 +51,7 @@ "sortablejs": "1.7.0", "vue": "2.5.17", "vue-i18n": "7.3.2", + "vue-json-viewer": "^2.2.19", "vue-router": "3.0.1", "vuedraggable": "^2.16.0", "vuex": "3.0.1", diff --git a/front-end/src/api/topics.js b/front-end/src/api/topics.js index daf99468..5bfbf0bc 100644 --- a/front-end/src/api/topics.js +++ b/front-end/src/api/topics.js @@ -466,3 +466,10 @@ export function getTopicBrokerOnCluster(cluster, persistent, tenantNamespaceTopi method: 'get' }) } + +export function fetchTopicSchemaFromBroker(tenantNamespaceTopic) { + return request({ + url: BASE_URL_V2 + `/schemas/${tenantNamespaceTopic}/schema`, + method: 'get' + }) +} diff --git a/front-end/src/main.js b/front-end/src/main.js index da2d0b1b..34a5b764 100644 --- a/front-end/src/main.js +++ b/front-end/src/main.js @@ -33,6 +33,10 @@ import './permission' // permission control import * as filters from './filters' // global filters +import JsonViewer from 'vue-json-viewer' + +Vue.use(JsonViewer) + Vue.use(Element, { size: Cookies.get('size') || 'medium', // set element-ui default size i18n: (key, value) => i18n.t(key, value) diff --git a/front-end/src/views/management/topics/partitionedTopic.vue b/front-end/src/views/management/topics/partitionedTopic.vue index 82772314..6d9dd81b 100644 --- a/front-end/src/views/management/topics/partitionedTopic.vue +++ b/front-end/src/views/management/topics/partitionedTopic.vue @@ -16,141 +16,290 @@