Misc · Export and import: export, field mapping and a CSV importer

misc::ExportDialog offers the owner's formats as cards and hands the
chosen one over for the owner to write. misc::ImportDialog maps the
file's columns to the app's fields, matched by name to start, over a
preview, and asks for each required field's column. misc::CsvImporter
reads CSV as RFC 4180, lets the first row name the columns or not, and
maps it through the ImportDialog into records; text that does not read
says why.
This commit is contained in:
ZacharyZhang-NY committed 2026-09-28 05:20:03 -04:00
1 parent cbba4ddeec
commit 79fe78cefd
9 files changed
+1023 -4

No files matched your search

+11 -1
View File
@@ -10,13 +10,14 @@ use crate::ui::{section, specimen, specimens};
mod asking;
mod codes;
mod notices;
mod transfer;
mod web;
pub const PAGE: Page = Page {
number: 42,
slug: "misc",
title: "Misc",
summary: "Small tools that stand alone: clocks, a stopwatch, a calculator, a unit converter, a QR code scanner, a captcha, a poll, a survey, a quiz, flashcards, licenses, terms, a cookie banner and web views.",
summary: "Small tools that stand alone: clocks, a stopwatch, a calculator, a unit converter, a QR code scanner, a captcha, a poll, a survey, a quiz, flashcards, licenses, terms, a cookie banner, data out and in, and web views.",
render,
script: &[
Step::DownAt("stopwatch-start", 30.0, 62.0),
@@ -66,6 +67,14 @@ pub const PAGE: Page = Page {
Step::UpAt("cookies", 230.0, 84.0),
Step::HoverAt("cookies", 20.0, 20.0),
Step::Shot("cookies-choosing"),
Step::DownAt("open-export", 20.0, 16.0),
Step::UpAt("open-export", 20.0, 16.0),
Step::Shot("export"),
Step::Key("escape"),
Step::DownAt("open-csv", 20.0, 16.0),
Step::UpAt("open-csv", 20.0, 16.0),
Step::Shot("csv-import"),
Step::Key("escape"),
Step::DownAt("web", 240.0, 100.0),
Step::UpAt("web", 240.0, 100.0),
Step::DownAt("converter", 24.0, 60.0),
@@ -89,6 +98,7 @@ fn render(window: &mut Window, cx: &mut App) -> AnyElement {
.child(codes::render(window, cx))
.child(asking::render(window, cx))
.child(notices::render(window, cx))
.child(transfer::render(window, cx))
.child(web::render(cx))
.into_any_element()
}