From 197a7d08810e1108ce7c4310e81856e0ea2a6365 Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Tue, 21 Jan 2025 12:11:54 -0800 Subject: [PATCH 1/7] git pull --- packages/backend/.env | 3 +++ packages/backend/Cargo.toml | 3 ++- packages/backend/build.rs | 5 +++++ packages/backend/migration_status.txt | 4 ++++ ...250114010822_test_first_five_view.down.sql | 12 +++++++++++ .../20250121193606_testing.down.sql | 1 + .../migrations/20250121193606_testing.up.sql | 0 .../20250121200530_testing.down.sql | 1 + .../migrations/20250121200530_testing.up.sql | 1 + packages/backend/src/search.rs | 14 +++++++++++++ packages/backend/src/test.rs | 21 +++++++++++++++++++ 11 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 packages/backend/.env create mode 100644 packages/backend/build.rs create mode 100644 packages/backend/migration_status.txt create mode 100644 packages/backend/migrations/20250114010822_test_first_five_view.down.sql create mode 100644 packages/backend/migrations/20250121193606_testing.down.sql create mode 100644 packages/backend/migrations/20250121193606_testing.up.sql create mode 100644 packages/backend/migrations/20250121200530_testing.down.sql create mode 100644 packages/backend/migrations/20250121200530_testing.up.sql create mode 100644 packages/backend/src/search.rs create mode 100644 packages/backend/src/test.rs diff --git a/packages/backend/.env b/packages/backend/.env new file mode 100644 index 00000000..2c9f52f2 --- /dev/null +++ b/packages/backend/.env @@ -0,0 +1,3 @@ +DATABASE_URL=postgres://hamidahoderinwale@localhost:5432/catcolab +FIREBASE_PROJECT_ID=catcolab-next + diff --git a/packages/backend/Cargo.toml b/packages/backend/Cargo.toml index e3a867f8..5ea2d9d6 100644 --- a/packages/backend/Cargo.toml +++ b/packages/backend/Cargo.toml @@ -15,8 +15,9 @@ qubit = "0.10.2" regex = "1.11.1" serde = { version = "1.0.210", features = ["derive"] } serde_json = "1.0.128" +shuttle-persist = "0.51.0" socketioxide = { version = "0.14.1", features = ["tracing"] } -sqlx = { version = "0.8.2", features = ["runtime-tokio", "tls-native-tls", "postgres", "uuid", "json"] } +sqlx = { version = "0.8.2", features = ["runtime-tokio", "tls-native-tls", "postgres", "uuid", "json", "macros"] } thiserror = "1.0.64" tokio = { version = "1.40.0", features = ["full"] } tower = { version = "0.5.1", features = ["util"] } diff --git a/packages/backend/build.rs b/packages/backend/build.rs new file mode 100644 index 00000000..d5068697 --- /dev/null +++ b/packages/backend/build.rs @@ -0,0 +1,5 @@ +// generated by `sqlx migrate build-script` +fn main() { + // trigger recompilation when a new migration is added + println!("cargo:rerun-if-changed=migrations"); +} diff --git a/packages/backend/migration_status.txt b/packages/backend/migration_status.txt new file mode 100644 index 00000000..fb0785d7 --- /dev/null +++ b/packages/backend/migration_status.txt @@ -0,0 +1,4 @@ +20241004010448/installed document refs +20241025030906/installed users +20250114010822/installed test first five view +20250121193606/installed testing diff --git a/packages/backend/migrations/20250114010822_test_first_five_view.down.sql b/packages/backend/migrations/20250114010822_test_first_five_view.down.sql new file mode 100644 index 00000000..542fe80e --- /dev/null +++ b/packages/backend/migrations/20250114010822_test_first_five_view.down.sql @@ -0,0 +1,12 @@ +-- Add down migration script here +SELECT * +FROM users +LIMIT 2; + +SELECT * +FROM permission_level +LIMIT 2; + +SELECT * +FROM permissions +LIMIT 2; \ No newline at end of file diff --git a/packages/backend/migrations/20250121193606_testing.down.sql b/packages/backend/migrations/20250121193606_testing.down.sql new file mode 100644 index 00000000..4d6aabdb --- /dev/null +++ b/packages/backend/migrations/20250121193606_testing.down.sql @@ -0,0 +1 @@ +DELETE FROM _sqlx_migrations WHERE version = '20250121193606'; diff --git a/packages/backend/migrations/20250121193606_testing.up.sql b/packages/backend/migrations/20250121193606_testing.up.sql new file mode 100644 index 00000000..e69de29b diff --git a/packages/backend/migrations/20250121200530_testing.down.sql b/packages/backend/migrations/20250121200530_testing.down.sql new file mode 100644 index 00000000..d2f607c5 --- /dev/null +++ b/packages/backend/migrations/20250121200530_testing.down.sql @@ -0,0 +1 @@ +-- Add down migration script here diff --git a/packages/backend/migrations/20250121200530_testing.up.sql b/packages/backend/migrations/20250121200530_testing.up.sql new file mode 100644 index 00000000..0da0a538 --- /dev/null +++ b/packages/backend/migrations/20250121200530_testing.up.sql @@ -0,0 +1 @@ +-- Add up migration script here diff --git a/packages/backend/src/search.rs b/packages/backend/src/search.rs new file mode 100644 index 00000000..66e1e889 --- /dev/null +++ b/packages/backend/src/search.rs @@ -0,0 +1,14 @@ +use sqlx::PgPool; + +// adding indices to the table of models + +pub fn + +// take an enum for each instance of a model, subtyped based on the theory + +pub enum modelInstance { + title, + theory, + +} +// taking each title of model as keyword / tokenizing \ No newline at end of file diff --git a/packages/backend/src/test.rs b/packages/backend/src/test.rs new file mode 100644 index 00000000..9b1c49d7 --- /dev/null +++ b/packages/backend/src/test.rs @@ -0,0 +1,21 @@ +use sqlx::PgPool; // Import PgPool for PostgreSQL connection +use std::env; + +#[tokio::main] +async fn main() -> Result<(), sqlx::Error> { + // Set up the database connection pool + let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); + let pool = PgPool::connect(&database_url).await?; + + // Execute the query and fetch results + let rows = sqlx::query("SELECT * FROM Catcolab LIMIT 5") + .fetch_all(&pool) + .await?; + + // Print each row + for row in rows { + println!("{:?}", row); + } + + Ok(()) +} From 0c76276ccec643ffedb0e31d9722e37ebaf5182f Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Tue, 21 Jan 2025 12:12:47 -0800 Subject: [PATCH 2/7] Commit --- Cargo.lock | 317 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 315 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bdd38393..b108ea64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,6 +60,21 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" version = "1.0.93" @@ -183,6 +198,7 @@ dependencies = [ "regex", "serde", "serde_json", + "shuttle-persist", "socketioxide", "sqlx", "thiserror 1.0.69", @@ -237,6 +253,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -345,6 +370,21 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + [[package]] name = "colored" version = "2.1.0" @@ -355,6 +395,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "comfy-table" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" +dependencies = [ + "crossterm 0.26.1", + "strum 0.24.1", + "strum_macros 0.24.3", + "unicode-width", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -435,6 +487,47 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crossterm" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags 2.6.0", + "crossterm_winapi", + "libc", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -918,6 +1011,12 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1098,6 +1197,29 @@ dependencies = [ "tower-service", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "icu_collections" version = "1.5.0" @@ -1559,6 +1681,18 @@ dependencies = [ "adler2", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + [[package]] name = "mio" version = "1.0.3" @@ -2294,6 +2428,15 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +dependencies = [ + "serde", +] + [[package]] name = "serde" version = "1.0.215" @@ -2418,6 +2561,78 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shuttle-common" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ea933f88fc2757d4817327969b8cdf2a05dff1bcfab07609039768a0ef0e553" +dependencies = [ + "anyhow", + "chrono", + "comfy-table", + "crossterm 0.27.0", + "http 0.2.12", + "semver", + "serde", + "serde_json", + "strum 0.26.3", + "thiserror 2.0.3", + "tracing", + "tracing-subscriber", + "typeshare", + "url", + "uuid", + "zeroize", +] + +[[package]] +name = "shuttle-persist" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4055e62b62bb215ded663b80679ded6fd644ca40d2b84d91aca44f533da6270d" +dependencies = [ + "async-trait", + "bincode", + "serde", + "shuttle-service", + "thiserror 2.0.3", +] + +[[package]] +name = "shuttle-service" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c0db3c6f082015f6f845bf726725a67b7fa75af0df02a60230b2f566d8c705" +dependencies = [ + "anyhow", + "async-trait", + "serde", + "shuttle-common", + "strfmt", + "thiserror 2.0.3", +] + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -2634,7 +2849,7 @@ checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "dotenvy", "either", - "heck", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -2764,6 +2979,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "strfmt" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8348af2d9fc3258c8733b8d9d8db2e56f54b2363a4b5b81585c7875ed65e65" + [[package]] name = "stringprep" version = "0.1.5" @@ -2775,6 +2996,47 @@ dependencies = [ "unicode-properties", ] +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + [[package]] name = "subtle" version = "2.6.1" @@ -2994,7 +3256,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -3165,6 +3427,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -3172,11 +3444,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "nu-ansi-term", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] @@ -3294,6 +3569,28 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "typeshare" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" +dependencies = [ + "chrono", + "serde", + "serde_json", + "typeshare-annotation", +] + +[[package]] +name = "typeshare-annotation" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" +dependencies = [ + "quote", + "syn 2.0.90", +] + [[package]] name = "unicode-bidi" version = "0.3.17" @@ -3321,6 +3618,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode_categories" version = "0.1.1" @@ -3342,6 +3645,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3597,6 +3901,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" From 7549b71c13339d9d50291319c5b1a27fbbfe974f Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Sun, 26 Jan 2025 23:44:06 -0800 Subject: [PATCH 3/7] embed feature, copy iframe code on selection --- .../frontend/src/analysis/analysis_editor.tsx | 1 + packages/frontend/src/model/model_editor.tsx | 64 +++++++++++++++++++ packages/frontend/src/page/menubar.css | 28 ++++++++ packages/frontend/src/page/toolbar.tsx | 1 + 4 files changed, 94 insertions(+) diff --git a/packages/frontend/src/analysis/analysis_editor.tsx b/packages/frontend/src/analysis/analysis_editor.tsx index 73d6817b..8134b20e 100644 --- a/packages/frontend/src/analysis/analysis_editor.tsx +++ b/packages/frontend/src/analysis/analysis_editor.tsx @@ -39,6 +39,7 @@ import type { Analysis } from "./types"; import PanelRight from "lucide-solid/icons/panel-right"; import PanelRightClose from "lucide-solid/icons/panel-right-close"; + export default function AnalysisPage() { const api = useApi(); const theories = useContext(TheoryLibraryContext); diff --git a/packages/frontend/src/model/model_editor.tsx b/packages/frontend/src/model/model_editor.tsx index d6ee4795..7582f8fe 100644 --- a/packages/frontend/src/model/model_editor.tsx +++ b/packages/frontend/src/model/model_editor.tsx @@ -29,8 +29,13 @@ import { newMorphismDecl, newObjectDecl, } from "./types"; +import { createMemo, createSignal } from "solid-js"; +import Dialog from "@corvu/dialog"; +import { IconButton } from "../components"; +import CodeXml from "lucide-solid/icons/code-xml" import "./model_editor.css"; +import { LotkaVolterra } from '../stdlib/analyses/lotka_volterra'; export default function ModelPage() { const api = useApi(); @@ -55,6 +60,7 @@ export function ModelDocumentEditor(props: { + + setIsOpen(true)} + tooltip="Embed Notebook" + > + + + setIsOpen(false)} /> + + ); +} + +function EmbedDialog(props: { isOpen: boolean; onClose: () => void }) { + const [copyStatus, setCopyStatus] = createSignal<"Copied!" | "Please try again later." | "">("") + const embedLink = createMemo(() => { + const pageURL = window.location.href; + return ``; + }); + + const copyToClipboard = async () => { + try { + await navigator.clipboard.writeText(embedLink()); + setCopyStatus("Copied!"); + } catch (err) { + setCopyStatus("Please try again later."); + } + }; + + return ( + + + + + Embed Notebook + + Copy iframe Code Below: + +
+ {embedLink()} +
+ + + {copyStatus()} + +
+
+
+
+
+ ); +} diff --git a/packages/frontend/src/page/menubar.css b/packages/frontend/src/page/menubar.css index 7ec1c815..0de3f921 100644 --- a/packages/frontend/src/page/menubar.css +++ b/packages/frontend/src/page/menubar.css @@ -15,3 +15,31 @@ color: dimgray; } } + +.embed-code-container { + display: flex; + gap: 1rem; + align-items: flex-start; + margin: 1rem 0; +} + +.embed-code { + display: block; + overflow-x: auto; + flex: 1; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + background-color: #f5f5f5; + border: 1px solid #e0e0e0; + border-radius: 4px; + padding: 0.75rem; + font-size: 0.875rem; + line-height: 1.4; + color: #333; +} + +.copy-status { + display: flex; + flex-direction: column; + line-height: 2em; + color: gray; +} \ No newline at end of file diff --git a/packages/frontend/src/page/toolbar.tsx b/packages/frontend/src/page/toolbar.tsx index 95fc66ac..8d599daa 100644 --- a/packages/frontend/src/page/toolbar.tsx +++ b/packages/frontend/src/page/toolbar.tsx @@ -79,3 +79,4 @@ export function TheoryHelpButton(props: { ); } + From 2d705efcc95dc63d949a1a70989c95f48240e7c3 Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Sun, 26 Jan 2025 23:47:04 -0800 Subject: [PATCH 4/7] pnpm run lint and format --- .../frontend/src/analysis/analysis_editor.tsx | 1 - packages/frontend/src/model/model_editor.tsx | 35 ++++++++----------- packages/frontend/src/page/menubar.css | 2 +- packages/frontend/src/page/toolbar.tsx | 1 - 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/packages/frontend/src/analysis/analysis_editor.tsx b/packages/frontend/src/analysis/analysis_editor.tsx index 8134b20e..73d6817b 100644 --- a/packages/frontend/src/analysis/analysis_editor.tsx +++ b/packages/frontend/src/analysis/analysis_editor.tsx @@ -39,7 +39,6 @@ import type { Analysis } from "./types"; import PanelRight from "lucide-solid/icons/panel-right"; import PanelRightClose from "lucide-solid/icons/panel-right-close"; - export default function AnalysisPage() { const api = useApi(); const theories = useContext(TheoryLibraryContext); diff --git a/packages/frontend/src/model/model_editor.tsx b/packages/frontend/src/model/model_editor.tsx index 7582f8fe..2e49a365 100644 --- a/packages/frontend/src/model/model_editor.tsx +++ b/packages/frontend/src/model/model_editor.tsx @@ -2,8 +2,12 @@ import { useParams } from "@solidjs/router"; import { Match, Show, Switch, createResource, useContext } from "solid-js"; import invariant from "tiny-invariant"; +import Dialog from "@corvu/dialog"; +import CodeXml from "lucide-solid/icons/code-xml"; +import { createMemo, createSignal } from "solid-js"; import { useApi } from "../api"; import { InlineInput } from "../components"; +import { IconButton } from "../components"; import { type CellConstructor, type FormalCellEditorProps, @@ -29,13 +33,9 @@ import { newMorphismDecl, newObjectDecl, } from "./types"; -import { createMemo, createSignal } from "solid-js"; -import Dialog from "@corvu/dialog"; -import { IconButton } from "../components"; -import CodeXml from "lucide-solid/icons/code-xml" import "./model_editor.css"; -import { LotkaVolterra } from '../stdlib/analyses/lotka_volterra'; +import { LotkaVolterra } from "../stdlib/analyses/lotka_volterra"; export default function ModelPage() { const api = useApi(); @@ -60,7 +60,7 @@ export function ModelDocumentEditor(props: { - + - setIsOpen(true)} - tooltip="Embed Notebook" - > + setIsOpen(true)} tooltip="Embed Notebook"> setIsOpen(false)} /> @@ -213,7 +210,9 @@ export function EmbedButton() { } function EmbedDialog(props: { isOpen: boolean; onClose: () => void }) { - const [copyStatus, setCopyStatus] = createSignal<"Copied!" | "Please try again later." | "">("") + const [copyStatus, setCopyStatus] = createSignal<"Copied!" | "Please try again later." | "">( + "", + ); const embedLink = createMemo(() => { const pageURL = window.location.href; return ``; @@ -234,18 +233,14 @@ function EmbedDialog(props: { isOpen: boolean; onClose: () => void }) { Embed Notebook - - Copy iframe Code Below: - + Copy iframe Code Below:
{embedLink()}
- - - {copyStatus()} - + + {copyStatus()}
diff --git a/packages/frontend/src/page/menubar.css b/packages/frontend/src/page/menubar.css index 0de3f921..9985591c 100644 --- a/packages/frontend/src/page/menubar.css +++ b/packages/frontend/src/page/menubar.css @@ -42,4 +42,4 @@ flex-direction: column; line-height: 2em; color: gray; -} \ No newline at end of file +} diff --git a/packages/frontend/src/page/toolbar.tsx b/packages/frontend/src/page/toolbar.tsx index 8d599daa..95fc66ac 100644 --- a/packages/frontend/src/page/toolbar.tsx +++ b/packages/frontend/src/page/toolbar.tsx @@ -79,4 +79,3 @@ export function TheoryHelpButton(props: {
); } - From 5357af8a75559f0b6a08cf85d3ba0378530b3c5e Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Mon, 27 Jan 2025 10:25:10 -0800 Subject: [PATCH 5/7] removed unnecessary package, build error fix --- packages/frontend/src/model/model_editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/model/model_editor.tsx b/packages/frontend/src/model/model_editor.tsx index 2e49a365..1d731dc5 100644 --- a/packages/frontend/src/model/model_editor.tsx +++ b/packages/frontend/src/model/model_editor.tsx @@ -35,7 +35,7 @@ import { } from "./types"; import "./model_editor.css"; -import { LotkaVolterra } from "../stdlib/analyses/lotka_volterra"; + export default function ModelPage() { const api = useApi(); From b34b41535520b3b5d1efadc377de16ed1d228071 Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Mon, 27 Jan 2025 10:29:31 -0800 Subject: [PATCH 6/7] pnpm lint --- packages/frontend/src/model/model_editor.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend/src/model/model_editor.tsx b/packages/frontend/src/model/model_editor.tsx index 1d731dc5..97d56775 100644 --- a/packages/frontend/src/model/model_editor.tsx +++ b/packages/frontend/src/model/model_editor.tsx @@ -36,7 +36,6 @@ import { import "./model_editor.css"; - export default function ModelPage() { const api = useApi(); const theories = useContext(TheoryLibraryContext); From 39d056a3ff3a83ed5dd51356be4084f902508970 Mon Sep 17 00:00:00 2001 From: hamidahoderinwale Date: Wed, 12 Feb 2025 14:36:15 -0800 Subject: [PATCH 7/7] embed button in permissions dialog --- packages/frontend/src/model/model_editor.tsx | 8 ++- packages/frontend/src/user/permissions.css | 13 +++++ packages/frontend/src/user/permissions.tsx | 55 +++++++++++--------- 3 files changed, 48 insertions(+), 28 deletions(-) diff --git a/packages/frontend/src/model/model_editor.tsx b/packages/frontend/src/model/model_editor.tsx index 97d56775..7ef5fab9 100644 --- a/packages/frontend/src/model/model_editor.tsx +++ b/packages/frontend/src/model/model_editor.tsx @@ -59,7 +59,6 @@ export function ModelDocumentEditor(props: { - - setIsOpen(true)} tooltip="Embed Notebook"> + setIsOpen(true)} + tooltip="Embed Notebook" + class="embed-button" + > +

Embed

setIsOpen(false)} /> diff --git a/packages/frontend/src/user/permissions.css b/packages/frontend/src/user/permissions.css index 1ba2985a..a9631d46 100644 --- a/packages/frontend/src/user/permissions.css +++ b/packages/frontend/src/user/permissions.css @@ -13,3 +13,16 @@ align-items: center; gap: 5em; } + +.embed-button { + display: flex; + align-items: center; + gap: 8px; + margin: none; + border: none; + padding: none; + border-radius: 10%; + p { + font-family: var(--main-font); + } +} diff --git a/packages/frontend/src/user/permissions.tsx b/packages/frontend/src/user/permissions.tsx index 40d75fe5..28503def 100644 --- a/packages/frontend/src/user/permissions.tsx +++ b/packages/frontend/src/user/permissions.tsx @@ -16,6 +16,7 @@ import invariant from "tiny-invariant"; import type { NewPermissions, PermissionLevel, Permissions, UserSummary } from "catcolab-api"; import { useApi } from "../api"; import { Dialog, FormGroup, IconButton, SelectItem, Warning } from "../components"; +import { EmbedButton } from "../model/model_editor"; import { deepCopyJSON } from "../util/deepcopy"; import { Login } from "./login"; import { NameUser, UserInput } from "./username"; @@ -235,32 +236,34 @@ function AnonPermissionsButton() { }; return ( - -

- This document can be edited by anyone with the link. -

- - -

- Create a new document to restrict permissions,
or{" "} - - log out - {" "} - to create other anonymous documents. -

-
- -
-

To create documents with restricted permissions, log in.

- setOpen(false)} /> - - -
+ <> + +
+

Permissions

+ +
+ +

+ This document can be edited by anyone with the link. +

+ + +

+ Create a new document to restrict permissions,
or{" "} + + log out + {" "} + to create other anonymous documents. +

+
+ +
+

To create documents with restricted permissions, log in.

+ setOpen(false)} /> + + +
+ ); }