disposition_input_model/
input_diagram.rs1use disposition_model_common::theme::Css;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 entity::{EntityDescs, EntityTypes},
6 process::Processes,
7 tag::{TagNames, TagThings},
8 theme::{ThemeDefault, ThemeTagThingsFocus, ThemeThingDependenciesStyles, ThemeTypesStyles},
9 thing::{ThingCopyText, ThingDependencies, ThingHierarchy, ThingInteractions, ThingNames},
10};
11
12#[cfg_attr(
18 all(feature = "openapi", not(feature = "test")),
19 derive(utoipa::ToSchema)
20)]
21#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
22pub struct InputDiagram {
23 #[serde(default, skip_serializing_if = "ThingNames::is_empty")]
25 pub things: ThingNames,
26
27 #[serde(default, skip_serializing_if = "ThingCopyText::is_empty")]
31 pub thing_copy_text: ThingCopyText,
32
33 #[serde(default, skip_serializing_if = "ThingHierarchy::is_empty")]
38 pub thing_hierarchy: ThingHierarchy,
39
40 #[serde(default, skip_serializing_if = "ThingDependencies::is_empty")]
45 pub thing_dependencies: ThingDependencies,
46
47 #[serde(default, skip_serializing_if = "ThingInteractions::is_empty")]
52 pub thing_interactions: ThingInteractions,
53
54 #[serde(default, skip_serializing_if = "Processes::is_empty")]
57 pub processes: Processes,
58
59 #[serde(default, skip_serializing_if = "TagNames::is_empty")]
62 pub tags: TagNames,
63
64 #[serde(default, skip_serializing_if = "TagThings::is_empty")]
66 pub tag_things: TagThings,
67
68 #[serde(default, skip_serializing_if = "EntityDescs::is_empty")]
70 pub entity_descs: EntityDescs,
71
72 #[serde(default, skip_serializing_if = "EntityTypes::is_empty")]
77 pub entity_types: EntityTypes,
78
79 #[serde(default, skip_serializing_if = "ThemeDefault::is_empty")]
81 pub theme_default: ThemeDefault,
82
83 #[serde(default, skip_serializing_if = "ThemeTypesStyles::is_empty")]
85 pub theme_types_styles: ThemeTypesStyles,
86
87 #[serde(
89 default,
90 skip_serializing_if = "ThemeThingDependenciesStyles::is_empty"
91 )]
92 pub theme_thing_dependencies_styles: ThemeThingDependenciesStyles,
93
94 #[serde(default, skip_serializing_if = "ThemeTagThingsFocus::is_empty")]
99 pub theme_tag_things_focus: ThemeTagThingsFocus,
100
101 #[serde(default, skip_serializing_if = "Css::is_empty")]
103 pub css: Css,
104}
105
106impl InputDiagram {
107 pub fn new() -> Self {
109 Self::default()
110 }
111}