ifc_resource/usage/
time.rs1use ifc_model::EntityId;
4
5use crate::error::ResourceResult;
6use crate::view::Record;
7
8#[derive(Debug, Clone, Copy)]
9pub struct ResourceTime<'m, 's> {
11 record: Record<'m, 's>,
12}
13
14impl<'m, 's> ResourceTime<'m, 's> {
15 pub(crate) fn from_record(record: Record<'m, 's>) -> Self {
16 Self { record }
17 }
18
19 #[must_use]
21 pub fn id(&self) -> EntityId {
22 self.record.id
23 }
24
25 pub fn name(&self) -> ResourceResult<Option<&'m str>> {
27 self.record.optional_text("Name")
28 }
29
30 pub fn data_origin(&self) -> ResourceResult<Option<&'m str>> {
32 self.record.optional_enum("DataOrigin")
33 }
34
35 pub fn schedule_work(&self) -> ResourceResult<Option<&'m str>> {
37 self.record.optional_text("ScheduleWork")
38 }
39
40 pub fn schedule_usage(&self) -> ResourceResult<Option<f64>> {
42 self.record.optional_positive_number("ScheduleUsage")
43 }
44
45 pub fn schedule_start(&self) -> ResourceResult<Option<&'m str>> {
47 self.record.optional_text("ScheduleStart")
48 }
49
50 pub fn schedule_finish(&self) -> ResourceResult<Option<&'m str>> {
52 self.record.optional_text("ScheduleFinish")
53 }
54
55 pub fn leveling_delay(&self) -> ResourceResult<Option<&'m str>> {
57 self.record.optional_text("LevelingDelay")
58 }
59
60 pub fn is_over_allocated(&self) -> ResourceResult<Option<bool>> {
62 self.record.optional_bool("IsOverAllocated")
63 }
64
65 pub fn actual_work(&self) -> ResourceResult<Option<&'m str>> {
67 self.record.optional_text("ActualWork")
68 }
69
70 pub fn actual_usage(&self) -> ResourceResult<Option<f64>> {
72 self.record.optional_positive_number("ActualUsage")
73 }
74
75 pub fn remaining_work(&self) -> ResourceResult<Option<&'m str>> {
77 self.record.optional_text("RemainingWork")
78 }
79
80 pub fn remaining_usage(&self) -> ResourceResult<Option<f64>> {
82 self.record.optional_positive_number("RemainingUsage")
83 }
84
85 pub fn completion(&self) -> ResourceResult<Option<f64>> {
87 self.record.optional_positive_number("Completion")
88 }
89}