mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2026-11-01 20:19:39 +00:00
Migration to new Rust-based engine (#401)
* wasm first steps * parsing start * parsing continued * progress * progress * progress * progress * progress * progress * progress * progress * fixes * reorganize * change type * fix * progress * refactoring * progress * progress * progress * keep style info * progress * progress * remove (copy) in name * progress * merge methods into 1 * splice * progress * progress * progress * cleaning * progress * progress * progress * visibility * progress * progress * progress * progress * progress * fixes * progress * fix markers * fix * progress * progress * progress * progress * progress * progress * small fix * use engine info * fix popups * small fix * progress * progress * progress * clean tool * handle self closing elements * reduce data exchanges across boundary * copy on wasm side to avoid any data corruption * speed fix * routing * refactoring * reverse * reverse * crop * split * merge * progress * time tool * fix bounds for waypoints * reduce * fix reactivity * handle corrupt time data * export * progress * remove gpx js package * remove todo * update readme * cleaning * progress * fix link fields * remove unused fields * refactoring and tests * import and export of routes, ref #192 * per-chunk categories storage * cross-tab sync * outdated state * refactoring * reorder methods * refactoring * fix * improve flow * renaming * progress * progress * fix * progress * per file history * keep original flag * use history variant * fix * progress * file explorer * progress * fix * sticky folders * improved sticky folders * fix sortable * fix sortable * fix * fix tab size * no file delete on desktop * fix routing on other file * fix sorting * remember language * open links in browser * commit missing changes * avoid selecting on resize * clarify filename * explorer actions * fix folder styling * drop anywhere in folder * cleaning * fixes * remove focus-ring * full screen * small fix * consistent highlight color * improved preview * performance improvements * sparser data transfers * sparser data transfers * show popup once data is loaded * fix routing control size * fix * sparse desktop build * remove custom ign styles * use new endpoint for openhikingmap * strip native menu * reorder context menu items * route full support * route - track conversion * create route file action * route export, filter out anchors at high zoom level * clarify name handling * move hide & center to view * routes continued * update docs * fix power format, closes #378 * lint fixes * fix display of additional data with gaps, closes #361 * fix linting issues * fix import modules * fix multidrag * change base to resolve * fix type errors * fix layer typings * fix last type error * each keys * improve typings * deploy to cloudflare --------- Co-authored-by: vcoppe <vcoppe@hexaly.com>
This commit is contained in:
1 parent
6a0d434371
commit
8fe7d8d64d
484 files changed
+53949
-41152
No files matched your search
@@ -0,0 +1,93 @@
|
||||
//! Changing what is selected.
|
||||
|
||||
use gpx_engine::api;
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
use crate::ids::*;
|
||||
use crate::session::*;
|
||||
use crate::ts::Outcome;
|
||||
use crate::types::SelectMode;
|
||||
|
||||
// Selection
|
||||
|
||||
/// Selects files. `file_ids_bytes`: concatenated 16-byte UUIDs. Unknown files are ignored, and
|
||||
/// selecting nothing deselects everything. See `SelectMode`.
|
||||
#[wasm_bindgen]
|
||||
pub fn select(file_ids_bytes: &[u8], mode: SelectMode) -> Outcome {
|
||||
match uuid_list(file_ids_bytes) {
|
||||
Some(ids) => run(|e| api::select(e, &ids, mode.into())),
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
|
||||
/// Selects all the elements of the same kind as the selected ones, in the same place: all the
|
||||
/// files, the tracks of the file, the segments of the track, the waypoints of the file. All the
|
||||
/// files when nothing is selected.
|
||||
#[wasm_bindgen]
|
||||
pub fn select_all() -> Outcome {
|
||||
run(api::select_all)
|
||||
}
|
||||
|
||||
/// Moves the selection to the next (`down`) or previous element of the same kind, like the arrow
|
||||
/// keys do in the file list. With `add` (shift + arrow), the element is added to the selection,
|
||||
/// otherwise it replaces it.
|
||||
#[wasm_bindgen]
|
||||
pub fn arrow_select(down: bool, add: bool) -> Outcome {
|
||||
run(|e| api::arrow_select(e, down, add))
|
||||
}
|
||||
|
||||
// The elements below cross as the id of their file (UUID string) and, like the files, as
|
||||
// concatenated 16-byte UUIDs. What does not exist is ignored. See `SelectMode`: elements are merged
|
||||
// with the selection when it holds elements of the same kind in the same place (same file, same
|
||||
// track for segments), otherwise they replace it.
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn select_routes(file_id: &str, route_ids_bytes: &[u8], mode: SelectMode) -> Outcome {
|
||||
match parse_uuid(file_id).zip(uuid_list(route_ids_bytes)) {
|
||||
Some((file_id, ids)) => run(|e| api::select_routes(e, file_id, &ids, mode.into())),
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn select_tracks(file_id: &str, track_ids_bytes: &[u8], mode: SelectMode) -> Outcome {
|
||||
match parse_uuid(file_id).zip(uuid_list(track_ids_bytes)) {
|
||||
Some((file_id, ids)) => run(|e| api::select_tracks(e, file_id, &ids, mode.into())),
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn select_segments(
|
||||
file_id: &str,
|
||||
track_id: &str,
|
||||
segment_ids_bytes: &[u8],
|
||||
mode: SelectMode,
|
||||
) -> Outcome {
|
||||
match parse_uuid(file_id)
|
||||
.zip(parse_uuid(track_id))
|
||||
.zip(uuid_list(segment_ids_bytes))
|
||||
{
|
||||
Some(((file_id, track_id), ids)) => {
|
||||
run(|e| api::select_segments(e, file_id, track_id, &ids, mode.into()))
|
||||
}
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
|
||||
/// Selects the node standing for all the waypoints of a file.
|
||||
#[wasm_bindgen]
|
||||
pub fn select_waypoint_group(file_id: &str, mode: SelectMode) -> Outcome {
|
||||
match parse_uuid(file_id) {
|
||||
Some(file_id) => run(|e| api::select_waypoint_group(e, file_id, mode.into())),
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn select_waypoints(file_id: &str, waypoint_ids_bytes: &[u8], mode: SelectMode) -> Outcome {
|
||||
match parse_uuid(file_id).zip(uuid_list(waypoint_ids_bytes)) {
|
||||
Some((file_id, ids)) => run(|e| api::select_waypoints(e, file_id, &ids, mode.into())),
|
||||
None => fail("the ids are not UUIDs"),
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user