@perspective-dev/viewer 4.5.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/perspective-viewer.js +20 -1
- package/dist/cdn/perspective-viewer.js.map +4 -4
- package/dist/css/botanical.css +1 -1
- package/dist/css/dracula.css +1 -1
- package/dist/css/gruvbox-dark.css +1 -1
- package/dist/css/gruvbox.css +1 -1
- package/dist/css/icons.css +1 -1
- package/dist/css/monokai.css +1 -1
- package/dist/css/phosphor.css +1 -1
- package/dist/css/pro-dark.css +1 -1
- package/dist/css/pro.css +1 -1
- package/dist/css/solarized-dark.css +1 -1
- package/dist/css/solarized.css +1 -1
- package/dist/css/themes.css +1 -1
- package/dist/css/vaporwave.css +1 -1
- package/dist/esm/extensions.d.ts +22 -3
- package/dist/esm/perspective-viewer.d.ts +9 -0
- package/dist/esm/perspective-viewer.inline.js +20 -1
- package/dist/esm/perspective-viewer.inline.js.map +4 -4
- package/dist/esm/perspective-viewer.js +20 -1
- package/dist/esm/perspective-viewer.js.map +4 -4
- package/dist/esm/plugin.d.ts +71 -5
- package/dist/esm/ts-rs/ClientOptions.d.ts +7 -0
- package/dist/esm/ts-rs/ExportMethod.d.ts +1 -0
- package/dist/esm/ts-rs/ExportOptions.d.ts +9 -0
- package/dist/esm/ts-rs/GetClientOptions.d.ts +8 -0
- package/dist/esm/ts-rs/GetTableOptions.d.ts +8 -0
- package/dist/esm/ts-rs/Layout.d.ts +11 -0
- package/dist/esm/ts-rs/Orientation.d.ts +4 -0
- package/dist/esm/ts-rs/PanelOptions.d.ts +7 -0
- package/dist/esm/ts-rs/PanelViewerConfig.d.ts +39 -0
- package/dist/esm/ts-rs/SplitLayout.d.ts +7 -0
- package/dist/esm/ts-rs/TabLayout.d.ts +10 -0
- package/dist/esm/ts-rs/ViewerConfig.d.ts +6 -2
- package/dist/esm/ts-rs/WorkspaceConfig.d.ts +40 -0
- package/dist/esm/ts-rs/WorkspaceConfigUpdate.d.ts +28 -0
- package/dist/wasm/perspective-viewer.d.ts +211 -77
- package/dist/wasm/perspective-viewer.js +528 -180
- package/dist/wasm/perspective-viewer.wasm +0 -0
- package/dist/wasm/perspective-viewer.wasm.d.ts +34 -26
- package/dist/wasm/snippets/perspective-viewer-daeef4ceb066e6c7/inline0.js +6 -0
- package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline3.js → perspective-viewer-daeef4ceb066e6c7/inline4.js} +5 -0
- package/package.json +3 -2
- package/src/css/_context_menu.css +14 -0
- package/src/css/column-settings-panel.css +1 -1
- package/src/css/containers/context-menu.css +101 -0
- package/src/css/panel-tab.css +193 -0
- package/src/css/plugin-selector.css +7 -10
- package/src/css/status-bar.css +75 -81
- package/src/css/viewer.css +180 -70
- package/src/rust/components/column_dropdown.rs +40 -30
- package/src/rust/components/column_selector/active_column.rs +7 -18
- package/src/rust/components/column_selector/aggregate_selector.rs +4 -7
- package/src/rust/components/column_selector/config_selector.rs +33 -81
- package/src/rust/components/column_selector/filter_column.rs +5 -15
- package/src/rust/components/column_selector/inactive_column.rs +3 -8
- package/src/rust/components/column_selector/sort_column.rs +3 -6
- package/src/rust/components/column_selector.rs +5 -11
- package/src/rust/components/containers/split_panel.rs +175 -62
- package/src/rust/components/context_menu.rs +130 -0
- package/src/rust/components/form/debug.rs +3 -0
- package/src/rust/components/global_filter_bar.rs +76 -0
- package/src/rust/components/main_panel/frame_theme.rs +186 -0
- package/src/rust/components/main_panel/msg.rs +62 -0
- package/src/rust/components/main_panel/presize.rs +220 -0
- package/src/rust/components/main_panel/reconcile.rs +224 -0
- package/src/rust/components/main_panel/render.rs +385 -0
- package/src/rust/components/main_panel/update.rs +184 -0
- package/src/rust/components/main_panel.rs +311 -71
- package/src/rust/components/mod.rs +4 -0
- package/src/rust/components/panel_menu.rs +486 -0
- package/src/rust/components/panel_tab.rs +505 -0
- package/src/rust/components/plugin_tab.rs +1 -1
- package/src/rust/components/settings_panel.rs +13 -5
- package/src/rust/components/status_bar.rs +110 -178
- package/src/rust/components/status_indicator.rs +6 -9
- package/src/rust/components/style/mod.rs +5 -0
- package/src/rust/components/style/style_provider.rs +2 -0
- package/src/rust/components/viewer/filters.rs +133 -0
- package/src/rust/components/viewer/msg.rs +180 -0
- package/src/rust/components/viewer/panels.rs +326 -0
- package/src/rust/components/viewer/render.rs +243 -0
- package/src/rust/components/viewer/settings.rs +402 -0
- package/src/rust/components/viewer/snapshots.rs +134 -0
- package/src/rust/components/viewer/wiring.rs +505 -0
- package/src/rust/components/viewer.rs +243 -756
- package/src/rust/config/export_method.rs +1 -1
- package/src/rust/config/mod.rs +4 -0
- package/src/rust/config/options.rs +71 -0
- package/src/rust/config/viewer_config.rs +24 -2
- package/src/rust/config/workspace_config.rs +92 -0
- package/src/rust/custom_elements/copy_dropdown.rs +3 -1
- package/src/rust/custom_elements/debug_plugin.rs +20 -1
- package/src/rust/custom_elements/export_dropdown.rs +3 -1
- package/src/rust/custom_elements/viewer.rs +1015 -286
- package/src/rust/custom_events.rs +212 -61
- package/src/rust/js/mod.rs +2 -0
- package/src/rust/js/plugin.rs +297 -10
- package/src/rust/js/regular_layout.rs +258 -0
- package/src/rust/lib.rs +20 -1
- package/src/rust/presentation.rs +66 -33
- package/src/rust/queries/get_viewer_config.rs +29 -11
- package/src/rust/queries/plugin_column_styles.rs +2 -2
- package/src/rust/renderer/activate.rs +41 -14
- package/src/rust/renderer/dispatch.rs +436 -0
- package/src/rust/renderer/plugin_config.rs +495 -0
- package/src/rust/renderer/registry.rs +18 -6
- package/src/rust/renderer/render_timer.rs +29 -10
- package/src/rust/renderer.rs +350 -837
- package/src/rust/session/column_defaults_update.rs +26 -8
- package/src/rust/session/view_subscription.rs +30 -15
- package/src/rust/session.rs +753 -264
- package/src/rust/tasks/apply_global_filters.rs +89 -0
- package/src/rust/tasks/auto_pause.rs +171 -0
- package/src/rust/tasks/copy_export.rs +29 -19
- package/src/rust/tasks/create_panel.rs +243 -0
- package/src/rust/tasks/dismiss_render_warning.rs +3 -1
- package/src/rust/tasks/edit_expression.rs +4 -4
- package/src/rust/tasks/eject.rs +64 -23
- package/src/rust/tasks/mod.rs +28 -4
- package/src/rust/tasks/pipeline.rs +411 -0
- package/src/rust/tasks/presize_panels.rs +324 -0
- package/src/rust/tasks/reset_all.rs +22 -12
- package/src/rust/tasks/resize_observer.rs +124 -87
- package/src/rust/tasks/restore_and_render.rs +80 -86
- package/src/rust/tasks/restore_panel.rs +145 -0
- package/src/rust/tasks/send_column_config.rs +5 -2
- package/src/rust/tasks/send_plugin_config.rs +5 -2
- package/src/rust/tasks/set_edit_mode.rs +59 -0
- package/src/rust/tasks/sync_update_panels.rs +152 -0
- package/src/rust/tasks/table_lifecycle.rs +158 -0
- package/src/rust/tasks/update_theme.rs +56 -12
- package/src/rust/utils/completion.rs +56 -0
- package/src/rust/utils/custom_element.rs +5 -0
- package/src/rust/utils/debounce.rs +130 -7
- package/src/rust/utils/mod.rs +6 -0
- package/src/rust/utils/pending_effects.rs +62 -0
- package/src/rust/utils/spawn.rs +33 -0
- package/src/rust/utils/weak_scope.rs +0 -10
- package/src/rust/workspace.rs +846 -0
- package/src/svg/active-indicator.svg +3 -0
- package/src/themes/botanical.css +5 -2
- package/src/themes/defaults.css +54 -2
- package/src/themes/dracula.css +6 -3
- package/src/themes/gruvbox-dark.css +5 -2
- package/src/themes/gruvbox.css +5 -2
- package/src/themes/icons.css +4 -2
- package/src/themes/monokai.css +5 -2
- package/src/themes/phosphor.css +5 -2
- package/src/themes/pro-dark.css +5 -2
- package/src/themes/pro.css +2 -1
- package/src/themes/solarized-dark.css +5 -2
- package/src/themes/solarized.css +5 -2
- package/src/themes/vaporwave.css +5 -2
- package/src/ts/bootstrap.ts +8 -7
- package/src/ts/extensions.ts +30 -2
- package/src/ts/perspective-viewer.ts +10 -0
- package/src/ts/plugin.ts +72 -5
- package/src/ts/ts-rs/ClientOptions.ts +7 -0
- package/src/ts/ts-rs/ExportMethod.ts +3 -0
- package/src/ts/ts-rs/ExportOptions.ts +8 -0
- package/src/ts/ts-rs/GetClientOptions.ts +7 -0
- package/src/ts/ts-rs/GetTableOptions.ts +7 -0
- package/src/ts/ts-rs/Layout.ts +9 -0
- package/src/ts/ts-rs/Orientation.ts +6 -0
- package/src/ts/ts-rs/PanelOptions.ts +7 -0
- package/src/ts/ts-rs/PanelViewerConfig.ts +15 -0
- package/src/ts/ts-rs/SplitLayout.ts +5 -0
- package/src/ts/ts-rs/TabLayout.ts +11 -0
- package/src/ts/ts-rs/ViewerConfig.ts +6 -2
- package/src/ts/ts-rs/WorkspaceConfig.ts +36 -0
- package/src/ts/ts-rs/WorkspaceConfigUpdate.ts +24 -0
- package/src/rust/tasks/intersection_observer.rs +0 -98
- package/src/rust/tasks/update_and_render.rs +0 -110
- /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline0.js → perspective-viewer-daeef4ceb066e6c7/inline1.js} +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline1.js → perspective-viewer-daeef4ceb066e6c7/inline2.js} +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline2.js → perspective-viewer-daeef4ceb066e6c7/inline3.js} +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline4.js → perspective-viewer-daeef4ceb066e6c7/inline5.js} +0 -0
|
@@ -14,13 +14,13 @@ use std::collections::HashSet;
|
|
|
14
14
|
use std::rc::Rc;
|
|
15
15
|
|
|
16
16
|
use perspective_client::config::*;
|
|
17
|
-
use perspective_js::utils::ApiFuture;
|
|
18
17
|
use yew::prelude::*;
|
|
19
18
|
|
|
20
19
|
use crate::components::containers::select::*;
|
|
21
20
|
use crate::renderer::*;
|
|
22
21
|
use crate::session::*;
|
|
23
|
-
use crate::
|
|
22
|
+
use crate::tasks::apply_and_render;
|
|
23
|
+
use crate::utils::{PtrEqRc, spawn_owned};
|
|
24
24
|
|
|
25
25
|
#[derive(Properties)]
|
|
26
26
|
pub struct AggregateSelectorProps {
|
|
@@ -143,11 +143,8 @@ impl AggregateSelector {
|
|
|
143
143
|
|
|
144
144
|
let session = ctx.props().session.clone();
|
|
145
145
|
let renderer = ctx.props().renderer.clone();
|
|
146
|
-
if
|
|
147
|
-
|
|
148
|
-
renderer.apply_pending_plugin()?;
|
|
149
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
150
|
-
});
|
|
146
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
147
|
+
spawn_owned("aggregate-selector", task);
|
|
151
148
|
}
|
|
152
149
|
}
|
|
153
150
|
|
|
@@ -14,7 +14,6 @@ use std::collections::HashSet;
|
|
|
14
14
|
use std::rc::Rc;
|
|
15
15
|
|
|
16
16
|
use perspective_client::config::{ViewConfig, *};
|
|
17
|
-
use perspective_js::utils::ApiFuture;
|
|
18
17
|
use yew::prelude::*;
|
|
19
18
|
|
|
20
19
|
use super::InPlaceColumn;
|
|
@@ -29,6 +28,7 @@ use crate::presentation::Presentation;
|
|
|
29
28
|
use crate::renderer::*;
|
|
30
29
|
use crate::session::drag_drop_update::*;
|
|
31
30
|
use crate::session::*;
|
|
31
|
+
use crate::tasks::apply_and_render;
|
|
32
32
|
use crate::utils::*;
|
|
33
33
|
|
|
34
34
|
#[derive(Clone, Properties)]
|
|
@@ -132,11 +132,8 @@ impl Component for ConfigSelector {
|
|
|
132
132
|
{
|
|
133
133
|
let session = ctx.props().session.clone();
|
|
134
134
|
let renderer = ctx.props().renderer.clone();
|
|
135
|
-
if
|
|
136
|
-
|
|
137
|
-
renderer.apply_pending_plugin()?;
|
|
138
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
139
|
-
});
|
|
135
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
136
|
+
spawn_owned("config-selector", task);
|
|
140
137
|
}
|
|
141
138
|
}
|
|
142
139
|
|
|
@@ -152,11 +149,8 @@ impl Component for ConfigSelector {
|
|
|
152
149
|
{
|
|
153
150
|
let session = ctx.props().session.clone();
|
|
154
151
|
let renderer = ctx.props().renderer.clone();
|
|
155
|
-
if
|
|
156
|
-
|
|
157
|
-
renderer.apply_pending_plugin()?;
|
|
158
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
159
|
-
});
|
|
152
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
153
|
+
spawn_owned("config-selector", task);
|
|
160
154
|
}
|
|
161
155
|
}
|
|
162
156
|
|
|
@@ -191,11 +185,8 @@ impl Component for ConfigSelector {
|
|
|
191
185
|
{
|
|
192
186
|
let session = ctx.props().session.clone();
|
|
193
187
|
let renderer = ctx.props().renderer.clone();
|
|
194
|
-
if
|
|
195
|
-
|
|
196
|
-
renderer.apply_pending_plugin()?;
|
|
197
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
198
|
-
});
|
|
188
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
189
|
+
spawn_owned("config-selector", task);
|
|
199
190
|
}
|
|
200
191
|
}
|
|
201
192
|
|
|
@@ -214,11 +205,8 @@ impl Component for ConfigSelector {
|
|
|
214
205
|
{
|
|
215
206
|
let session = ctx.props().session.clone();
|
|
216
207
|
let renderer = ctx.props().renderer.clone();
|
|
217
|
-
if
|
|
218
|
-
|
|
219
|
-
renderer.apply_pending_plugin()?;
|
|
220
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
221
|
-
});
|
|
208
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
209
|
+
spawn_owned("config-selector", task);
|
|
222
210
|
}
|
|
223
211
|
}
|
|
224
212
|
|
|
@@ -237,11 +225,8 @@ impl Component for ConfigSelector {
|
|
|
237
225
|
{
|
|
238
226
|
let session = ctx.props().session.clone();
|
|
239
227
|
let renderer = ctx.props().renderer.clone();
|
|
240
|
-
if
|
|
241
|
-
|
|
242
|
-
renderer.apply_pending_plugin()?;
|
|
243
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
244
|
-
});
|
|
228
|
+
if let Ok(task) = apply_and_render(&session, &renderer, config) {
|
|
229
|
+
spawn_owned("config-selector", task);
|
|
245
230
|
}
|
|
246
231
|
}
|
|
247
232
|
|
|
@@ -270,11 +255,8 @@ impl Component for ConfigSelector {
|
|
|
270
255
|
{
|
|
271
256
|
let session = ctx.props().session.clone();
|
|
272
257
|
let renderer = ctx.props().renderer.clone();
|
|
273
|
-
if
|
|
274
|
-
|
|
275
|
-
renderer.apply_pending_plugin()?;
|
|
276
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
277
|
-
});
|
|
258
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
259
|
+
spawn_owned("config-selector", task);
|
|
278
260
|
}
|
|
279
261
|
}
|
|
280
262
|
|
|
@@ -300,11 +282,8 @@ impl Component for ConfigSelector {
|
|
|
300
282
|
{
|
|
301
283
|
let session = ctx.props().session.clone();
|
|
302
284
|
let renderer = ctx.props().renderer.clone();
|
|
303
|
-
if
|
|
304
|
-
|
|
305
|
-
renderer.apply_pending_plugin()?;
|
|
306
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
307
|
-
});
|
|
285
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
286
|
+
spawn_owned("config-selector", task);
|
|
308
287
|
}
|
|
309
288
|
}
|
|
310
289
|
ctx.props().onselect.emit(());
|
|
@@ -345,11 +324,8 @@ impl Component for ConfigSelector {
|
|
|
345
324
|
{
|
|
346
325
|
let session = ctx.props().session.clone();
|
|
347
326
|
let renderer = ctx.props().renderer.clone();
|
|
348
|
-
if
|
|
349
|
-
|
|
350
|
-
renderer.apply_pending_plugin()?;
|
|
351
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
352
|
-
});
|
|
327
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
328
|
+
spawn_owned("config-selector", task);
|
|
353
329
|
}
|
|
354
330
|
}
|
|
355
331
|
|
|
@@ -366,11 +342,8 @@ impl Component for ConfigSelector {
|
|
|
366
342
|
{
|
|
367
343
|
let session = ctx.props().session.clone();
|
|
368
344
|
let renderer = ctx.props().renderer.clone();
|
|
369
|
-
if
|
|
370
|
-
|
|
371
|
-
renderer.apply_pending_plugin()?;
|
|
372
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
373
|
-
});
|
|
345
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
346
|
+
spawn_owned("config-selector", task);
|
|
374
347
|
}
|
|
375
348
|
}
|
|
376
349
|
|
|
@@ -388,11 +361,8 @@ impl Component for ConfigSelector {
|
|
|
388
361
|
{
|
|
389
362
|
let session = ctx.props().session.clone();
|
|
390
363
|
let renderer = ctx.props().renderer.clone();
|
|
391
|
-
if
|
|
392
|
-
|
|
393
|
-
renderer.apply_pending_plugin()?;
|
|
394
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
395
|
-
});
|
|
364
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
365
|
+
spawn_owned("config-selector", task);
|
|
396
366
|
}
|
|
397
367
|
}
|
|
398
368
|
|
|
@@ -416,11 +386,8 @@ impl Component for ConfigSelector {
|
|
|
416
386
|
{
|
|
417
387
|
let session = ctx.props().session.clone();
|
|
418
388
|
let renderer = ctx.props().renderer.clone();
|
|
419
|
-
if
|
|
420
|
-
|
|
421
|
-
renderer.apply_pending_plugin()?;
|
|
422
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
423
|
-
});
|
|
389
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
390
|
+
spawn_owned("config-selector", task);
|
|
424
391
|
}
|
|
425
392
|
}
|
|
426
393
|
|
|
@@ -438,11 +405,8 @@ impl Component for ConfigSelector {
|
|
|
438
405
|
{
|
|
439
406
|
let session = ctx.props().session.clone();
|
|
440
407
|
let renderer = ctx.props().renderer.clone();
|
|
441
|
-
if
|
|
442
|
-
|
|
443
|
-
renderer.apply_pending_plugin()?;
|
|
444
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
445
|
-
});
|
|
408
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
409
|
+
spawn_owned("config-selector", task);
|
|
446
410
|
}
|
|
447
411
|
}
|
|
448
412
|
|
|
@@ -462,11 +426,8 @@ impl Component for ConfigSelector {
|
|
|
462
426
|
{
|
|
463
427
|
let session = ctx.props().session.clone();
|
|
464
428
|
let renderer = ctx.props().renderer.clone();
|
|
465
|
-
if
|
|
466
|
-
|
|
467
|
-
renderer.apply_pending_plugin()?;
|
|
468
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
469
|
-
});
|
|
429
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
430
|
+
spawn_owned("config-selector", task);
|
|
470
431
|
}
|
|
471
432
|
}
|
|
472
433
|
|
|
@@ -486,11 +447,8 @@ impl Component for ConfigSelector {
|
|
|
486
447
|
{
|
|
487
448
|
let session = ctx.props().session.clone();
|
|
488
449
|
let renderer = ctx.props().renderer.clone();
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
renderer.apply_pending_plugin()?;
|
|
492
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
493
|
-
});
|
|
450
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
451
|
+
spawn_owned("config-selector", task);
|
|
494
452
|
}
|
|
495
453
|
}
|
|
496
454
|
|
|
@@ -518,11 +476,8 @@ impl Component for ConfigSelector {
|
|
|
518
476
|
{
|
|
519
477
|
let session = ctx.props().session.clone();
|
|
520
478
|
let renderer = ctx.props().renderer.clone();
|
|
521
|
-
if
|
|
522
|
-
|
|
523
|
-
renderer.apply_pending_plugin()?;
|
|
524
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
525
|
-
});
|
|
479
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
480
|
+
spawn_owned("config-selector", task);
|
|
526
481
|
}
|
|
527
482
|
}
|
|
528
483
|
|
|
@@ -544,11 +499,8 @@ impl Component for ConfigSelector {
|
|
|
544
499
|
{
|
|
545
500
|
let session = ctx.props().session.clone();
|
|
546
501
|
let renderer = ctx.props().renderer.clone();
|
|
547
|
-
if
|
|
548
|
-
|
|
549
|
-
renderer.apply_pending_plugin()?;
|
|
550
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
551
|
-
});
|
|
502
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
503
|
+
spawn_owned("config-selector", task);
|
|
552
504
|
}
|
|
553
505
|
}
|
|
554
506
|
|
|
@@ -15,7 +15,6 @@ use std::rc::Rc;
|
|
|
15
15
|
|
|
16
16
|
use chrono::{Datelike, NaiveDate, TimeZone, Utc};
|
|
17
17
|
use perspective_client::config::*;
|
|
18
|
-
use perspective_js::utils::ApiFuture;
|
|
19
18
|
use wasm_bindgen::JsCast;
|
|
20
19
|
use web_sys::*;
|
|
21
20
|
use yew::prelude::*;
|
|
@@ -27,6 +26,7 @@ use crate::components::type_icon::TypeIcon;
|
|
|
27
26
|
use crate::presentation::Presentation;
|
|
28
27
|
use crate::renderer::*;
|
|
29
28
|
use crate::session::*;
|
|
29
|
+
use crate::tasks::apply_and_render;
|
|
30
30
|
use crate::utils::*;
|
|
31
31
|
|
|
32
32
|
#[derive(Clone, Properties)]
|
|
@@ -448,13 +448,8 @@ impl FilterColumnProps {
|
|
|
448
448
|
..ViewConfigUpdate::default()
|
|
449
449
|
};
|
|
450
450
|
|
|
451
|
-
if self.session.
|
|
452
|
-
|
|
453
|
-
let renderer = self.renderer.clone();
|
|
454
|
-
ApiFuture::spawn(async move {
|
|
455
|
-
renderer.apply_pending_plugin()?;
|
|
456
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
457
|
-
});
|
|
451
|
+
if let Ok(task) = apply_and_render(&self.session, &self.renderer, update) {
|
|
452
|
+
spawn_owned("filter-column", task);
|
|
458
453
|
}
|
|
459
454
|
}
|
|
460
455
|
|
|
@@ -526,13 +521,8 @@ impl FilterColumnProps {
|
|
|
526
521
|
..ViewConfigUpdate::default()
|
|
527
522
|
};
|
|
528
523
|
|
|
529
|
-
if self.session.
|
|
530
|
-
|
|
531
|
-
let renderer = self.renderer.clone();
|
|
532
|
-
ApiFuture::spawn(async move {
|
|
533
|
-
renderer.apply_pending_plugin()?;
|
|
534
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
535
|
-
});
|
|
524
|
+
if let Ok(task) = apply_and_render(&self.session, &self.renderer, update) {
|
|
525
|
+
spawn_owned("filter-column", task);
|
|
536
526
|
}
|
|
537
527
|
}
|
|
538
528
|
}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
|
|
13
13
|
use itertools::Itertools;
|
|
14
14
|
use perspective_client::config::*;
|
|
15
|
-
use perspective_js::utils::ApiFuture;
|
|
16
15
|
use web_sys::*;
|
|
17
16
|
use yew::prelude::*;
|
|
18
17
|
|
|
@@ -22,6 +21,7 @@ use crate::config::ColumnSelectMode;
|
|
|
22
21
|
use crate::presentation::{ColumnLocator, Presentation};
|
|
23
22
|
use crate::renderer::*;
|
|
24
23
|
use crate::session::*;
|
|
24
|
+
use crate::tasks::apply_and_render;
|
|
25
25
|
use crate::utils::*;
|
|
26
26
|
|
|
27
27
|
#[derive(Clone, Properties)]
|
|
@@ -231,13 +231,8 @@ impl InactiveColumnProps {
|
|
|
231
231
|
..ViewConfigUpdate::default()
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
if self.session.
|
|
235
|
-
|
|
236
|
-
let renderer = self.renderer.clone();
|
|
237
|
-
ApiFuture::spawn(async move {
|
|
238
|
-
renderer.apply_pending_plugin()?;
|
|
239
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
240
|
-
});
|
|
234
|
+
if let Ok(task) = apply_and_render(&self.session, &self.renderer, config) {
|
|
235
|
+
spawn_owned("inactive-column", task);
|
|
241
236
|
}
|
|
242
237
|
}
|
|
243
238
|
}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
12
|
|
|
13
13
|
use perspective_client::config::*;
|
|
14
|
-
use perspective_js::utils::ApiFuture;
|
|
15
14
|
use web_sys::*;
|
|
16
15
|
use yew::prelude::*;
|
|
17
16
|
|
|
@@ -20,6 +19,7 @@ use crate::components::type_icon::TypeIcon;
|
|
|
20
19
|
use crate::presentation::Presentation;
|
|
21
20
|
use crate::renderer::*;
|
|
22
21
|
use crate::session::*;
|
|
22
|
+
use crate::tasks::apply_and_render;
|
|
23
23
|
use crate::utils::*;
|
|
24
24
|
|
|
25
25
|
#[derive(Properties)]
|
|
@@ -86,11 +86,8 @@ impl Component for SortColumn {
|
|
|
86
86
|
|
|
87
87
|
let session = ctx.props().session.clone();
|
|
88
88
|
let renderer = ctx.props().renderer.clone();
|
|
89
|
-
if
|
|
90
|
-
|
|
91
|
-
renderer.apply_pending_plugin()?;
|
|
92
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
93
|
-
});
|
|
89
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
90
|
+
spawn_owned("sort-column", task);
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
false
|
|
@@ -28,7 +28,6 @@ use std::rc::Rc;
|
|
|
28
28
|
pub use empty_column::*;
|
|
29
29
|
pub use invalid_column::*;
|
|
30
30
|
use perspective_client::config::ViewConfig;
|
|
31
|
-
use perspective_js::utils::ApiFuture;
|
|
32
31
|
pub use pivot_column::*;
|
|
33
32
|
use web_sys::*;
|
|
34
33
|
use yew::prelude::*;
|
|
@@ -46,6 +45,7 @@ use crate::queries::{ActiveColumnState, ActiveColumnStateData, ColumnsIteratorSe
|
|
|
46
45
|
use crate::renderer::*;
|
|
47
46
|
use crate::session::drag_drop_update::*;
|
|
48
47
|
use crate::session::*;
|
|
48
|
+
use crate::tasks::apply_and_render;
|
|
49
49
|
use crate::utils::*;
|
|
50
50
|
|
|
51
51
|
#[derive(Properties)]
|
|
@@ -218,11 +218,8 @@ impl Component for ColumnSelector {
|
|
|
218
218
|
|
|
219
219
|
let session = ctx.props().session.clone();
|
|
220
220
|
let renderer = ctx.props().renderer.clone();
|
|
221
|
-
if
|
|
222
|
-
|
|
223
|
-
renderer.apply_pending_plugin()?;
|
|
224
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
225
|
-
});
|
|
221
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
222
|
+
spawn_owned("column-selector", task);
|
|
226
223
|
}
|
|
227
224
|
}
|
|
228
225
|
|
|
@@ -246,11 +243,8 @@ impl Component for ColumnSelector {
|
|
|
246
243
|
|
|
247
244
|
let session = ctx.props().session.clone();
|
|
248
245
|
let renderer = ctx.props().renderer.clone();
|
|
249
|
-
if
|
|
250
|
-
|
|
251
|
-
renderer.apply_pending_plugin()?;
|
|
252
|
-
renderer.draw(session.validate().await?.create_view()).await
|
|
253
|
-
});
|
|
246
|
+
if let Ok(task) = apply_and_render(&session, &renderer, update) {
|
|
247
|
+
spawn_owned("column-selector", task);
|
|
254
248
|
}
|
|
255
249
|
|
|
256
250
|
true
|