#[non_exhaustive]pub struct Component {
pub events: Option<Vec<AppBuilderEvent>>,
pub id: Option<Option<String>>,
pub name: String,
pub properties: ComponentProperties,
pub type_: ComponentType,
pub additional_properties: BTreeMap<String, Value>,
/* private fields */
}
Expand description
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.events: Option<Vec<AppBuilderEvent>>
Events to listen for on the UI component.
id: Option<Option<String>>
The ID of the UI component. This property is deprecated; use name
to identify individual components instead.
name: String
A unique identifier for this UI component. This name is also visible in the app editor.
properties: ComponentProperties
Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.
type_: ComponentType
The UI component type.
additional_properties: BTreeMap<String, Value>
Implementations§
Source§impl Component
impl Component
Sourcepub fn new(
name: String,
properties: ComponentProperties,
type_: ComponentType,
) -> Component
pub fn new( name: String, properties: ComponentProperties, type_: ComponentType, ) -> Component
Examples found in repository?
examples/v2_app-builder_CreateApp.rs (lines 52-71)
36async fn main() {
37 let body =
38 CreateAppRequest
39 ::new().data(
40 CreateAppRequestData::new(
41 AppDefinitionType::APPDEFINITIONS,
42 ).attributes(
43 CreateAppRequestDataAttributes::new()
44 .components(
45 vec![
46 ComponentGrid::new(
47 "grid0".to_string(),
48 ComponentGridProperties::new()
49 .background_color("default".to_string())
50 .children(
51 vec![
52 Component::new(
53 "gridCell0".to_string(),
54 ComponentProperties::new()
55 .children(
56 vec![
57 Component::new(
58 "text0".to_string(),
59 ComponentProperties
60 ::new().is_visible(
61 ComponentPropertiesIsVisible::Bool(true),
62 ),
63 ComponentType::TEXT,
64 ).events(vec![])
65 ],
66 )
67 .is_visible(
68 ComponentPropertiesIsVisible::String("true".to_string()),
69 ),
70 ComponentType::GRIDCELL,
71 ).events(vec![]),
72 Component::new(
73 "gridCell2".to_string(),
74 ComponentProperties::new()
75 .children(
76 vec![
77 Component::new(
78 "table0".to_string(),
79 ComponentProperties
80 ::new().is_visible(
81 ComponentPropertiesIsVisible::Bool(true),
82 ),
83 ComponentType::TABLE,
84 ).events(vec![])
85 ],
86 )
87 .is_visible(
88 ComponentPropertiesIsVisible::String("true".to_string()),
89 ),
90 ComponentType::GRIDCELL,
91 ).events(vec![]),
92 Component::new(
93 "gridCell1".to_string(),
94 ComponentProperties::new()
95 .children(
96 vec![
97 Component::new(
98 "text1".to_string(),
99 ComponentProperties
100 ::new().is_visible(
101 ComponentPropertiesIsVisible::Bool(true),
102 ),
103 ComponentType::TEXT,
104 ).events(vec![])
105 ],
106 )
107 .is_visible(
108 ComponentPropertiesIsVisible::String("true".to_string()),
109 ),
110 ComponentType::GRIDCELL,
111 ).events(vec![]),
112 Component::new(
113 "gridCell3".to_string(),
114 ComponentProperties::new()
115 .children(
116 vec![
117 Component::new(
118 "button0".to_string(),
119 ComponentProperties
120 ::new().is_visible(
121 ComponentPropertiesIsVisible::Bool(true),
122 ),
123 ComponentType::BUTTON,
124 ).events(
125 vec![
126 AppBuilderEvent::new()
127 .name(AppBuilderEventName::CLICK)
128 .type_(
129 AppBuilderEventType::SETSTATEVARIABLEVALUE,
130 )
131 ],
132 )
133 ],
134 )
135 .is_visible(
136 ComponentPropertiesIsVisible::String("true".to_string()),
137 ),
138 ComponentType::GRIDCELL,
139 ).events(vec![]),
140 Component::new(
141 "gridCell4".to_string(),
142 ComponentProperties::new()
143 .children(
144 vec![
145 Component::new(
146 "button1".to_string(),
147 ComponentProperties
148 ::new().is_visible(
149 ComponentPropertiesIsVisible::Bool(true),
150 ),
151 ComponentType::BUTTON,
152 ).events(
153 vec![
154 AppBuilderEvent::new()
155 .name(AppBuilderEventName::CLICK)
156 .type_(
157 AppBuilderEventType::SETSTATEVARIABLEVALUE,
158 )
159 ],
160 )
161 ],
162 )
163 .is_visible(
164 ComponentPropertiesIsVisible::String("true".to_string()),
165 ),
166 ComponentType::GRIDCELL,
167 ).events(vec![])
168 ],
169 ),
170 ComponentGridType::GRID,
171 ).events(vec![])
172 ],
173 )
174 .description(
175 "This is a slightly complicated example app that fetches and displays cat facts".to_string(),
176 )
177 .name("Example Cat Facts Viewer".to_string())
178 .queries(
179 vec![
180 Query::ActionQuery(
181 Box::new(
182 ActionQuery::new(
183 Uuid::parse_str(
184 "92ff0bb8-553b-4f31-87c7-ef5bd16d47d5",
185 ).expect("invalid UUID"),
186 "fetchFacts".to_string(),
187 ActionQueryProperties::new(
188 ActionQuerySpec::ActionQuerySpecObject(
189 Box::new(
190 ActionQuerySpecObject::new(
191 "com.datadoghq.http.request".to_string(),
192 )
193 .connection_id(
194 "5e63f4a8-4ce6-47de-ba11-f6617c1d54f3".to_string(),
195 )
196 .inputs(
197 ActionQuerySpecInputs::ActionQuerySpecInput(
198 BTreeMap::from(
199 [
200 ("verb".to_string(), Value::from("GET")),
201 (
202 "url".to_string(),
203 Value::from(
204 "https://catfact.ninja/facts",
205 ),
206 ),
207 ],
208 ),
209 ),
210 ),
211 ),
212 ),
213 ),
214 ActionQueryType::ACTION,
215 ).events(vec![]),
216 ),
217 ),
218 Query::StateVariable(
219 Box::new(
220 StateVariable::new(
221 Uuid::parse_str(
222 "afd03c81-4075-4432-8618-ba09d52d2f2d",
223 ).expect("invalid UUID"),
224 "pageSize".to_string(),
225 StateVariableProperties::new().default_value(Value::from("${20}")),
226 StateVariableType::STATEVARIABLE,
227 ),
228 ),
229 ),
230 Query::DataTransform(
231 Box::new(
232 DataTransform::new(
233 Uuid::parse_str(
234 "0fb22859-47dc-4137-9e41-7b67d04c525c",
235 ).expect("invalid UUID"),
236 "randomFact".to_string(),
237 DataTransformProperties
238 ::new().outputs(
239 r#"${(() => {const facts = fetchFacts.outputs.body.data
240return facts[Math.floor(Math.random()*facts.length)]
241})()}"#.to_string(),
242 ),
243 DataTransformType::DATATRANSFORM,
244 ),
245 ),
246 )
247 ],
248 )
249 .root_instance_name("grid0".to_string()),
250 ),
251 );
252 let configuration = datadog::Configuration::new();
253 let api = AppBuilderAPI::with_config(configuration);
254 let resp = api.create_app(body).await;
255 if let Ok(value) = resp {
256 println!("{:#?}", value);
257 } else {
258 println!("{:#?}", resp.unwrap_err());
259 }
260}
Sourcepub fn events(self, value: Vec<AppBuilderEvent>) -> Self
pub fn events(self, value: Vec<AppBuilderEvent>) -> Self
Examples found in repository?
examples/v2_app-builder_CreateApp.rs (line 64)
36async fn main() {
37 let body =
38 CreateAppRequest
39 ::new().data(
40 CreateAppRequestData::new(
41 AppDefinitionType::APPDEFINITIONS,
42 ).attributes(
43 CreateAppRequestDataAttributes::new()
44 .components(
45 vec![
46 ComponentGrid::new(
47 "grid0".to_string(),
48 ComponentGridProperties::new()
49 .background_color("default".to_string())
50 .children(
51 vec![
52 Component::new(
53 "gridCell0".to_string(),
54 ComponentProperties::new()
55 .children(
56 vec![
57 Component::new(
58 "text0".to_string(),
59 ComponentProperties
60 ::new().is_visible(
61 ComponentPropertiesIsVisible::Bool(true),
62 ),
63 ComponentType::TEXT,
64 ).events(vec![])
65 ],
66 )
67 .is_visible(
68 ComponentPropertiesIsVisible::String("true".to_string()),
69 ),
70 ComponentType::GRIDCELL,
71 ).events(vec![]),
72 Component::new(
73 "gridCell2".to_string(),
74 ComponentProperties::new()
75 .children(
76 vec![
77 Component::new(
78 "table0".to_string(),
79 ComponentProperties
80 ::new().is_visible(
81 ComponentPropertiesIsVisible::Bool(true),
82 ),
83 ComponentType::TABLE,
84 ).events(vec![])
85 ],
86 )
87 .is_visible(
88 ComponentPropertiesIsVisible::String("true".to_string()),
89 ),
90 ComponentType::GRIDCELL,
91 ).events(vec![]),
92 Component::new(
93 "gridCell1".to_string(),
94 ComponentProperties::new()
95 .children(
96 vec![
97 Component::new(
98 "text1".to_string(),
99 ComponentProperties
100 ::new().is_visible(
101 ComponentPropertiesIsVisible::Bool(true),
102 ),
103 ComponentType::TEXT,
104 ).events(vec![])
105 ],
106 )
107 .is_visible(
108 ComponentPropertiesIsVisible::String("true".to_string()),
109 ),
110 ComponentType::GRIDCELL,
111 ).events(vec![]),
112 Component::new(
113 "gridCell3".to_string(),
114 ComponentProperties::new()
115 .children(
116 vec![
117 Component::new(
118 "button0".to_string(),
119 ComponentProperties
120 ::new().is_visible(
121 ComponentPropertiesIsVisible::Bool(true),
122 ),
123 ComponentType::BUTTON,
124 ).events(
125 vec![
126 AppBuilderEvent::new()
127 .name(AppBuilderEventName::CLICK)
128 .type_(
129 AppBuilderEventType::SETSTATEVARIABLEVALUE,
130 )
131 ],
132 )
133 ],
134 )
135 .is_visible(
136 ComponentPropertiesIsVisible::String("true".to_string()),
137 ),
138 ComponentType::GRIDCELL,
139 ).events(vec![]),
140 Component::new(
141 "gridCell4".to_string(),
142 ComponentProperties::new()
143 .children(
144 vec![
145 Component::new(
146 "button1".to_string(),
147 ComponentProperties
148 ::new().is_visible(
149 ComponentPropertiesIsVisible::Bool(true),
150 ),
151 ComponentType::BUTTON,
152 ).events(
153 vec![
154 AppBuilderEvent::new()
155 .name(AppBuilderEventName::CLICK)
156 .type_(
157 AppBuilderEventType::SETSTATEVARIABLEVALUE,
158 )
159 ],
160 )
161 ],
162 )
163 .is_visible(
164 ComponentPropertiesIsVisible::String("true".to_string()),
165 ),
166 ComponentType::GRIDCELL,
167 ).events(vec![])
168 ],
169 ),
170 ComponentGridType::GRID,
171 ).events(vec![])
172 ],
173 )
174 .description(
175 "This is a slightly complicated example app that fetches and displays cat facts".to_string(),
176 )
177 .name("Example Cat Facts Viewer".to_string())
178 .queries(
179 vec![
180 Query::ActionQuery(
181 Box::new(
182 ActionQuery::new(
183 Uuid::parse_str(
184 "92ff0bb8-553b-4f31-87c7-ef5bd16d47d5",
185 ).expect("invalid UUID"),
186 "fetchFacts".to_string(),
187 ActionQueryProperties::new(
188 ActionQuerySpec::ActionQuerySpecObject(
189 Box::new(
190 ActionQuerySpecObject::new(
191 "com.datadoghq.http.request".to_string(),
192 )
193 .connection_id(
194 "5e63f4a8-4ce6-47de-ba11-f6617c1d54f3".to_string(),
195 )
196 .inputs(
197 ActionQuerySpecInputs::ActionQuerySpecInput(
198 BTreeMap::from(
199 [
200 ("verb".to_string(), Value::from("GET")),
201 (
202 "url".to_string(),
203 Value::from(
204 "https://catfact.ninja/facts",
205 ),
206 ),
207 ],
208 ),
209 ),
210 ),
211 ),
212 ),
213 ),
214 ActionQueryType::ACTION,
215 ).events(vec![]),
216 ),
217 ),
218 Query::StateVariable(
219 Box::new(
220 StateVariable::new(
221 Uuid::parse_str(
222 "afd03c81-4075-4432-8618-ba09d52d2f2d",
223 ).expect("invalid UUID"),
224 "pageSize".to_string(),
225 StateVariableProperties::new().default_value(Value::from("${20}")),
226 StateVariableType::STATEVARIABLE,
227 ),
228 ),
229 ),
230 Query::DataTransform(
231 Box::new(
232 DataTransform::new(
233 Uuid::parse_str(
234 "0fb22859-47dc-4137-9e41-7b67d04c525c",
235 ).expect("invalid UUID"),
236 "randomFact".to_string(),
237 DataTransformProperties
238 ::new().outputs(
239 r#"${(() => {const facts = fetchFacts.outputs.body.data
240return facts[Math.floor(Math.random()*facts.length)]
241})()}"#.to_string(),
242 ),
243 DataTransformType::DATATRANSFORM,
244 ),
245 ),
246 )
247 ],
248 )
249 .root_instance_name("grid0".to_string()),
250 ),
251 );
252 let configuration = datadog::Configuration::new();
253 let api = AppBuilderAPI::with_config(configuration);
254 let resp = api.create_app(body).await;
255 if let Ok(value) = resp {
256 println!("{:#?}", value);
257 } else {
258 println!("{:#?}", resp.unwrap_err());
259 }
260}
pub fn id(self, value: Option<String>) -> Self
pub fn additional_properties(self, value: BTreeMap<String, Value>) -> Self
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Component
impl<'de> Deserialize<'de> for Component
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for Component
Auto Trait Implementations§
impl Freeze for Component
impl RefUnwindSafe for Component
impl Send for Component
impl Sync for Component
impl Unpin for Component
impl UnwindSafe for Component
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more