blob: 0a10843ff86d95b422464d26eb5d578747bc4ecb [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 v-if="resourceType && resourceId" >
<a-tooltip v-if="resourceIcon" placement="top" :title="resourceIconTooltip">
<font-awesome-icon
v-if="resourceIcon && Array.isArray(resourceIcon)"
:icon="resourceIcon"
size="1x"
class="anticon"
:style="[$store.getters.darkMode ? { color: 'rgba(255, 255, 255, 0.65)' } : { color: '#888' }]" />
<render-icon v-else style="font-size: 16px; margin-right: 5px" :icon="resourceIcon" />
</a-tooltip>
<a-tag v-else>{{ resourceType }}</a-tag>
<router-link v-if="resourceRoute && $router.resolve(resourceRoute)" :to="{ path: resourceRoute }">{{ resourceName || resourceId }}</router-link>
<span v-else>{{ resourceName || resourceId }}</span>
</div>
</template>
<script>
export default {
name: 'ResourceLabel',
props: {
resourceType: {
type: String,
default: ''
},
resourceId: {
type: String,
default: ''
},
resourceName: {
type: String,
default: ''
},
altText: {
type: String,
default: ''
}
},
data () {
return {
resourceRoute: '',
resourceIcon: '',
resourceIconTooltip: ''
}
},
created () {
if (this.resourceType) {
var routePrefix = this.$getRouteFromResourceType(this.resourceType)
if (routePrefix && this.resourceId && this.resourceType !== 'QuotaTariff') {
this.resourceRoute = '/' + routePrefix + '/' + this.resourceId
}
this.resourceIcon = this.$getIconFromResourceType(this.resourceType)
this.resourceIconTooltip = this.$t('label.' + this.resourceType.toString().match(/[A-Z][a-z]*/g).join('.').toLowerCase())
}
}
}
</script>
<style lang="scss" scoped>
.anticon {
margin-right: 5px;
vertical-align: center;
}
</style>