Skip to content

Commit

Permalink
Updating to fail gracefully if local storage is not available
Browse files Browse the repository at this point in the history
  • Loading branch information
macumber committed Apr 29, 2015
1 parent 3e07ae4 commit 15cce0a
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 76 deletions.
9 changes: 1 addition & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,4 @@

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.

Todo:
- [x] Basic 3D rendering
- [x] Support multiple render modes (boundary condition, construction, thermal zone, outward normal)
- [x] Ability to render all stories or subset of stories
- [ ] Section cuts
- [ ] Render by data
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.
14 changes: 7 additions & 7 deletions ViewData/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<schema_version>3.0</schema_version>
<name>view_data</name>
<uid>18cf0de7-48b8-48dc-ab68-0dd29f0b8bd0</uid>
<version_id>48df08a6-a99f-4473-919f-be8db1663bf9</version_id>
<version_id>cb8adc01-2ee9-451d-9e98-58d95f9ccf3b</version_id>
<xml_checksum>2C8A3EEF</xml_checksum>
<class_name>ViewData</class_name>
<display_name>ViewData</display_name>
Expand Down Expand Up @@ -82,12 +82,6 @@
<usage_type>resource</usage_type>
<checksum>EDB52605</checksum>
</file>
<file>
<filename>report.html.in</filename>
<filetype>in</filetype>
<usage_type>resource</usage_type>
<checksum>253FE630</checksum>
</file>
<file>
<filename>USA_CO_Golden-NREL.724666_TMY3.epw</filename>
<filetype>epw</filetype>
Expand All @@ -100,5 +94,11 @@
<usage_type>test</usage_type>
<checksum>FE169957</checksum>
</file>
<file>
<filename>report.html.in</filename>
<filetype>in</filetype>
<usage_type>resource</usage_type>
<checksum>5BDC7B87</checksum>
</file>
</files>
</measure>
100 changes: 73 additions & 27 deletions ViewData/resources/report.html.in
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>OpenStudio Model</title>
<title>View OpenStudio Model</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r71/three.min.js"></script>
Expand Down Expand Up @@ -76,31 +76,77 @@ var mouse;
var headsUp;
var intersected, selected_material, selected_material_back;

var getStringFromLocalStorage = function (key, defaultValue) {
try {
value = localStorage.getItem(key);
if (value == null){
return defaultValue;
}else{
return value;
}
} catch(e) {
return defaultValue;
}
}

var getBoolFromLocalStorage = function (key, defaultValue) {
try {
value = localStorage.getItem(key);
if (value == null){
return defaultValue;
}else{
return (value == 'true');
}
} catch(e) {
return defaultValue;
}
}

var getFloatFromLocalStorage = function (key, defaultValue) {
try {
value = localStorage.getItem(key);
if (value == null){
return defaultValue;
}else{
return parseFloat(value);
}
} catch(e) {
return defaultValue;
}
}

var setLocalStorage = function (key, value) {
try {
localStorage.setItem(key, value);
} catch(e) {
}
}

var settings = {
renderBy: 'Surface Type',
showStory: 'All Stories',
showFloors: (localStorage.getItem('showFloors') == null) ? true : (localStorage.getItem('showFloors') == 'true'),
showWalls: (localStorage.getItem('showWalls') == null) ? true : (localStorage.getItem('showWalls') == 'true'),
showRoofCeilings: (localStorage.getItem('showRoofCeilings') == null) ? true : (localStorage.getItem('showRoofCeilings') == 'true'),
showWindows: (localStorage.getItem('showWindows') == null) ? true : (localStorage.getItem('showWindows') == 'true'),
showDoors: (localStorage.getItem('showDoors') == null) ? true : (localStorage.getItem('showDoors') == 'true'),
showShading: (localStorage.getItem('showShading') == null) ? true : (localStorage.getItem('showShading') == 'true'),
showWireframe: (localStorage.getItem('showWireframe') == 'true') || false,
showFloors: getBoolFromLocalStorage('showFloors', true),
showWalls: getBoolFromLocalStorage('showWalls', true),
showRoofCeilings: getBoolFromLocalStorage('showRoofCeilings', true),
showWindows: getBoolFromLocalStorage('showWindows', true),
showDoors: getBoolFromLocalStorage('showDoors', true),
showShading: getBoolFromLocalStorage('showShading', true),
showWireframe: getBoolFromLocalStorage('showWireframe', true),
xView: function() {setAllCameraAngles(0, 0, 1);},
yView: function() {setAllCameraAngles(-90, 0, 1);},
zView: function() {setAllCameraAngles(0, 90, 1);},
reset: function() {setAllCameraAngles(-30, 30, 1);},
orthographic: (localStorage.getItem('orthographic') == 'true') || false,
orthographic: getBoolFromLocalStorage('showWireframe', false),
xSection: 0,
ySection: 0,
zSection: 0,
variableName: '',
colorScheme: localStorage.getItem('colorScheme') || 'diverging',
colorScheme: getStringFromLocalStorage('colorScheme', 'diverging'),
daySlider: 0,
hourSlider: 1,
cycleHour: false,
cycleSpeed: parseFloat(localStorage.getItem('cycleSpeed')) || 1.0,
rotateColorBar: (localStorage.getItem('rotateColorBar') == 'true') || false,
cycleSpeed: getFloatFromLocalStorage('cycleSpeed', 1.0),
rotateColorBar: getBoolFromLocalStorage('rotateColorBar', false),
dateTime: ''
};

Expand Down Expand Up @@ -226,8 +272,8 @@ function drop(ev) {
style.left = left + 'px';
setTimeout(function() {container.classList.remove('ignore-transition');}, 1);
fitInWindow();
localStorage.setItem('colorBarTop', parseInt(style.top));
localStorage.setItem('colorBarLeft', parseInt(style.left));
setLocalStorage('colorBarTop', parseInt(style.top));
setLocalStorage('colorBarLeft', parseInt(style.left));
}

init();
Expand Down Expand Up @@ -387,8 +433,8 @@ function init() {
document.documentElement.setAttribute('ondrop', 'drop(event)');
document.documentElement.setAttribute('ondragover', 'allowDrop(event)');

var top = localStorage.getItem('colorBarTop') || 0;
var left = localStorage.getItem('colorBarLeft') || 0;
var top = getFloatFromLocalStorage('colorBarTop', 0);
var left = getFloatFromLocalStorage('colorBarLeft', 0);
colorBarContainer = document.body.appendChild(document.createElement('div'));
colorBarContainer.setAttribute('id', 'color-bar-container');
colorBarContainer.setAttribute('draggable', 'true');
Expand Down Expand Up @@ -800,7 +846,7 @@ var update = function (value) {
dataFolder = gui.addFolder('Data Rendering');
dataFolder.add(settings, 'variableName', variable_names).name('Variable').onChange(updateVariable);
dataFolder.add(settings, 'colorScheme', {'Grayscale': 'grayscale', 'Sequential': 'sequential', 'Diverging': 'diverging', 'Rainbow': 'rainbow'}).name('Color Scheme').onChange(function(value) {
localStorage.setItem('colorScheme', value);
setLocalStorage('colorScheme', value);
updateColorBar();
update(value);
});
Expand All @@ -814,15 +860,15 @@ var update = function (value) {
colorBarContainer.classList.remove('rotate');
}
fitInWindow();
localStorage.setItem('rotateColorBar', value);
setLocalStorage('rotateColorBar', value);
});
dataFolder.add(settings, 'cycleHour').name('Cycle Hour').onChange(function(cycleHourValue) {
if (cycleHourValue) {
cycleHour();
}
});
dataFolder.add(settings, 'cycleSpeed', 1, 10).name('Cycle Speed').onChange(function(value) {
localStorage.setItem('cycleSpeed', value);
setLocalStorage('cycleSpeed', value);
});
dataFolder.open();
document.getElementById('color-bar-container').style.display = 'block';
Expand Down Expand Up @@ -1050,44 +1096,44 @@ document.addEventListener('DOMContentLoaded', function(event) {
var f1 = gui.addFolder('Surface Filters');
f1.add(settings, 'showFloors').name('Show Floors').onChange(function(value) {
removeSelection();
localStorage.setItem('showFloors', value);
setLocalStorage('showFloors', value);
update(value);
});
f1.add(settings, 'showWalls').name('Show Walls').onChange(function(value) {
removeSelection();
localStorage.setItem('showWalls', value);
setLocalStorage('showWalls', value);
update(value);
});
f1.add(settings, 'showRoofCeilings').name('Show Roofs').onChange(function(value) {
removeSelection();
localStorage.setItem('showRoofCeilings', value);
setLocalStorage('showRoofCeilings', value);
update(value);
});
f1.add(settings, 'showWindows').name('Show Windows').onChange(function(value) {
removeSelection();
localStorage.setItem('showWindows', value);
setLocalStorage('showWindows', value);
update(value);
});
f1.add(settings, 'showDoors').name('Show Doors').onChange(function(value) {
removeSelection();
localStorage.setItem('showDoors', value);
setLocalStorage('showDoors', value);
update(value);
});
f1.add(settings, 'showShading').name('Show Shading').onChange(function(value) {
removeSelection();
localStorage.setItem('showShading', value);
setLocalStorage('showShading', value);
update(value);
});
f1.add(settings, 'showWireframe').name('Show Wireframe').onChange(function(value) {
removeSelection();
localStorage.setItem('showWireframe', value);
setLocalStorage('showWireframe', value);
update(value);
});
f1.open();

var f2 = gui.addFolder('Camera');
f2.add(settings, 'orthographic').name('Orthographic').onChange(function(value) {
localStorage.setItem('orthographic', value);
setLocalStorage('orthographic', value);
});
f2.add(settings, 'xView').name('X View');
f2.add(settings, 'yView').name('Y View');
Expand Down
14 changes: 7 additions & 7 deletions ViewModel/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<schema_version>3.0</schema_version>
<name>view_model</name>
<uid>f4669f10-fda5-489d-8e1c-7ca3c2d40378</uid>
<version_id>0449c784-173d-488f-aef5-64454448f10d</version_id>
<version_id>36cdbcc5-3eef-4718-a49f-59f0b6556cde</version_id>
<xml_checksum>1E1F8B97</xml_checksum>
<class_name>ViewModel</class_name>
<display_name>ViewModel</display_name>
Expand Down Expand Up @@ -44,12 +44,6 @@
<usage_type>resource</usage_type>
<checksum>EDB52605</checksum>
</file>
<file>
<filename>report.html.in</filename>
<filetype>in</filetype>
<usage_type>resource</usage_type>
<checksum>253FE630</checksum>
</file>
<file>
<filename>ViewModel_Test.rb</filename>
<filetype>rb</filetype>
Expand All @@ -67,5 +61,11 @@
<usage_type>script</usage_type>
<checksum>A79A14EC</checksum>
</file>
<file>
<filename>report.html.in</filename>
<filetype>in</filetype>
<usage_type>resource</usage_type>
<checksum>5BDC7B87</checksum>
</file>
</files>
</measure>
Loading

0 comments on commit 15cce0a

Please sign in to comment.