blob: 3c4fcb1f9b6ab3d67f7624f0bb7b0212789c61d7 [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="rk-trace-detail flex-v">
<div class="rk-trace-detail-wrapper clear" v-if="current.endpointNames">
<h5 class="mb-5 mt-0">
<svg v-if="current.isError" class="icon red vm mr-5 sm">
<use xlink:href="#clear"></use>
</svg>
<span class="vm">{{current.endpointNames[0]}}</span>
</h5>
<div class="mb-5 blue sm">
<select class="rk-trace-detail-ids" @change="GET_TRACE_SPANS({traceId: i})">
<option v-for="i in current.traceIds" :value="i" :key="i">{{i}}</option>
</select>
</div>
<a class="rk-btn sm r" :class="{'ghost':mode}" @click="mode = false">
<svg class="icon vm sm">
<use xlink:href="#issue-child"></use>
</svg>
{{$t('tree')}}</a>
<a class="rk-btn mr-5 sm r" :class="{'ghost':!mode}" @click="mode = true">
<svg class="icon vm sm">
<use xlink:href="#list-bulleted"></use>
</svg>
{{$t('list')}}</a>
<div class="rk-tag mr-5">{{this.$t('start')}}</div><span class="mr-15 sm">{{parseInt(current.start) | dateformat}}</span>
<div class="rk-tag mr-5">{{this.$t('duration')}}</div><span class="mr-15 sm">{{current.duration}} ms</span>
<div class="rk-tag mr-5">{{this.$t('spans')}}</div><span class="sm">9</span>
</div>
<TraceDetailChartList v-if="mode&&current.endpointNames" :data="spans" :traceId="current.traceIds[0]"/>
<TraceDetailChartTree v-if="!mode&&current.endpointNames" :data="spans" :traceId="current.traceIds[0]"/>
<div v-if="!current.endpointNames" class="flex-h container">
<svg class="icon rk-icon-trace">
<use xlink:href="#unlink"></use>
</svg>
</div>
</div>
</template>
<script lang="ts">
import { Vue, Component, Prop } from 'vue-property-decorator';
import TraceDetailChartList from './trace-detail-chart-list.vue';
import TraceDetailChartTree from './trace-detail-chart-tree.vue';
import { Trace, Span } from '../../../store/interfaces';
import { Action } from 'vuex-class';
@Component({ components: { TraceDetailChartList, TraceDetailChartTree } })
export default class Header extends Vue {
@Action('rocketTrace/GET_TRACE_SPANS') private GET_TRACE_SPANS: any;
@Prop() private spans!: Span[];
@Prop() private current!: Trace;
private mode: boolean = true;
}
</script>
<style lang="scss" scoped>
.rk-trace-detail {
flex-shrink: 0;
height: 100%;
width: 75%;
}
.rk-trace-detail-wrapper {
padding: 8px 30px;
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.rk-trace-detail-ids{
background-color: rgba(0, 0, 0, 0);
outline: 0;
border-style: unset;
color: inherit;
border: 1px solid;
border-radius: 4px;
}
.rk-tag{
display: inline-block;
border-radius: 4px;
padding: 0px 7px;
background-color: #40454e;
color: #eee;
}
.rk-icon-trace{
width:100px;
height:100px;
margin: 0 auto;
fill: rgba(46, 47, 51, 0.15);
}
</style>