Added a trapezium calculator
authorNick Downing <nick@ndcode.org>
Sun, 25 Nov 2018 06:21:36 +0000 (17:21 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 25 Nov 2018 06:21:36 +0000 (17:21 +1100)
calculate_button_trapezium.html.jst [new file with mode: 0644]
drawing.svg [new file with mode: 0644]
index.html
trapezium.html [new file with mode: 0644]

diff --git a/calculate_button_trapezium.html.jst b/calculate_button_trapezium.html.jst
new file mode 100644 (file)
index 0000000..b911396
--- /dev/null
@@ -0,0 +1,58 @@
+let querystring = require('querystring')
+let stream_buffers = require('stream-buffers')
+
+return async env => {
+  if (env.request.method == 'POST') {
+    let write_stream = new stream_buffers.WritableStreamBuffer()
+    let data = new Promise(
+      (resolve, reject) => {
+        write_stream.
+        on('finish', () => {resolve(write_stream.getContents())}).
+        on('error', () => {reject()})
+      }
+    )
+    env.request.pipe(write_stream)
+    let query = querystring.parse((await data).toString())
+    let a_length = parseFloat(query.a_length)
+    let b_length = parseFloat(query.b_length)
+    let height = parseFloat(query.height)
+    let area = (a_length + b_length) / 2 * height
+   
+    _site.serve(
+      env,
+      200,
+      `<!DOCTYPE html>
+<html>
+<head>
+<title>Hello World HTML</title>
+</head>
+<body>
+<h1>The Height is: ${height} units</h1>
+<h1>The A length is: ${a_length} units</h1>
+<h1>The B length is: ${b_length} units</h1>
+<h1>The area is: ${area} units<sup>2</sup></h1>
+</body>
+</html>
+`,
+      'calculatebutton.html.jst'
+    )
+  }
+  else {
+    _site.serve(
+      env,
+      200,
+      `<!DOCTYPE html>
+<html>
+<head>
+<title>Hello World HTML</title>
+</head>
+<body>
+<h1>Error - Unable to Calculate</h1>
+</body>
+</html>
+`,
+      'calculatebutton.html.jst'
+    )
+  }
+}
+
diff --git a/drawing.svg b/drawing.svg
new file mode 100644 (file)
index 0000000..6bf8b5d
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="320"
+   height="120"
+   viewBox="0 0 84.666665 31.75"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="drawing.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.42"
+     inkscape:cx="192.71659"
+     inkscape:cy="-16.490789"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1366"
+     inkscape:window-height="713"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     units="px">
+    <inkscape:grid
+       spacingx="2.6458333"
+       spacingy="2.6458333"
+       type="xygrid"
+       id="grid10" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-265.25)">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.6458328,294.35416 c 79.3750002,0 79.3750002,0 79.3750002,0 L 68.791666,267.89583 v 0 H 15.875 Z"
+       id="path4522"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="29.104166"
+       y="286.41666"
+       id="text4530"><tspan
+         sodipodi:role="line"
+         id="tspan4528"
+         x="29.104166"
+         y="295.78043"
+         style="stroke-width:0.26458332" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="29.104166"
+       y="291.70834"
+       id="text4534"><tspan
+         sodipodi:role="line"
+         id="tspan4532"
+         x="29.104166"
+         y="301.07211"
+         style="stroke-width:0.26458332" /></text>
+    <path
+       style="fill:#cccccc;stroke:#808080;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5874999, 0.52916663;stroke-dashoffset:0;stroke-opacity:0.92376679"
+       d="m 15.875,267.89583 c 0,26.45833 0,26.45833 0,26.45833 v 0"
+       id="path4536"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.79374995, 0.26458332;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 15.875,281.12499 Z"
+       id="path4542"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 18.520833,281.12499 Z"
+       id="path4546"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="15.874999"
+       y="281.125"
+       id="text4554"><tspan
+         sodipodi:role="line"
+         id="tspan4552"
+         x="15.874999"
+         y="281.125"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">height</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="18.520832"
+       y="278.47916"
+       id="text4558"><tspan
+         sodipodi:role="line"
+         id="tspan4556"
+         x="18.520832"
+         y="287.84293"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="18.520832"
+       y="281.125"
+       id="text4562"><tspan
+         sodipodi:role="line"
+         id="tspan4560"
+         x="18.520832"
+         y="290.48877"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="37.041668"
+       y="294.35416"
+       id="text4566"><tspan
+         sodipodi:role="line"
+         id="tspan4564"
+         x="37.041668"
+         y="303.71793"
+         style="stroke-width:0.26458332" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="37.041668"
+       y="273.1875"
+       id="text4570"><tspan
+         sodipodi:role="line"
+         id="tspan4568"
+         x="37.041668"
+         y="273.1875"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">a</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="37.041668"
+       y="291.70834"
+       id="text4574"><tspan
+         sodipodi:role="line"
+         id="tspan4572"
+         x="37.041668"
+         y="291.70834"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">b</tspan></text>
+  </g>
+</svg>
index 2e7cc0f..5ba6ebd 100644 (file)
@@ -6,6 +6,7 @@
 <body>
 <h1>Olly's Website</h1>
 <a href="/circle.html">Go to Circle Calculator</a>
+<br><a href="/trapezium.html">Go to Trapezium Area Calculator</a>
 </body>
 </html>
 
diff --git a/trapezium.html b/trapezium.html
new file mode 100644 (file)
index 0000000..a5b310f
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Trapezium Area Calculator</title>
+</head>
+<body>
+<h1>Trapezium Area Calculator</h1>
+<img src="drawing.svg">
+<form action="/calculate_button_trapezium.html" method="post">
+  <div>
+    <label for="height">Height:</label>
+    <input type="text" id="height" name="height">
+    units
+  </div>
+  <div>
+    <label for="a_length">A:</label>
+    <input type="text" id="a_length" name="a_length">
+    units
+  </div>
+  <div>
+    <label for="b_length">B:</label>
+    <input type="text" id="b_length" name="b_length">
+    units
+  </div>
+  <div class="button">
+    <button type="submit">Calculate</button>
+  </div>
+</form>
+</body>
+</html>
+