Commit a9627295 authored by wenglk's avatar wenglk

地址转小写

parent bdbe3b53
<template>
<div class="charts" ref="charts"></div>
<div class="charts" ref="charts"></div>
</template>
<script lang="ts">
import * as echarts from 'echarts/core'
import { LineSeriesOption, LineChart } from 'echarts/charts'
import { TooltipComponent, GridComponent } from 'echarts/components'
import { CanvasRenderer } from 'echarts/renderers'
import { getAccountRecords } from '@/service/api'
import moment from 'moment'
type ECOption = echarts.ComposeOption<LineSeriesOption>
import * as echarts from "echarts/core";
import { LineSeriesOption, LineChart } from "echarts/charts";
import { TooltipComponent, GridComponent } from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
import { getAccountRecords } from "@/service/api";
import moment from "moment";
type ECOption = echarts.ComposeOption<LineSeriesOption>;
echarts.use([TooltipComponent, GridComponent, LineChart, CanvasRenderer])
echarts.use([TooltipComponent, GridComponent, LineChart, CanvasRenderer]);
import chartsMixin from '@/mixin/componentsMixin/charts'
import VueTypedMixins from 'vue-typed-mixins'
import { nFormatter } from '@/utils/common'
import chartsMixin from "@/mixin/componentsMixin/charts";
import VueTypedMixins from "vue-typed-mixins";
import { nFormatter } from "@/utils/common";
export default VueTypedMixins(chartsMixin).extend({
props: {
scale: String,
grid: Object,
},
data() {
return {
xData: [],
seriesData: [],
}
},
methods: {
generate() {
switch (this.scale) {
case 'D1':
return this.generateD1()
case 'W1':
return this.generateW1()
case 'M1':
return this.generateM1()
case 'M6':
return this.generateM6()
case 'Y1':
return this.generateY1()
}
props: {
scale: String,
grid: Object,
},
draw() {
const times = this.generate()
times &&
getAccountRecords(
this.$route.query.address as string,
times,
'ycc',
).then((ret) => {
if (ret.error == null) {
this.xData = ret.result
const myChart = echarts.init(this.$refs.charts as HTMLElement)
myChart.setOption({
tooltip: {
trigger: 'axis',
},
xAxis: {
type: 'category',
axisLabel: {
textStyle: {
color: '#7c88ad',
},
},
axisTick: {
show: false,
},
data: times
?.map((i) => {
return moment.unix(i).format('YYYY.MM.DD')
})
.reverse(),
},
yAxis: {
type: 'value',
axisLabel: {
formatter: (item: number) => {
return nFormatter(item)
},
textStyle: {
color: '#7c88ad',
},
},
},
series: [
{
data: this.xData
// eslint-disable-next-line @typescript-eslint/no-explicit-any
.map((i: any) => (i && i[0] && i[0].balance) || 0)
.map((i) => i / 1e8)
.reverse(),
type: 'line',
areaStyle: {
normal: {
// 颜色渐变函数 前四个参数分别表示四个位置依次为左、下、右、上
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#2545CB', // 0% 处的颜色
},
{
offset: 0.6,
color: '#9FAEE9', // 40% 处的颜色
},
{
offset: 1,
color: 'white', // 100% 处的颜色
},
]), //背景渐变色
lineStyle: {
// 系列级个性化折线样式
type: 'solid',
color: '#2545CB', //折线的颜色
},
},
},
smooth: true,
showSymbol: false,
itemStyle: {},
},
],
grid: this.grid,
} as ECOption)
}
})
data() {
return {
xData: [],
seriesData: [],
};
},
},
mounted() {
this.draw()
},
watch: {
'$route.query.address'() {
this.draw()
methods: {
generate() {
switch (this.scale) {
case "D1":
return this.generateD1();
case "W1":
return this.generateW1();
case "M1":
return this.generateM1();
case "M6":
return this.generateM6();
case "Y1":
return this.generateY1();
}
},
draw() {
const times = this.generate();
times &&
getAccountRecords(
(this.$route.query.address as string).toLowerCase(),
times,
"ycc"
).then((ret) => {
if (ret.error == null) {
this.xData = ret.result;
const myChart = echarts.init(
this.$refs.charts as HTMLElement
);
myChart.setOption({
tooltip: {
trigger: "axis",
},
xAxis: {
type: "category",
axisLabel: {
textStyle: {
color: "#7c88ad",
},
},
axisTick: {
show: false,
},
data: times
?.map((i) => {
return moment
.unix(i)
.format("YYYY.MM.DD");
})
.reverse(),
},
yAxis: {
type: "value",
axisLabel: {
formatter: (item: number) => {
return nFormatter(item);
},
textStyle: {
color: "#7c88ad",
},
},
},
series: [
{
data: this.xData
// eslint-disable-next-line @typescript-eslint/no-explicit-any
.map(
(i: any) =>
(i && i[0] && i[0].balance) || 0
)
.map((i) => i / 1e8)
.reverse(),
type: "line",
areaStyle: {
normal: {
// 颜色渐变函数 前四个参数分别表示四个位置依次为左、下、右、上
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#2545CB", // 0% 处的颜色
},
{
offset: 0.6,
color: "#9FAEE9", // 40% 处的颜色
},
{
offset: 1,
color: "white", // 100% 处的颜色
},
]
), //背景渐变色
lineStyle: {
// 系列级个性化折线样式
type: "solid",
color: "#2545CB", //折线的颜色
},
},
},
smooth: true,
showSymbol: false,
itemStyle: {},
},
],
grid: this.grid,
} as ECOption);
}
});
},
},
scale() {
this.draw()
mounted() {
this.draw();
},
},
})
watch: {
"$route.query.address"() {
this.draw();
},
scale() {
this.draw();
},
},
});
</script>
<style lang="scss" scoped>
.charts {
width: 100%;
width: 100%;
}
</style>
import {
getAddressTxCountOrigin,
getAddrTxList_another,
getVoterAddr,
getVoterAddrCount,
yccApi,
getAddressTxCountOrigin,
getAddrTxList_another,
getVoterAddr,
getVoterAddrCount,
yccApi,
} from "@/service/api";
import { iExecAccount, iPack, iVote } from "@/types/address";
import { icustomized2Tx } from "@/types/trade";
......@@ -13,400 +13,407 @@ import { getTxByHashes } from "ycc-api/dist/cmjs/service/blockDetail";
import { getConsensusList } from "@/utils/consensus";
export default Vue.extend({
data() {
return {
value: "",
focusedTab: "txRecord",
total1: 0,
pages: {
currentPage: 1,
pageSize: 10,
total: 0,
},
pages3: {
currentPage: 1,
pageSize: 10,
total: 0,
},
pages2: {
currentPage: 1,
pageSize: 10,
total: 0,
},
selectedOption: "1",
loadingTxRecordTable: false,
txRecordList: [] as icustomized2Tx[],
voteList: [] as iVote[],
selectedExecer: "",
execAccount: [] as iExecAccount[],
packList: [] as iPack[],
loadingVote: false,
loadingPack: false,
selectedTxRecordFilterValue: "all",
};
},
watch: {
"$route.query.address"() {
this.getAllExecBalance();
this.getTxList();
this.getVoter();
},
selectedTxRecordFilterValue(newValue) {
this.pages.currentPage = 1;
this.getTxList();
data() {
return {
value: "",
focusedTab: "txRecord",
total1: 0,
pages: {
currentPage: 1,
pageSize: 10,
total: 0,
},
pages3: {
currentPage: 1,
pageSize: 10,
total: 0,
},
pages2: {
currentPage: 1,
pageSize: 10,
total: 0,
},
selectedOption: "1",
loadingTxRecordTable: false,
txRecordList: [] as icustomized2Tx[],
voteList: [] as iVote[],
selectedExecer: "",
execAccount: [] as iExecAccount[],
packList: [] as iPack[],
loadingVote: false,
loadingPack: false,
selectedTxRecordFilterValue: "all",
};
},
},
mounted() {
this.getAllExecBalance();
this.getTxList();
this.getVoter();
},
computed: {
txRecordFilterOptionList() {
return [
{
name: this.$t("lang.trade.title"),
value: "all",
},
{
name: this.$t("lang.trade.filterSucceedTx"),
value: "filterSucceedTx",
watch: {
"$route.query.address"() {
this.getAllExecBalance();
this.getTxList();
this.getVoter();
},
{
name: this.$t("lang.trade.filterFailedTx"),
value: "filterFailedTx",
},
{
name: this.$t("lang.trade.filterSentTx"),
value: "filterSentTx",
},
{
name: this.$t("lang.trade.filterReceivedTx"),
value: "filterReceivedTx",
},
];
},
tabList() {
return [
{
name: this.$t("lang.trade.txRecord"),
value: "txRecord",
selectedTxRecordFilterValue(newValue) {
this.pages.currentPage = 1;
this.getTxList();
},
{
name: this.$t("lang.trade.consensusRecord"),
value: "consensus",
}
];
},
optionList() {
return [
{ name: this.$t("lang.trade.txRecord"), value: "1" },
{ name: this.$t("lang.trade.consensusNode"), value: "2" },
];
mounted() {
this.getAllExecBalance();
this.getTxList();
this.getVoter();
},
execerOptionsList(): { name: string; value: string }[] {
return this.execAccount.map((i) => ({
name: i.execer,
value: i.execer,
}));
},
balance(): number {
return (
this.execAccount.find((i) => i.execer === this.selectedExecer) || {
account: {
balance: 0,
},
}
)?.account?.balance;
},
frozen(): number {
return (
this.execAccount.find((i) => i.execer === this.selectedExecer) || {
account: {
frozen: 0,
},
}
)?.account?.frozen;
},
txRecordReqParams(): any {
switch (this.selectedTxRecordFilterValue) {
case "all":
return [
{
match_one: [
{
key: "from",
value: this.$route.query.address as string,
},
{
key: "to",
value: this.$route.query.address as string,
},
],
match: [],
"not": [
{
"key": "action_name",
"value": "miner"
}
]
},
];
case "filterSucceedTx":
return [
{
match_one: [
computed: {
address() {
return (this.$route.query.address as string).toLowerCase();
},
txRecordFilterOptionList() {
return [
{
key: "from",
value: this.$route.query.address as string,
name: this.$t("lang.trade.title"),
value: "all",
},
{
key: "to",
value: this.$route.query.address as string,
name: this.$t("lang.trade.filterSucceedTx"),
value: "filterSucceedTx",
},
],
match: [
{
query: {
match_one: [
{
key: "is_para",
value: true,
},
{
key: "success",
value: true,
},
],
},
name: this.$t("lang.trade.filterFailedTx"),
value: "filterFailedTx",
},
],
"not": [
{
"key": "action_name",
"value": "miner"
}
]
},
];
case "filterFailedTx":
return [
{
match_one: [
{
key: "from",
value: this.$route.query.address as string,
name: this.$t("lang.trade.filterSentTx"),
value: "filterSentTx",
},
{
key: "to",
value: this.$route.query.address as string,
name: this.$t("lang.trade.filterReceivedTx"),
value: "filterReceivedTx",
},
],
match: [
];
},
tabList() {
return [
{
key: "success",
value: false,
name: this.$t("lang.trade.txRecord"),
value: "txRecord",
},
{
key: "is_para",
value: false,
name: this.$t("lang.trade.consensusRecord"),
value: "consensus",
},
],
"not": [
{
"key": "action_name",
"value": "miner"
}
]
},
];
case "filterSentTx":
return [
{
match_one: [
{
key: "from",
value: this.$route.query.address as string,
},
],
match: [],
"not": [
{
"key": "action_name",
"value": "miner"
];
},
optionList() {
return [
{ name: this.$t("lang.trade.txRecord"), value: "1" },
{ name: this.$t("lang.trade.consensusNode"), value: "2" },
];
},
execerOptionsList(): { name: string; value: string }[] {
return this.execAccount.map((i) => ({
name: i.execer,
value: i.execer,
}));
},
balance(): number {
return (
this.execAccount.find(
(i) => i.execer === this.selectedExecer
) || {
account: {
balance: 0,
},
}
]
},
];
case "filterReceivedTx":
return [
{
match_one: [
{
key: "to",
value: this.$route.query.address as string,
},
],
match: [],
"not": [
{
"key": "action_name",
"value": "miner"
)?.account?.balance;
},
frozen(): number {
return (
this.execAccount.find(
(i) => i.execer === this.selectedExecer
) || {
account: {
frozen: 0,
},
}
]
},
];
default:
return [];
}
},
},
methods: {
getAllExecBalance() {
Rpc.getAllExecBalance(this.$route.query.address as string).then((res) => {
if (res.error === null) {
this.execAccount = res.result.execAccount;
this.selectedExecer = res.result.execAccount[0].execer;
}
});
},
checkGroup(arr: icustomized2Tx[]) {
arr.map((current, index) => {
if (current.group_count > 1) {
current.tradeG = 1; //0-非交易组,1-交易组,3-交易组末条, 2-交易组首条
// current.tradeG = (current.tx.fee === 0 && arr[index-1].tx.fee!==0)? 2 : 1
if (current.fee !== 0) {
current.tradeG = 2;
} else {
if (index < arr.length) {
console.log(index);
current.tradeG = arr[index].next === "" ? 3 : 1;
} else {
current.tradeG = 3;
}
}
} else {
current.tradeG = 0;
}
});
return arr;
},
getTxList() {
this.loadingTxRecordTable = true;
getAddressTxCountOrigin(this.txRecordReqParams).then((res) => {
if (res.error === null) {
this.total1 = res.result;
this.pages.total = res.result;
// this.pages.total = res.result > 10000 ? 10000 : res.result;
getAddrTxList_another(
this.pages.currentPage,
this.pages.pageSize,
this.txRecordReqParams[0]
).then((res) => {
if (res.error === null) {
this.txRecordList = this.checkGroup(res.result);
this.loadingTxRecordTable = false;
)?.account?.frozen;
},
txRecordReqParams(): any {
switch (this.selectedTxRecordFilterValue) {
case "all":
return [
{
match_one: [
{
key: "from",
value: this.address as string,
},
{
key: "to",
value: this.address as string,
},
],
match: [],
not: [
{
key: "action_name",
value: "miner",
},
],
},
];
case "filterSucceedTx":
return [
{
match_one: [
{
key: "from",
value: this.address as string,
},
{
key: "to",
value: this.address as string,
},
],
match: [
{
query: {
match_one: [
{
key: "is_para",
value: true,
},
{
key: "success",
value: true,
},
],
},
},
],
not: [
{
key: "action_name",
value: "miner",
},
],
},
];
case "filterFailedTx":
return [
{
match_one: [
{
key: "from",
value: this.address as string,
},
{
key: "to",
value: this.address as string,
},
],
match: [
{
key: "success",
value: false,
},
{
key: "is_para",
value: false,
},
],
not: [
{
key: "action_name",
value: "miner",
},
],
},
];
case "filterSentTx":
return [
{
match_one: [
{
key: "from",
value: this.address as string,
},
],
match: [],
not: [
{
key: "action_name",
value: "miner",
},
],
},
];
case "filterReceivedTx":
return [
{
match_one: [
{
key: "to",
value: this.address as string,
},
],
match: [],
not: [
{
key: "action_name",
value: "miner",
},
],
},
];
default:
return [];
}
});
}
});
},
setValue(v: string) {
this.value = v;
},
sizeChange2(size: number) {
this.pages2.pageSize = size;
this.pageChange2(1);
},
},
pageChange2(page: number) {
this.pages2.currentPage = page;
this.loadingVote = true
methods: {
getAllExecBalance() {
Rpc.getAllExecBalance(this.address as string).then((res) => {
if (res.error === null) {
this.execAccount = res.result.execAccount;
this.selectedExecer = res.result.execAccount[0].execer;
}
});
},
checkGroup(arr: icustomized2Tx[]) {
arr.map((current, index) => {
if (current.group_count > 1) {
current.tradeG = 1; //0-非交易组,1-交易组,3-交易组末条, 2-交易组首条
// current.tradeG = (current.tx.fee === 0 && arr[index-1].tx.fee!==0)? 2 : 1
if (current.fee !== 0) {
current.tradeG = 2;
} else {
if (index < arr.length) {
console.log(index);
current.tradeG = arr[index].next === "" ? 3 : 1;
} else {
current.tradeG = 3;
}
}
} else {
current.tradeG = 0;
}
});
return arr;
},
getTxList() {
this.loadingTxRecordTable = true;
getAddressTxCountOrigin(this.txRecordReqParams).then((res) => {
if (res.error === null) {
this.total1 = res.result;
this.pages.total = res.result;
// this.pages.total = res.result > 10000 ? 10000 : res.result;
getAddrTxList_another(
this.pages.currentPage,
this.pages.pageSize,
this.txRecordReqParams[0]
).then((res) => {
if (res.error === null) {
this.txRecordList = this.checkGroup(res.result);
this.loadingTxRecordTable = false;
}
});
}
});
},
setValue(v: string) {
this.value = v;
},
sizeChange2(size: number) {
this.pages2.pageSize = size;
this.pageChange2(1);
},
pageChange2(page: number) {
this.pages2.currentPage = page;
this.loadingVote = true;
getVoterAddr(
this.$route.query.address as string,
this.pages2.currentPage,
this.pages2.pageSize
).then((res) => {
if (res.error === null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let obj = {} as any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
res.result.forEach((i: any) => {
i.voter_addr.forEach((item: string) => {
// i.voter_detail[item]++
if (!obj[item]) obj[item] = 1
else obj[item]++
})
i.voter_detail = obj
obj = {}
})
this.voteList = res.result
this.loadingVote = false
// const txHashes = res.result.map((i: any) => i.hash);
// this.setVoteReward(txHashes);
}
});
},
sizeChange(size: number) {
this.pages.pageSize = size;
this.pageChange(1);
},
pageChange(page: number) {
this.pages.currentPage = page;
this.loadingTxRecordTable = true;
getAddrTxList_another(
this.pages.currentPage,
this.pages.pageSize,
this.txRecordReqParams[0]
).then((res) => {
if (res.error === null) {
this.txRecordList = this.checkGroup(res.result);
this.loadingTxRecordTable = false;
}
});
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
groupCellName(val: any) {
switch (val.row.tradeG) {
case 0:
return "";
case 1:
return "tx-middle";
case 2:
return "tx-start";
case 3:
return "tx-end";
default:
return "";
}
},
getVoter() {
getVoterAddrCount(this.$route.query.address as string).then((res) => {
if (res.error === null) {
this.pages2.total = res.result;
getVoterAddr(
this.$route.query.address as string,
this.pages2.currentPage,
this.pages2.pageSize
).then((res) => {
if (res.error === null) {
// console.log(res, 'vote');
let obj = {} as any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
res.result.forEach((i: any) => {
i.voter_addr.forEach((item: string) => {
// i.voter_detail[item]++
if (!obj[item]) obj[item] = 1
else obj[item]++
})
i.voter_detail = obj
obj = {}
})
this.voteList = res.result
getVoterAddr(
this.address as string,
this.pages2.currentPage,
this.pages2.pageSize
).then((res) => {
if (res.error === null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let obj = {} as any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
res.result.forEach((i: any) => {
i.voter_addr.forEach((item: string) => {
// i.voter_detail[item]++
if (!obj[item]) obj[item] = 1;
else obj[item]++;
});
i.voter_detail = obj;
obj = {};
});
this.voteList = res.result;
this.loadingVote = false;
// const txHashes = res.result.map((i: any) => i.hash);
// this.setVoteReward(txHashes);
}
});
},
sizeChange(size: number) {
this.pages.pageSize = size;
this.pageChange(1);
},
pageChange(page: number) {
this.pages.currentPage = page;
this.loadingTxRecordTable = true;
getAddrTxList_another(
this.pages.currentPage,
this.pages.pageSize,
this.txRecordReqParams[0]
).then((res) => {
if (res.error === null) {
this.txRecordList = this.checkGroup(res.result);
this.loadingTxRecordTable = false;
}
});
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
groupCellName(val: any) {
switch (val.row.tradeG) {
case 0:
return "";
case 1:
return "tx-middle";
case 2:
return "tx-start";
case 3:
return "tx-end";
default:
return "";
}
});
}
});
},
getVoter() {
getVoterAddrCount(this.address as string).then((res) => {
if (res.error === null) {
this.pages2.total = res.result;
getVoterAddr(
this.address as string,
this.pages2.currentPage,
this.pages2.pageSize
).then((res) => {
if (res.error === null) {
// console.log(res, 'vote');
let obj = {} as any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
res.result.forEach((i: any) => {
i.voter_addr.forEach((item: string) => {
// i.voter_detail[item]++
if (!obj[item]) obj[item] = 1;
else obj[item]++;
});
i.voter_detail = obj;
obj = {};
});
this.voteList = res.result;
}
});
}
});
},
},
},
});
......@@ -3,92 +3,98 @@ import QRCode from "qrcode";
import { getAddressTxCount } from "@/service/api";
import Rpc from "@/utils/Rpc";
export default Vue.extend({
data() {
return {
txCount: 0,
receive: 0,
send: 0,
value: 0,
};
},
watch: {
"$route.query.address"() {
this.getAddrOverview();
this.init();
getAddressTxCount(this.$route.query.address as string).then((ret) => {
if (ret.error === null) {
this.txCount = ret.result;
}
});
data() {
return {
txCount: 0,
receive: 0,
send: 0,
value: 0,
};
},
},
mounted() {
this.getAddrOverview();
this.init();
getAddressTxCount(this.$route.query.address as string).then((ret) => {
if (ret.error === null) {
this.txCount = ret.result;
}
});
},
computed: {
tradeInTotalList(): { name: string; value: number }[] {
return [
// {
// name: this.$t("lang.address.totalReception") as string,
// value: this.receive,
// },
// {
// name: this.$t("lang.address.totalSent") as string,
// value: this.send,
// },
{
name: this.$t("lang.address.totalValue") as string,
value: this.value,
watch: {
"$route.query.address"() {
this.getAddrOverview();
this.init();
getAddressTxCount(
(this.$route.query.address as string).toLowerCase()
).then((ret) => {
if (ret.error === null) {
this.txCount = ret.result;
}
});
},
{
name: this.$t("lang.block.txCount") as string,
value: this.txCount,
},
mounted() {
this.getAddrOverview();
this.init();
getAddressTxCount(
(this.$route.query.address as string).toLowerCase()
).then((ret) => {
if (ret.error === null) {
this.txCount = ret.result;
}
});
},
computed: {
tradeInTotalList(): { name: string; value: number }[] {
return [
// {
// name: this.$t("lang.address.totalReception") as string,
// value: this.receive,
// },
// {
// name: this.$t("lang.address.totalSent") as string,
// value: this.send,
// },
{
name: this.$t("lang.address.totalValue") as string,
value: this.value,
},
{
name: this.$t("lang.block.txCount") as string,
value: this.txCount,
},
];
},
];
},
},
methods: {
getAddrOverview() {
Rpc.getAddrOverview(this.$route.query.address as string).then((res) => {
if (res.error === null) {
const balance = res.result.balance;
const receiver = res.result.reciver;
this.receive = receiver;
this.send = receiver - balance;
methods: {
getAddrOverview() {
Rpc.getAddrOverview(
(this.$route.query.address as string).toLowerCase()
).then((res) => {
if (res.error === null) {
const balance = res.result.balance;
const receiver = res.result.reciver;
this.receive = receiver;
this.send = receiver - balance;
fetch("/market")
.then((ret) => ret.json())
.then((ret) => {
if (ret.msg === "succeed") {
const data = ret.data.data.USDT.YCC;
this.value = data.last * balance;
}
fetch("/market")
.then((ret) => ret.json())
.then((ret) => {
if (ret.msg === "succeed") {
const data = ret.data.data.USDT.YCC;
this.value = data.last * balance;
}
});
}
});
}
});
},
init() {
QRCode.toCanvas(
document.getElementById("qrcode"),
this.$route.query.address as string,
{
color: {
dark: "#1F3470",
light: "#0000",
},
width: 130,
margin: 0,
},
function (error) {
if (error) console.error(error);
}
);
init() {
QRCode.toCanvas(
document.getElementById("qrcode"),
(this.$route.query.address as string).toLowerCase(),
{
color: {
dark: "#1F3470",
light: "#0000",
},
width: 130,
margin: 0,
},
function(error) {
if (error) console.error(error);
}
);
},
},
},
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment