From 8396f30975eb9aee4826bd538328071a21e80f05 Mon Sep 17 00:00:00 2001 From: Niko PLP Date: Sat, 3 Aug 2024 22:38:16 +0300 Subject: [PATCH] doc_create --- ng-app/src-tauri/src/lib.rs | 37 +++++ ng-app/src/api.ts | 1 + ng-app/src/apps/ContainerView.svelte | 31 ++-- ng-app/src/apps/JsonLdViewer.svelte | 0 ng-app/src/apps/ProseMirrorEditor.svelte | 0 ng-app/src/apps/ProseMirrorViewer.svelte | 0 ng-app/src/apps/SparqlQueryEditor.svelte | 2 +- ng-app/src/apps/TurtleViewer.svelte | 4 +- ng-app/src/lib/Document.svelte | 7 +- ng-app/src/lib/FullLayout.svelte | 136 ++++++++------- ng-app/src/lib/components/NavBar.svelte | 14 +- ng-app/src/lib/icons/DataClassIcon.svelte | 2 + ng-app/src/lib/icons/GraphQLIcon.svelte | 3 + ng-app/src/lib/icons/ZeraIcon.svelte | 3 +- ng-app/src/lib/panes/Files.svelte | 4 +- ng-app/src/routes/NURI.svelte | 4 +- ng-app/src/store.ts | 12 +- ng-app/src/tab.ts | 77 ++++++++- ng-app/src/zeras.ts | 62 +++---- ng-net/src/app_protocol.rs | 55 ++++++- ng-repo/src/block.rs | 2 +- ng-repo/src/commit.rs | 11 +- ng-repo/src/errors.rs | 10 ++ ng-repo/src/event.rs | 1 + ng-repo/src/repo.rs | 9 + ng-repo/src/store.rs | 16 +- ng-repo/src/types.rs | 26 ++- ng-sdk-js/src/lib.rs | 46 +++++- ng-verifier/src/commits/mod.rs | 13 +- ng-verifier/src/request_processor.rs | 40 +++++ ng-verifier/src/rocksdb_user_storage.rs | 1 + ng-verifier/src/user_storage/branch.rs | 2 +- ng-verifier/src/user_storage/repo.rs | 17 +- ng-verifier/src/verifier.rs | 192 +++++++++++++++------- 34 files changed, 626 insertions(+), 214 deletions(-) create mode 100644 ng-app/src/apps/JsonLdViewer.svelte create mode 100644 ng-app/src/apps/ProseMirrorEditor.svelte create mode 100644 ng-app/src/apps/ProseMirrorViewer.svelte create mode 100644 ng-app/src/lib/icons/GraphQLIcon.svelte diff --git a/ng-app/src-tauri/src/lib.rs b/ng-app/src-tauri/src/lib.rs index af7d54f..13eb825 100644 --- a/ng-app/src-tauri/src/lib.rs +++ b/ng-app/src-tauri/src/lib.rs @@ -584,6 +584,42 @@ async fn app_request(request: AppRequest) -> Result { .map_err(|e| e.to_string()) } +#[tauri::command(rename_all = "snake_case")] +async fn doc_create( + session_id: u64, + crdt: String, + class_name: String, + store_repo: StoreRepo, + destination: String, +) -> Result { + let class = BranchCrdt::from(crdt, class_name).map_err(|e| e.to_string())?; + + let destination = DocCreateDestination::from(destination).map_err(|e| e.to_string())?; + + let request = AppRequest::V0(AppRequestV0 { + session_id, + command: AppRequestCommandV0::new_create(), + nuri: NuriV0::new_empty(), + payload: Some(AppRequestPayload::V0(AppRequestPayloadV0::Create( + DocCreate { + store: store_repo, + class, + destination, + }, + ))), + }); + + let response = nextgraph::local_broker::app_request(request) + .await + .map_err(|e: NgError| e.to_string())?; + + if let AppResponse::V0(AppResponseV0::Nuri(nuri)) = response { + Ok(nuri) + } else { + Err("invalid response".to_string()) + } +} + #[tauri::command(rename_all = "snake_case")] async fn app_request_with_nuri_command( nuri: String, @@ -826,6 +862,7 @@ impl AppBuilder { client_info_rust, doc_fetch_private_subscribe, doc_fetch_repo_subscribe, + doc_create, cancel_stream, app_request_stream, file_get, diff --git a/ng-app/src/api.ts b/ng-app/src/api.ts index 9210962..5d582d0 100644 --- a/ng-app/src/api.ts +++ b/ng-app/src/api.ts @@ -44,6 +44,7 @@ const mapping = { "sparql_update": ["session_id","sparql","nuri"], "test": [ ], "get_device_name": [], + "doc_create": [ "session_id", "crdt", "class_name", "store_repo", "destination" ], "doc_fetch_private_subscribe": [], "doc_fetch_repo_subscribe": ["repo_o"], "branch_history": ["session_id", "nuri"], diff --git a/ng-app/src/apps/ContainerView.svelte b/ng-app/src/apps/ContainerView.svelte index 5dbb210..eaa8a5e 100644 --- a/ng-app/src/apps/ContainerView.svelte +++ b/ng-app/src/apps/ContainerView.svelte @@ -13,25 +13,28 @@ import { } from "../store"; - + import { link } from "svelte-spa-router"; import { Button, Progressbar, Spinner, Alert } from "flowbite-svelte"; export let commits; + + function contained(graph) { + let ret = []; + for (const g of graph) { + console.log(g) + if (g.substring(104,137) === "http://www.w3.org/ns/ldp#contains") { + let nuri = g.substring(140,240); + let hash = nuri.substring(9,16); + ret.push({nuri,hash}); + } + } + return ret; + } -
-

ListView

- {#if Array.isArray(commits.history.commits)} - {#each commits.history.commits as c} -
{c[0]} {JSON.stringify(c[1])}
- {/each} - {/if} -
- HEADS: {#each commits.heads as head} {head} , {/each} -
- TRIPLES: - {#each commits.graph as triple} -
{triple}
+
+ {#each contained(commits.graph) as doc} + {/each}
\ No newline at end of file diff --git a/ng-app/src/apps/JsonLdViewer.svelte b/ng-app/src/apps/JsonLdViewer.svelte new file mode 100644 index 0000000..e69de29 diff --git a/ng-app/src/apps/ProseMirrorEditor.svelte b/ng-app/src/apps/ProseMirrorEditor.svelte new file mode 100644 index 0000000..e69de29 diff --git a/ng-app/src/apps/ProseMirrorViewer.svelte b/ng-app/src/apps/ProseMirrorViewer.svelte new file mode 100644 index 0000000..e69de29 diff --git a/ng-app/src/apps/SparqlQueryEditor.svelte b/ng-app/src/apps/SparqlQueryEditor.svelte index 9f08198..f60f3ec 100644 --- a/ng-app/src/apps/SparqlQueryEditor.svelte +++ b/ng-app/src/apps/SparqlQueryEditor.svelte @@ -87,7 +87,7 @@ class="select-none ml-2 mt-2 mb-10 text-gray-600 focus:ring-4 focus:ring-primary-500/50 rounded-lg text-base p-2 text-center inline-flex items-center dark:focus:ring-primary-700/55" > - View Graph + View as Turtle {#if results!==undefined}
diff --git a/ng-app/src/apps/TurtleViewer.svelte b/ng-app/src/apps/TurtleViewer.svelte index e926504..e8d07d7 100644 --- a/ng-app/src/apps/TurtleViewer.svelte +++ b/ng-app/src/apps/TurtleViewer.svelte @@ -17,7 +17,7 @@ toast_success } from "../store"; import { - in_memory_discrete, open_viewer, set_viewer, set_editor, set_view_or_edit, cur_tab + in_memory_discrete, open_viewer, set_viewer, set_editor, set_view_or_edit, cur_tab_doc_can_edit } from "../tab"; import{ PencilSquare, RocketLaunch } from "svelte-heros-v2"; import { t } from "svelte-i18n"; @@ -61,7 +61,7 @@ SPARQL Query - {#if $cur_tab.doc.can_edit} + {#if $cur_tab_doc_can_edit}
- {#if !$cur_tab.show_menu} + {#if !$cur_tab_show_menu}
Back to menu
{/if} - {#if $cur_tab.show_menu || (!$cur_tab.folders_pane && !$cur_tab.toc_pane && !$cur_tab.right_pane)} + {#if $cur_tab_show_menu || (!$cur_tab_folders_pane && !$cur_tab_toc_pane && !$cur_tab_right_pane)} - {:else if $cur_tab.right_pane} + {:else if $cur_tab_right_pane}
- - {$t(`doc.menu.items.${$cur_tab.right_pane}.label`)} + + {$t(`doc.menu.items.${$cur_tab_right_pane}.label`)}
- - {:else if $cur_tab.folders_pane} + + {:else if $cur_tab_folders_pane}
{$t("doc.menu.items.folders.label")}
- {:else if $cur_tab.toc_pane} + {:else if $cur_tab_toc_pane}
{$t("doc.menu.items.toc.label")} @@ -893,11 +909,11 @@
    - + {$t("doc.destination.store")} - + {#if $cur_tab.store.store_type !== "dialog"}{$t("doc.destination.stream")}{:else}{$t("doc.destination.dialog")}{/if} diff --git a/ng-app/src/lib/components/NavBar.svelte b/ng-app/src/lib/components/NavBar.svelte index 2a5564f..347a402 100644 --- a/ng-app/src/lib/components/NavBar.svelte +++ b/ng-app/src/lib/components/NavBar.svelte @@ -24,7 +24,7 @@ Popover, } from "flowbite-svelte"; - import {save, nav_bar, showMenu, cur_tab, cur_tab_store_name_override, cur_tab_store_icon_override} from "../../tab"; + import {nav_bar_newest, save, nav_bar, showMenu, cur_tab_header_in_view, cur_tab_store_name_override, cur_tab_store_icon_override, cur_tab_persistent_error} from "../../tab"; export let scrollToTop = () => {}; @@ -56,22 +56,22 @@
    {$cur_tab_store_name_override || $nav_bar.title}
    - {#if $nav_bar.newest && !$cur_tab.header_in_view} + {#if $nav_bar_newest && !$cur_tab_header_in_view}
    - {@html $nav_bar.newest < 100 ? "+"+$nav_bar.newest : ""} + {@html $nav_bar_newest < 100 ? "+"+$nav_bar_newest : ""}
    {/if} - {#if $cur_tab.persistent_error} -
    + {#if $cur_tab_persistent_error} +
    - {@html $cur_tab.persistent_error.desc} + >{@html $cur_tab_persistent_error.desc}

    Dismiss
    {:else if $nav_bar.save !== undefined} diff --git a/ng-app/src/lib/icons/DataClassIcon.svelte b/ng-app/src/lib/icons/DataClassIcon.svelte index 3443ff9..d2643c4 100644 --- a/ng-app/src/lib/icons/DataClassIcon.svelte +++ b/ng-app/src/lib/icons/DataClassIcon.svelte @@ -87,6 +87,7 @@ import RustIcon from "./RustIcon.svelte"; import SvelteIcon from "./SvelteIcon.svelte"; import ReactIcon from "./ReactIcon.svelte"; + import GraphQLIcon from "./GraphQLIcon.svelte"; export let config = {}; export let dataClass: string; @@ -100,6 +101,7 @@ contract: ClipboardDocumentCheck, "query:text": MagnifyingGlass, "query:web": MagnifyingGlass, + "query:graphql": GraphQLIcon, "data:graph": Sun, "data:json": JsonIcon, "data:table": TableCells, diff --git a/ng-app/src/lib/icons/GraphQLIcon.svelte b/ng-app/src/lib/icons/GraphQLIcon.svelte new file mode 100644 index 0000000..82bbd58 --- /dev/null +++ b/ng-app/src/lib/icons/GraphQLIcon.svelte @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ng-app/src/lib/icons/ZeraIcon.svelte b/ng-app/src/lib/icons/ZeraIcon.svelte index 0da0ae1..2b1eb5d 100644 --- a/ng-app/src/lib/icons/ZeraIcon.svelte +++ b/ng-app/src/lib/icons/ZeraIcon.svelte @@ -77,6 +77,7 @@ import JsonLdIcon from "./JsonLdIcon.svelte"; import RdfIcon from "./RdfIcon.svelte"; import TurtleIcon from "./TurtleIcon.svelte"; + import GraphQLIcon from "./GraphQLIcon.svelte"; export let config = {}; export let zera: string; @@ -91,7 +92,7 @@ compose: QueueList, sparql_query: RocketLaunch, sparnatural: CursorArrowRays, - graphql: Cube, + graphql: GraphQLIcon, invoke: Play, ontology_viewer: ArrowsPointingOut, download: DocumentArrowDown, diff --git a/ng-app/src/lib/panes/Files.svelte b/ng-app/src/lib/panes/Files.svelte index 14edc01..5ff03b5 100644 --- a/ng-app/src/lib/panes/Files.svelte +++ b/ng-app/src/lib/panes/Files.svelte @@ -17,7 +17,7 @@ online, get_blob, } from "../../store"; - import { cur_tab } from "../../tab"; + import { cur_tab, cur_tab_doc_can_edit } from "../../tab"; import { ExclamationTriangle, ArrowDownTray, @@ -166,7 +166,7 @@
    - {#if $cur_tab.doc.can_edit} + {#if $cur_tab_doc_can_edit}