aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbackend/server.py22
-rw-r--r--src/components/TileInfoModal.vue31
2 files changed, 38 insertions, 15 deletions
diff --git a/backend/server.py b/backend/server.py
index a232c48..f15c95f 100755
--- a/backend/server.py
+++ b/backend/server.py
@@ -105,10 +105,22 @@ def lookupNodeInfo(name, useReducedTree):
temp = lookupNodes([name], useReducedTree)
nodeObj = temp[name] if name in temp else None
# Get node desc
- row = cur.execute("SELECT desc, redirected, wiki_id, from_dbp from descs WHERE descs.name = ?", (name,)).fetchone()
- descObj = None
- if row != None:
- descObj = {"text": row[0], "fromRedirect": row[1] == 1, "wikiId": row[2], "fromDbp": row[3] == 1}
+ descData = None
+ query = "SELECT desc, redirected, wiki_id, from_dbp from descs WHERE descs.name = ?"
+ match = re.fullmatch(r"\[(.+) \+ (.+)]", name)
+ if match == None:
+ row = cur.execute(query, (name,)).fetchone()
+ if row != None:
+ descData = {"text": row[0], "fromRedirect": row[1] == 1, "wikiId": row[2], "fromDbp": row[3] == 1}
+ else:
+ # Get descs for compound-node elements
+ descData = [None, None]
+ row = cur.execute(query, (match.group(1),)).fetchone()
+ if row != None:
+ descData[0] = {"text": row[0], "fromRedirect": row[1] == 1, "wikiId": row[2], "fromDbp": row[3] == 1}
+ row = cur.execute(query, (match.group(2),)).fetchone()
+ if row != None:
+ descData[1] = {"text": row[0], "fromRedirect": row[1] == 1, "wikiId": row[2], "fromDbp": row[3] == 1}
# Get img info
imgInfo = None
if nodeObj != None and nodeObj["imgName"] != None:
@@ -117,7 +129,7 @@ def lookupNodeInfo(name, useReducedTree):
row = cur.execute(imgInfoQuery, (eolId,)).fetchone()
imgInfo = {"eolId": row[0], "sourceUrl": row[1], "license": row[2], "copyrightOwner": row[3]}
#
- return {"descObj": descObj, "imgInfo": imgInfo, "nodeObj": nodeObj}
+ return {"descData": descData, "imgInfo": imgInfo, "nodeObj": nodeObj}
class DbServer(BaseHTTPRequestHandler):
def do_GET(self):
diff --git a/src/components/TileInfoModal.vue b/src/components/TileInfoModal.vue
index 0ffeb5c..4e39a4e 100644
--- a/src/components/TileInfoModal.vue
+++ b/src/components/TileInfoModal.vue
@@ -6,12 +6,15 @@ import type {TolMap} from '../tol';
import {TolNode} from '../tol';
import {capitalizeWords} from '../util';
+type DescData = {text: string, fromRedirect: boolean, wikiId: number, fromDbp: boolean};
+ // Represents a node description
+
// Displays information about a tree-of-life node
export default defineComponent({
data(){
return {
tolNode: null as null | TolNode,
- descObj: null as null | {text: string, fromRedirect: boolean, wikiId: number, fromDbp: boolean},
+ descData: null as null | DescData | [DescData, DescData],
imgInfo: null as null | {eolId: string, sourceUrl: string, license: string, copyrightOwner: string},
};
},
@@ -59,7 +62,7 @@ export default defineComponent({
.then(obj => {
if (obj != null){
this.tolNode = obj.nodeObj;
- this.descObj = obj.descObj;
+ this.descData = obj.descData;
this.imgInfo = obj.imgInfo;
}
});
@@ -93,21 +96,29 @@ export default defineComponent({
</ul>
</div>
</div>
- <div v-if="descObj != null">
+ <div v-if="descData == null">
+ (No description found)
+ </div>
+ <div v-else-if="!Array.isArray(descData)">
<div>
- Redirected: {{descObj.fromRedirect}} <br/>
- Short-description from {{descObj.fromDbp ? 'DBpedia' : 'Wikipedia'}} <br/>
- <a :href="'https://en.wikipedia.org/?curid=' + descObj.wikiId" class="underline">
+ Redirected: {{descData.fromRedirect}} <br/>
+ Short-description from {{descData.fromDbp ? 'DBpedia' : 'Wikipedia'}} <br/>
+ <a :href="'https://en.wikipedia.org/?curid=' + descData.wikiId" class="underline">
Wikipedia Link
</a>
</div>
<hr/>
- <div>
- {{descObj.text}}
- </div>
+ <div>{{descData.text}}</div>
</div>
<div v-else>
- (No description found)
+ <div>
+ <h2 class="font-bold">{{displayName.substring(1, displayName.indexOf(' + '))}}</h2>
+ <div>{{descData[0].text}}</div>
+ </div>
+ <div>
+ <h2 class="font-bold">{{displayName.substring(displayName.indexOf(' + ') + 3, displayName.length - 1)}}</h2>
+ <div>{{descData[1].text}}</div>
+ </div>
</div>
</div>