Implement Rust web sidebar title and tree interactions
This commit is contained in:
@@ -2,6 +2,96 @@ use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct MindmapProjection {
|
||||
pub schema: String,
|
||||
pub map_id: String,
|
||||
pub root_node: String,
|
||||
#[serde(default)]
|
||||
pub nodes: Vec<MindmapProjectionNode>,
|
||||
#[serde(default)]
|
||||
pub edges: Vec<MindmapProjectionEdge>,
|
||||
#[serde(default)]
|
||||
pub layout_hints: Value,
|
||||
pub revision: u64,
|
||||
pub owner: MindmapProjectionOwner,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct MindmapProjectionNode {
|
||||
pub node_id: String,
|
||||
pub title: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub parent_id: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct MindmapProjectionEdge {
|
||||
pub edge_id: String,
|
||||
pub from_node_id: String,
|
||||
pub to_node_id: String,
|
||||
pub edge_kind: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
pub enum MindmapProjectionOwner {
|
||||
RustKernel,
|
||||
CompatBlob,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[serde(tag = "type", rename_all = "camelCase")]
|
||||
pub enum MindmapCommand {
|
||||
CreateNode {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "parentId", alias = "parent_id")]
|
||||
parent_id: String,
|
||||
node: MindmapNodeInput,
|
||||
},
|
||||
RenameNode {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "nodeId", alias = "node_id")]
|
||||
node_id: String,
|
||||
title: String,
|
||||
},
|
||||
MoveNode {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "nodeId", alias = "node_id")]
|
||||
node_id: String,
|
||||
#[serde(rename = "newParentId", alias = "new_parent_id")]
|
||||
new_parent_id: String,
|
||||
#[serde(rename = "sortOrder", alias = "sort_order")]
|
||||
sort_order: Option<i64>,
|
||||
},
|
||||
DeleteNode {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "nodeId", alias = "node_id")]
|
||||
node_id: String,
|
||||
},
|
||||
SetLayout {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "layoutHints", alias = "layout_hints")]
|
||||
layout_hints: Value,
|
||||
},
|
||||
AttachPageRef {
|
||||
#[serde(rename = "mapId", alias = "map_id")]
|
||||
map_id: String,
|
||||
#[serde(rename = "nodeId", alias = "node_id")]
|
||||
node_id: String,
|
||||
#[serde(rename = "pageId", alias = "page_id")]
|
||||
page_id: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct MindmapNodeRef {
|
||||
|
||||
Reference in New Issue
Block a user