@@ -43,7 +43,7 @@ module OsLib_AdvImport
4343 def self . add_objects_from_adv_import_hash ( runner , model , advanced_inputs )
4444
4545 # make schedules
46- schedules = import_schs ( runner , model , advanced_inputs [ :schedules ] )
46+ schedules = import_schs ( runner , model , advanced_inputs [ :schedules ] , advanced_inputs [ :week_schedules ] , advanced_inputs [ :day_schedules ] )
4747
4848 # make schedules sets
4949 schedule_sets = import_sch_set ( runner , model , advanced_inputs [ :schedule_sets ] , schedules )
@@ -148,17 +148,101 @@ def self.assign_space_attributes(runner, model, spaces, schedule_sets, lights, e
148148 end
149149
150150 # create ruleset schedule from inputs
151- def self . import_schs ( runner , model , schedules )
151+ def self . import_schs ( runner , model , schedules , week_schedules , day_schedules )
152152
153153 # loop through and add schedules
154154 new_schedules = { }
155+
156+ # process schedule data
155157 schedules . each do |id , schedule_data |
156- # todo - populate schedule using schedule_data to update default profile and add rules to complex schedule
157- options = { 'name' => id , 'default_day' => [ 'always_on' , [ 24.0 , 0.3 ] ] }
158+
159+ # get schedule name
160+ if !schedule_data [ 'name' ] . nil?
161+ ruleset_name = schedule_data [ 'name' ]
162+ else
163+ ruleset_name = id
164+ end
165+ date_range = '1/1-12/31' # todo - in future pull form gbxml
166+ winter_design_day = nil
167+ summer_design_day = nil
168+ default_day = nil
169+ rules = [ ]
170+
171+ # get WeekSchedule
172+ week_schs = week_schedules [ schedule_data [ 'sch_week' ] ]
173+
174+ # loop through dayTypes
175+ week_schs . each do |day_type , day_obj |
176+
177+ # get associated dayType items
178+ time_value_array_raw = [ ]
179+ day_schedules [ day_obj ] . each_with_index do |value , i |
180+ time_value_array_raw << [ i +1 , value ]
181+ end
182+
183+ # clean up excess values
184+ time_value_array = [ ]
185+ last_val = nil
186+ time_value_array_raw . reverse . each do |time_val |
187+ if last_val . nil?
188+ time_value_array << time_val
189+ elsif last_val != time_val [ 1 ]
190+ time_value_array << time_val
191+ end
192+ last_val = time_val [ 1 ]
193+ end
194+ time_value_array = time_value_array . reverse
195+
196+ # create default profile, rule, or design day #
197+ if day_type == "HeatingDesignDay"
198+ winter_design_day = time_value_array
199+ elsif day_type == "CoolingDesignDay"
200+ summer_design_day = time_value_array
201+ elsif day_type == "Holiday"
202+ # do nothing, not currently supporting holidays
203+ elsif default_day . nil?
204+ default_day = time_value_array . insert ( 0 , day_type ) #day_type is name of default day profile object
205+ elsif day_type == "All"
206+ prefix_array = [ day_type , date_range , 'Mon/Tue/Wed/Thu/Fri/Sat/Sun' ]
207+ rules << prefix_array + time_value_array
208+ elsif day_type == "Weekday"
209+ prefix_array = [ day_type , date_range , 'Mon/Tue/Wed/Thu/Fri' ]
210+ rules << prefix_array + time_value_array
211+ elsif day_type == "Sat"
212+ prefix_array = [ day_type , date_range , 'Sat' ]
213+ rules << prefix_array + time_value_array
214+ elsif day_type == "Sun"
215+ prefix_array = [ day_type , date_range , 'Sun' ]
216+ rules << prefix_array + time_value_array
217+ elsif day_type == "Mon"
218+ prefix_array = [ day_type , date_range , 'Mon' ]
219+ rules << prefix_array + time_value_array
220+ elsif day_type == "Tue"
221+ prefix_array = [ day_type , date_range , 'Tue' ]
222+ rules << prefix_array + time_value_array
223+ elsif day_type == "Wed"
224+ prefix_array = [ day_type , date_range , 'Wed' ]
225+ rules << prefix_array + time_value_array
226+ elsif day_type == "Thu" #todo - confirm weekday abbreviations
227+ prefix_array = [ day_type , date_range , 'Thu' ]
228+ rules << prefix_array + time_value_array
229+ elsif day_type == "Fri"
230+ prefix_array = [ day_type , date_range , 'Fri' ]
231+ rules << prefix_array + time_value_array
232+ end
233+ end
234+
235+ # populate schedule using schedule_data to update default profile and add rules to complex schedule
236+ options = { 'name' => ruleset_name ,
237+ 'winter_design_day' => winter_design_day ,
238+ 'summer_design_day' => summer_design_day ,
239+ 'default_day' => default_day ,
240+ 'rules' => rules }
241+
158242 sch_ruleset = OsLib_Schedules . createComplexSchedule ( model , options )
159243 new_schedules [ id ] = sch_ruleset
160244 end
161- runner . registerInfo ( "Created #{ new_schedules . size } new Schedule Ruleset objets ." )
245+ runner . registerInfo ( "Created #{ new_schedules . size } new ScheduleRuleset objects (not including activity schedules) ." )
162246
163247 return new_schedules
164248 end
@@ -186,7 +270,7 @@ def self.import_sch_set(runner, model, schedule_sets, schedules)
186270 default_sch_set . setNumberofPeopleSchedule ( target_sch )
187271 end
188272 end
189- runner . registerInfo ( "Created #{ new_schedule_sets . size } new Default Schedule Set objets ." )
273+ runner . registerInfo ( "Created #{ new_schedule_sets . size } new DefaultScheduleSet objects ." )
190274
191275 return new_schedule_sets
192276 end
0 commit comments