Commit graph

231 commits

Author SHA1 Message Date
Henrik Giesel
c6ba8f779e Move Graph-specific html from GraphsPage to Graph.svelte 2021-03-22 01:42:21 +01:00
Henrik Giesel
cfaf0e587b Add WithGraphData 2021-03-22 01:40:51 +01:00
Henrik Giesel
aebb665164 Rename asyncRefresh to asyncReactive 2021-03-22 01:40:51 +01:00
Henrik Giesel
92658495ad Improve implementation of asyncRefresh 2021-03-22 01:40:51 +01:00
Henrik Giesel
b0116aa3a9 Add (probably non-working) asyncRefresh 2021-03-22 01:40:51 +01:00
Henrik Giesel
159f6dc4e1 Add Svelte async hook 2021-03-22 01:40:51 +01:00
Henrik Giesel
5b1eb98b86 Add comment where to find global styles 2021-03-21 16:04:38 +01:00
Henrik Giesel
794642b2f2 Move ticks.scss directly into Graph.svelte 2021-03-21 15:59:11 +01:00
Damien Elmes
7c76693618 merge in Henrik's TS/Svelte refactor with some changes
- The previous commits moved the majority of the remaining global css
into components; move the remaining @emotion/css references into
ticks.scss and the styling of the Graph.svelte. This is not as elegant
as the emotion solution, but builds a whole lot faster, and most of
our styling can be scoped to a component anyway.
- Leave the .html files in ts/ for now. AnkiMobile uses them, and
AnkiDroid likely will in the future too. In the long run we'll likely
move to loading the JS into an existing page instead of loading a
separate page, but at that point we can just exclude the .html file from
copy_files_into_group() without affecting other clients.

Closes #1074
2021-03-21 23:01:18 +10:00
Damien Elmes
13afaaa770 move some cumulative-overlay-specific styling out of shared css 2021-03-21 20:18:05 +10:00
Damien Elmes
ba4e5d834c add HoverColumns.svelte for hoverzone styling 2021-03-21 19:58:39 +10:00
Damien Elmes
cdf326d45d add CumulativeOverlay.svelte for area styling 2021-03-21 19:50:35 +10:00
Damien Elmes
d4f0661e16 add Tooltip.svelte so we can encapsulating styling 2021-03-21 19:35:38 +10:00
Damien Elmes
c02823b488 bundle all Svelte css into separate file
- svelte compilation outputs a separate .css file for each component
- compilation also adds an "import foo.css" to the top of each generated
.mjs file
- when the .mjs files are bundled into app.js, esbuild creates an app.css
as well
- graphs.scss was renamed to graphs_shared.scss and imported in the
top level GraphsPage. Henrik's style refactoring would be a better path
forward, but I needed to make this change for now, as the filenames were
conflicting.
2021-03-21 16:06:36 +10:00
Damien Elmes
460a071fe4 switch from rollup to esbuild
brings the 2+ second bundle on a module like the graphs down to 90ms
2021-03-21 16:06:36 +10:00
Damien Elmes
06b0b4d68b vendor Svelte rules
The separate repo made it difficult to update the rules, and made things
more complicated than they needed to be.
2021-03-20 15:04:19 +10:00
Damien Elmes
72885bc710 move to new rules_nodejs protobuf example to unblock upgrade
@hgiesel the tag editor will need to add the following to the rollup
deps:

        "//ts/lib:backend_proto",
        "//ts/lib:fluent_proto",
2021-03-20 10:24:32 +10:00
Henrik Giesel
49e408e64d Satisfy formatter 2021-02-22 14:44:31 +01:00
Henrik Giesel
5c332e20ab Load graphs.js from head
* Also move script into body, to be a valid HTML document
2021-02-22 14:17:56 +01:00
Henrik Giesel
042d9095ea Move tooltip creation into function 2021-02-22 14:10:35 +01:00
Damien Elmes
e7a0f22ebf ignore manually scheduled cards in hour graph 2021-02-10 09:36:51 +10:00
Damien Elmes
33e532166a Revert "sanitize deck description HTML with html-sanitize"
This reverts commit cd37a9ae83.
2021-02-06 13:25:40 +10:00
Damien Elmes
cd37a9ae83 sanitize deck description HTML with html-sanitize
Committing for reference; will roll back afterwards.

This adds approximately 150k to the bundled .js file in release mode.
html-sanitizer might be useful to replace our custom paste filtering
code in the future, but for now I'm not sure it's worth the extra
page load time over doing the filtering in Rust.
2021-02-06 13:25:34 +10:00
Damien Elmes
63ea689636 Restore "Merge pull request #1007 from hgiesel/sveltesass2""
This reverts commit 86b470071f and
points to a new rules_svelte commit.

It looks like we were getting away with not listing the dep on the
rules_svelte end - the failing build turned out to be because we need
to pass sass in to our local svelte_check invocation.
2021-02-06 08:39:36 +10:00
Damien Elmes
86b470071f Revert "Merge pull request #1007 from hgiesel/sveltesass2"
Roll back to investigate issues.

This reverts commit 58a58d94be, reversing
changes made to 31d06e8f39.
2021-02-06 08:20:10 +10:00
Henrik Giesel
9449dabf9a Use lang="scss" in CardCounts 2021-02-05 14:52:25 +01:00
Henrik Giesel
77c18c856d Update setFirstWeekday with new .on() type signature 2021-02-04 14:25:51 +01:00
Damien Elmes
67accf7829 avoid wrapping card count text on small screens 2021-02-03 21:08:07 +10:00
Damien Elmes
dce6682086 Merge pull request #963 from hgiesel/ease130
Coerce ease graph min to 130 if applicable
2021-01-31 09:22:01 +10:00
Henrik Giesel
9a8dbbc275 Coerce ease graph to 130 if applicable 2021-01-30 22:09:00 +01:00
Henrik Giesel
2ff9e29a15 Fix ease graph building wrong query omitting ease edge cases
E.g. search for "prop:ease>=2.5" AND "prop:ease<2.55" instead of
                "prop:ease>=2.5" AND "prop:ease<2.54"
2021-01-30 13:19:27 +01:00
Henrik Giesel
587f6dc96f Fix histogram-graph building invalid query 2021-01-30 02:46:26 +01:00
Henrik Giesel
0168736ad8 Fix graphs tooltip position 2021-01-30 02:35:48 +01:00
Henrik Giesel
993cca1902 Make histogram show bars again 2021-01-30 02:08:01 +01:00
Henrik Giesel
dc62e56aef Remove modular d3 imports for imports from d3 bundle 2021-01-30 01:13:47 +01:00
Henrik Giesel
0af6d559a8 Remove d3 libraries from BUILD.bazel 2021-01-30 00:04:44 +01:00
Damien Elmes
45ec14184a show actual error when graphData fails
The original reason for the catch-all message was users with bad
data such as decimal intervals, but those get automatically coerced
these days. The common case should now be invalid search strings, which
we can show verbatim.
2021-01-29 14:39:05 +10:00
Damien Elmes
4958fb30c9 Merge pull request #946 from hgiesel/dispatchtype
Correctly type createEventDispatch and dispatch
2021-01-27 20:27:08 +10:00
Damien Elmes
ad188b1ecf Merge pull request #947 from hgiesel/noclickonemptybins
No clicking on empty bins in the Histogram
2021-01-27 19:45:07 +10:00
Henrik Giesel
e30f62c2a5 Add FutureDueShowBacklog as preferences 2021-01-27 01:15:19 +01:00
Henrik Giesel
f88aad8d85 No clicking on empty bins in the Histogram 2021-01-26 13:48:36 +01:00
Henrik Giesel
e204ddc0d4 Type createEventDispatcher and dispatch 2021-01-26 12:47:17 +01:00
Henrik Giesel
45ff094392 Add bridgeCommand helper function 2021-01-26 01:25:54 +01:00
Henrik Giesel
cf7bc58163 Use browserLinksSupported preference 2021-01-25 19:12:32 +01:00
Henrik Giesel
6b0a26e46b Move dispatch logic from Histogram to individual graphs 2021-01-25 16:34:44 +01:00
Henrik Giesel
ad5f0e721f Make calendar only clickable, if counts > 0 2021-01-25 13:47:20 +01:00
Henrik Giesel
11901e0e57 Add search functionality to Calendar view 2021-01-25 13:47:18 +01:00
Henrik Giesel
a26ffd9876 Add search functionality for ease graph 2021-01-25 13:46:44 +01:00
Henrik Giesel
ee5ba4e8d2 Normalize the remaining queries 2021-01-25 13:46:44 +01:00
Henrik Giesel
3c5493d424 Fix up histogram code to correctly hide tooltip again 2021-01-25 13:46:44 +01:00
Henrik Giesel
a9ccfa62a4 Normalize intervals query 2021-01-25 13:46:44 +01:00
Henrik Giesel
b8dbed44c7 Add query functionality to FutureDue graph 2021-01-25 13:46:44 +01:00
Henrik Giesel
bdacc42af3 Remove onlyReview from intervals query 2021-01-25 13:46:44 +01:00
Henrik Giesel
f3eae60773 Add search functional on interval graph 2021-01-25 13:46:44 +01:00
Henrik Giesel
31203e6d35 Add search to added graph 2021-01-25 13:46:44 +01:00
Henrik Giesel
13325e050c Export bridgeCommandsSupported from graphs.rs for stats 2021-01-25 13:46:44 +01:00
Henrik Giesel
76691176f6 Add a working example of searching from the stats screen in the Card Counts 2021-01-25 13:46:42 +01:00
Henrik Giesel
cee2f396da Add search event listeners on graphs 2021-01-25 13:45:42 +01:00
Henrik Giesel
f8c590c914 Fix RangeBox RevlogRange defaulting to All instead of Year 2021-01-23 13:57:43 +01:00
Damien Elmes
a6a4c0032d Merge pull request #934 from hgiesel/graphprefs
Add GraphsPreferences API to graphs for setting persistent preferences
2021-01-23 21:24:41 +10:00
Damien Elmes
387be76c00 minor wording tweak: GraphsPreferences -> GraphPreferences 2021-01-23 20:47:45 +10:00
Damien Elmes
fe739f4460 fix graphs failing to load until preferences set
The protobuf object will be missing keys that have the default value,
so we need to fill the defaults in.
2021-01-23 20:40:43 +10:00
Henrik Giesel
4e9fff493f Use scaleSqrt for calendar review values 2021-01-22 22:39:29 +01:00
Henrik Giesel
a5f59515e2 Rename GraphsPreferencesOut to simply GraphsPreferences 2021-01-22 19:39:03 +01:00
Henrik Giesel
0098869925 Make code typecheck, fix issue with day labels in nightMode 2021-01-22 19:02:05 +01:00
Henrik Giesel
7149c468e5 Set calendar labels to emptyColour 2021-01-22 18:15:16 +01:00
Henrik Giesel
24dd14896a Make cardCountsSeparateInactive settable 2021-01-22 18:03:58 +01:00
Henrik Giesel
101e193add Make first day of week settable through UI 2021-01-22 17:51:15 +01:00
Henrik Giesel
d6ba9eb61a Uniformly rename firstWeekday to firstDayOfWeek 2021-01-22 16:53:33 +01:00
Henrik Giesel
1a75772673 Remve SeparateInactiveCheckbox and correctly use preferences values
* Expose issue with non-existing calendar value in GraphPreferences
2021-01-22 14:56:41 +01:00
Henrik Giesel
fe75480fea Successfully send post request to rust 2021-01-22 14:37:24 +01:00
Henrik Giesel
846dd396a6 Add non-functioning logic for settings graphs preferences 2021-01-22 13:14:35 +01:00
Henrik Giesel
15bd2e74f8 Hook up cardCountsSeparateInactive to PreferenceStore 2021-01-22 13:14:35 +01:00
Henrik Giesel
5ee3e0d0d7 Add PreferenceStore with gettable/settable preferences
* setting is not yet hooked up to rslib
2021-01-22 13:14:33 +01:00
Henrik Giesel
1516f5c37e Add GraphsPreferences endpoint to backend 2021-01-22 13:13:48 +01:00
Henrik Giesel
e8169c5b54 Add first GraphPreferences which are not hooked to backend yet 2021-01-22 13:13:48 +01:00
Henrik Giesel
e509b768ff Get weekday labels via Date.prototype.toLocaleString 2021-01-21 19:38:56 +01:00
Henrik Giesel
c9544dd83d Revert "Make weekday labels localizable"
This reverts commit 483b0e4698.
2021-01-21 18:56:56 +01:00
Henrik Giesel
c1cb227c8e Support languages with day labels larger than one character 2021-01-20 22:07:02 +01:00
Henrik Giesel
483b0e4698 Make weekday labels localizable 2021-01-20 21:49:01 +01:00
Henrik Giesel
a9da524383 Add labels to calendar days 2021-01-20 21:17:36 +01:00
Damien Elmes
6045f07acb Merge pull request #931 from hgiesel/reviewsgraph
Retouch the reviews graph a little bit
2021-01-20 09:32:42 +10:00
Henrik Giesel
4726579102 Turn Running total box transparent 2021-01-19 12:50:02 +01:00
Henrik Giesel
9d551b20cc Change colors of Reviews graph 2021-01-19 12:22:13 +01:00
Henrik Giesel
9246698d4e Satisfy formatter 2021-01-19 00:17:30 +01:00
Henrik Giesel
705c437ffd Use firstWeekday config in graphs data 2021-01-18 23:23:55 +01:00
Henrik Giesel
cef590e878 Include review and relearn cards for ease graph 2021-01-08 17:57:47 +01:00
Henrik Giesel
4e9d54940e Add return values to increment and adjustTicks 2021-01-08 12:29:22 +01:00
Henrik Giesel
3f5d645987 Add es2019.array to TypeScript libs, so we can use .flatten and .flatMap 2021-01-08 12:23:21 +01:00
Henrik Giesel
3aa63d871c Fix cutting off of Review Interval bins 2021-01-08 12:11:53 +01:00
Henrik Giesel
c743d956d7 Omit zero interval, and don't nice the values
* to keep promise of radio buttons:
  * 1 month should mean 30/31 days
2021-01-08 10:07:42 +01:00
Damien Elmes
4b9e5f425b Merge pull request #904 from hgiesel/propdue
Streamlining `is:due`, `prop:due`, and the FutureDue graph
2021-01-08 16:34:53 +10:00
Henrik Giesel
512248cba1 Include many more cards in the Review Intervals graph 2021-01-07 22:35:34 +01:00
Henrik Giesel
56c8773beb Fix formatting graphs ts 2021-01-07 19:36:08 +01:00
Henrik Giesel
3fa5f20344 Fix one-off error for Histograms:
examples:
* x0 = -66 and x1 = -64 should yield 65-66 days ago instead of 64-65 days ago
* x0 = -2 and x1 = 0 should yield 1-2 days ago instead of 0-1 days ago
2021-01-07 17:14:31 +01:00
Henrik Giesel
629035a347 Display backlog learn cards correctly in FutureDue graph
* now they are shown as due in the past
* before that they were always displayed as due today
2021-01-07 16:13:59 +01:00
Henrik Giesel
e8138136f9 Default CardCounts to off 2021-01-06 11:53:58 +01:00
Henrik Giesel
0a25d3bb82 Switch relearning cards to schemeReds 2021-01-05 19:37:14 +01:00
Henrik Giesel
04cc12b248 Add label for SeparateInactiveCheckbox in ftl file 2021-01-05 19:13:57 +01:00
Henrik Giesel
213f74651f Satisfy formatter 2021-01-05 17:22:27 +01:00
Henrik Giesel
1743f54762 Make pie graphs display correctly when switching between categories 2021-01-05 16:47:47 +01:00
Henrik Giesel
645ffe53d0 Replace CountMethodRadios with SeparateInactiveCheckbox method
* cards will still be mostly counted by ctype rather than queue
* if the user wants to include inactive cards buried and suspended will
  be first filtered out, before the rest is counted by ctype
2021-01-05 16:13:06 +01:00
Henrik Giesel
b55e3d8792 Satisfy formatter 2021-01-04 15:36:15 +01:00
Henrik Giesel
d82f81f42b Refresh colours on Card Count Pies 2021-01-04 15:14:50 +01:00
Henrik Giesel
45fe3794ec Add gatherByQueue and gatherByCtype methods 2021-01-04 14:04:51 +01:00
Henrik Giesel
66ea08411c Add CountMethodRadios and CardCountMethod enum 2021-01-04 12:21:30 +01:00
Damien Elmes
6cac9c4a5b remove empty es6 group; reference original ts_library instead 2021-01-02 21:18:10 +10:00
Damien Elmes
f42e62aca6 controller should be marked nullable
While 'SvelteComponent | null' seems to make it into the .tsx file
created by svelte2tsx, the subsequent tsc call seems to discard the
'| null' part when creating the .d.ts file. Hack around it with a cast
for now; this may be fixed if we move to ts_project in the future.
2020-12-29 15:21:46 +10:00
Damien Elmes
8388b1d838 use local strategy for Svelte on CI
Allows some type errors to surface that were only being picked up
on Windows.

The root cause seems to be TypeScript picking up other .d.ts/.tsx
files in the same folder, which it can only do on Windows due to the
lack of sandboxing. On other platforms the other files can't be found,
and tsc changes the types into 'any'.

I experimented with modifying rules_svelte to build all .tsx files up
front and convert them to .d.ts in bulk, but ran into further issues
with conflicting types, as the typings in svelte2tsx seem to conflict
with Svelte's built-in types, and passing the dependencies in explicitly
causes them to be checked even though --skipLibCheck is passed in to
TypeScript.

Forcing sandboxing off is an ugly hack, and our best approach moving
forward may be to switch to ts_project for the Svelte generation -
it does appear that rules_nodejs favours it over ts_library anyway.
2020-12-29 14:50:33 +10:00
Damien Elmes
34884a2e8f Merge pull request #864 from hgiesel/graphs
Decouple GraphsPage from individual graphs and RangeBox
2020-12-29 10:14:04 +10:00
Henrik Giesel
71149656fc Fix typo 2020-12-27 02:04:45 +01:00
Henrik Giesel
20c2d55059 Fix formatting 2020-12-26 18:24:24 +01:00
Henrik Giesel
0afed11159 Prevent stats screen from overscrolling 2020-12-26 15:29:45 +01:00
Henrik Giesel
d8f57cecd0 Add svelte lib as bazel dependency 2020-12-26 15:17:30 +01:00
Henrik Giesel
f9229be1ff Pass in RangeBox as an argument, decoupling it from GraphsPage 2020-12-26 14:40:55 +01:00
Henrik Giesel
4309b6f7a5 Fix displaying issue with active spinner 2020-12-26 00:16:54 +01:00
Henrik Giesel
1b4fd39d70 Make Year/All display correctly 2020-12-26 00:08:24 +01:00
Henrik Giesel
4f28750dff Move spinner back to RangeBox 2020-12-25 22:59:11 +01:00
Henrik Giesel
13acbe131c Put RangeBox into its own component 2020-12-25 22:29:42 +01:00
Henrik Giesel
3373cf7ad0 Make spinner's position sticky in relation to graphsContainer 2020-12-25 21:49:56 +01:00
Henrik Giesel
2362ba36d8 Put a transition:fade on the spinner 2020-12-25 20:11:46 +01:00
Henrik Giesel
73c17f9abd Remove .active class from .spin 2020-12-25 20:07:52 +01:00
Henrik Giesel
ee0bbd8fda Turn async function into svelte statement 2020-12-23 16:45:00 +01:00
Henrik Giesel
fa5e2407f3 Making days settable does not make sense, as it will be overwritten 2020-12-23 16:20:12 +01:00
Henrik Giesel
ef7f2ba2a6 Move infile to css to scss file 2020-12-22 22:39:22 +01:00
Henrik Giesel
0967308e53 Make showing of rangeBox based on parameter 2020-12-22 22:36:39 +01:00
Henrik Giesel
d5e9ce4b1d Bubble up days and search to caller 2020-12-22 22:25:47 +01:00
Henrik Giesel
9f8a9ad540 Pass in graphs as arguments into graphs() 2020-12-22 22:09:23 +01:00
Damien Elmes
a4af59fc4d format_fix -> format; rename svelte-check for consistency 2020-11-12 20:19:32 +10:00
Damien Elmes
4f8b19dcfb fix external consumption of ts rules, and simplify import path 2020-11-05 11:01:52 +10:00
Damien Elmes
ce3b08ac58 initial Bazel conversion
Running and testing should be working on the three platforms, but
there's still a fair bit that needs to be done:

- Wheel building + testing in a venv still needs to be implemented.
- Python requirements still need to be compiled with piptool and pinned;
need to compile on all platforms then merge
- Cargo deps in cargo/ and rslib/ need to be cleaned up, and ideally
unified into one place
- Currently using rustls to work around openssl compilation issues
on Linux, but this will break corporate proxies with custom SSL
authorities; need to conditionally use openssl or use
https://github.com/seanmonstar/reqwest/pull/1058
- Makefiles and docs still need cleaning up
- It may make sense to reparent ts/* to the top level, as we don't
nest the other modules under a specific language.
- rspy and pylib must always be updated in lock-step, so merging
rspy into pylib as a private module would simplify things.
- Merging desktop-ftl and mobile-ftl into the core ftl would make
managing and updating translations easier.
- Obsolete scripts need removing.
- And probably more.
2020-11-01 14:26:58 +10:00