This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new 3cb5e8df BIGTOP-4468: Separate repository into service and dependency
(#245)
3cb5e8df is described below
commit 3cb5e8dfb57d131b03e7b80e08b47ee1963bb7d6
Author: Fdefined <[email protected]>
AuthorDate: Thu Jul 17 21:28:18 2025 +0800
BIGTOP-4468: Separate repository into service and dependency (#245)
---
bigtop-manager-ui/src/api/repo/types.ts | 3 +
.../create-cluster/components/component-info.vue | 2 +-
.../create-cluster/components/host-manage.vue | 2 +-
.../create-cluster/components/set-source.vue | 150 -----------
.../create-cluster/{create.vue => index.vue} | 0
.../create-host/{create.vue => index.vue} | 0
.../create-host/install-dependencies.vue | 2 +-
.../create-service/{create.vue => index.vue} | 1 +
.../src/components/job-modal/index.vue | 1 +
bigtop-manager-ui/src/components/job/index.vue | 1 +
.../src/components/set-source/index.vue | 281 +++++++++++++++++++++
.../src/components/set-source/update-address.vue | 93 +++++++
bigtop-manager-ui/src/locales/en_US/common.ts | 2 -
.../repo/types.ts => locales/en_US/component.ts} | 19 +-
bigtop-manager-ui/src/locales/en_US/index.ts | 4 +-
bigtop-manager-ui/src/locales/zh_CN/common.ts | 2 -
.../repo/types.ts => locales/zh_CN/component.ts} | 19 +-
bigtop-manager-ui/src/locales/zh_CN/index.ts | 4 +-
.../src/pages/cluster-manage/cluster/host.vue | 2 +-
.../src/pages/cluster-manage/cluster/service.vue | 2 -
.../src/pages/cluster-manage/components/index.vue | 2 +-
.../src/pages/cluster-manage/hosts/index.vue | 2 +-
.../cluster-manage/infrastructures/service.vue | 1 +
.../src/router/routes/modules/clusters.ts | 12 +-
24 files changed, 413 insertions(+), 194 deletions(-)
diff --git a/bigtop-manager-ui/src/api/repo/types.ts
b/bigtop-manager-ui/src/api/repo/types.ts
index 597adce4..1c38eb85 100644
--- a/bigtop-manager-ui/src/api/repo/types.ts
+++ b/bigtop-manager-ui/src/api/repo/types.ts
@@ -17,10 +17,13 @@
* under the License.
*/
export interface RepoVO {
+ type: number
arch?: string
baseUrl?: string
id?: number
name?: string
+ pkgName?: string
+ checksum?: string
[property: string]: any
}
diff --git
a/bigtop-manager-ui/src/components/create-cluster/components/component-info.vue
b/bigtop-manager-ui/src/components/create-cluster/components/component-info.vue
index 3e6cd684..725a7457 100644
---
a/bigtop-manager-ui/src/components/create-cluster/components/component-info.vue
+++
b/bigtop-manager-ui/src/components/create-cluster/components/component-info.vue
@@ -24,7 +24,7 @@
import { ServiceVO } from '@/api/service/types'
import { useI18n } from 'vue-i18n'
import useBaseTable from '@/composables/use-base-table'
- import SetSource from './set-source.vue'
+ import SetSource from '@/components/set-source/index.vue'
import type { TableColumnType } from 'ant-design-vue'
const { t } = useI18n()
diff --git
a/bigtop-manager-ui/src/components/create-cluster/components/host-manage.vue
b/bigtop-manager-ui/src/components/create-cluster/components/host-manage.vue
index 9886e430..b0c7f277 100644
--- a/bigtop-manager-ui/src/components/create-cluster/components/host-manage.vue
+++ b/bigtop-manager-ui/src/components/create-cluster/components/host-manage.vue
@@ -24,7 +24,7 @@
import { useI18n } from 'vue-i18n'
import useBaseTable from '@/composables/use-base-table'
- import HostCreate from '@/components/create-host/create.vue'
+ import HostCreate from '@/components/create-host/index.vue'
import type { FilterConfirmProps, FilterResetProps } from
'ant-design-vue/es/table/interface'
import type { GroupItem } from '@/components/common/button-group/types'
diff --git
a/bigtop-manager-ui/src/components/create-cluster/components/set-source.vue
b/bigtop-manager-ui/src/components/create-cluster/components/set-source.vue
deleted file mode 100644
index b2449ee0..00000000
--- a/bigtop-manager-ui/src/components/create-cluster/components/set-source.vue
+++ /dev/null
@@ -1,150 +0,0 @@
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
--->
-
-<script setup lang="ts">
- import { computed, reactive, ref, toRefs } from 'vue'
- import { getRepoList, updateRepo } from '@/api/repo'
- import { type FormInstance, message, type TableColumnType } from
'ant-design-vue'
- import { useI18n } from 'vue-i18n'
- import type { RepoVO } from '@/api/repo/types'
-
- const { t } = useI18n()
- const open = ref(false)
- const loading = ref(false)
- const formRef = ref<FormInstance>()
- const form = reactive({
- list: [] as RepoVO[]
- })
- const { list } = toRefs(form)
-
- const columns = computed((): TableColumnType[] => [
- {
- title: t('common.name'),
- dataIndex: 'name',
- key: 'name',
- ellipsis: true
- },
- {
- title: t('common.arch'),
- dataIndex: 'arch',
- key: 'arch',
- ellipsis: true
- },
- {
- title: t('common.base_url'),
- dataIndex: 'baseUrl',
- key: 'baseUrl',
- ellipsis: true
- }
- ])
-
- const handleOpen = () => {
- open.value = true
- getSource()
- }
-
- const getSource = async () => {
- loading.value = true
- try {
- list.value = await getRepoList()
- } catch (error) {
- console.log('error :>> ', error)
- } finally {
- loading.value = false
- }
- }
-
- const updateSourceUrl = async () => {
- try {
- const params = list.value.map(({ id, baseUrl }) => ({ id, baseUrl }))
- await updateRepo(params)
- formRef.value?.resetFields()
- message.success(t('common.update_success'))
- open.value = false
- } catch (error) {
- message.error(t('common.update_fail'))
- console.log('error :>> ', error)
- }
- }
-
- const handleOk = () => {
- formRef.value
- ?.validateFields()
- .then(() => {
- updateSourceUrl()
- })
- .catch((info) => {
- console.log('Validate Failed:', info)
- })
- }
-
- const handleCancel = () => {
- open.value = false
- }
-
- defineExpose({
- handleOpen
- })
-</script>
-
-<template>
- <div class="set-source">
- <a-modal
- v-model:open="open"
- width="50%"
- :centered="true"
- :mask="false"
- :title="$t('cluster.source')"
- :mask-closable="false"
- :destroy-on-close="true"
- @ok="handleOk"
- @cancel="handleCancel"
- >
- <a-form ref="formRef" :model="form">
- <a-table :loading="loading" :scroll="{ y: 340 }" :data-source="list"
:columns="columns" :pagination="false">
- <template #bodyCell="{ index, column, record }">
- <template v-if="column.dataIndex == 'baseUrl'">
- <a-form-item
- label=" "
- :colon="false"
- :name="['list', index, 'baseUrl']"
- :rules="[{ required: true, message: $t('common.enter_error'),
trigger: 'blur' }]"
- >
- <a-input v-model:value="record[column.key]" />
- </a-form-item>
- </template>
- </template>
- </a-table>
- </a-form>
- <a-typography-text class="set-source-tip" type="danger">{{
`*${$t('common.note')}` }}</a-typography-text>
- </a-modal>
- </div>
-</template>
-
-<style lang="scss" scoped>
- .set-source {
- &-tip {
- margin-top: $space-sm;
- font-size: 12px;
- }
- }
- :deep(.ant-form-item) {
- margin-bottom: 0;
- }
-</style>
diff --git a/bigtop-manager-ui/src/components/create-cluster/create.vue
b/bigtop-manager-ui/src/components/create-cluster/index.vue
similarity index 100%
rename from bigtop-manager-ui/src/components/create-cluster/create.vue
rename to bigtop-manager-ui/src/components/create-cluster/index.vue
diff --git a/bigtop-manager-ui/src/components/create-host/create.vue
b/bigtop-manager-ui/src/components/create-host/index.vue
similarity index 100%
rename from bigtop-manager-ui/src/components/create-host/create.vue
rename to bigtop-manager-ui/src/components/create-host/index.vue
diff --git
a/bigtop-manager-ui/src/components/create-host/install-dependencies.vue
b/bigtop-manager-ui/src/components/create-host/install-dependencies.vue
index 820d3c2b..1646dbea 100644
--- a/bigtop-manager-ui/src/components/create-host/install-dependencies.vue
+++ b/bigtop-manager-ui/src/components/create-host/install-dependencies.vue
@@ -27,7 +27,7 @@
import { generateRandomId } from '@/utils/tools'
import { execCommand } from '@/api/command'
- import HostCreate from './create.vue'
+ import HostCreate from './index.vue'
import useBaseTable from '@/composables/use-base-table'
import { type InstalledStatusVO, Status } from '@/api/hosts/types'
diff --git a/bigtop-manager-ui/src/components/create-service/create.vue
b/bigtop-manager-ui/src/components/create-service/index.vue
similarity index 99%
rename from bigtop-manager-ui/src/components/create-service/create.vue
rename to bigtop-manager-ui/src/components/create-service/index.vue
index 596327b0..2a3c2177 100644
--- a/bigtop-manager-ui/src/components/create-service/create.vue
+++ b/bigtop-manager-ui/src/components/create-service/index.vue
@@ -24,6 +24,7 @@
import { storeToRefs } from 'pinia'
import { onBeforeRouteLeave, useRoute } from 'vue-router'
import { StepContext, useCreateServiceStore } from '@/store/create-service'
+
import ServiceSelector from './components/service-selector.vue'
import ComponentAssigner from './components/component-assigner.vue'
import ServiceConfigurator from './components/service-configurator.vue'
diff --git a/bigtop-manager-ui/src/components/job-modal/index.vue
b/bigtop-manager-ui/src/components/job-modal/index.vue
index 1452077c..3fe48bfd 100644
--- a/bigtop-manager-ui/src/components/job-modal/index.vue
+++ b/bigtop-manager-ui/src/components/job-modal/index.vue
@@ -24,6 +24,7 @@
import useBaseTable from '@/composables/use-base-table'
import LogsView, { type LogViewProps } from '@/components/log-view/index.vue'
import CustomProgress from '@/components/job/custom-progress.vue'
+
import type { JobVO, StageVO, StateType, TaskListParams, TaskVO } from
'@/api/job/types'
import type { CommandRes, JobStageProgressItem } from '@/store/job-progress'
diff --git a/bigtop-manager-ui/src/components/job/index.vue
b/bigtop-manager-ui/src/components/job/index.vue
index 842145b8..7b6f5c41 100644
--- a/bigtop-manager-ui/src/components/job/index.vue
+++ b/bigtop-manager-ui/src/components/job/index.vue
@@ -25,6 +25,7 @@
import useBaseTable from '@/composables/use-base-table'
import LogsView, { type LogViewProps } from '@/components/log-view/index.vue'
import CustomProgress from './custom-progress.vue'
+
import type { JobVO, StageVO, StateType, TaskListParams, TaskVO } from
'@/api/job/types'
import type { ClusterVO } from '@/api/cluster/types'
import type { ListParams } from '@/api/types'
diff --git a/bigtop-manager-ui/src/components/set-source/index.vue
b/bigtop-manager-ui/src/components/set-source/index.vue
new file mode 100644
index 00000000..401a592c
--- /dev/null
+++ b/bigtop-manager-ui/src/components/set-source/index.vue
@@ -0,0 +1,281 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<script setup lang="ts">
+ import { computed, nextTick, reactive, ref, shallowRef, toRefs } from 'vue'
+ import { getRepoList, updateRepo } from '@/api/repo'
+ import { useI18n } from 'vue-i18n'
+ import UpdateAddress from './update-address.vue'
+
+ import { type FormInstance, message, type TableColumnType } from
'ant-design-vue'
+ import type { RepoVO } from '@/api/repo/types'
+
+ const { t } = useI18n()
+ const open = ref(false)
+ const loading = ref(false)
+ const formRef = ref<FormInstance>()
+ const type = ref<number>(1)
+ const list = ref<RepoVO[]>([])
+ const updateAddressRef = ref<InstanceType<typeof UpdateAddress> | null>(null)
+ const listTypeMap = shallowRef(['', 'serviceList', 'dependencyList'])
+
+ const form = reactive<Record<string, RepoVO[]>>({
+ serviceList: [],
+ dependencyList: []
+ })
+
+ const { serviceList, dependencyList } = toRefs(form)
+
+ const sourceTypeTabs = computed(() => [t('common.service'),
t('component.dependency')])
+ const columns = computed((): TableColumnType[] => [
+ {
+ title: t('common.name'),
+ dataIndex: 'name',
+ key: 'name',
+ ellipsis: true
+ },
+ {
+ title: t('common.arch'),
+ dataIndex: 'arch',
+ key: 'arch',
+ ellipsis: true
+ },
+ {
+ title: t('component.base_url'),
+ dataIndex: 'baseUrl',
+ key: 'baseUrl',
+ ellipsis: true
+ },
+ {
+ title: t('component.pkg_name'),
+ dataIndex: 'pkgName',
+ key: 'pkgName',
+ ellipsis: true
+ }
+ ])
+
+ const handleOpen = () => {
+ open.value = true
+ getSource()
+ }
+
+ const getSource = async () => {
+ loading.value = true
+ try {
+ list.value = await getRepoList()
+ onTabsChange({ target: { value: type.value } })
+ } catch (error) {
+ console.log('error :>> ', error)
+ } finally {
+ loading.value = false
+ }
+ }
+
+ const updateSourceUrl = async () => {
+ try {
+ const params = list.value.map(({ id, baseUrl }) => ({ id, baseUrl }))
+ await updateRepo(params)
+ formRef.value?.resetFields()
+ message.success(t('common.update_success'))
+ open.value = false
+ } catch (error) {
+ message.error(t('common.update_fail'))
+ console.log('error :>> ', error)
+ }
+ }
+
+ const handleOk = async () => {
+ const pass = await checkAllRules()
+ if (!pass) return
+ updateSourceUrl()
+ }
+
+ const handleCancel = () => {
+ open.value = false
+ type.value = 1
+ Object.assign(form, { serviceList: [], dependencyList: [] })
+ }
+
+ const checkAllRules = async () => {
+ const errorMap = list.value.reduce(
+ (pre, val) => {
+ if (val.baseUrl === '') {
+ if (!pre[val.type]) {
+ pre[val.type] = []
+ }
+ pre[val.type].push(Number(val.id))
+ }
+ return pre
+ },
+ {} as Record<string, number[]>
+ )
+
+ const types = Object.keys(errorMap)
+
+ if (types.length > 0) {
+ onTabsChange({ target: { value: Number(types[0]) } })
+ await nextTick() // wait tab rendered
+
+ const idx = form[listTypeMap.value[type.value]].findIndex((v) => v.id
=== errorMap[type.value][0])
+ const pathName = [listTypeMap.value[type.value], idx, 'baseUrl']
+
+ if (idx != -1) {
+ await nextTick() // wait dom rendered
+ formRef.value?.scrollToField(pathName)
+ await formRef.value?.validateFields([pathName]).catch((error) =>
console.log('error', error))
+ } else {
+ formRef.value?.clearValidate()
+ }
+ }
+
+ return types.length === 0
+ }
+
+ const onTabsChange = ({ target }) => {
+ formRef.value?.clearValidate()
+ type.value = Number(target.value)
+ form[listTypeMap.value[type.value]] = list.value.filter((v) => v.type ===
type.value)
+ }
+
+ const setNewAddress = () => {
+ updateAddressRef.value?.show()
+ }
+
+ const handleSetAddress = (newAddress: string) => {
+ list.value.forEach((v) => (v.baseUrl = newAddress))
+ message.success(t('common.update_success'))
+ }
+
+ defineExpose({
+ handleOpen
+ })
+</script>
+
+<template>
+ <div class="set-source">
+ <a-modal
+ v-model:open="open"
+ width="60%"
+ :centered="true"
+ :mask="false"
+ :title="$t('cluster.source')"
+ :mask-closable="false"
+ :destroy-on-close="true"
+ :after-close="handleCancel"
+ >
+ <div class="set-source-operate">
+ <a-radio-group v-model:value="type" button-style="solid"
@change="onTabsChange">
+ <a-radio-button v-for="(label, index) in sourceTypeTabs" :key="index
+ 1" :value="index + 1">
+ {{ label }}
+ </a-radio-button>
+ </a-radio-group>
+ <a-button type="primary" @click="setNewAddress">{{
$t('component.update_all') }}</a-button>
+ </div>
+ <a-form ref="formRef" :model="form">
+ <a-table
+ v-show="type === 1"
+ :loading="loading"
+ :scroll="{ y: 350 }"
+ :data-source="[...serviceList]"
+ :columns="columns"
+ :pagination="false"
+ >
+ <template #bodyCell="{ index, column, record }">
+ <template v-if="column.key == 'baseUrl'">
+ <a-form-item
+ label=" "
+ :colon="false"
+ :name="[`serviceList`, index, 'baseUrl']"
+ :rules="[
+ {
+ required: true,
+ message: t('common.enter_error',
[`${t('component.base_url')}`.toLowerCase()]),
+ trigger: ['change', 'blur']
+ }
+ ]"
+ >
+ <a-input v-model:value="record[column.key]" />
+ </a-form-item>
+ </template>
+ <template v-if="column.key == 'pkgName'">
+ <span>{{ record[column.key] || '-' }}</span>
+ </template>
+ </template>
+ </a-table>
+ <a-table
+ v-show="type === 2"
+ :loading="loading"
+ :scroll="{ y: 350 }"
+ :data-source="dependencyList"
+ :columns="columns"
+ :pagination="false"
+ >
+ <template #bodyCell="{ index, column, record }">
+ <template v-if="column.key == 'baseUrl'">
+ <a-form-item
+ label=" "
+ :colon="false"
+ :name="[`dependencyList`, index, 'baseUrl']"
+ :rules="[{ required: true, message: t('common.enter_error'),
trigger: ['change', 'blur'] }]"
+ >
+ <a-input v-model:value="record[column.key]" />
+ </a-form-item>
+ </template>
+ <template v-if="column.key == 'pkgName'">
+ <span>{{ record[column.key] || '-' }}</span>
+ </template>
+ </template>
+ </a-table>
+ </a-form>
+ <template #footer>
+ <div class="set-source-footer">
+ <a-typography-text class="set-source-tip" type="danger">{{
`*${$t('component.note')}` }}</a-typography-text>
+ <a-space>
+ <a-button @click="handleCancel">{{ $t('common.cancel')
}}</a-button>
+ <a-button type="primary" @click="handleOk">{{ $t('common.confirm')
}}</a-button>
+ </a-space>
+ </div>
+ </template>
+ </a-modal>
+ <update-address ref="updateAddressRef" @on-ok="handleSetAddress" />
+ </div>
+</template>
+
+<style lang="scss" scoped>
+ .set-source {
+ min-width: 400px;
+ &-tip {
+ font-size: 12px;
+ }
+ &-operate {
+ display: flex;
+ justify-content: space-between;
+ margin: 16px 0;
+ }
+ &-footer {
+ text-align: start;
+ display: flex;
+ justify-content: space-between;
+ gap: 16px;
+ }
+ }
+ :deep(.ant-form-item) {
+ margin-bottom: 0;
+ }
+</style>
diff --git a/bigtop-manager-ui/src/components/set-source/update-address.vue
b/bigtop-manager-ui/src/components/set-source/update-address.vue
new file mode 100644
index 00000000..3c65ae58
--- /dev/null
+++ b/bigtop-manager-ui/src/components/set-source/update-address.vue
@@ -0,0 +1,93 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<script setup lang="ts">
+ import { computed, ref } from 'vue'
+ import { useI18n } from 'vue-i18n'
+ import { FormItemState } from '@/components/common/auto-form/types'
+
+ interface Emits {
+ (event: 'onOk', value: string): void
+ }
+
+ const emits = defineEmits<Emits>()
+
+ const { t } = useI18n()
+ const visible = ref(false)
+ const autoFormRef = ref<Comp.AutoFormInstance | null>(null)
+ const formValue = ref({ newAddress: '' })
+
+ const formItems = computed((): FormItemState[] => [
+ {
+ type: 'input',
+ field: 'newAddress',
+ formItemProps: {
+ name: 'newAddress',
+ label: t('component.new_base_url'),
+ rules: [
+ {
+ required: true,
+ message: t('common.enter_error',
[`${t('component.new_base_url')}`.toLowerCase()]),
+ trigger: 'blur'
+ }
+ ]
+ },
+ controlProps: {
+ placeholder: t('common.enter_error',
[`${t('component.new_base_url')}`.toLowerCase()])
+ }
+ }
+ ])
+
+ const onSubmit = async () => {
+ try {
+ const validate = await autoFormRef.value?.getFormValidation()
+ if (!validate) return
+ emits('onOk', formValue.value.newAddress)
+ onCancel()
+ } catch (e) {
+ console.log('Validation failed', e)
+ }
+ }
+
+ const onCancel = () => {
+ visible.value = false
+ formValue.value.newAddress = ''
+ autoFormRef.value?.resetForm()
+ }
+
+ const show = () => {
+ visible.value = true
+ }
+
+ defineExpose({ show })
+</script>
+
+<template>
+ <a-modal
+ v-model:open="visible"
+ :centered="true"
+ :destroy-on-close="true"
+ :title="t('component.base_url')"
+ @ok="onSubmit"
+ @cancel="onCancel"
+ >
+ <auto-form ref="autoFormRef" v-model:form-value="formValue"
:form-items="formItems" :show-button="false" />
+ </a-modal>
+</template>
+
+<style lang="scss" scoped></style>
diff --git a/bigtop-manager-ui/src/locales/en_US/common.ts
b/bigtop-manager-ui/src/locales/en_US/common.ts
index e6a46d18..47a75ad4 100644
--- a/bigtop-manager-ui/src/locales/en_US/common.ts
+++ b/bigtop-manager-ui/src/locales/en_US/common.ts
@@ -55,7 +55,6 @@ export default {
desc: 'Description',
os: 'OS',
arch: 'Arch',
- base_url: 'Address',
cluster: 'Cluster',
host: 'Host',
service: 'Service',
@@ -101,7 +100,6 @@ export default {
restore_msg: 'Are you sure you want to restore this?',
delete_empty: 'Please select the records you want to delete.',
total: 'Total {0} items',
- note: 'Note: Changes to the source address will take effect for all
clusters.',
upload_file: 'Upload file',
file_type_error: 'Only text files are allowed!',
file_size_error: 'File size cannot exceed 10KB!',
diff --git a/bigtop-manager-ui/src/api/repo/types.ts
b/bigtop-manager-ui/src/locales/en_US/component.ts
similarity index 77%
copy from bigtop-manager-ui/src/api/repo/types.ts
copy to bigtop-manager-ui/src/locales/en_US/component.ts
index 597adce4..442487b7 100644
--- a/bigtop-manager-ui/src/api/repo/types.ts
+++ b/bigtop-manager-ui/src/locales/en_US/component.ts
@@ -16,16 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-export interface RepoVO {
- arch?: string
- baseUrl?: string
- id?: number
- name?: string
- [property: string]: any
-}
-
-export interface RepoUpdate {
- baseUrl?: string
- id?: number
- [property: string]: any
+export default {
+ pkg_name: 'Package',
+ base_url: 'Address',
+ new_base_url: 'New Address',
+ note: 'Note: Changes to the source address will take effect for all
clusters.',
+ dependency: 'Dependency',
+ update_all: 'Update All'
}
diff --git a/bigtop-manager-ui/src/locales/en_US/index.ts
b/bigtop-manager-ui/src/locales/en_US/index.ts
index e91a5f9f..063ecee7 100644
--- a/bigtop-manager-ui/src/locales/en_US/index.ts
+++ b/bigtop-manager-ui/src/locales/en_US/index.ts
@@ -29,6 +29,7 @@ import job from '@/locales/en_US/job.ts'
import overview from '@/locales/en_US/overview'
import service from '@/locales/en_US/service'
import infra from '@/locales/en_US/infra.ts'
+import component from '@/locales/en_US/component'
export default {
common,
@@ -42,5 +43,6 @@ export default {
job,
overview,
service,
- infra
+ infra,
+ component
}
diff --git a/bigtop-manager-ui/src/locales/zh_CN/common.ts
b/bigtop-manager-ui/src/locales/zh_CN/common.ts
index ac593b7b..196d5dc9 100644
--- a/bigtop-manager-ui/src/locales/zh_CN/common.ts
+++ b/bigtop-manager-ui/src/locales/zh_CN/common.ts
@@ -55,7 +55,6 @@ export default {
desc: '描述',
os: '系统',
arch: '架构',
- base_url: '地址',
cluster: '集群',
host: '主机',
service: '服务',
@@ -100,7 +99,6 @@ export default {
delete_msgs: '确认要删除这些记录吗?',
delete_empty: '请选择需要删除的记录',
total: '共{0}条数据',
- note: '注: 源地址的改动对所有集群生效。',
upload_file: '上传文件',
file_type_error: '只能上传文本文件!',
file_size_error: '文件大小不能超过 10KB!',
diff --git a/bigtop-manager-ui/src/api/repo/types.ts
b/bigtop-manager-ui/src/locales/zh_CN/component.ts
similarity index 79%
copy from bigtop-manager-ui/src/api/repo/types.ts
copy to bigtop-manager-ui/src/locales/zh_CN/component.ts
index 597adce4..47e193cc 100644
--- a/bigtop-manager-ui/src/api/repo/types.ts
+++ b/bigtop-manager-ui/src/locales/zh_CN/component.ts
@@ -16,16 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-export interface RepoVO {
- arch?: string
- baseUrl?: string
- id?: number
- name?: string
- [property: string]: any
-}
-
-export interface RepoUpdate {
- baseUrl?: string
- id?: number
- [property: string]: any
+export default {
+ pkg_name: '包名',
+ base_url: '地址',
+ new_base_url: '新地址',
+ note: '注: 源地址的改动对所有集群生效。',
+ dependency: '依赖',
+ update_all: '更新全部'
}
diff --git a/bigtop-manager-ui/src/locales/zh_CN/index.ts
b/bigtop-manager-ui/src/locales/zh_CN/index.ts
index c2104cc2..e18ecd76 100644
--- a/bigtop-manager-ui/src/locales/zh_CN/index.ts
+++ b/bigtop-manager-ui/src/locales/zh_CN/index.ts
@@ -29,6 +29,7 @@ import job from '@/locales/zh_CN/job.ts'
import overview from '@/locales/zh_CN/overview.ts'
import service from '@/locales/zh_CN/service.ts'
import infra from '@/locales/zh_CN/infra.ts'
+import component from '@/locales/zh_CN/component'
export default {
common,
@@ -42,5 +43,6 @@ export default {
job,
overview,
service,
- infra
+ infra,
+ component
}
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
b/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
index bafe924b..a26a874f 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
@@ -26,7 +26,7 @@
import { useRouter } from 'vue-router'
import useBaseTable from '@/composables/use-base-table'
- import HostCreate from '@/components/create-host/create.vue'
+ import HostCreate from '@/components/create-host/index.vue'
import InstallDependencies from
'@/components/create-host/install-dependencies.vue'
import type { FilterConfirmProps, FilterResetProps } from
'ant-design-vue/es/table/interface'
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
b/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
index b9cb7922..ecce6d2f 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
@@ -27,8 +27,6 @@
import { useRouter } from 'vue-router'
import { useJobProgress } from '@/store/job-progress'
- import FilterForm from '@/components/common/filter-form/index.vue'
-
import type { GroupItem } from '@/components/common/button-group/types'
import type { FilterFormItem } from '@/components/common/filter-form/types'
import type { ServiceListParams, ServiceStatusType, ServiceVO } from
'@/api/service/types'
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/components/index.vue
b/bigtop-manager-ui/src/pages/cluster-manage/components/index.vue
index e7b40c22..4718e389 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/components/index.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/components/index.vue
@@ -19,7 +19,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted, watchEffect } from 'vue'
import useBaseTable from '@/composables/use-base-table'
- import SetSource from '@/components/create-cluster/components/set-source.vue'
+ import SetSource from '@/components/set-source/index.vue'
import { useI18n } from 'vue-i18n'
import { useStackStore } from '@/store/stack'
import { storeToRefs } from 'pinia'
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
b/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
index 1d651221..15634877 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
@@ -27,7 +27,7 @@
import * as hostApi from '@/api/hosts'
import useBaseTable from '@/composables/use-base-table'
- import HostCreate from '@/components/create-host/create.vue'
+ import HostCreate from '@/components/create-host/index.vue'
import InstallDependencies from
'@/components/create-host/install-dependencies.vue'
import type { FilterConfirmProps, FilterResetProps, TableRowSelection } from
'ant-design-vue/es/table/interface'
diff --git
a/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
b/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
index a92d506d..7ec7c175 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
@@ -26,6 +26,7 @@
import { useRouter } from 'vue-router'
import { useJobProgress } from '@/store/job-progress'
import { Empty } from 'ant-design-vue'
+
import type { ServiceListParams, ServiceStatusType, ServiceVO } from
'@/api/service/types'
import type { GroupItem } from '@/components/common/button-group/types'
import type { FilterFormItem } from '@/components/common/filter-form/types'
diff --git a/bigtop-manager-ui/src/router/routes/modules/clusters.ts
b/bigtop-manager-ui/src/router/routes/modules/clusters.ts
index beecba9d..1863d412 100644
--- a/bigtop-manager-ui/src/router/routes/modules/clusters.ts
+++ b/bigtop-manager-ui/src/router/routes/modules/clusters.ts
@@ -59,7 +59,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'CreateCluster',
path: 'create-cluster',
- component: () => import('@/components/create-cluster/create.vue'),
+ component: () => import('@/components/create-cluster/index.vue'),
meta: {
hidden: true
}
@@ -67,7 +67,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'CreateService',
path: ':id/create-service/:creationMode?',
- component: () => import('@/components/create-service/create.vue'),
+ component: () => import('@/components/create-service/index.vue'),
meta: {
hidden: true
}
@@ -83,7 +83,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'CreateComponent',
path: ':id/create-component/:serviceId/:creationMode?/:type',
- component: () => import('@/components/create-service/create.vue'),
+ component: () => import('@/components/create-service/index.vue'),
meta: {
hidden: true
}
@@ -111,7 +111,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'CreateInfraService',
path: 'create-infra-service/:id/:creationMode',
- component: () => import('@/components/create-service/create.vue'),
+ component: () => import('@/components/create-service/index.vue'),
meta: {
hidden: true,
activeMenu: '/cluster-manage/infrastructures/list'
@@ -129,7 +129,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'CreateInfraComponent',
path:
'/create-infra-service/create-infra-component/:id/:serviceId/:creationMode/:type',
- component: () => import('@/components/create-service/create.vue'),
+ component: () => import('@/components/create-service/index.vue'),
meta: {
hidden: true,
activeMenu: '/cluster-manage/infrastructures/list'
@@ -178,7 +178,7 @@ const routes: RouteRecordRaw[] = [
{
name: 'HostCreation',
path: 'add',
- component: () => import('@/components/create-host/create.vue'),
+ component: () => import('@/components/create-host/index.vue'),
meta: {
hidden: true,
activeMenu: '/cluster-manage/hosts/list'