diff --git a/index.html b/index.html index c55262b1..7c80092a 100644 --- a/index.html +++ b/index.html @@ -140,7 +140,12 @@ - + -
-
Temperature:
- , like in - - +
+
+
Temperature:
+ +
+
+ + +
@@ -8103,7 +8112,7 @@ - + @@ -8140,7 +8149,7 @@ - + @@ -8151,8 +8160,8 @@ - + diff --git a/libs/jquery-ui.css b/libs/jquery-ui.css index 36d437d5..ad11d1a6 100644 --- a/libs/jquery-ui.css +++ b/libs/jquery-ui.css @@ -314,30 +314,44 @@ body .ui-dialog { } .ui-dialog .ui-dialog-titlebar { display: flex; - padding: 0.4em 0.3em; - justify-content: space-evenly; + padding: 0.3em 0.8em; + justify-content: space-between; + align-items: center; font-size: 1.2em; min-width: 150px; } .ui-dialog .ui-dialog-title { - float: left; - margin: 0.1em 0; white-space: nowrap; - width: 90%; + width: 100%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar button { - padding: 0; - width: 1.8em; - height: 1.8em; + padding: 3px; + margin-left: 5px; + width: 19px; + height: 18px; color: #ffffff; background: none; - font-size: 0.75em; + font-size: 0.8em; border: 1px solid #c5c5c5; } +@media (max-width: 600px) { + .ui-dialog .ui-dialog-title { + font-size: 1.6em; + } + + .ui-dialog .ui-dialog-titlebar button { + padding: 3px; + margin-left: 10px; + width: 40px; + height: 32px; + font-size: 1.6em; + } +} + .ui-dialog .ui-dialog-titlebar button:active { border: 1px solid #5d4651; color: #5d4651; diff --git a/modules/river-generator.js b/modules/river-generator.js index 9e1f15eb..254e1af8 100644 --- a/modules/river-generator.js +++ b/modules/river-generator.js @@ -196,7 +196,7 @@ window.Rivers = (function () { flux: discharge, pointIndex: meanderedPoints.length, widthFactor, - sourceWidth + startingWidth: sourceWidth }) ); @@ -387,13 +387,12 @@ window.Rivers = (function () { const LENGTH_FACTOR = 200; const LENGTH_STEP_WIDTH = 1 / LENGTH_FACTOR; const LENGTH_PROGRESSION = [1, 1, 2, 3, 5, 8, 13, 21, 34].map(n => n / LENGTH_FACTOR); - const MAX_PROGRESSION = last(LENGTH_PROGRESSION); const getOffset = ({flux, pointIndex, widthFactor, startingWidth}) => { if (pointIndex === 0) return startingWidth; const fluxWidth = Math.min(flux ** 0.7 / FLUX_FACTOR, MAX_FLUX_WIDTH); - const lengthWidth = pointIndex * LENGTH_STEP_WIDTH + (LENGTH_PROGRESSION[pointIndex] || MAX_PROGRESSION); + const lengthWidth = pointIndex * LENGTH_STEP_WIDTH + (LENGTH_PROGRESSION[pointIndex] || LENGTH_PROGRESSION.at(-1)); return widthFactor * (lengthWidth + fluxWidth) + startingWidth; }; diff --git a/modules/ui/burg-editor.js b/modules/ui/burg-editor.js index c6d507f8..20462fe3 100644 --- a/modules/ui/burg-editor.js +++ b/modules/ui/burg-editor.js @@ -78,7 +78,8 @@ function editBurg(id) { const temperature = grid.cells.temp[pack.cells.g[b.cell]]; byId("burgTemperature").innerHTML = convertTemperature(temperature); - byId("burgTemperatureLikeIn").innerHTML = getTemperatureLikeness(temperature); + byId("burgTemperatureLikeIn").dataset.tip = + "Average yearly temperature is like in " + getTemperatureLikeness(temperature); byId("burgElevation").innerHTML = getHeight(pack.cells.h[b.cell]); // toggle features @@ -402,46 +403,47 @@ function editBurg(id) { } // in °C, array from -1 °C; source: https://en.wikipedia.org/wiki/List_of_cities_by_average_temperature +const meanTempCityMap = { + "-5": "Snag (Yukon)", + "-4": "Yellowknife (Canada)", + "-3": "Okhotsk (Russia)", + "-2": "Fairbanks (Alaska)", + "-1": "Nuuk (Greenland)", + 0: "Murmansk (Russia)", + 1: "Arkhangelsk (Russia)", + 2: "Anchorage (Alaska)", + 3: "Tromsø (Norway)", + 4: "Reykjavik (Iceland)", + 5: "Harbin (China)", + 6: "Stockholm (Sweden)", + 7: "Montreal (Canada)", + 8: "Prague (Czechia)", + 9: "Copenhagen (Denmark)", + 10: "London (England)", + 11: "Antwerp (Belgium)", + 12: "Paris (France)", + 13: "Milan (Italy)", + 14: "Washington (D.C.)", + 15: "Rome (Italy)", + 16: "Dubrovnik (Croatia)", + 17: "Lisbon (Portugal)", + 18: "Barcelona (Spain)", + 19: "Marrakesh (Morocco)", + 20: "Alexandria (Egypt)", + 21: "Tegucigalpa (Honduras)", + 22: "Guangzhou (China)", + 23: "Rio de Janeiro (Brazil)", + 24: "Dakar (Senegal)", + 25: "Miami (USA)", + 26: "Jakarta (Indonesia)", + 27: "Mogadishu (Somalia)", + 28: "Bangkok (Thailand)", + 29: "Niamey (Niger)", + 30: "Khartoum (Sudan)" +}; + function getTemperatureLikeness(temperature) { - if (temperature < -5) return "Yakutsk"; - const cities = [ - "Snag (Yukon)", - "Yellowknife (Canada)", - "Okhotsk (Russia)", - "Fairbanks (Alaska)", - "Nuuk (Greenland)", - "Murmansk", // -5 - 0 - "Arkhangelsk", - "Anchorage", - "Tromsø", - "Reykjavik", - "Riga", - "Stockholm", - "Halifax", - "Prague", - "Copenhagen", - "London", // 1 - 10 - "Antwerp", - "Paris", - "Milan", - "Batumi", - "Rome", - "Dubrovnik", - "Lisbon", - "Barcelona", - "Marrakesh", - "Alexandria", // 11 - 20 - "Tegucigalpa", - "Guangzhou", - "Rio de Janeiro", - "Dakar", - "Miami", - "Jakarta", - "Mogadishu", - "Bangkok", - "Aden", - "Khartoum" - ]; // 21 - 30 - if (temperature > 30) return "Mecca"; - return cities[temperature + 5] || null; + if (temperature < -5) return "Yakutsk (Russia)"; + if (temperature > 30) return "Mecca (Saudi Arabia)"; + return meanTempCityMap[temperature] || null; } diff --git a/modules/ui/temperature-graph.js b/modules/ui/temperature-graph.js index c025b700..4d4411f1 100644 --- a/modules/ui/temperature-graph.js +++ b/modules/ui/temperature-graph.js @@ -47,11 +47,13 @@ function showBurgTemperatureGraph(id) { // Standard deviation for average temperature for the year from [0, 1] to [min, max] const yearSig = lstOut[0] * 62.9466411977018 + 0.28613807855649165; + // Standard deviation for the difference between the minimum and maximum temperatures for the year const yearDelTmpSig = lstOut[1] * 13.541688670361175 + 0.1414213562373084 > yearSig ? yearSig : lstOut[1] * 13.541688670361175 + 0.1414213562373084; + // Expected value for the difference between the minimum and maximum temperatures for the year const yearDelTmpMu = lstOut[2] * 15.266666666666667 + 0.6416666666666663; @@ -60,7 +62,7 @@ function showBurgTemperatureGraph(id) { const minT = burgTemp - Math.max(yearSig + delT, 15); const maxT = burgTemp + (burgTemp - minT); - const chartWidth = Math.max(window.innerWidth / 2, 580); + const chartWidth = Math.max(window.innerWidth / 2, 520); const chartHeight = 300; // drawing starting point from top-left (y = 0) of SVG @@ -107,9 +109,9 @@ function showBurgTemperatureGraph(id) { }); drawGraph(); + $("#alert").dialog({ - title: "Annual temperature in " + b.name, - width: "auto", + title: "Average temperature in " + b.name, position: {my: "center", at: "center", of: "svg"} });