Skip to content

Commit

Permalink
Merge pull request #48 from macumber/os_3
Browse files Browse the repository at this point in the history
Adding github actions and make support for OS 3.0
  • Loading branch information
macumber authored May 25, 2020
2 parents d2cb912 + 1c498a9 commit 373b1eb
Show file tree
Hide file tree
Showing 20 changed files with 16,734 additions and 101 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/pull_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Pull Request CI

on:
pull_request:
branches:
- master

jobs:
test_2x:
runs-on: ubuntu-18.04
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Run Tests
run: |
echo $(pwd)
echo $(ls)
docker pull nrel/openstudio:2.9.1
docker run --name test --rm -d -t -v $(pwd):/work -w /work nrel/openstudio:2.9.1
docker exec -t test pwd
docker exec -t test ls
docker exec -t test which openstudio
docker exec -t test openstudio openstudio_version
docker exec -t test bundle update
docker exec -t test bundle exec rake
docker kill test
test_3x:
runs-on: ubuntu-18.04
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Run Tests
run: |
echo $(pwd)
echo $(ls)
docker pull nrel/openstudio:3.0.0
docker run --name test --rm -d -t -v $(pwd):/work -w /work nrel/openstudio:3.0.0
docker exec -t test pwd
docker exec -t test ls
docker exec -t test which openstudio
docker exec -t test openstudio openstudio_version
docker exec -t test bundle update
docker exec -t test bundle exec rake
docker kill test
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
output
.DS_Store
.DS_Store
config.rb
Gemfile.lock
ViewData.zip
ViewModel.zip
5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source 'http://rubygems.org'

gem 'rake'

gem 'rest-client'
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

Exporter of OpenStudio Model to [vA3C](http://va3c.github.io/) JSON format. This reporting measure exports an OpenStudio model to the [vA3C](http://va3c.github.io/) JSON format. Additional user data is added to all surfaces in the export. The JSON file is configured into an html file and rendered using Three.js.

A huge thanks goes out to [Theo Armour](https://github.com/theo-armour) and the [vA3C team](http://va3c.github.io/) for helping figure out how to do all this stuff.
A huge thanks goes out to [Theo Armour](https://github.com/theo-armour) and the [vA3C team](http://va3c.github.io/) for helping figure out how to do all this stuff.

Type `rake` to build html for measures and app
107 changes: 107 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#require 'bundler'
#Bundler.setup

require 'rake'
require 'rest-client'
require 'fileutils'
require 'open3'

begin
require_relative 'config'
rescue LoadError
require 'openstudio'
$OPENSTUDIO_EXE = OpenStudio::getOpenStudioCLI
end

def get_clean_env
new_env = {}
new_env['BUNDLER_ORIG_MANPATH'] = nil
new_env['BUNDLER_ORIG_PATH'] = nil
new_env['BUNDLER_VERSION'] = nil
new_env['BUNDLE_BIN_PATH'] = nil
new_env['RUBYLIB'] = nil
new_env['RUBYOPT'] = nil
new_env['GEM_PATH'] = nil
new_env['GEM_HOME'] = nil
new_env['BUNDLE_GEMFILE'] = nil
new_env['BUNDLE_PATH'] = nil
new_env['BUNDLE_WITHOUT'] = nil

return new_env
end

desc 'Build html files for measures and OS App'
task :build do

in_file = ""
app_file = ""
removing = false
File.open('report.html.in', 'r') do |file|
file.each_line do |line|

if md = /<script\s*src=\"(.*?)\"><\/script>/.match(line)
url = md[1].gsub('https', 'http')
request = RestClient::Resource.new(url)
response = request.get
line = "<script>#{response}</script>\n"
end

in_file += line

if /\/\/ BEGIN_REMOVE/.match(line)
removing = true
next
elsif /\/\/ END_REMOVE/.match(line)
removing = false
next
elsif removing
next
end

app_file += line

end
end

File.open(File.join(File.dirname(__FILE__), 'ViewModel/resources/report.html.in'), 'w') do |file|
file << in_file
end

File.open(File.join(File.dirname(__FILE__), 'ViewData/resources/report.html.in'), 'w') do |file|
file << in_file
end

File.open(File.join(File.dirname(__FILE__), 'geometry_preview.html'), 'w') do |file|
file << app_file
end

FileUtils.cp('va3c.rb', File.join(File.dirname(__FILE__), 'ViewModel/resources/va3c.rb'))

FileUtils.cp('va3c.rb', File.join(File.dirname(__FILE__), 'ViewData/resources/va3c.rb'))

cmd = "\"#{$OPENSTUDIO_EXE}\" measure --update_all ."
puts cmd
stdout_str, stderr_str, status = Open3.capture3(get_clean_env, cmd)
end

desc 'Run Measure Tests'
task :test do

Dir.chdir("#{File.join(File.dirname(__FILE__), 'ViewModel/tests/')}")
cmd = "\"#{$OPENSTUDIO_EXE}\" ViewModel_Test.rb"
puts cmd
view_model_stdout, view_model_stderr, status = Open3.capture3(get_clean_env, cmd)
view_model_result = status.success?

Dir.chdir("#{File.join(File.dirname(__FILE__), 'ViewData/tests/')}")
cmd = "\"#{$OPENSTUDIO_EXE}\" ViewData_Test.rb"
puts cmd
view_data_stdout, view_data_stderr, status = Open3.capture3(get_clean_env, cmd)
view_data_result = status.success?

puts view_model_stdout if !view_model_result
puts view_data_stdout if !view_data_result
puts "Test failed" if !(view_model_result && view_data_result)
end

task :default => [:build, :test]
20 changes: 16 additions & 4 deletions ViewData/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def energyPlusOutputRequests(runner, user_arguments)
end

#define the arguments that the user will input
def arguments()
def arguments(model = nil)
args = OpenStudio::Ruleset::OSArgumentVector.new

chs = OpenStudio::StringVector.new
Expand Down Expand Up @@ -326,14 +326,26 @@ def run(runner, user_arguments)
# convert the model to vA3C JSON format
start_time = Time.now
#puts "converting model to vA3C"
json = VA3C.convert_model(model)
json = nil
model_clone = model.clone(true).to_Model
begin
# try to use new implementation
ft = OpenStudio::Model::ThreeJSForwardTranslator.new
three_scene = ft.modelToThreeJS(model_clone, true)
json = JSON::parse(three_scene.toJSON(false), {:symbolize_names=>true})
runner.registerInfo("Used new ThreeScene translator.")
rescue NameError, StandardError
# use old Ruby implementation
runner.registerInfo("Using Ruby VA3C translator.")
json = VA3C.convert_model(model_clone)
end
#puts "finished converting model, elapsed time #{Time.now-start_time}"

json['metadata'][:variables] = meta_variables
json[:metadata][:variables] = meta_variables
json[:times] = [times]
json[:variables] = variables

json['object'][:children].each do |child|
json[:object][:children].each do |child|
name = child[:userData][:name].upcase

surface = surface_data.find{|x| x[:surface_name] == name}
Expand Down
57 changes: 41 additions & 16 deletions ViewData/measure.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
<?xml version="1.0"?>
<measure>
<schema_version>3.0</schema_version>
<name>view_data</name>
<uid>18cf0de7-48b8-48dc-ab68-0dd29f0b8bd0</uid>
<version_id>7e448bf5-dde3-4d38-839a-36c2ae2d61f7</version_id>
<version_modified>20170406T055611Z</version_modified>
<<<<<<< HEAD
<version_id>bc508652-e41d-44de-81d7-c21b5d79a20d</version_id>
<version_modified>20200525T163649Z</version_modified>
=======
<version_id>6ad1aae4-c89f-4bb8-98e8-803f1917d21c</version_id>
<version_modified>20190824T213203Z</version_modified>
>>>>>>> remotes/origin/updates
<xml_checksum>2C8A3EEF</xml_checksum>
<class_name>ViewData</class_name>
<display_name>ViewData</display_name>
Expand Down Expand Up @@ -71,8 +77,8 @@
<default_value>Zone Mean Radiant Temperature</default_value>
</argument>
</arguments>
<outputs/>
<provenances/>
<outputs />
<provenances />
<tags>
<tag>Reporting.QAQC</tag>
</tags>
Expand Down Expand Up @@ -108,33 +114,52 @@
<checksum>1B6496DE</checksum>
</file>
<file>
<version>
<software_program>OpenStudio</software_program>
<identifier>1.6.3</identifier>
<min_compatible>1.6.3</min_compatible>
</version>
<filename>measure.rb</filename>
<<<<<<< HEAD
=======
<filename>ViewData_Test.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>7748F9FF</checksum>
<usage_type>test</usage_type>
<checksum>EA9EEFB9</checksum>
</file>
<file>
>>>>>>> remotes/origin/updates
<filename>va3c.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>B379913D</checksum>
<checksum>7557DEA6</checksum>
</file>
<file>
<filename>report.html.in</filename>
<filetype>in</filetype>
<usage_type>resource</usage_type>
<checksum>9E373859</checksum>
<checksum>61B6B47E</checksum>
</file>
<file>
<filename>ViewData_Test.rb</filename>
<version>
<software_program>OpenStudio</software_program>
<identifier>1.6.3</identifier>
<min_compatible>1.6.3</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<<<<<<< HEAD
<usage_type>test</usage_type>
<checksum>EA9EEFB9</checksum>
<checksum>FA57717A</checksum>
</file>
<file>
<version>
<software_program>OpenStudio</software_program>
<identifier>1.6.3</identifier>
<min_compatible>1.6.3</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>2D2B7411</checksum>
=======
<usage_type>script</usage_type>
<checksum>F4A6F83E</checksum>
>>>>>>> remotes/origin/updates
</file>
</files>
</measure>
Loading

0 comments on commit 373b1eb

Please sign in to comment.