================================================ FILE: web/pre2src.py ================================================ #!/usr/bin/python3 from pathlib import Path import re FROM = 'pre-src' TO = 'src' SPECS = { 'index': { 'vars': { }, }, 'area': { 'vars': { }, }, 'map': { 'vars': { }, }, 'help': { 'vars': { }, }, } for name, spec in SPECS.items(): contents = '' for filename in ('start', name, 'end'): contents += Path(FROM + '/' + filename + '.pre').read_text(encoding='utf-8') spec['vars']['pagename'] = name def var_replacer(matchobj): return spec['vars'][matchobj.group(1)] contents = re.sub(r"\[% *(\w+) *%\]", var_replacer, contents) with open(TO + '/' + name + '.ect', 'w', encoding='utf-8') as f: f.write(contents) ================================================ FILE: web/src/.gitignore ================================================ /*.ect ================================================ FILE: web/src/index.html ================================================ Touch Mapper ================================================ FILE: web/src/scripts/area.js ================================================ 'use strict'; /* global $ mapCalc Backbone isNan _ ol THREE performance google ga fbq TRANSLATIONS i18next show3dPreview */ /* eslint quotes:0, space-unary-ops:0, no-alert:0, no-unused-vars:0, no-shadow:0, no-extend-native:0, no-trailing-spaces:0 */ var TARGET_ROAD_DENSITY_UI_MIN = 1; var TARGET_ROAD_DENSITY_UI_MAX = 100; var TARGET_ROAD_DENSITY_UI_DEFAULT = 10; function normalizeTargetRoadDensityUiValue(value) { var number = parseInt(value, 10); if (isNaN(number)) { return TARGET_ROAD_DENSITY_UI_DEFAULT; } if (number < TARGET_ROAD_DENSITY_UI_MIN) { return TARGET_ROAD_DENSITY_UI_MIN; } if (number > TARGET_ROAD_DENSITY_UI_MAX) { return TARGET_ROAD_DENSITY_UI_MAX; } return number; } function resetParameters(addr) { $("#lat-input").val(addr.lat).trigger('change'); $("#lon-input").val(addr.lon).trigger('change'); $("#x-offset-input").val("0").change(); $("#y-offset-input").val("0").change(); data.set("multipartXpc", 0); data.set("multipartYpc", 0); } function selectAddress(addr, index) { data.set("selected_addr_short", addr.addrShort); data.set("selected_addr_full", addr.addrLong); setLocalStorage("addressesSelectedIndex", index); } function showAllAddresses(addresses) { var selectedIndex = getLocalStorageInt("addressesSelectedIndex", 0); $(".first-address, .show-all-addresses").hide(); _.each(addresses, function(addr, index){ var id = "address-match-" + index; var input = $("") .attr("type", "radio") .attr("name", "address-match") .attr("id", id); if (index === selectedIndex) { input.prop('checked', true); } input.change(function(ev) { var elem = $(ev.target); if (elem.attr('name') !== 'address-match') { return; } selectAddress(addr, index); resetParameters(addr); }); $(".all-addresses").append( $("
  • ") .append(input) .append($("