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