blob: 66cd44a6c91b23cac79dc14efb405a541b234ccf [file] [log] [blame]
<!--
~ 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.
-->
<template>
<div class="__container_tabDemo3">
<div class="option">
<a-button class="btn" @click="refresh"> refresh </a-button>
<a-button class="btn" @click="newPageForGrafana"> grafana </a-button>
</div>
<a-spin class="spin" :spinning="!showIframe">
<div class="__container_iframe_container">
<iframe v-if="showIframe" id="grafanaIframe" :src="grafanaUrl" frameborder="0"></iframe>
</div>
</a-spin>
</div>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { getInstanceMetricsInfo } from '@/api/service/instance'
let grafanaUrl = ref('')
let showIframe = ref(true)
onMounted(async () => {
let res = await getInstanceMetricsInfo({})
grafanaUrl.value = res.data
})
function refresh() {
showIframe.value = false
setTimeout(() => {
showIframe.value = true
}, 200)
}
function newPageForGrafana() {
window.open(grafanaUrl.value, '_blank')
}
</script>
<style lang="less" scoped>
.__container_tabDemo3 {
.option {
padding-left: 16px;
.btn {
margin-right: 10px;
}
}
:deep(.spin) {
margin-top: 30px;
}
.__container_iframe_container {
z-index: 1;
position: relative;
width: calc(100vw - 332px);
height: calc(100vh - 200px);
clip-path: inset(20px 10px);
#grafanaIframe {
z-index: 0;
top: -112px;
position: absolute;
width: calc(100vw - 332px);
height: calc(100vh - 200px);
}
}
}
</style>