feat: contracts modal
This commit is contained in:
parent
5ae158db84
commit
aa10275ee0
@ -4,6 +4,7 @@ import { select } from '@/components/dynamic/index';
|
|||||||
import type { PaginatedProposals } from '@/types';
|
import type { PaginatedProposals } from '@/types';
|
||||||
import ProposalProcess from './ProposalProcess.vue';
|
import ProposalProcess from './ProposalProcess.vue';
|
||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
proposals: { type: Object as PropType<PaginatedProposals> },
|
proposals: { type: Object as PropType<PaginatedProposals> },
|
||||||
@ -25,7 +26,7 @@ const statusMap: Record<string, string> = {
|
|||||||
PROPOSAL_STATUS_REJECTED: 'REJECTED',
|
PROPOSAL_STATUS_REJECTED: 'REJECTED',
|
||||||
};
|
};
|
||||||
|
|
||||||
const proposalInfo = ref()
|
const proposalInfo = ref();
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="bg-white dark:bg-[#28334e] rounded text-sm">
|
<div class="bg-white dark:bg-[#28334e] rounded text-sm">
|
||||||
@ -181,9 +182,13 @@ const proposalInfo = ref()
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="checkbox" id="proposal-detail-modal" class="modal-toggle" />
|
<input type="checkbox" id="proposal-detail-modal" class="modal-toggle" />
|
||||||
<label for="proposal-detail-modal" class="modal sm:modal-middle">
|
<label for="proposal-detail-modal" class="modal sm:modal-middle">
|
||||||
<label class="modal-box relative" for="">
|
<label class="modal-box relative" for="">
|
||||||
<label for="proposal-detail-modal" class="btn btn-sm btn-circle absolute right-2 top-2">✕</label>
|
<label
|
||||||
|
for="proposal-detail-modal"
|
||||||
|
class="btn btn-sm btn-circle absolute right-2 top-2"
|
||||||
|
>✕</label
|
||||||
|
>
|
||||||
<h3 class="font-bold text-lg">Description</h3>
|
<h3 class="font-bold text-lg">Description</h3>
|
||||||
<p class="py-4">
|
<p class="py-4">
|
||||||
<Component
|
<Component
|
||||||
|
@ -29,17 +29,14 @@ const selected = ref('');
|
|||||||
function showInfo(address: string) {
|
function showInfo(address: string) {
|
||||||
wasmStore.wasmClient.getWasmContracts(address).then((x) => {
|
wasmStore.wasmClient.getWasmContracts(address).then((x) => {
|
||||||
info.value = x.contract_info;
|
info.value = x.contract_info;
|
||||||
// infoDialog.value = true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function showState(address: string) {
|
function showState(address: string) {
|
||||||
wasmStore.wasmClient.getWasmContractStates(address).then((x) => {
|
wasmStore.wasmClient.getWasmContractStates(address).then((x) => {
|
||||||
state.value = x;
|
state.value = x;
|
||||||
stateDialog.value = true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function showQuery(address: string) {
|
function showQuery(address: string) {
|
||||||
queryDialog.value = true;
|
|
||||||
selected.value = address;
|
selected.value = address;
|
||||||
query.value = '';
|
query.value = '';
|
||||||
result.value = '';
|
result.value = '';
|
||||||
@ -114,18 +111,20 @@ const result = ref('');
|
|||||||
>contract</label
|
>contract</label
|
||||||
>
|
>
|
||||||
|
|
||||||
<button
|
<label
|
||||||
class="btn btn-primary btn-sm text-xs mr-2"
|
class="btn btn-primary btn-sm text-xs mr-2"
|
||||||
|
for="modal-contract-states"
|
||||||
@click="showState(v)"
|
@click="showState(v)"
|
||||||
>
|
>
|
||||||
States
|
States
|
||||||
</button>
|
</label>
|
||||||
<button
|
<label
|
||||||
|
for="modal-contract-query"
|
||||||
class="btn btn-primary btn-sm text-xs"
|
class="btn btn-primary btn-sm text-xs"
|
||||||
@click="showQuery(v)"
|
@click="showQuery(v)"
|
||||||
>
|
>
|
||||||
Query
|
Query
|
||||||
</button>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -153,47 +152,68 @@ const result = ref('');
|
|||||||
</label>
|
</label>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<v-dialog v-model="stateDialog" width="auto">
|
<input type="checkbox" id="modal-contract-states" class="modal-toggle" />
|
||||||
<v-card>
|
<label for="modal-contract-states" class="modal cursor-pointer">
|
||||||
<VCardTitle>Contract States</VCardTitle>
|
<label class="modal-box relative p-2" for="">
|
||||||
<VList>
|
<div>
|
||||||
<VListItem v-for="v in state.models">
|
<div class="flex items-center justify-between px-3 pt-2">
|
||||||
<VListItemTitle>
|
<div class="text-lg">Contract States</div>
|
||||||
{{ format.hexToString(v.key) }}
|
<label
|
||||||
</VListItemTitle>
|
@click="infoDialog = false"
|
||||||
<VListItemSubtitle :title="format.base64ToString(v.value)">
|
for="modal-contract-detail"
|
||||||
{{ format.base64ToString(v.value) }}
|
class="btn btn-sm btn-circle"
|
||||||
</VListItemSubtitle>
|
>✕</label
|
||||||
</VListItem>
|
>
|
||||||
</VList>
|
</div>
|
||||||
<v-card-actions>
|
<div>
|
||||||
<v-btn color="primary" block @click="stateDialog = false"
|
<div v-for="(v, index) in state.models" :key="index" class="mb-2">
|
||||||
>Close Dialog</v-btn
|
<div class="text-base mb-1">
|
||||||
>
|
{{ format.hexToString(v.key) }}
|
||||||
</v-card-actions>
|
</div>
|
||||||
</v-card>
|
<div class="text-sm" :title="format.base64ToString(v.value)">
|
||||||
</v-dialog>
|
{{ format.base64ToString(v.value) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</label>
|
||||||
|
|
||||||
<v-dialog v-model="queryDialog" width="auto">
|
<input type="checkbox" id="modal-contract-query" class="modal-toggle" />
|
||||||
<v-card>
|
<label for="modal-contract-states" class="modal cursor-pointer">
|
||||||
<VCardTitle>Query Contract</VCardTitle>
|
<label class="modal-box relative p-2" for="">
|
||||||
<v-card-text>
|
<div>
|
||||||
<CustomRadios
|
<div class="flex items-center justify-between px-3 pt-2">
|
||||||
v-model:selected-radio="selectedRadio"
|
<div class="text-lg">Query Contract</div>
|
||||||
:radio-content="radioContent"
|
<label
|
||||||
:grid-column="{ sm: '6', cols: '12' }"
|
@click="infoDialog = false"
|
||||||
/>
|
for="modal-contract-query"
|
||||||
|
class="btn btn-sm btn-circle"
|
||||||
|
>✕</label
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<CustomRadios
|
||||||
|
v-model:selected-radio="selectedRadio"
|
||||||
|
:radio-content="radioContent"
|
||||||
|
:grid-column="{ sm: '6', cols: '12' }"
|
||||||
|
/>
|
||||||
|
|
||||||
<VTextarea v-model="query" label="Query String" class="my-2" />
|
<VTextarea v-model="query" label="Query String" class="my-2" />
|
||||||
<VTextarea v-model="result" label="Result" />
|
<VTextarea v-model="result" label="Result" />
|
||||||
</v-card-text>
|
</div>
|
||||||
<v-card-actions>
|
<div>
|
||||||
<v-btn color="primary" @click="queryDialog = false"
|
<button
|
||||||
>Close Dialog</v-btn
|
class="btn btn-success btn-sm px-4"
|
||||||
>
|
@click="queryContract()"
|
||||||
<v-btn color="success" @click="queryContract()">Query Contract</v-btn>
|
>
|
||||||
</v-card-actions>
|
Query Contract
|
||||||
</v-card>
|
</button>
|
||||||
</v-dialog>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user