aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/SearchModal.vue38
-rw-r--r--src/components/SettingsModal.vue10
-rw-r--r--src/components/TileInfoModal.vue18
3 files changed, 24 insertions, 42 deletions
diff --git a/src/components/SearchModal.vue b/src/components/SearchModal.vue
index 7d86a76..86712ef 100644
--- a/src/components/SearchModal.vue
+++ b/src/components/SearchModal.vue
@@ -40,6 +40,7 @@ import LogInIcon from './icon/LogInIcon.vue';
import InfoIcon from './icon/InfoIcon.vue';
import {TolNode, TolMap, UiOptions, SearchSugg, SearchSuggResponse} from '../lib';
import {LayoutNode, LayoutOptions} from '../layout';
+import {getServerResponse} from '../util';
export default defineComponent({
props: {
@@ -51,7 +52,7 @@ export default defineComponent({
return {
// For search-suggestion requests
lastSuggReqTime: 0, // Set when a search-suggestions request is initiated
- pendingSuggReqUrl: '', // Used by a search-suggestion requester to use the latest user input
+ pendingSuggReqParams: '', // Used by a search-suggestion requester to use the latest user input
pendingDelayedSuggReq: 0, // Set via setTimeout() for a non-initial search-suggestions request
// Search-suggestion data
searchSuggs: [] as SearchSugg[],
@@ -102,21 +103,16 @@ export default defineComponent({
this.focusedSuggIdx = null;
return;
}
- // Get URL to use for querying search-suggestions
- let url = new URL(window.location.href);
- url.pathname = '/data/search';
- url.search = '?name=' + encodeURIComponent(input.value);
- url.search += this.uiOpts.useReducedTree ? '&tree=reduced' : '';
- url.search += '&limit=' + this.uiOpts.searchSuggLimit;
+ // Get URL params to use for querying search-suggestions
+ let urlParams = 'name=' + encodeURIComponent(input.value);
+ urlParams += '&limit=' + this.uiOpts.searchSuggLimit;
+ urlParams += this.uiOpts.useReducedTree ? '&tree=reduced' : '';
// Query server, delaying/skipping if a request was recently sent
- this.pendingSuggReqUrl = url.toString();
+ this.pendingSuggReqParams = urlParams;
let doReq = async () => {
- let responseObj: SearchSuggResponse;
- try {
- let response = await fetch(this.pendingSuggReqUrl);
- responseObj = await response.json();
- } catch (error){
- console.log('Error with getting search suggestions from server: ' + error)
+ let responseObj: SearchSuggResponse =
+ await getServerResponse('/data/search', this.pendingSuggReqParams);
+ if (responseObj == null){
return;
}
this.searchSuggs = responseObj.suggs;
@@ -175,16 +171,10 @@ export default defineComponent({
return;
}
// Ask server for nodes in parent-chain, updates tolMap, then emits search event
- let url = new URL(window.location.href);
- url.pathname = '/data/chain';
- url.search = '?name=' + encodeURIComponent(tolNodeName);
- url.search += (this.uiOpts.useReducedTree ? '&tree=reduced' : '');
- let responseObj: {[x: string]: TolNode};
- try {
- let response = await fetch(url.toString());
- responseObj = await response.json();
- } catch (error){
- console.log('Error with getting tolnode chain: ' + error);
+ let urlParams = 'name=' + encodeURIComponent(tolNodeName);
+ urlParams += this.uiOpts.useReducedTree ? '&tree=reduced' : '';
+ let responseObj: {[x: string]: TolNode} = await getServerResponse('/data/chain', urlParams);
+ if (responseObj == null){
return;
}
let keys = Object.getOwnPropertyNames(responseObj);
diff --git a/src/components/SettingsModal.vue b/src/components/SettingsModal.vue
index 11beb4c..46433f7 100644
--- a/src/components/SettingsModal.vue
+++ b/src/components/SettingsModal.vue
@@ -34,17 +34,17 @@
<label for="minTileSizeInput">Min Tile Size</label>
<input type="range" min="0" max="400" v-model.number="lytOpts.minTileSz"
@input="onSettingChg('minTileSz')" name="minTileSizeInput" ref="minTileSzInput"/>
- <div class="my-auto text-right">{{pxToMm(lytOpts.minTileSz)}} mm</div>
+ <div class="my-auto text-right">{{pxToDisplayStr(lytOpts.minTileSz)}}</div>
<!-- Row 2 -->
<label for="maxTileSizeInput">Max Tile Size</label>
<input type="range" min="0" max="400" v-model.number="lytOpts.maxTileSz"
@input="onSettingChg('maxTileSz')" name="maxTileSizeInput" ref="maxTileSzInput"/>
- <div class="my-auto text-right">{{pxToMm(lytOpts.maxTileSz)}} mm</div>
+ <div class="my-auto text-right">{{pxToDisplayStr(lytOpts.maxTileSz)}}</div>
<!-- Row 3 -->
<label for="tileSpacingInput">Tile Spacing</label>
<input type="range" min="0" max="20" v-model.number="lytOpts.tileSpacing"
@input="onSettingChg('tileSpacing')" name="tileSpacingInput"/>
- <div class="my-auto text-right">{{pxToMm(lytOpts.tileSpacing)}} mm</div>
+ <div class="my-auto text-right">{{pxToDisplayStr(lytOpts.tileSpacing)}}</div>
</div>
</div>
<div class="border rounded p-1">
@@ -133,8 +133,8 @@ export default defineComponent({
//
this.$emit('setting-chg', setting);
},
- pxToMm(px: number): number{
- return (px / 3.78).toFixed();
+ pxToDisplayStr(px: number): string {
+ return (px / 3.78).toFixed() + ' mm';
}
},
components: {SButton, CloseIcon, },
diff --git a/src/components/TileInfoModal.vue b/src/components/TileInfoModal.vue
index f8c4c4e..7d402bb 100644
--- a/src/components/TileInfoModal.vue
+++ b/src/components/TileInfoModal.vue
@@ -60,7 +60,7 @@ import {defineComponent, PropType} from 'vue';
import CloseIcon from './icon/CloseIcon.vue';
import {LayoutNode, LayoutOptions} from '../layout';
import {TolNode, TolMap, UiOptions, DescInfo, ImgInfo, NodeInfo, InfoResponse} from '../lib';
-import {capitalizeWords} from '../util';
+import {getServerResponse, capitalizeWords} from '../util';
export default defineComponent({
props: {
@@ -157,18 +157,10 @@ export default defineComponent({
},
async created(){
// Query server for tol-node info
- let url = new URL(window.location.href);
- url.pathname = '/data/info';
- url.search = '?name=' + encodeURIComponent(this.nodeName);
- if (this.uiOpts.useReducedTree){
- url.search += '&tree=reduced';
- }
- let responseObj: InfoResponse;
- try {
- let response = await fetch(url.toString());
- responseObj = await response.json();
- } catch (error){
- console.log("Error with retrieving data from server: " + error);
+ let urlParams = 'name=' + encodeURIComponent(this.nodeName);
+ urlParams += this.uiOpts.useReducedTree ? '&tree=reduced' : '';
+ let responseObj: InfoResponse = await getServerResponse('/data/info', urlParams);
+ if (responseObj == null){
return;
}
// Set fields from response