-
Notifications
You must be signed in to change notification settings - Fork 9
/
ContractCallTransactionTable.vue
129 lines (104 loc) · 4.53 KB
/
ContractCallTransactionTable.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!--
-
- Hedera Mirror Node Explorer
-
- Copyright (C) 2021 - 2024 Hedera Hashgraph, LLC
-
- Licensed 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 -->
<!-- --------------------------------------------------------------------------------------------------------------- -->
<template>
<o-table
:data="transactions"
:loading="loading"
paginated
backend-pagination
pagination-order="left"
:range-before="0"
:range-after="0"
:total="total"
v-model:current-page="currentPage"
:per-page="perPage"
@page-change="onPageChange"
@cell-click="handleClick"
:hoverable="true"
:narrowed="true"
:striped="true"
:mobile-breakpoint="ORUGA_MOBILE_BREAKPOINT"
aria-current-label="Current page"
aria-next-label="Next page"
aria-page-label="Page"
aria-previous-label="Previous page"
customRowKey="consensus_timestamp"
default-sort="consensus_timestamp"
>
<o-table-column v-slot="props" field="transaction_id" label="ID">
<TransactionLabel v-bind:transaction-id="props.row.transaction_id" v-bind:result="props.row.result"/>
</o-table-column>
<o-table-column v-slot="props" label="Content">
<TransactionSummary v-bind:transaction="props.row"/>
</o-table-column>
<o-table-column v-slot="props" field="consensus_timestamp" label="Time">
<TimestampValue v-bind:timestamp="props.row.consensus_timestamp"/>
</o-table-column>
</o-table>
<EmptyTable v-if="!transactions.length"/>
</template>
<!-- --------------------------------------------------------------------------------------------------------------- -->
<!-- SCRIPT -->
<!-- --------------------------------------------------------------------------------------------------------------- -->
<script lang="ts">
import {ComputedRef, defineComponent, PropType, Ref} from 'vue';
import {Transaction} from "@/schemas/HederaSchemas";
import {routeManager} from "@/router";
import TimestampValue from "@/components/values/TimestampValue.vue";
import TransactionLabel from "@/components/values/TransactionLabel.vue";
import TransactionSummary from "@/components/transaction/TransactionSummary.vue";
import {ORUGA_MOBILE_BREAKPOINT} from '@/App.vue';
import EmptyTable from "@/components/EmptyTable.vue";
import {TransactionTableController} from "@/components/transaction/TransactionTableController";
export default defineComponent({
name: 'ContractCallTransactionTable',
components: {EmptyTable, TransactionSummary, TimestampValue, TransactionLabel},
props: {
controller: {
type: Object as PropType<TransactionTableController>,
required: true
}
},
setup(props) {
const handleClick = (t: Transaction, c: unknown, i: number, ci: number, event: MouseEvent) => {
routeManager.routeToTransaction(t, event.ctrlKey || event.metaKey)
}
return {
transactions: props.controller.rows as ComputedRef<Transaction[]>,
loading: props.controller.loading as ComputedRef<boolean>,
total: props.controller.totalRowCount as ComputedRef<number>,
currentPage: props.controller.currentPage as Ref<number>,
onPageChange: props.controller.onPageChange,
perPage: props.controller.pageSize as Ref<number>,
handleClick,
// From App
ORUGA_MOBILE_BREAKPOINT,
}
}
});
</script>
<!-- --------------------------------------------------------------------------------------------------------------- -->
<!-- STYLE -->
<!-- --------------------------------------------------------------------------------------------------------------- -->
<style scoped>
</style>