diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/SearchModal.vue | 38 | ||||
| -rw-r--r-- | src/components/SettingsModal.vue | 10 | ||||
| -rw-r--r-- | src/components/TileInfoModal.vue | 18 |
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 |
