fix displaying derived task durations

This commit is contained in:
Sigma Dimensions (Yass)
2023-12-17 20:20:52 +01:00
parent 49835ee303
commit df390a655d
2 changed files with 19 additions and 20 deletions
+13 -20
View File
@@ -184,11 +184,6 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod @classmethod
def load_task_properties(cls, task=None): def load_task_properties(cls, task=None):
def canonicalise_time(time):
if not time:
return "-"
return time.strftime("%d/%m/%y")
props = bpy.context.scene.BIMWorkScheduleProperties props = bpy.context.scene.BIMWorkScheduleProperties
task_props = bpy.context.scene.BIMTaskTreeProperties task_props = bpy.context.scene.BIMTaskTreeProperties
tasks_with_visual_bar = cls.get_task_bar_list() tasks_with_visual_bar = cls.get_task_bar_list()
@@ -218,12 +213,16 @@ class Sequence(blenderbim.core.tool.Sequence):
): ):
task_time = task.TaskTime task_time = task.TaskTime
item.start = ( item.start = (
canonicalise_time(ifcopenshell.util.date.ifc2datetime(task_time.ScheduleStart)) ifcopenshell.util.date.canonicalise_time(
ifcopenshell.util.date.ifc2datetime(task_time.ScheduleStart)
)
if task_time.ScheduleStart if task_time.ScheduleStart
else "-" else "-"
) )
item.finish = ( item.finish = (
canonicalise_time(ifcopenshell.util.date.ifc2datetime(task_time.ScheduleFinish)) ifcopenshell.util.date.canonicalise_time(
ifcopenshell.util.date.ifc2datetime(task_time.ScheduleFinish)
)
if task_time.ScheduleFinish if task_time.ScheduleFinish
else "-" else "-"
) )
@@ -235,13 +234,13 @@ class Sequence(blenderbim.core.tool.Sequence):
else: else:
derived_start = ifcopenshell.util.sequence.derive_date(task, "ScheduleStart", is_earliest=True) derived_start = ifcopenshell.util.sequence.derive_date(task, "ScheduleStart", is_earliest=True)
derived_finish = ifcopenshell.util.sequence.derive_date(task, "ScheduleFinish", is_latest=True) derived_finish = ifcopenshell.util.sequence.derive_date(task, "ScheduleFinish", is_latest=True)
item.derived_start = canonicalise_time(derived_start) if derived_start else "" item.derived_start = ifcopenshell.util.date.canonicalise_time(derived_start) if derived_start else ""
item.derived_finish = canonicalise_time(derived_finish) if derived_finish else "" item.derived_finish = ifcopenshell.util.date.canonicalise_time(derived_finish) if derived_finish else ""
if derived_start and derived_finish and calendar: if derived_start and derived_finish:
derived_duration = ifcopenshell.util.sequence.count_working_days( derived_duration = ifcopenshell.util.sequence.count_working_days(
derived_start, derived_finish, calendar derived_start, derived_finish, calendar
) )
item.derived_duration = f"P{derived_duration}D" item.derived_duration = str(ifcopenshell.util.date.readable_ifc_duration(f"P{derived_duration}D"))
item.start = "-" item.start = "-"
item.finish = "-" item.finish = "-"
item.duration = "-" item.duration = "-"
@@ -786,21 +785,15 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod @classmethod
def update_visualisation_date(cls, start_date, finish_date): def update_visualisation_date(cls, start_date, finish_date):
def canonicalise_time(time):
return time.strftime("%d/%m/%y")
if not (start_date and finish_date): if not (start_date and finish_date):
return return
props = bpy.context.scene.BIMWorkScheduleProperties props = bpy.context.scene.BIMWorkScheduleProperties
props.visualisation_start = canonicalise_time(start_date) props.visualisation_start = ifcopenshell.util.date.canonicalise_time(start_date)
props.visualisation_finish = canonicalise_time(finish_date) props.visualisation_finish = ifcopenshell.util.date.canonicalise_time(finish_date)
@classmethod @classmethod
def get_animation_bar_tasks(cls): def get_animation_bar_tasks(cls):
return [ return [tool.Ifc.get().by_id(task_id) for task_id in cls.get_task_bar_list()]
tool.Ifc.get().by_id(task_id)
for task_id in cls.get_task_bar_list()
]
@classmethod @classmethod
def create_bars(cls, tasks): def create_bars(cls, tasks):
@@ -227,3 +227,9 @@ def parse_duration(value):
except: except:
print("error fuzzy parsing duration") print("error fuzzy parsing duration")
return None return None
def canonicalise_time(time):
if not time:
return "-"
return time.strftime("%d/%m/%y")