feat(ui): introduce toggle button and use it for actions
[e-mobility-charging-stations-simulator.git] / ui / web / src / components / charging-stations / CSConnector.vue
CommitLineData
32de5a57 1<template>
9dc8b66f
JB
2 <tr class="connectors-table__row">
3 <td class="connectors-table__column">{{ connectorId }}</td>
4 <td class="connectors-table__column">{{ connector.status ?? 'Ø' }}</td>
5 <td class="connectors-table__column">
6 {{ connector.transactionStarted === true ? 'Yes' : 'No' }}
7 </td>
8 <td class="connectors-table__column">
9 {{ atgStatus?.start === true ? 'Yes' : 'No' }}
10 </td>
11 <td class="connectors-table__column">
2610da71
JB
12 <ToggleButton
13 :id="`${hashId}-start-transaction`"
14 :shared="true"
15 :on="
16 () => {
17 $router.push({
18 name: 'start-transaction',
19 params: { hashId, chargingStationId, connectorId }
20 })
21 }
22 "
23 :off="
24 () => {
25 $router.push({ name: 'charging-stations' })
26 }
c317ae3e 27 "
c317ae3e 28 >
1eb5f592 29 Start Transaction
2610da71 30 </ToggleButton>
9dc8b66f
JB
31 <Button @click="stopTransaction()">Stop Transaction</Button>
32 <Button @click="startAutomaticTransactionGenerator()">Start ATG</Button>
33 <Button @click="stopAutomaticTransactionGenerator()">Stop ATG</Button>
34 </td>
35 </tr>
32de5a57
LM
36</template>
37
38<script setup lang="ts">
a1cfaa16 39import { getCurrentInstance } from 'vue'
cea23fa0 40import { useToast } from 'vue-toast-notification'
9d76f5ec 41import Button from '@/components/buttons/Button.vue'
9dc8b66f 42import type { ConnectorStatus, Status } from '@/types'
2610da71 43import ToggleButton from '@/components/buttons/ToggleButton.vue'
32de5a57
LM
44
45const props = defineProps<{
66a7748d 46 hashId: string
c317ae3e 47 chargingStationId: string
66a7748d 48 connectorId: number
9dc8b66f
JB
49 connector: ConnectorStatus
50 atgStatus?: Status
66a7748d 51}>()
32de5a57 52
57c0ba05 53const uiClient = getCurrentInstance()?.appContext.config.globalProperties.$uiClient
9d76f5ec 54
cea23fa0
JB
55const $toast = useToast()
56
fa5d129a 57const stopTransaction = (): void => {
cea23fa0
JB
58 uiClient
59 .stopTransaction(props.hashId, props.connector.transactionId)
60 .then(() => {
61 $toast.success('Transaction successfully stopped')
62 })
63 .catch((error: Error) => {
64 $toast.error('Error at stopping transaction')
65 console.error('Error at stopping transaction:', error)
66 })
8fc2e5cc 67}
fa5d129a 68const startAutomaticTransactionGenerator = (): void => {
cea23fa0
JB
69 uiClient
70 .startAutomaticTransactionGenerator(props.hashId, props.connectorId)
71 .then(() => {
72 $toast.success('Automatic transaction generator successfully started')
73 })
74 .catch((error: Error) => {
75 $toast.error('Error at starting automatic transaction generator')
76 console.error('Error at starting automatic transaction generator:', error)
77 })
757b2ecf 78}
fa5d129a 79const stopAutomaticTransactionGenerator = (): void => {
cea23fa0
JB
80 uiClient
81 .stopAutomaticTransactionGenerator(props.hashId, props.connectorId)
82 .then(() => {
83 $toast.success('Automatic transaction generator successfully stopped')
84 })
85 .catch((error: Error) => {
86 $toast.error('Error at stopping automatic transaction generator')
87 console.error('Error at stopping automatic transaction generator:', error)
88 })
757b2ecf 89}
32de5a57 90</script>