提交 96c5ce38 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

list sites with products

上级 c7b00f73
......@@ -108,22 +108,17 @@ func LoadSiteProduct(currSite serverDomain.ZentaoSite, currProductId int) (
return
}
var first serverDomain.ZentaoProduct
for idx, product := range products {
product := serverDomain.ZentaoProduct{Id: product.Id, Name: product.Name}
currIndex := 0
for idx, item := range products {
product := serverDomain.ZentaoProduct{Id: item.Id, Name: item.Name}
if currProductId == product.Id {
currProduct = product
}
if idx == 0 {
first = product
currIndex = idx
}
}
if currProduct.Id == 0 { // not found, use the first one
currProduct = first
}
currProduct = products[currIndex]
products[currIndex].Checked = true
return
}
......
......@@ -27,10 +27,13 @@ type ZentaoSite struct {
Url string `json:"url"`
Username string `json:"username"`
Password string `json:"password"`
Checked bool `json:"checked"`
}
type ZentaoProduct struct {
Id int `json:"id"`
Name string `json:"name"`
Id int `json:"id"`
Name string `json:"name"`
Checked bool `json:"checked"`
}
type ZentaoModule struct {
......
......@@ -98,7 +98,7 @@ func (s *SiteService) LoadSites(currSiteId int) (sites []serverDomain.ZentaoSite
}
sites = []serverDomain.ZentaoSite{}
var first serverDomain.ZentaoSite
currIndex := 0
for idx, item := range pos {
site := serverDomain.ZentaoSite{
Id: int(item.ID),
......@@ -109,19 +109,14 @@ func (s *SiteService) LoadSites(currSiteId int) (sites []serverDomain.ZentaoSite
}
if uint(currSiteId) == item.ID {
currSite = site
}
if idx == 0 {
first = site
currIndex = idx
}
sites = append(sites, site)
}
if currSite.Id == 0 { // not found, use the first one
currSite = first
}
currSite = sites[currIndex] // default is first one
sites[currIndex].Checked = true
return
}
......
<template>
<ButtonGroup class="space-left">
<Button class="rounded border lighten-16" icon="zentao" iconColor="var(--color-blue)" iconClass="off-off" label="当前禅道站点" suffix-icon="caret-down" id="siteMenuToggle" />
<Button class="rounded border lighten-16" icon="cube" label="当前产品" suffix-icon="caret-down" id="productMenuToggle" />
<Button id="siteMenuToggle"
:label="currSite.name"
icon="zentao"
class="rounded border lighten-16"
iconColor="var(--color-blue)"
iconClass="off-off"
suffix-icon="caret-down"/>
<Button id="productMenuToggle"
:label="currProduct.name"
icon="cube"
class="rounded border lighten-16"
suffix-icon="caret-down"/>
</ButtonGroup>
<DropdownMenu
:items="[
{checked: false, title: 'product 1'},
{checked: false, title: 'product 2'},
{checked: true, title: 'product 3', active: true},
{checked: false, title: 'product 4'}
]"
toggle="#productMenuToggle"
/>
<DropdownMenu toggle="#siteMenuToggle">
<div>custom site menu</div>
toggle="#siteMenuToggle"
:items="sites"
:replaceFields="replaceFields"
>
</DropdownMenu>
<DropdownMenu
toggle="#productMenuToggle"
:items="products"
:replaceFields="replaceFields"
/>
</template>
<script setup lang="ts">
import Button from './Button.vue';
import ButtonGroup from './ButtonGroup.vue';
import DropdownMenu from './DropdownMenu.vue';
import {useI18n} from "vue-i18n";
import {useRouter} from "vue-router";
import {useStore} from "vuex";
import {ZentaoData} from "@/store/zentao";
import {computed, onMounted, watch} from "vue";
import {getInitStatus} from "@/utils/cache";
import {notification} from "ant-design-vue";
const { t } = useI18n();
const router = useRouter();
const store = useStore<{ Zentao: ZentaoData }>();
const sites = computed<any[]>(() => store.state.Zentao.sites);
const products = computed<any>(() => store.state.Zentao.products);
const currSite = computed<any>(() => store.state.Zentao.currSite);
const currProduct = computed<any>(() => store.state.Zentao.currProduct);
store.dispatch('Zentao/fetchSitesAndProduct', {}).then((payload) => {
showZentaoMsg(payload)
})
watch(currSite, ()=> {
console.log(`watch currSite id = ${currSite.value.id}`)
if (currSite.value.id <= 0) {
getInitStatus().then((initStatus) => {
console.log('initStatus', initStatus)
if (!initStatus) {
router.push(`/site/list`)
}
})
}
})
onMounted(() => {
console.log('onMounted')
})
const showZentaoMsg = (payload): void => {
if (payload.zentaoErr) {
notification.error({
message: t('zentao_request_failed_title'),
description: t('zentao_request_failed_desc'),
duration: null,
});
}
}
const selectSite = (site): void => {
console.log('selectSite', site)
store.dispatch('Zentao/fetchSitesAndProduct', {currSiteId: site.id}).then((payload) => {
showZentaoMsg(payload)
})
}
const selectProduct = (product): void => {
console.log('selectProduct', product)
store.dispatch('Zentao/fetchSitesAndProduct', {currProductId: product.id}).then((payload) => {
showZentaoMsg(payload)
})
}
const replaceFields = {
title: 'name',
}
</script>
......@@ -46,3 +46,8 @@ client/out/ztf-darwin-x64/ztf.app/Contents/MacOS/ztf
任务列表
用例树状列表(按模块组织,可以根据模块、套件、任务过滤)
sonar-scanner \
-Dsonar.projectKey=ztf \
-Dsonar.sources=. \
-Dsonar.host.url=http://10.8.1.10:59000 \
-Dsonar.login=412093d8c90b99378b48139915fbf275509092ad
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册