print to browser console ; remove magic numbers ; improve tests
This commit is contained in:
@@ -7,3 +7,5 @@ parapet_coefficients = 0.88, 1.2
|
||||
system_force_capacity = 418.
|
||||
|
||||
minimum_racking_capacity = 226
|
||||
|
||||
max_corner_angle = 135
|
||||
@@ -298,11 +298,6 @@ def array_summary():
|
||||
context['inaccurate_drawing_warning'] = 'The subarrays in this design are not parallel to each other, \
|
||||
and the graphical representation on this page may not be accurate.'
|
||||
|
||||
print("=================")
|
||||
print("CORNERS : ")
|
||||
print(context['corners'])
|
||||
print("=================")
|
||||
|
||||
except FileValidationException as error:
|
||||
# when calculator is about to enter infinte loop
|
||||
# it throws an exception - it is supplied wrong data
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import sys
|
||||
from math import sqrt, atan, degrees
|
||||
from helix.models.corner import Corner
|
||||
from helix.constants.global_constants import max_corner_angle
|
||||
|
||||
class ProjectPresenter(object):
|
||||
def __init__(self, system_type, module_type):
|
||||
@@ -85,6 +86,8 @@ class ProjectPresenter(object):
|
||||
else:
|
||||
next_corner = building[i+1]
|
||||
|
||||
#x coordinate is stored as first element of corner variable
|
||||
#y coordinate is stored as second element of corner variable
|
||||
corner_length_ccw = sqrt((next_corner[0] - corner[0])**2 + (next_corner[1] - corner[1])**2)
|
||||
corner_length_cw = sqrt((previous_corner[0] - corner[0])**2 + (previous_corner[1] - corner[1])**2)
|
||||
|
||||
@@ -103,12 +106,11 @@ class ProjectPresenter(object):
|
||||
if (k1 > 0 and k2 > 0):
|
||||
theta1 = 180 + theta1
|
||||
|
||||
if (theta1 < 135):
|
||||
if (theta1 < max_corner_angle):
|
||||
presentable_building.append(Corner(corner[0], corner[1], corner_length_ccw,corner_length_cw, theta1).__dict__)
|
||||
|
||||
previous_corner = corner
|
||||
|
||||
|
||||
return result
|
||||
|
||||
def get_max_y(self,buildings, panels):
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
{% extends "layout.html.jinja" %}
|
||||
{% set title = "Helix Calculator" %}
|
||||
{% block contents %}
|
||||
<script>
|
||||
{%if context['corners']%}
|
||||
var corners_data = {{ context['corners']|tojson}};
|
||||
if (corners_data){
|
||||
console.log("Corners data :");
|
||||
console.log(corners_data);
|
||||
}
|
||||
{%endif%}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var is_csv_available = {{ context['csv_available']|tojson|safe }};
|
||||
</script>
|
||||
|
||||
@@ -100,40 +100,30 @@ class PanelPresenterTest(unittest.TestCase):
|
||||
actual_corners = self.subject.get_corners(buildings)
|
||||
assert_array_equal(actual_corners,expected_corners)
|
||||
|
||||
def test_get_corners_box_building_rotated_90_degrees(self):
|
||||
def test_get_corners_building(self):
|
||||
self.subject = ProjectPresenter(SystemType.singleTilt, ModuleType.Cell96)
|
||||
buildings = [ [ [0, 0], [0, 60], [-60,60], [-60, 0] ] ] # big square
|
||||
buildings = [ [ [-3.42, 1.51], [-1.66, -1.64], [4.22, -0.87], [-0.8, 5.64]] ]
|
||||
expected_corners = [[
|
||||
{'x': 0, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': 0, 'y': 60, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': -60, 'y': 60, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': -60, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90}
|
||||
{'x': -3.42, 'y': 1.51, 'length_cw': 4.890940604832571, 'length_ccw':3.6083375673570233, 'angle':118.41626123074676},
|
||||
{'x': -1.66, 'y': -1.64, 'length_cw': 3.6083375673570233, 'length_ccw':5.930202357424239, 'angle':111.73284308914215},
|
||||
{'x': 4.22, 'y': -0.87, 'length_cw': 5.930202357424239, 'length_ccw':8.22073597678456, 'angle':59.823982400990424},
|
||||
{'x': -0.8, 'y': 5.64, 'length_cw': 8.22073597678456, 'length_ccw':4.890940604832571, 'angle':70.02691327912069}
|
||||
]]
|
||||
actual_corners = self.subject.get_corners(buildings)
|
||||
assert_array_equal(actual_corners,expected_corners)
|
||||
|
||||
def test_get_corners_box_building_rotated_180_degrees(self):
|
||||
|
||||
def test_get_corners_wild_building_with_big_angles(self):
|
||||
self.subject = ProjectPresenter(SystemType.singleTilt, ModuleType.Cell96)
|
||||
buildings = [ [ [0, 0], [-60, 0], [-60,-60], [0, -60] ] ] # big square
|
||||
buildings = [ [ [-3.58, 3.32], [-0.78, -2.9], [-1.56,0.88], [0.66, -2.16], [1.5, 1.16], [2.72, 2.36], [-0.8, 5.64] ] ]
|
||||
expected_corners = [[
|
||||
{'x': 0, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': -60, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': -60, 'y': -60, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': 0, 'y': -60, 'length_cw': 60, 'length_ccw':60, 'angle':90}
|
||||
]]
|
||||
actual_corners = self.subject.get_corners(buildings)
|
||||
assert_array_equal(actual_corners,expected_corners)
|
||||
|
||||
def test_get_corners_box_building_rotated_270_degrees(self):
|
||||
self.subject = ProjectPresenter(SystemType.singleTilt, ModuleType.Cell96)
|
||||
buildings = [ [ [0, 0], [0, -60], [60,-60], [60, 0] ] ] # big square
|
||||
expected_corners = [[
|
||||
{'x': 0, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': 0, 'y': -60, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': 60, 'y': -60, 'length_cw': 60, 'length_ccw':60, 'angle':90},
|
||||
{'x': 60, 'y': 0, 'length_cw': 60, 'length_ccw':60, 'angle':90}
|
||||
{'x': -3.58, 'y': 3.32, 'length_cw': 3.6208838699963852, 'length_ccw':6.821172919667115, 'angle':105.6106862572924},
|
||||
{'x': -0.78, 'y': -2.9, 'length_cw': 6.821172919667115, 'length_ccw':3.8596372886580936, 'angle':12.576112527956795},
|
||||
{'x': 0.66, 'y': -2.16, 'length_cw': 3.7643060449437424, 'length_ccw':3.424616766880639, 'angle':50.33783308603299},
|
||||
{'x': 2.72, 'y': 2.36, 'length_cw': 1.7112568480505783, 'length_ccw':4.811319985201567, 'angle':87.50512700090906},
|
||||
{'x': -0.8, 'y': 5.64, 'length_cw': 4.811319985201567, 'length_ccw':3.6208838699963852, 'angle':97.17527350158382}
|
||||
]]
|
||||
actual_corners = self.subject.get_corners(buildings)
|
||||
print(actual_corners)
|
||||
assert_array_equal(actual_corners,expected_corners)
|
||||
|
||||
def test_get_max_y(self):
|
||||
|
||||
Reference in New Issue
Block a user