Skip to content
This repository was archived by the owner on Nov 24, 2024. It is now read-only.

Commit 9beddca

Browse files
committed
You can now toggle showing time columns in work schedule, minor fixes and ui cleanup
1 parent 6d97705 commit 9beddca

3 files changed

Lines changed: 26 additions & 15 deletions

File tree

src/blenderbim/blenderbim/bim/module/sequence/operator.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import json
33
import ifcopenshell.api
44
from datetime import datetime
5-
from dateutil.parser import parse
5+
from dateutil import parser
66
from blenderbim.bim.ifc import IfcStore
77
from ifcopenshell.api.sequence.data import Data
88

@@ -587,9 +587,12 @@ def convert_strings_to_date_times(self, attributes):
587587
continue
588588
if "Start" in key or "Finish" in key or key == "StatusTime":
589589
try:
590-
attributes[key] = parse(value)
590+
attributes[key] = parser.isoparse(value)
591591
except:
592-
attributes[key] = None
592+
try:
593+
attributes[key] = parser.parse(value, dayfirst=True, fuzzy=True)
594+
except:
595+
attributes[key] = None
593596
return attributes
594597

595598

src/blenderbim/blenderbim/bim/module/sequence/prop.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from blenderbim.bim.ifc import IfcStore
44
from ifcopenshell.api.sequence.data import Data
55
from blenderbim.bim.prop import StrProperty, Attribute
6-
from dateutil.parser import parse
6+
from dateutil import parser
77
from bpy.types import PropertyGroup
88
from bpy.props import (
99
PointerProperty,
@@ -68,14 +68,17 @@ def canonicalise_time(time):
6868

6969
if startfinish_value == "-":
7070
return
71+
7172
self.file = IfcStore.get_file()
72-
props = context.scene.BIMWorkScheduleProperties
7373

7474
try:
75-
startfinish_datetime = parse(startfinish_value)
75+
startfinish_datetime = parser.isoparse(startfinish_value)
7676
except:
77-
setattr(self, startfinish, "-")
78-
return
77+
try:
78+
startfinish_datetime = parser.parse(startfinish_value, dayfirst=True, fuzzy=True)
79+
except:
80+
setattr(self, startfinish, "-")
81+
return
7982

8083
task = self.file.by_id(self.ifc_definition_id)
8184
if task.TaskTime:
@@ -85,6 +88,9 @@ def canonicalise_time(time):
8588
Data.load(IfcStore.get_file())
8689

8790
if Data.task_times[task_time.id()][startfinish_key] == startfinish_datetime:
91+
canonical_startfinish_value = canonicalise_time(startfinish_datetime)
92+
if startfinish_value != canonical_startfinish_value:
93+
setattr(self, startfinish, canonical_startfinish_value)
8894
return
8995

9096
ifcopenshell.api.run(
@@ -130,6 +136,7 @@ class BIMWorkScheduleProperties(PropertyGroup):
130136
active_task_index: IntProperty(name="Active Task Index")
131137
active_task_id: IntProperty(name="Active Task Id")
132138
task_attributes: CollectionProperty(name="Task Attributes", type=Attribute)
139+
should_show_times: BoolProperty(name="Should Show Times", default=False)
133140
active_task_time_id: IntProperty(name="Active Task Id")
134141
task_time_attributes: CollectionProperty(name="Task Time Attributes", type=Attribute)
135142
contracted_tasks: StringProperty(name="Contracted Task Items", default="[]")

src/blenderbim/blenderbim/bim/module/sequence/ui.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ def draw_work_schedule_ui(self, work_schedule_id, work_schedule):
9898
if self.props.active_work_schedule_id and self.props.active_work_schedule_id == work_schedule_id:
9999
if self.props.is_editing == "WORK_SCHEDULE":
100100
row.operator("bim.edit_work_schedule", text="", icon="CHECKMARK")
101+
elif self.props.is_editing == "TASKS":
102+
row.prop(self.props, "should_show_times", text="", icon="TIME")
103+
row.operator("bim.add_summary_task", text="", icon="ADD").work_schedule = work_schedule_id
101104
row.operator("bim.disable_editing_work_schedule", text="", icon="CANCEL")
102105
elif self.props.active_work_schedule_id:
103106
row.operator("bim.remove_work_schedule", text="", icon="X").work_schedule = work_schedule_id
@@ -124,9 +127,6 @@ def draw_editable_work_schedule_ui(self):
124127
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
125128

126129
def draw_editable_task_ui(self, work_schedule_id):
127-
row = self.layout.row(align=True)
128-
row.label(text="X Summary Tasks")
129-
row.operator("bim.add_summary_task", text="", icon="ADD").work_schedule = work_schedule_id
130130
self.layout.template_list(
131131
"BIM_UL_tasks",
132132
"",
@@ -256,9 +256,10 @@ def draw_item(self, context, layout, data, item, icon, active_data, active_propn
256256
row.prop(item, "identification", emboss=False, text="")
257257
row.prop(item, "name", emboss=False, text="")
258258

259-
row.prop(item, "start", emboss=False, text="")
260-
row.prop(item, "finish", emboss=False, text="")
261-
row.prop(item, "duration", emboss=False, text="")
259+
if props.should_show_times:
260+
row.prop(item, "start", emboss=False, text="")
261+
row.prop(item, "finish", emboss=False, text="")
262+
row.prop(item, "duration", emboss=False, text="")
262263

263264
if props.active_task_id == item.ifc_definition_id:
264265
if props.active_task_time_id:
@@ -289,6 +290,6 @@ def draw_item(self, context, layout, data, item, icon, active_data, active_propn
289290
row.operator("bim.remove_task", text="", icon="X").task = item.ifc_definition_id
290291
else:
291292
row.operator("bim.enable_editing_task_time", text="", icon="TIME").task = item.ifc_definition_id
292-
row.operator("bim.add_task", text="", icon="ADD").task = item.ifc_definition_id
293293
row.operator("bim.enable_editing_task", text="", icon="GREASEPENCIL").task = item.ifc_definition_id
294+
row.operator("bim.add_task", text="", icon="ADD").task = item.ifc_definition_id
294295
row.operator("bim.remove_task", text="", icon="X").task = item.ifc_definition_id

0 commit comments

Comments
 (0)