mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Create search and days writable in GraphsPage to allow browserSearch to work
This commit is contained in:
parent
9a864120b2
commit
0bbe38ebde
5 changed files with 25 additions and 44 deletions
|
@ -1,10 +0,0 @@
|
||||||
<script lang="typescript">
|
|
||||||
import { bridgeCommand } from "anki/bridgecommand";
|
|
||||||
|
|
||||||
export let search: Readable<string>;
|
|
||||||
export let query: string;
|
|
||||||
|
|
||||||
$: {
|
|
||||||
bridgeCommand(`browserSearch: ${$search} ${query}`);
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -2,10 +2,11 @@
|
||||||
import "../sass/core.css";
|
import "../sass/core.css";
|
||||||
|
|
||||||
import type { SvelteComponent } from "svelte/internal";
|
import type { SvelteComponent } from "svelte/internal";
|
||||||
|
import { writable } from "svelte/store";
|
||||||
import type { I18n } from "anki/i18n";
|
import type { I18n } from "anki/i18n";
|
||||||
|
import { bridgeCommand } from "anki/bridgecommand";
|
||||||
|
|
||||||
import WithGraphData from "./WithGraphData.svelte";
|
import WithGraphData from "./WithGraphData.svelte";
|
||||||
import BrowserSearch from "./BrowserSearch.svelte";
|
|
||||||
|
|
||||||
export let i18n: I18n;
|
export let i18n: I18n;
|
||||||
export let nightMode: boolean;
|
export let nightMode: boolean;
|
||||||
|
@ -15,11 +16,12 @@
|
||||||
export let initialDays: number;
|
export let initialDays: number;
|
||||||
export let controller: SvelteComponent | null;
|
export let controller: SvelteComponent | null;
|
||||||
|
|
||||||
let query: string;
|
const search = writable(initialSearch);
|
||||||
|
const days = writable(initialDays);
|
||||||
|
|
||||||
const activateBrowserSearch = (event: CustomEvent): void => {
|
function browserSearch(event: CustomEvent) {
|
||||||
query = event.detail.query;
|
bridgeCommand(`browserSearch: ${$search} ${event.detail.query}`);
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
@ -32,10 +34,8 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<WithGraphData
|
<WithGraphData
|
||||||
{initialSearch}
|
{search}
|
||||||
{initialDays}
|
{days}
|
||||||
let:search
|
|
||||||
let:days
|
|
||||||
let:loading
|
let:loading
|
||||||
let:sourceData
|
let:sourceData
|
||||||
let:preferences
|
let:preferences
|
||||||
|
@ -53,10 +53,8 @@
|
||||||
{revlogRange}
|
{revlogRange}
|
||||||
{i18n}
|
{i18n}
|
||||||
{nightMode}
|
{nightMode}
|
||||||
on:search={activateBrowserSearch} />
|
on:search={browserSearch} />
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<BrowserSearch {search} {query} />
|
|
||||||
</WithGraphData>
|
</WithGraphData>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
export let search: Writable<string>;
|
export let search: Writable<string>;
|
||||||
|
|
||||||
let revlogRange = daysToRevlogRange($days);
|
let revlogRange = daysToRevlogRange($days);
|
||||||
let searchRange = $search === "deck:current"
|
let searchRange =
|
||||||
|
$search === "deck:current"
|
||||||
? SearchRange.Deck
|
? SearchRange.Deck
|
||||||
: $search === ""
|
: $search === ""
|
||||||
? SearchRange.Collection
|
? SearchRange.Collection
|
||||||
|
|
|
@ -1,52 +1,40 @@
|
||||||
<script lang="typescript">
|
<script lang="typescript">
|
||||||
import { onMount } from "svelte";
|
|
||||||
import { writable } from "svelte/store";
|
|
||||||
import useAsync from "./async";
|
import useAsync from "./async";
|
||||||
import useAsyncReactive from "./asyncReactive";
|
import useAsyncReactive from "./asyncReactive";
|
||||||
|
|
||||||
import { getGraphData, RevlogRange, daysToRevlogRange } from "./graph-helpers";
|
import { getGraphData, RevlogRange, daysToRevlogRange } from "./graph-helpers";
|
||||||
import { getPreferences } from "./preferences";
|
import { getPreferences } from "./preferences";
|
||||||
|
|
||||||
export let initialSearch: string;
|
export let search: Writable<string>;
|
||||||
export let initialDays: number;
|
export let days: Writable<number>;
|
||||||
|
|
||||||
const search = writable(initialSearch);
|
|
||||||
const days = writable(initialDays);
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
loading: graphLoading,
|
loading: graphLoading,
|
||||||
error: graphError,
|
error: graphError,
|
||||||
value: graphValue,
|
value: graphValue,
|
||||||
} = useAsyncReactive(() => getGraphData($search, $days), [
|
} = useAsyncReactive(() => getGraphData($search, $days), [search, days]);
|
||||||
search,
|
|
||||||
days,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const preferencesPromise = getPreferences();
|
const preferencesPromise = getPreferences();
|
||||||
const {
|
const { loading: prefsLoading, error: prefsError, value: prefsValue } = useAsync(
|
||||||
loading: prefsLoading,
|
() => preferencesPromise
|
||||||
error: prefsError,
|
);
|
||||||
value: prefsValue,
|
|
||||||
} = useAsync(() => preferencesPromise);
|
|
||||||
|
|
||||||
$: revlogRange = daysToRevlogRange($days);
|
$: revlogRange = daysToRevlogRange($days);
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
if ($graphError) {
|
if ($graphError) {
|
||||||
alert($graphError)
|
alert($graphError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
if ($prefsError) {
|
if ($prefsError) {
|
||||||
alert($prefsError)
|
alert($prefsError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<slot
|
<slot
|
||||||
{search}
|
|
||||||
{days}
|
|
||||||
{revlogRange}
|
{revlogRange}
|
||||||
loading={$graphLoading || $prefsLoading}
|
loading={$graphLoading || $prefsLoading}
|
||||||
sourceData={$graphValue}
|
sourceData={$graphValue}
|
||||||
|
|
|
@ -11,7 +11,11 @@ function useAsyncReactive<T, E>(
|
||||||
asyncFunction: () => Promise<T>,
|
asyncFunction: () => Promise<T>,
|
||||||
dependencies: [Readable<unknown>, ...Readable<unknown>[]]
|
dependencies: [Readable<unknown>, ...Readable<unknown>[]]
|
||||||
): AsyncReativeData<T, E> {
|
): AsyncReativeData<T, E> {
|
||||||
const promise = derived(dependencies, (_, set) => set(asyncFunction()), asyncFunction());
|
const promise = derived(
|
||||||
|
dependencies,
|
||||||
|
(_, set) => set(asyncFunction()),
|
||||||
|
asyncFunction()
|
||||||
|
);
|
||||||
|
|
||||||
const value = derived(
|
const value = derived(
|
||||||
promise,
|
promise,
|
||||||
|
|
Loading…
Reference in a new issue