Skip to main content

ifc_resource/usage/
time.rs

1//! Authored IFC4 `IfcResourceTime` values.
2
3use ifc_model::EntityId;
4
5use crate::error::ResourceResult;
6use crate::view::Record;
7
8#[derive(Debug, Clone, Copy)]
9/// Borrowed projection of `IfcResourceTime`.
10pub 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    /// The entity id of the projected `IfcResourceTime`.
20    #[must_use]
21    pub fn id(&self) -> EntityId {
22        self.record.id
23    }
24
25    /// The `Name` attribute, when authored.
26    pub fn name(&self) -> ResourceResult<Option<&'m str>> {
27        self.record.optional_text("Name")
28    }
29
30    /// The `DataOrigin` enumeration, when authored.
31    pub fn data_origin(&self) -> ResourceResult<Option<&'m str>> {
32        self.record.optional_enum("DataOrigin")
33    }
34
35    /// The `ScheduleWork` duration, when authored.
36    pub fn schedule_work(&self) -> ResourceResult<Option<&'m str>> {
37        self.record.optional_text("ScheduleWork")
38    }
39
40    /// The `ScheduleUsage` ratio, when authored.
41    pub fn schedule_usage(&self) -> ResourceResult<Option<f64>> {
42        self.record.optional_positive_number("ScheduleUsage")
43    }
44
45    /// The `ScheduleStart` date-time, when authored.
46    pub fn schedule_start(&self) -> ResourceResult<Option<&'m str>> {
47        self.record.optional_text("ScheduleStart")
48    }
49
50    /// The `ScheduleFinish` date-time, when authored.
51    pub fn schedule_finish(&self) -> ResourceResult<Option<&'m str>> {
52        self.record.optional_text("ScheduleFinish")
53    }
54
55    /// The `LevelingDelay` duration, when authored.
56    pub fn leveling_delay(&self) -> ResourceResult<Option<&'m str>> {
57        self.record.optional_text("LevelingDelay")
58    }
59
60    /// The `IsOverAllocated` flag, when authored.
61    pub fn is_over_allocated(&self) -> ResourceResult<Option<bool>> {
62        self.record.optional_bool("IsOverAllocated")
63    }
64
65    /// The `ActualWork` duration, when authored.
66    pub fn actual_work(&self) -> ResourceResult<Option<&'m str>> {
67        self.record.optional_text("ActualWork")
68    }
69
70    /// The `ActualUsage` ratio, when authored.
71    pub fn actual_usage(&self) -> ResourceResult<Option<f64>> {
72        self.record.optional_positive_number("ActualUsage")
73    }
74
75    /// The `RemainingWork` duration, when authored.
76    pub fn remaining_work(&self) -> ResourceResult<Option<&'m str>> {
77        self.record.optional_text("RemainingWork")
78    }
79
80    /// The `RemainingUsage` ratio, when authored.
81    pub fn remaining_usage(&self) -> ResourceResult<Option<f64>> {
82        self.record.optional_positive_number("RemainingUsage")
83    }
84
85    /// The `Completion` percentage, when authored.
86    pub fn completion(&self) -> ResourceResult<Option<f64>> {
87        self.record.optional_positive_number("Completion")
88    }
89}