Skip to content
Snippets Groups Projects
Commit 7d6da927 authored by Sebastian Böckelmann's avatar Sebastian Böckelmann
Browse files

Use PaginatorTable for RoomList + KITMap and Adress in NetdocBldg

parent 9b93d1b2
No related branches found
No related tags found
No related merge requests found
<template> <template>
<div> <div>
<FilterInput v-model="filter"></FilterInput>
<b-pagination v-if="rooms && rooms.length > per_page && filter === ''" :total-rows="rooms.length"
:per-page="per_page" v-model="current_page" align="center"></b-pagination>
<b-card no-body class="shadow"> <b-card no-body class="shadow">
<b-table responsive :filter="filter" :per-page="filter === '' ? per_page : null" <PaginatorTable responsive :fields="site_list_fields" :busy="rooms === null"
:current-page="filter === '' ? current_page : null" :fields="site_list_fields" :busy="rooms === null" :items="rooms" :sort-by="sort_by || default_sort_by" :hide-top-pagination="rooms.length < 25"
:items="rooms" :sort-by="sort_by || default_sort_by"> :hide-filter="rooms.length < 10">
<template v-slot:cell(name)="data"> <template v-slot:cell(name)="data">
<b-link class="nowrap" :to="'/netdoc/sites/'+bldgs_by_nbr[data.item.bldg].site_fq_name+'/'+data.item.bldg+'/'+data.item.gpk"><b>{{ data.value }}</b></b-link> <b-link class="nowrap" :to="'/netdoc/sites/'+bldgs_by_nbr[data.item.bldg].site_fq_name+'/'+data.item.bldg+'/'+data.item.gpk"><b>{{ data.value }}</b></b-link>
</template> </template>
<template v-slot:cell(number)="data"> <template v-slot:cell(number)="data">
<b-link class="nowrap" :to="'/netdoc/sites/'+bldgs_by_nbr[data.item.bldg].site_fq_name+'/'+data.item.bldg+'/'+data.item.gpk"><b>{{ data.value }}</b></b-link> <b-link class="nowrap" :to="'/netdoc/sites/'+bldgs_by_nbr[data.item.bldg].site_fq_name+'/'+data.item.bldg+'/'+data.item.gpk"><b>{{ data.value }}</b></b-link>
</template> </template>
</b-table> </PaginatorTable>
<div v-if="rooms && rooms.length === 0" class="font-italic text-center mb-3"> <div v-if="rooms && rooms.length === 0" class="font-italic text-center mb-3">
{{ $t('components.bcd_list.no_rooms_available') }} {{ $t('components.bcd_list.no_rooms_available') }}
</div> </div>
<b-pagination v-if="rooms && rooms.length > per_page && filter === ''" :total-rows="rooms.length"
:per-page="per_page" v-model="current_page" align="center"></b-pagination>
</b-card> </b-card>
</div> </div>
</template> </template>
<script> <script>
import FilterInput from '@/components/FilterInput'
import apiutil from '@/util/apiutil' import apiutil from '@/util/apiutil'
import PaginatorTable from '@/components/PaginatorTable.vue'
export default { export default {
name: 'RoomList', name: 'RoomList',
components: { FilterInput }, components: { PaginatorTable },
watch: { watch: {
filter: { filter: {
immediate: true, immediate: true,
...@@ -56,7 +51,7 @@ export default { ...@@ -56,7 +51,7 @@ export default {
return apiutil.dict_by_value_of_array(this.bldgs, 'number') return apiutil.dict_by_value_of_array(this.bldgs, 'number')
}, },
site_list_fields() { site_list_fields() {
const result = [ return [
{ {
label: this.$t('views.nd.room.floor'), label: this.$t('views.nd.room.floor'),
key: 'floor', key: 'floor',
...@@ -78,7 +73,6 @@ export default { ...@@ -78,7 +73,6 @@ export default {
sortable: true sortable: true
}, },
] ]
return result
} }
}, },
props: { props: {
......
...@@ -2,6 +2,30 @@ ...@@ -2,6 +2,30 @@
<div id="Site"> <div id="Site">
<h1>{{ $tc('views.nd.netdoc.room', 2) }} <span v-if="bldg">in {{ bldg.number }}</span></h1> <h1>{{ $tc('views.nd.netdoc.room', 2) }} <span v-if="bldg">in {{ bldg.number }}</span></h1>
<LoadingPlaceholder :data="[bldg, rooms]"> <LoadingPlaceholder :data="[bldg, rooms]">
<b-row class="mt-4">
<b-col cols="6">
<div v-if="bldg">
<div style="float: left;">
<NETVSIcon icon="geo_address" class="pr-2"></NETVSIcon>
</div>
<div style="float: left;">
{{ bldg.name }}
<br>
{{ bldg.street }}
<br>
{{ bldg.postal_code }}
</div>
</div>
</b-col>
<b-col cols="6">
<KITMap v-if="can_show_map" :center="bldg.geo_location" :zoom="17" style="height: 20vh; width: 100%;">
<template v-slot:map_content>
<l-marker :lat-lng="latLng(bldg.geo_location.lat, bldg.geo_location.lng)"
:icon="icon"></l-marker>
</template>
</KITMap>
</b-col>
</b-row>
<RoomList :rooms="rooms" :bldgs="[bldg]" /> <RoomList :rooms="rooms" :bldgs="[bldg]" />
</LoadingPlaceholder> </LoadingPlaceholder>
</div> </div>
...@@ -11,23 +35,37 @@ ...@@ -11,23 +35,37 @@
import LoadingPlaceholder from '@/components/Loading.vue' import LoadingPlaceholder from '@/components/Loading.vue'
import netdocService from '@/api-services/netdoc.service' import netdocService from '@/api-services/netdoc.service'
import RoomList from '@/components/nd/RoomList.vue' import RoomList from '@/components/nd/RoomList.vue'
import NETVSIcon from '@/icons/NETVSIcon.vue'
import KITMap from '@/components/KITMap.vue'
import {icon, latLng} from 'leaflet'
import {LMarker} from 'vue2-leaflet'
export default { export default {
name: 'NetdocBldg', name: 'NetdocBldg',
components: { RoomList, LoadingPlaceholder }, methods: { latLng },
components: { KITMap, NETVSIcon, RoomList, LoadingPlaceholder, LMarker },
data() { data() {
return { return {
site: null, site: null,
bldg: null, bldg: null,
rooms: null, rooms: null,
icon: icon({iconUrl: '/location.png', iconSize: [32, 42], iconAnchor: [16, 42]})
} }
}, },
async created() { async created() {
const response = await netdocService.getRooms(this.$store.state, this.$route.params.site, this.$route.params.bldg) const response = await netdocService.getRooms(this.$store.state, this.$route.params.site, this.$route.params.bldg)
this.site = response.data.site_list[0] this.site = response.data.site_list[0]
this.bldg = response.data.bldg_list[0] this.bldg = response.data.bldg_list[0]
console.log(this.bldg)
this.rooms = response.data.room_list this.rooms = response.data.room_list
} },
computed: {
can_show_map: function () {
return this.bldg && this.bldg.geo_location && this.bldg.geo_location.lat && this.bldg.geo_location.lng
}
},
} }
</script> </script>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment