diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-06-30 22:05:42 +1000 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-06-30 22:05:42 +1000 |
| commit | c591233a4085176854b110fbffeae12d8568fe54 (patch) | |
| tree | eacd33e3e9185957c6fe9e0f349bfd9f1173361e | |
| parent | c2b9a8b7a706cdca58dab7f4a980401e1c20a602 (diff) | |
Account for compound-node subname-denoted nodes that were trimmed
| -rwxr-xr-x | backend/cgi-bin/data.py | 13 | ||||
| -rw-r--r-- | src/components/TileInfoModal.vue | 17 | ||||
| -rw-r--r-- | src/lib.ts | 2 |
3 files changed, 17 insertions, 15 deletions
diff --git a/backend/cgi-bin/data.py b/backend/cgi-bin/data.py index b152c14..9b4ca40 100755 --- a/backend/cgi-bin/data.py +++ b/backend/cgi-bin/data.py @@ -76,9 +76,9 @@ class NodeInfo: self.imgInfo = imgInfo # null | ImgInfo class InfoResponse: " Sent as responses to 'info' requests " - def __init__(self, nodeInfo, subNodesInfo = None): + def __init__(self, nodeInfo, subNodesInfo): self.nodeInfo = nodeInfo # NodeInfo - self.subNodesInfo = subNodesInfo # [] | [NodeInfo, NodeInfo] + self.subNodesInfo = subNodesInfo # [] | [NodeInfo | null, NodeInfo | null] # For data lookup def lookupNodes(names, useReducedTree, dbCur): @@ -191,11 +191,10 @@ def lookupInfo(name, useReducedTree, dbCur): subNames = [match.group(1), match.group(2)] if match != None else [] if len(subNames) > 0: nameToSubNodes = lookupNodes(subNames, useReducedTree, dbCur) - if len(nameToSubNodes) < 2: - print(f"ERROR: Unable to find sub-names entries for {name}", file=sys.stderr) - return None + if len(nameToSubNodes) < 2: # Possible when a subname-denoted node has been trimmed away + subNames = [n if n in nameToSubNodes else None for n in subNames] nameToNodes.update(nameToSubNodes) - namesToLookup = [name] if len(subNames) == 0 else subNames + namesToLookup = [name] if len(subNames) == 0 else [n for n in subNames if n != None] # Get desc info nameToDescInfo = {} query = "SELECT name, desc, wiki_id, redirected, from_dbp FROM" \ @@ -219,7 +218,7 @@ def lookupInfo(name, useReducedTree, dbCur): nameToNodes[n], nameToDescInfo[n] if n in nameToDescInfo else None, nameToImgInfo[n] if n in nameToImgInfo else None - ) for n in [name] + subNames + ) if n != None else None for n in [name] + subNames ] return InfoResponse(nodeInfoObjs[0], nodeInfoObjs[1:]) diff --git a/src/components/TileInfoModal.vue b/src/components/TileInfoModal.vue index 129e861..6962916 100644 --- a/src/components/TileInfoModal.vue +++ b/src/components/TileInfoModal.vue @@ -17,7 +17,10 @@ <h1 v-if="nodes.length > 1" class="text-center font-bold"> {{getDisplayName(subNames![idx], nodes[idx])}} </h1> - <div class="flex gap-1"> + <div v-if="nodes[idx] == null" class="text-center"> + (This node was trimmed away) + </div> + <div v-else class="flex gap-1"> <div class="w-1/2"> <div v-if="imgInfos[idx] == null" :style="getImgStyles(nodes[idx])"/> <a v-else :href="imgInfos[idx]!.url" target="_blank"> @@ -86,25 +89,25 @@ export default defineComponent({ tolNode(): TolNode { return this.infoResponse.nodeInfo.tolNode; }, - nodes(): TolNode[] { + nodes(): (TolNode | null)[] { if (this.infoResponse.subNodesInfo.length == 0){ return [this.tolNode]; } else { - return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.tolNode); + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo != null ? nodeInfo.tolNode : null); } }, imgInfos(): (ImgInfo | null)[] { if (this.infoResponse.subNodesInfo.length == 0){ return [this.infoResponse.nodeInfo.imgInfo]; } else { - return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.imgInfo); + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo != null ? nodeInfo.imgInfo : null); } }, descInfos(): (DescInfo | null)[] { if (this.infoResponse.subNodesInfo.length == 0){ return [this.infoResponse.nodeInfo.descInfo]; } else { - return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo.descInfo); + return this.infoResponse.subNodesInfo.map(nodeInfo => nodeInfo != null ? nodeInfo.descInfo : null); } }, subNames(): [string, string] | null { @@ -129,9 +132,9 @@ export default defineComponent({ return `${capitalizeWords(tolNode.commonName)} (aka ${capitalizeWords(name)})`; } }, - getImgStyles(tolNode: TolNode): Record<string,string> { + getImgStyles(tolNode: TolNode | null): Record<string,string> { let imgName = null; - if (typeof(tolNode.imgName) === 'string'){ // Exclude string-array case + if (tolNode != null && typeof(tolNode.imgName) === 'string'){ // Exclude string-array case imgName = tolNode.imgName; } return { @@ -58,7 +58,7 @@ export type NodeInfo = { }; export type InfoResponse = { nodeInfo: NodeInfo, - subNodesInfo: [] | [NodeInfo, NodeInfo], + subNodesInfo: [] | [NodeInfo | null, NodeInfo | null], }; // Used by auto-mode and tutorial |
