Fix some linting errors
This commit is contained in:
parent
011bbb3dbf
commit
9885099aff
3 changed files with 28 additions and 29 deletions
18
src/Utils.ts
18
src/Utils.ts
|
@ -233,7 +233,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TimesT<T>(count: number, f: (i: number) => T): T[] {
|
public static TimesT<T>(count: number, f: (i: number) => T): T[] {
|
||||||
let res: T[] = []
|
const res: T[] = []
|
||||||
for (let i = 0; i < count; i++) {
|
for (let i = 0; i < count; i++) {
|
||||||
res.push(f(i))
|
res.push(f(i))
|
||||||
}
|
}
|
||||||
|
@ -827,7 +827,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
}
|
}
|
||||||
|
|
||||||
static getOrSetDefault<K, V>(dict: Map<K, V>, k: K, v: () => V) {
|
static getOrSetDefault<K, V>(dict: Map<K, V>, k: K, v: () => V) {
|
||||||
let found = dict.get(k)
|
const found = dict.get(k)
|
||||||
if (found !== undefined) {
|
if (found !== undefined) {
|
||||||
return found
|
return found
|
||||||
}
|
}
|
||||||
|
@ -848,7 +848,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
if (i >= 124) {
|
if (i >= 124) {
|
||||||
code += 1 // Character 127 is our 'escape' character |
|
code += 1 // Character 127 is our 'escape' character |
|
||||||
}
|
}
|
||||||
let replacement = "|" + String.fromCharCode(code)
|
const replacement = "|" + String.fromCharCode(code)
|
||||||
stringified = stringified.replace(new RegExp(`\"${knownKey}\":`, "g"), replacement)
|
stringified = stringified.replace(new RegExp(`\"${knownKey}\":`, "g"), replacement)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1125,7 +1125,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
seconds = seconds % 60
|
seconds = seconds % 60
|
||||||
let hours = Math.floor(minutes / 60)
|
let hours = Math.floor(minutes / 60)
|
||||||
minutes = minutes % 60
|
minutes = minutes % 60
|
||||||
let days = Math.floor(hours / 24)
|
const days = Math.floor(hours / 24)
|
||||||
hours = hours % 24
|
hours = hours % 24
|
||||||
if (days > 0) {
|
if (days > 0) {
|
||||||
return days + "days" + " " + hours + "h"
|
return days + "days" + " " + hours + "h"
|
||||||
|
@ -1272,7 +1272,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
|
|
||||||
for (const k in d) {
|
for (const k in d) {
|
||||||
const vs = d[k]
|
const vs = d[k]
|
||||||
for (let v of vs) {
|
for (const v of vs) {
|
||||||
const list = newD[v]
|
const list = newD[v]
|
||||||
if (list === undefined) {
|
if (list === undefined) {
|
||||||
newD[v] = [k] // Left: indexing; right: list with one element
|
newD[v] = [k] // Left: indexing; right: list with one element
|
||||||
|
@ -1294,7 +1294,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
}
|
}
|
||||||
|
|
||||||
function componentToHex(n) {
|
function componentToHex(n) {
|
||||||
let hex = n.toString(16)
|
const hex = n.toString(16)
|
||||||
return hex.length == 1 ? "0" + hex : hex
|
return hex.length == 1 ? "0" + hex : hex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1413,8 +1413,8 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
for (let i = 0; i < a.length; i++) {
|
for (let i = 0; i < a.length; i++) {
|
||||||
let ai = a[i]
|
const ai = a[i]
|
||||||
let bi = b[i]
|
const bi = b[i]
|
||||||
if (ai == bi) {
|
if (ai == bi) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -1508,7 +1508,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
if (matchWithFuncName) {
|
if (matchWithFuncName) {
|
||||||
;[_, functionName, path, line, column] = matchWithFuncName
|
;[_, functionName, path, line, column] = matchWithFuncName
|
||||||
} else {
|
} else {
|
||||||
let regexNoFuncName: RegExp = new RegExp("at ([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)")
|
const regexNoFuncName: RegExp = new RegExp("at ([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)")
|
||||||
;[_, path, line, column] = stackItem.match(regexNoFuncName)
|
;[_, path, line, column] = stackItem.match(regexNoFuncName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ class SvgToPdfInternals {
|
||||||
if (element.childElementCount == 0) {
|
if (element.childElementCount == 0) {
|
||||||
this.drawTspan(element)
|
this.drawTspan(element)
|
||||||
} else {
|
} else {
|
||||||
for (let child of Array.from(element.children)) {
|
for (const child of Array.from(element.children)) {
|
||||||
this.handleElement(child)
|
this.handleElement(child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ class SvgToPdfInternals {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element.tagName === "g" || element.tagName === "text") {
|
if (element.tagName === "g" || element.tagName === "text") {
|
||||||
for (let child of Array.from(element.children)) {
|
for (const child of Array.from(element.children)) {
|
||||||
this.handleElement(child)
|
this.handleElement(child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ class SvgToPdfInternals {
|
||||||
const css = SvgToPdfInternals.css(element)
|
const css = SvgToPdfInternals.css(element)
|
||||||
this.doc.saveGraphicsState()
|
this.doc.saveGraphicsState()
|
||||||
if (css["fill-opacity"] !== "0" && css["fill"] !== "none") {
|
if (css["fill-opacity"] !== "0" && css["fill"] !== "none") {
|
||||||
let color = css["fill"] ?? "black"
|
const color = css["fill"] ?? "black"
|
||||||
let opacity = 1
|
let opacity = 1
|
||||||
if (css["fill-opacity"]) {
|
if (css["fill-opacity"]) {
|
||||||
opacity = Number(css["fill-opacity"])
|
opacity = Number(css["fill-opacity"])
|
||||||
|
@ -314,13 +314,13 @@ class SvgToPdfInternals {
|
||||||
console.log("Creating image with key", key, "searching rect in", x, y)
|
console.log("Creating image with key", key, "searching rect in", x, y)
|
||||||
const rectangle: SVGRectElement = this.page.findSmallestRectContaining(x, y, false)
|
const rectangle: SVGRectElement = this.page.findSmallestRectContaining(x, y, false)
|
||||||
console.log("Got rect", rectangle)
|
console.log("Got rect", rectangle)
|
||||||
let w = SvgToPdfInternals.attrNumber(rectangle, "width")
|
const w = SvgToPdfInternals.attrNumber(rectangle, "width")
|
||||||
let h = SvgToPdfInternals.attrNumber(rectangle, "height")
|
const h = SvgToPdfInternals.attrNumber(rectangle, "height")
|
||||||
x = SvgToPdfInternals.attrNumber(rectangle, "x")
|
x = SvgToPdfInternals.attrNumber(rectangle, "x")
|
||||||
y = SvgToPdfInternals.attrNumber(rectangle, "y")
|
y = SvgToPdfInternals.attrNumber(rectangle, "y")
|
||||||
|
|
||||||
// Actually, dots per mm, not dots per inch ;)
|
// Actually, dots per mm, not dots per inch ;)
|
||||||
let dpi = 60
|
const dpi = 60
|
||||||
const img = this.page.options.createImage(key, dpi * w + "px", dpi * h + "px")
|
const img = this.page.options.createImage(key, dpi * w + "px", dpi * h + "px")
|
||||||
|
|
||||||
const canvas = document.createElement("canvas")
|
const canvas = document.createElement("canvas")
|
||||||
|
@ -363,7 +363,7 @@ class SvgToPdfInternals {
|
||||||
fontFamily = "Ubuntu"
|
fontFamily = "Ubuntu"
|
||||||
}
|
}
|
||||||
|
|
||||||
let fontWeight = css["font-weight"] ?? "normal"
|
const fontWeight = css["font-weight"] ?? "normal"
|
||||||
this.doc.setFont(fontFamily, fontWeight)
|
this.doc.setFont(fontFamily, fontWeight)
|
||||||
|
|
||||||
const fontColor = css["fill"]
|
const fontColor = css["fill"]
|
||||||
|
@ -372,13 +372,13 @@ class SvgToPdfInternals {
|
||||||
} else {
|
} else {
|
||||||
this.doc.setTextColor("black")
|
this.doc.setTextColor("black")
|
||||||
}
|
}
|
||||||
let fontsize = parseFloat(css["font-size"])
|
const fontsize = parseFloat(css["font-size"])
|
||||||
this.doc.setFontSize(fontsize * 2.5)
|
this.doc.setFontSize(fontsize * 2.5)
|
||||||
|
|
||||||
let textTemplate = tspan.textContent.split(" ")
|
const textTemplate = tspan.textContent.split(" ")
|
||||||
let result: string = ""
|
let result: string = ""
|
||||||
let addSpace = false
|
let addSpace = false
|
||||||
for (let text of textTemplate) {
|
for (const text of textTemplate) {
|
||||||
if (text === "\\n") {
|
if (text === "\\n") {
|
||||||
result += "\n"
|
result += "\n"
|
||||||
addSpace = false
|
addSpace = false
|
||||||
|
@ -446,7 +446,7 @@ class SvgToPdfInternals {
|
||||||
const svgWidth = SvgToPdfInternals.attrNumber(svgRoot, "width")
|
const svgWidth = SvgToPdfInternals.attrNumber(svgRoot, "width")
|
||||||
const svgHeight = SvgToPdfInternals.attrNumber(svgRoot, "height")
|
const svgHeight = SvgToPdfInternals.attrNumber(svgRoot, "height")
|
||||||
|
|
||||||
let img = this.page.images[base64src]
|
const img = this.page.images[base64src]
|
||||||
// This is an svg image, we use the canvas to convert it to a png
|
// This is an svg image, we use the canvas to convert it to a png
|
||||||
const canvas = document.createElement("canvas")
|
const canvas = document.createElement("canvas")
|
||||||
const ctx = canvas.getContext("2d")
|
const ctx = canvas.getContext("2d")
|
||||||
|
@ -607,7 +607,7 @@ class SvgToPdfPage {
|
||||||
const parts = tc.split(" ").filter((p) => p.startsWith("$") && p.indexOf("(") < 0)
|
const parts = tc.split(" ").filter((p) => p.startsWith("$") && p.indexOf("(") < 0)
|
||||||
for (let part of parts) {
|
for (let part of parts) {
|
||||||
part = part.substring(1) // Drop the $
|
part = part.substring(1) // Drop the $
|
||||||
let path = part.split(".")
|
const path = part.split(".")
|
||||||
const importPath = this.importedTranslations[path[0]]
|
const importPath = this.importedTranslations[path[0]]
|
||||||
if (importPath) {
|
if (importPath) {
|
||||||
translations.add(importPath + "." + path.slice(1).join("."))
|
translations.add(importPath + "." + path.slice(1).join("."))
|
||||||
|
@ -636,7 +636,7 @@ class SvgToPdfPage {
|
||||||
|
|
||||||
if (element.tagName === "tspan" && element.childElementCount == 0) {
|
if (element.tagName === "tspan" && element.childElementCount == 0) {
|
||||||
const specialValues = element.textContent.split(" ").filter((t) => t.startsWith("$"))
|
const specialValues = element.textContent.split(" ").filter((t) => t.startsWith("$"))
|
||||||
for (let specialValue of specialValues) {
|
for (const specialValue of specialValues) {
|
||||||
const importMatch = element.textContent.match(
|
const importMatch = element.textContent.match(
|
||||||
/\$import ([a-zA-Z-_0-9.? ]+) as ([a-zA-Z0-9]+)/
|
/\$import ([a-zA-Z-_0-9.? ]+) as ([a-zA-Z0-9]+)/
|
||||||
)
|
)
|
||||||
|
@ -665,7 +665,7 @@ class SvgToPdfPage {
|
||||||
element.tagName === "tspan" ||
|
element.tagName === "tspan" ||
|
||||||
element.tagName === "defs"
|
element.tagName === "defs"
|
||||||
) {
|
) {
|
||||||
for (let child of Array.from(element.children)) {
|
for (const child of Array.from(element.children)) {
|
||||||
await this.prepareElement(child, mapTextSpecs, inDefs || element.tagName === "defs")
|
await this.prepareElement(child, mapTextSpecs, inDefs || element.tagName === "defs")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -694,7 +694,7 @@ class SvgToPdfPage {
|
||||||
}
|
}
|
||||||
this._isPrepared = true
|
this._isPrepared = true
|
||||||
const mapSpecs: SVGTSpanElement[] = []
|
const mapSpecs: SVGTSpanElement[] = []
|
||||||
for (let child of Array.from(this._svgRoot.children)) {
|
for (const child of Array.from(this._svgRoot.children)) {
|
||||||
await this.prepareElement(<any>child, mapSpecs, child.tagName === "defs")
|
await this.prepareElement(<any>child, mapSpecs, child.tagName === "defs")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -715,7 +715,7 @@ class SvgToPdfPage {
|
||||||
const internal = new SvgToPdfInternals(advancedApi, this, (key) =>
|
const internal = new SvgToPdfInternals(advancedApi, this, (key) =>
|
||||||
self.extractTranslation(key, language)
|
self.extractTranslation(key, language)
|
||||||
)
|
)
|
||||||
for (let child of Array.from(this._svgRoot.children)) {
|
for (const child of Array.from(this._svgRoot.children)) {
|
||||||
internal.handleElement(<any>child)
|
internal.handleElement(<any>child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -805,11 +805,11 @@ class SvgToPdfPage {
|
||||||
|
|
||||||
private loadImage(element: Element | string): Promise<void> {
|
private loadImage(element: Element | string): Promise<void> {
|
||||||
const xlink = typeof element === "string" ? element : element.getAttribute("xlink:href")
|
const xlink = typeof element === "string" ? element : element.getAttribute("xlink:href")
|
||||||
let img = document.createElement("img")
|
const img = document.createElement("img")
|
||||||
|
|
||||||
if (xlink.startsWith("data:image/svg+xml;")) {
|
if (xlink.startsWith("data:image/svg+xml;")) {
|
||||||
const base64src = xlink
|
const base64src = xlink
|
||||||
let svgXml = atob(
|
const svgXml = atob(
|
||||||
base64src.substring(base64src.indexOf(";base64,") + ";base64,".length)
|
base64src.substring(base64src.indexOf(";base64,") + ";base64,".length)
|
||||||
)
|
)
|
||||||
const parser = new DOMParser()
|
const parser = new DOMParser()
|
||||||
|
@ -884,7 +884,7 @@ class SvgToPdfPage {
|
||||||
throw "Invalid mapspec:" + spec
|
throw "Invalid mapspec:" + spec
|
||||||
}
|
}
|
||||||
const params = SvgToPdfInternals.parseCss(match[1], ",")
|
const params = SvgToPdfInternals.parseCss(match[1], ",")
|
||||||
let layout = AllKnownLayouts.allKnownLayouts.get(params["theme"])
|
const layout = AllKnownLayouts.allKnownLayouts.get(params["theme"])
|
||||||
if (layout === undefined) {
|
if (layout === undefined) {
|
||||||
console.error("Could not show map with parameters", params)
|
console.error("Could not show map with parameters", params)
|
||||||
throw (
|
throw (
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { Utils } from "./Utils"
|
|
||||||
import AllThemesGui from "./UI/AllThemesGui"
|
import AllThemesGui from "./UI/AllThemesGui"
|
||||||
import { QueryParameters } from "./Logic/Web/QueryParameters"
|
import { QueryParameters } from "./Logic/Web/QueryParameters"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue