From 3a74e90f4a6c47bbecac36c7dadd354e049b7167 Mon Sep 17 00:00:00 2001 From: Terry Truong Date: Wed, 29 Jun 2022 00:50:02 +1000 Subject: Resolve info-modal size-jump after getting info response Make App get the info response, and pass that into TileInfoModal. Attempting to solve this via transitions doesn't seem to work, as transitioning a height to 'auto' seems disallowed. --- src/components/TileInfoModal.vue | 127 ++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 68 deletions(-) (limited to 'src/components') diff --git a/src/components/TileInfoModal.vue b/src/components/TileInfoModal.vue index 82db5d4..581e4cd 100644 --- a/src/components/TileInfoModal.vue +++ b/src/components/TileInfoModal.vue @@ -12,45 +12,42 @@
-
Querying server
- + @@ -65,22 +62,38 @@ import {capitalizeWords} from '../util'; export default defineComponent({ props: { + // Node data to display nodeName: {type: String, required: true}, - tolMap: {type: Object as PropType, required: true}, + infoResponse: {type: Object as PropType, required: true}, // Options lytOpts: {type: Object as PropType, required: true}, uiOpts: {type: Object as PropType, required: true}, }, - data(){ - return { - // These are set using a server response - tolNode: null as null | TolNode, - nodes: [] as TolNode[], // The nodes to display info for - imgInfos: [] as (ImgInfo | null)[], - descInfos: [] as (DescInfo | null)[], - }; - }, computed: { + tolNode(): TolNode { + return this.infoResponse.nodeInfo.tolNode; + }, + nodes(): TolNode[] { + if (this.infoResponse.subNodesInfo.length == 0){ + return [this.tolNode]; + } else { + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.tolNode); + } + }, + imgInfos(): (ImgInfo | null)[] { + if (this.infoResponse.subNodesInfo.length == 0){ + return [this.infoResponse.nodeInfo.imgInfo]; + } else { + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.imgInfo); + } + }, + descInfos(): (DescInfo | null)[] { + if (this.infoResponse.subNodesInfo.length == 0){ + return [this.infoResponse.nodeInfo.descInfo]; + } else { + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.descInfo); + } + }, subNames(): [string, string] | null { const regex = /\[(.+) \+ (.+)\]/; let results = regex.exec(this.nodeName); @@ -156,28 +169,6 @@ export default defineComponent({ } }, }, - async created(){ - // Query server for tol-node info - let urlParams = 'type=info&name=' + encodeURIComponent(this.nodeName); - urlParams += this.uiOpts.useReducedTree ? '&rtree=true' : ''; - let responseObj: InfoResponse = await getServerResponse(urlParams); - if (responseObj == null){ - return; - } - // Set fields from response - this.tolNode = responseObj.nodeInfo.tolNode; - if (responseObj.subNodesInfo.length == 0){ - this.nodes = [this.tolNode] - this.imgInfos = [responseObj.nodeInfo.imgInfo]; - this.descInfos = [responseObj.nodeInfo.descInfo]; - } else { - for (let nodeInfo of responseObj.subNodesInfo){ - this.nodes.push(nodeInfo.tolNode); - this.imgInfos.push(nodeInfo.imgInfo); - this.descInfos.push(nodeInfo.descInfo); - } - } - }, components: {CloseIcon, }, emits: ['close', ], }); -- cgit v1.2.3