@@ -1,5 +1,6 @@
1<script lang="ts">
1<script lang="ts">
2+ import Router from 'svelte-spa-router';
2− import { link, push, replace, querystring } from 'svelte-spa-router'
3+ import { link, push, replace, location, querystring } from 'svelte-spa-router'
3 import pageName from '../stores/pageName';
4 import pageName from '../stores/pageName';
4 import { SearchAnalysis } from '../lib/id';
5 import { SearchAnalysis } from '../lib/id';
5 import { linkToShip } from '../lib/link';
6 import { linkToShip } from '../lib/link';
@@ -10,41 +11,107 @@
10 import HomeScreenTiles from '../components/HomeScreenTiles.svelte';
11 import HomeScreenTiles from '../components/HomeScreenTiles.svelte';
11 export let params: any = {};
12 export let params: any = {};
12 let analysis: SearchAnalysis = new SearchAnalysis();
13 let analysis: SearchAnalysis = new SearchAnalysis();
14+ let navigating = false;
14− $: querySearch = (new URLSearchParams($querystring)).get('search');
16+ let search: string = (new URLSearchParams($querystring)).get('search') || params.arg || '';
15− function getSearch() {
17+ let urlSearch = search;
16− return querySearch || params.search || params.patp || '';
18+ // let urlChanged;
19+ let urlChangedSinceAnalysisPatp = false;
21+ const potentialUrlSearch = (new URLSearchParams($querystring)).get('search') || params.arg || '';
22+ if (($location + $querystring).includes(potentialUrlSearch)) {
23+ urlSearch = potentialUrlSearch;
24+ // urlChanged = Date.now();
25+ urlChangedSinceAnalysisPatp = true;
18− $: urlSearch = querySearch || params.search || params.patp || '';
19− let search: string = getSearch();
20− $: urlChanged = (urlSearch || true) && Date.now();
21− $: analysisPatpChanged = (analysis.patp || true) && Date.now();
22− $: urlChangedSinceAnalysisPatp = (urlChanged - analysisPatpChanged) > 1000;
30+ // analysisPatpChanged = (analysis.patp || true) && Date.now();
31+ urlChangedSinceAnalysisPatp = (analysis.patp || true) && false;
33+ function nav(path, addToHistory = false) {
34+ (addToHistory ? push : replace)(path);
36+ function navHome(addToHistory = false) {
39+ nav('/', addToHistory);
41+ function navToShipView(addToHistory = false) {
42+ params.mode = 'ship';
43+ params.arg = analysis.patp;
44+ if (analysis.patp === search) {
45+ nav(linkToShip(analysis.patp), addToHistory);
47+ nav(linkToShip(analysis.patp, { search }), addToHistory);
50+ function navToSearch(addToHistory = false) {
52+ navHome(addToHistory);
53+ } else if (analysis.queryIsValid) {
54+ params.mode = 'search';
56+ nav(`/search/${search}`, addToHistory);
60+ function navToMode(mode, addToHistory = false) {
63+ navToShipView(addToHistory);
66+ navToSearch(addToHistory);
69+ navHome(addToHistory);
72+ // $: urlChangedSinceAnalysisPatp = (urlChanged - analysisPatpChanged) > 1000;
24 if (search !== urlSearch) {
74 if (search !== urlSearch) {
25 if (urlChangedSinceAnalysisPatp) {
75 if (urlChangedSinceAnalysisPatp) {
26 search = urlSearch;
76 search = urlSearch;
27 } else if (analysis.search === search) {
77 } else if (analysis.search === search) {
28 if (analysis.patpIsValid) {
79 if (analysis.patpIsValid) {
29− if (analysis.patp === search) {
80+ navToShipView(true);
30− push(linkToShip(analysis.patp));
32− push(linkToShip(analysis.patp, { search }));
35− const nav = params.patp !== undefined ? push : replace;
82+ navToSearch(params.mode === 'ship');
38− } else if (analysis.queryIsValid) {
39− nav(`/search/${search}`);
87+ $: urlSearch, analysis, doStuff();
89+ if (analysis.search === search) {
90+ let properMode = null;
91+ if (analysis.patpIsValid) {
93+ } else if (analysis.search.length > 0) {
94+ properMode = 'search';
96+ if (params.mode !== properMode) {
97+ navToMode(properMode, false);
47− $pageName = params.patp !== undefined ? params.patp : (search ? 'Search' : null);
103+ if (analysis.search === urlSearch) {
104+ switch (params.mode) {
106+ $pageName = params.arg;
109+ $pageName = 'Search';
@@ -52,13 +119,17 @@
53<div class="m-4 flex flex-col items-center space-y-8 2xs:m-8">
120<div class="m-4 flex flex-col items-center space-y-8 2xs:m-8">
54 <SearchBar bind:analysis bind:search />
121 <SearchBar bind:analysis bind:search />
122+ <!-- <p class="bg-white">navigating</p> -->
55 {#if analysis.patpIsValid}
123 {#if analysis.patpIsValid}
124+ <!-- {#if analysis.search === urlSearch} -->
56− <ShipView patp={analysis.patp} />
125+ <ShipView patp={analysis.patp} />
57− {:else if (analysis.queryIsValid)}
127+ {:else if (analysis.queryIsValid)}
58− <SearchResults query={analysis.query} search={analysis.search} />
128+ <SearchResults query={analysis.query} search={analysis.search} />
59− {:else if (analysis.search.length > 0)}
129+ {:else if (analysis.search.length > 0)}
60− <ValidationProblems problems={analysis.queryProblems} />
130+ <ValidationProblems problems={analysis.queryProblems} />
62− <HomeScreenTiles />
132+ <HomeScreenTiles />
63− {/if}
134+ <!-- {/if} -->