UNPKG

metar-plot

Version:
144 lines (143 loc) 6.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.genWind = exports.windImgSrc = exports.Variation = exports.Wind = void 0; var Wind = /** @class */ (function () { function Wind() { } return Wind; }()); exports.Wind = Wind; var Variation = /** @class */ (function () { function Variation() { } return Variation; }()); exports.Variation = Variation; var GUST_WIDTH = 2; var WS_WIDTH = 4; /** * Creates a windbarb for the metar * @param metar * @returns Img src base64 string */ function windImgSrc(metar) { var data = btoa(unescape(encodeURIComponent("<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 500 500\">\n " + genWind(metar) + "\n </svg>"))); return "data:image/svg+xml;base64," + data; } exports.windImgSrc = windImgSrc; /** * Creates a windbarb for the metar * @param metar * @returns SVG string */ function genWind(metar) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; var WDD = metar.wind_direction ? metar.wind_direction : 0; var WSP = metar.wind_speed ? metar.wind_speed : 0; var wind = ""; var gust = ""; if (WSP === 0) { wind = "<g id=\"calm\">\n <ellipse id=\"calm-marker\" stroke=\"#000\" fill=\"#00000000\" cx=\"250\" cy=\"250\" rx=\"35\" ry=\"35\"/>\n </g>"; } else { gust = metar.gust_speed == null ? "" : "<g id=\"gustBarb\" transform=\"rotate(" + WDD + ", 250, 250)\">\n " + genBarb1((_a = metar.gust_speed) !== null && _a !== void 0 ? _a : 0, true) + "\n " + genBarb2((_b = metar.gust_speed) !== null && _b !== void 0 ? _b : 0, true) + "\n " + genBarb3((_c = metar.gust_speed) !== null && _c !== void 0 ? _c : 0, true) + "\n " + genBarb4((_d = metar.gust_speed) !== null && _d !== void 0 ? _d : 0, true) + "\n " + genBarb5((_e = metar.gust_speed) !== null && _e !== void 0 ? _e : 0, true) + "\n </g>"; wind = "<g id=\"windBard\" transform=\"rotate(" + WDD + ", 250, 250)\">\n <line stroke-width=\"3\" y1=\"225\" x1=\"250\" y2=\"50\" x2=\"250\" stroke=\"#000\" fill=\"none\" />\n " + genBarb1((_f = metar.wind_speed) !== null && _f !== void 0 ? _f : 0, false) + "\n " + genBarb2((_g = metar.wind_speed) !== null && _g !== void 0 ? _g : 0, false) + "\n " + genBarb3((_h = metar.wind_speed) !== null && _h !== void 0 ? _h : 0, false) + "\n " + genBarb4((_j = metar.wind_speed) !== null && _j !== void 0 ? _j : 0, false) + "\n " + genBarb5((_k = metar.wind_speed) !== null && _k !== void 0 ? _k : 0, false) + "\n </g>"; } return gust + wind; } exports.genWind = genWind; /** * Generate first barb * @param speed wind or gust speed * @param gust set to true for gust * @returns */ function genBarb1(speed, gust) { var fill = gust ? 'red' : '#000'; var tag = gust ? 'gs' : 'ws'; var width = gust ? GUST_WIDTH : WS_WIDTH; var barb = ""; if (speed >= 10 && speed < 50) { barb = "<line id=\"" + tag + "-bard-1-long\" stroke-width=\"" + width + "\" y1=\"50\" x1=\"250\" y2=\"50\" x2=\"300\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 50)\"/>"; } else if (speed >= 50) { barb = "<polygon id=\"" + tag + "-bard-1-flag\" points=\"248,60 290,30 248,30\" fill=\"" + fill + "\" />"; } return barb; } /** * Generate second barb * @param speed wind or gust speed * @param gust set to true for gust * @returns */ function genBarb2(speed, gust) { var fill = gust ? 'red' : '#000'; var tag = gust ? 'gs' : 'ws'; var width = gust ? GUST_WIDTH : WS_WIDTH; var barb = ""; if ((speed < 10) || (15 <= speed && speed < 20) || (55 <= speed && speed < 60)) { barb = "<line id=\"" + tag + "-bard-2-short\" stroke-width=\"" + width + "\" y1=\"70\" x1=\"250\" y2=\"70\" x2=\"275\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 70)\"/>"; } else if ((15 < speed && speed < 50) || (speed >= 60)) { barb = "<line id=\"" + tag + "-bard-2-long\" stroke-width=\"" + width + "\" y1=\"70\" x1=\"250\" y2=\"70\" x2=\"300\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 70)\"/>"; } return barb; } /** * Generate third barb * @param speed wind or gust speed * @param gust set to true for gust * @returns */ function genBarb3(speed, gust) { var fill = gust ? 'red' : '#000'; var tag = gust ? 'gs' : 'ws'; var width = gust ? GUST_WIDTH : WS_WIDTH; var barb = ""; if ((25 <= speed && speed < 30) || (65 <= speed && speed < 70)) { barb = "<line id=\"" + tag + "-bard-3-short\" stroke-width=\"" + width + "\" y1=\"90\" x1=\"250\" y2=\"90\" x2=\"275\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 90)\"/>"; } else if ((25 < speed && speed < 50) || speed >= 70) { barb = "<line id=\"" + tag + "-bard-3-long\" stroke-width=\"" + width + "\" y1=\"90\" x1=\"250\" y2=\"90\" x2=\"300\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 90)\"/>"; } return barb; } /** * Generate forth barb * @param speed wind or gust speed * @param gust set to true for gust * @returns */ function genBarb4(speed, gust) { var fill = gust ? 'red' : '#000'; var tag = gust ? 'gs' : 'ws'; var width = gust ? GUST_WIDTH : WS_WIDTH; var barb = ""; if ((35 <= speed && speed < 40) || (75 <= speed && speed < 80)) { barb = "<line id=\"" + tag + "-bard-4-short\" stroke-width=\"" + width + "\" y1=\"110\" x1=\"250\" y2=\"110\" x2=\"275\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 110)\"/>"; } else if ((35 < speed && speed < 50) || speed >= 80) { barb = "<line id=\"" + tag + "-bard-4-long\" stroke-width=\"" + width + "\" y1=\"110\" x1=\"250\" y2=\"110\" x2=\"300\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 110)\"/>"; } return barb; } /** * Generate fifth barb * @param speed wind or gust speed * @param gust set to true for gust * @returns */ function genBarb5(speed, gust) { var fill = gust ? 'red' : '#000'; var tag = gust ? 'gs' : 'ws'; var width = gust ? GUST_WIDTH : WS_WIDTH; var brab = ""; if ((45 <= speed && speed < 50) || (85 <= speed && speed < 90)) { brab = "<line id=\"" + tag + "-bard-5-short\" stroke-width=\"" + width + "\" y1=\"130\" x1=\"250\" y2=\"130\" x2=\"275\" stroke=\"" + fill + "\" transform=\"rotate(-35, 250, 130)\"/>"; } return brab; }