{"name":"IWMBrowser Classes","children":[{"name":"dev.tuesch.bin.update-data.UpdateData","path":"./dev/tuesch/bin/update-data.js","className":"UpdateData","docPath":null,"methods":[{"name":"execute","comment":{"type":"Block","value":"*\r\n * There can be one or multiple data items attatched.\r\n ","start":626,"end":713}},{"name":"waitForAllPromises","comment":{"type":"Block","value":"*\r\n * Loads a single data item of a given type.\r\n *\r\n * @param {string} type - Type of the request (e.g. elasticsearch, json, ...).\r\n * @param {object} item - Object that fits the provided type.\r\n * @returns\r\n ","start":4226,"end":4458}},{"name":"writeData","comment":{"type":"Block","value":"*\r\n * Loads a single data item of a given type.\r\n *\r\n * @param {string} type - Type of the request (e.g. elasticsearch, json, ...).\r\n * @param {object} item - Object that fits the provided type.\r\n * @returns\r\n ","start":4226,"end":4458}},{"name":"loadItem","comment":{"type":"Block","value":"*\r\n * Loads a single data item of a given type.\r\n *\r\n * @param {string} type - Type of the request (e.g. elasticsearch, json, ...).\r\n * @param {object} item - Object that fits the provided type.\r\n * @returns\r\n ","start":4226,"end":4458}}],"children":[]},{"name":"dev.tuesch.bin.updatepois.progress.Progress","path":"./dev/tuesch/bin/updatepois/progress.js","className":"Progress","docPath":"./doc/out/Progress.html","methods":[{"name":"constructor","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"addSpecial","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"add","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"increment","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"changed","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"clear","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}},{"name":"log","comment":{"type":"Line","value":" this.special.forEach(special => { ","start":1148,"end":1186}}],"children":[]},{"name":"dev.tuesch.bin.utils.data.Data","path":"./dev/tuesch/bin/utils/data.js","className":"Data","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"_validate","comment":null},{"name":"request","comment":null},{"name":"create","comment":null}],"children":[]},{"name":"dev.tuesch.bin.utils.object.Object","path":"./dev/tuesch/bin/utils/object.js","className":"Object","docPath":null,"methods":[{"name":"fromPath","comment":null}],"children":[{"name":"dev.tuesch.var.cards._theme.js.highlight.Highlight","path":"./dev/tuesch/var/cards/_theme/js/highlight.js","className":"Highlight","docPath":null,"methods":[{"name":"disableAnimations","comment":{"type":"Line","value":" static expand(obj, { scale = 2, duration = 3, stroke = 2, onComplete = null } = {}) {","start":2645,"end":2733}},{"name":"enableAnimations","comment":{"type":"Line","value":" static expand(obj, { scale = 2, duration = 3, stroke = 2, onComplete = null } = {}) {","start":2645,"end":2733}},{"name":"removeAnimations","comment":{"type":"Line","value":" static expand(obj, { scale = 2, duration = 3, stroke = 2, onComplete = null } = {}) {","start":2645,"end":2733}},{"name":"animateCircle","comment":{"type":"Line","value":" }","start":4058,"end":4062}},{"name":"openHighlight","comment":{"type":"Block","value":"*\n * Creates an SVG mask for a provided svgElement.\n *\n * @static\n * @param {SVGElement} element - Element that should be masked.\n * @param {object} opts - Optional parameters to avoid unnecessary fetching of elements.\n * @param {SVGElement} opts.svgRoot - The root element of the element.\n * @param {SVGImageElement} opts.image - The image that is used in the mask.\n * @param {number} opts.id - The id of the mask.\n * @returns\n * @memberof Highlight\n ","start":9938,"end":10444}},{"name":"_bringToFront","comment":{"type":"Block","value":"*\n * Creates an SVG mask for a provided svgElement.\n *\n * @static\n * @param {SVGElement} element - Element that should be masked.\n * @param {object} opts - Optional parameters to avoid unnecessary fetching of elements.\n * @param {SVGElement} opts.svgRoot - The root element of the element.\n * @param {SVGImageElement} opts.image - The image that is used in the mask.\n * @param {number} opts.id - The id of the mask.\n * @returns\n * @memberof Highlight\n ","start":9938,"end":10444}},{"name":"_getSVGMask","comment":{"type":"Block","value":"*\n * Creates an SVG mask for a provided svgElement.\n *\n * @static\n * @param {SVGElement} element - Element that should be masked.\n * @param {object} opts - Optional parameters to avoid unnecessary fetching of elements.\n * @param {SVGElement} opts.svgRoot - The root element of the element.\n * @param {SVGImageElement} opts.image - The image that is used in the mask.\n * @param {number} opts.id - The id of the mask.\n * @returns\n * @memberof Highlight\n ","start":9938,"end":10444}},{"name":"_createSVGMask","comment":{"type":"Block","value":"*\n * Creates an SVG mask for a provided svgElement.\n *\n * @static\n * @param {SVGElement} element - Element that should be masked.\n * @param {object} opts - Optional parameters to avoid unnecessary fetching of elements.\n * @param {SVGElement} opts.svgRoot - The root element of the element.\n * @param {SVGImageElement} opts.image - The image that is used in the mask.\n * @param {number} opts.id - The id of the mask.\n * @returns\n * @memberof Highlight\n ","start":9938,"end":10444}},{"name":"_calculateCenterRelativeTo","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"_isExpanded","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"_setExpanded","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"_notExpanded","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"closeHighlight","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"animate","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}},{"name":"_retrieveId","comment":{"type":"Line","value":" We need a unique id to ensure correspondence between circle, mask, and maskImage","start":13775,"end":13858}}],"children":[]}]},{"name":"dev.tuesch.bin.utils.progress.Progress","path":"./dev/tuesch/bin/utils/progress.js","className":"Progress","docPath":"./doc/out/Progress.html","methods":[{"name":"constructor","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"addSpecial","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"add","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"increment","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"changed","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"complete","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"clear","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"completed","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"log","comment":{"type":"Line","value":"Clears from cursor to end of the line.","start":2124,"end":2164}},{"name":"test","comment":null}],"children":[]},{"name":"dev.tuesch.js.const.akzentfarben.AkzentFarbe","path":"./dev/tuesch/js/const/akzentfarben.js","className":"AkzentFarbe","docPath":null,"methods":[{"name":"Verkehr","comment":null},{"name":"Staedtisch","comment":null},{"name":"Oeffentlich","comment":null},{"name":"Gewerblich","comment":null}],"children":[]},{"name":"dev.tuesch.js.const.colors.Color","path":"./dev/tuesch/js/const/colors.js","className":"Color","docPath":null,"methods":[{"name":"Yellow","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Green","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Blue","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Purple","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"getMapMatchingColor","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"getMapContrastColor","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Black","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"MediumDark","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"White","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Gray","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Accent","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Inactive","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"IconBackground","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"IconForeGround","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"IwmOrange","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"TuebingenRed","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"Array","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}},{"name":"_tweenColor","comment":{"type":"Line","value":"This could be moved to utils.js","start":2159,"end":2192}}],"children":[]},{"name":"dev.tuesch.js.data.Data","path":"./dev/tuesch/js/data.js","className":"Data","docPath":null,"methods":[{"name":"load","comment":null},{"name":"isLocal","comment":null},{"name":"getJsonWithAjax","comment":null}],"children":[]},{"name":"dev.tuesch.js.device.DeviceView","path":"./dev/tuesch/js/device.js","className":"DeviceView","docPath":null,"methods":[{"name":"Top","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"Bottom","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"Left","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"Right","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"All","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}}],"children":[]},{"name":"dev.tuesch.js.device.Device","path":"./dev/tuesch/js/device.js","className":"Device","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"viewableFrom","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"orientationAt","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"gradientAt","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}},{"name":"_visualizeOrientation","comment":{"type":"Line","value":" console.log(program.textures.get)","start":1006,"end":1042}}],"children":[{"name":"dev.tuesch.js.device.Desktop","path":"./dev/tuesch/js/device.js","className":"Desktop","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" if the position is within the triangle with the short side as it's base and height = shortSideDistanceThreshold, ","start":2322,"end":2438}},{"name":"orientationAt","comment":{"type":"Line","value":" if the position is within the triangle with the short side as it's base and height = shortSideDistanceThreshold, ","start":2322,"end":2438}},{"name":"gradientAt","comment":{"type":"Line","value":" if the position is within the triangle with the short side as it's base and height = shortSideDistanceThreshold, ","start":2322,"end":2438}}],"children":[]},{"name":"dev.tuesch.js.device.MultiTouchTable","path":"./dev/tuesch/js/device.js","className":"MultiTouchTable","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" if the position is within the triangle with the short side as it's base and height = shortSideDistanceThreshold, ","start":2322,"end":2438}},{"name":"orientationAt","comment":{"type":"Line","value":" if the position is within the triangle with the short side as it's base and height = shortSideDistanceThreshold, ","start":2322,"end":2438}},{"name":"gradientAt","comment":{"type":"Line","value":" Adapted from: https://math.stackexchange.com/questions/878785/how-to-find-an-angle-in-range0-360-between-2-vectors","start":4910,"end":5027}}],"children":[]}]},{"name":"dev.tuesch.js.dom.uitoggle.TueschUi","path":"./dev/tuesch/js/dom/uitoggle.js","className":"TueschUi","docPath":null,"methods":[],"children":[]},{"name":"dev.tuesch.js.dom.uitoggle.UiImageToggle","path":"./dev/tuesch/js/dom/uitoggle.js","className":"UiImageToggle","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"element","comment":null},{"name":"changedTo","comment":null},{"name":"_createToggle","comment":null}],"children":[]},{"name":"dev.tuesch.js.environment.Environment","path":"./dev/tuesch/js/environment.js","className":"Environment","docPath":null,"methods":[{"name":"isElectron","comment":{"type":"Block","value":"*\r\n * Distincts if the app is running inside electron or not.\r\n * \r\n * source: https://discuss.atom.io/t/detect-electron-or-web-page-running/33180/3\r\n ","start":42,"end":213}}],"children":[]},{"name":"dev.tuesch.js.errors.CErrors","path":"./dev/tuesch/js/errors.js","className":"CErrors","docPath":null,"methods":[{"name":"AbstractFunctionCall","comment":null},{"name":"NotImplemented","comment":null},{"name":"Log","comment":null}],"children":[]},{"name":"dev.tuesch.js.graphics.label.FlagType","path":"./dev/tuesch/js/graphics/label.js","className":"FlagType","docPath":null,"methods":[{"name":"bottomLeft","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}},{"name":"bottomRight","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}},{"name":"topLeft","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}},{"name":"topRight","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}},{"name":"toString","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}}],"children":[]},{"name":"dev.tuesch.js.interaction.gesture.GestureRecognizer","path":"./dev/tuesch/js/interaction/gesture.js","className":"GestureRecognizer","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"active","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"addEventListener","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"start","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"update","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"end","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"setTarget","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"unsetTarget","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"draw","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"changed","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}}],"children":[]},{"name":"dev.tuesch.js.interaction.gesture.Gesture","path":"./dev/tuesch/js/interaction/gesture.js","className":"Gesture","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"start","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"end","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"move","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}}],"children":[{"name":"dev.tuesch.js.interaction.gesture.GraphicZoomGesture","path":"./dev/tuesch/js/interaction/gesture.js","className":"GraphicZoomGesture","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"activated","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"start","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"end","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"move","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}},{"name":"draw","comment":{"type":"Line","value":" console.log(\"Circles: \" + this.circles.size)","start":7945,"end":7992}}],"children":[]},{"name":"dev.tuesch.js.interaction.gesture.GraphicTapGesture","path":"./dev/tuesch/js/interaction/gesture.js","className":"GraphicTapGesture","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"if (distance - activator[i].startDistance > this.activationDistance) {","start":11885,"end":11957}},{"name":"activated","comment":{"type":"Line","value":"if (distance - activator[i].startDistance > this.activationDistance) {","start":11885,"end":11957}},{"name":"start","comment":{"type":"Line","value":"if (distance - activator[i].startDistance > this.activationDistance) {","start":11885,"end":11957}},{"name":"end","comment":{"type":"Line","value":"if (distance - activator[i].startDistance > this.activationDistance) {","start":11885,"end":11957}},{"name":"move","comment":{"type":"Line","value":"if (distance - activator[i].startDistance > this.activationDistance) {","start":11885,"end":11957}},{"name":"draw","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.interaction.interactionmapper.InteractionMapper","path":"./dev/tuesch/js/interaction/interactionmapper.js","className":"InteractionMapper","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"add","comment":null}],"children":[]},{"name":"dev.tuesch.js.interaction.interactionmapper.Binding","path":"./dev/tuesch/js/interaction/interactionmapper.js","className":"Binding","docPath":null,"methods":[{"name":"constructor","comment":null}],"children":[]},{"name":"dev.tuesch.js.interaction.interactionmapper.Commands","path":"./dev/tuesch/js/interaction/interactionmapper.js","className":"Commands","docPath":null,"methods":[{"name":"dictionary","comment":null},{"name":"get","comment":null}],"children":[]},{"name":"dev.tuesch.js.interaction.keybindings.KeyBinding","path":"./dev/tuesch/js/interaction/keybindings.js","className":"KeyBinding","docPath":null,"methods":[{"name":"constructor","comment":null}],"children":[]},{"name":"dev.tuesch.js.interaction.submapzoom.ZoomPair","path":"./dev/tuesch/js/interaction/submapzoom.js","className":"ZoomPair","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Interface between gesture recognizer and submaps.\r\n ","start":738,"end":800}},{"name":"getPoints","comment":{"type":"Block","value":"*\r\n * Interface between gesture recognizer and submaps.\r\n ","start":738,"end":800}},{"name":"of","comment":{"type":"Block","value":"*\r\n * Interface between gesture recognizer and submaps.\r\n ","start":738,"end":800}},{"name":"contains","comment":{"type":"Block","value":"*\r\n * Interface between gesture recognizer and submaps.\r\n ","start":738,"end":800}}],"children":[]},{"name":"dev.tuesch.js.interaction.submapzoom.SubmapZoomBridge","path":"./dev/tuesch/js/interaction/submapzoom.js","className":"SubmapZoomBridge","docPath":null,"methods":[{"name":"constructor","comment":null}],"children":[]},{"name":"dev.tuesch.js.map.GeoMap","path":"./dev/tuesch/js/map.js","className":"GeoMap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Creates instance of GeoMap\r\n *\r\n * @constructor\r\n * @param {MapData}[mapdata={}] - The mapdata describes how the map has to be interpreted by the Map class. E.g. what are the boundaries of the map?\r\n * @param {object}[opts={}] - With the opts, the created MapObjectScatter can be adjusted.\r\n * @param {boolean}[opts.cover=false] - Enables covering behaviour of a map object. Normally maps should cover the whole app.\r\n ","start":870,"end":1320}},{"name":"flushHandlers","comment":{"type":"Line","value":" this.onLoaded","start":3315,"end":3331}},{"name":"lock","comment":{"type":"Line","value":" Issue #001: This causes the map to not be displayed at the correct position on","start":3882,"end":3963}},{"name":"unlock","comment":{"type":"Line","value":" Issue #001","start":4676,"end":4689}},{"name":"unload","comment":{"type":"Block","value":"*\r\n * Is called when the scatter object is transformed.\r\n *\r\n * @private\r\n * @param {ScatterEvent}[e] - Contains informations on how the element was transformed.\r\n ","start":4991,"end":5174}},{"name":"transformed","comment":{"type":"Block","value":"*\r\n * Is called when the scatter object is transformed.\r\n *\r\n * @private\r\n * @param {ScatterEvent}[e] - Contains informations on how the element was transformed.\r\n ","start":4991,"end":5174}},{"name":"load","comment":{"type":"Block","value":"*\r\n * Wrapps the display object around a scatter object.\r\n *\r\n * @private\r\n * @param {DisplayObject} displayObject - Defines the display object that will be wrapped inside the scatter object.\r\n * @param {PIXI.Container} container - Defines the frame in which the map will be displayed.\r\n ","start":5253,"end":5569}},{"name":"clone","comment":{"type":"Block","value":"*\r\n * Creates an identical copy of the current map.\r\n ","start":6635,"end":6701}},{"name":"moveTo","comment":{"type":"Block","value":"*\r\n *\r\n * Moves the 'camera' to another location on the map.\r\n *\r\n * @abstract\r\n * @param {object} coordinates - Target coordinates in form {x: latitude, y: longitude}\r\n * @param {number} scale - Target scale.\r\n ","start":6817,"end":7060}},{"name":"zoomTo","comment":{"type":"Block","value":"*\r\n * Reloads the textures of the image, when it was unloaded and is required again.\r\n *\r\n * @memberof GeoMap\r\n ","start":7403,"end":7535}},{"name":"reloadImage","comment":{"type":"Block","value":"*\r\n * Reloads the textures of the image, when it was unloaded and is required again.\r\n *\r\n * @memberof GeoMap\r\n ","start":7403,"end":7535}},{"name":"unloadImage","comment":{"type":"Block","value":"*\r\n * Unloads the textures of the image, when not in use.\r\n *\r\n * @memberof GeoMap\r\n ","start":7665,"end":7770}},{"name":"coordinatesFromPoint","comment":{"type":"Block","value":"*\r\n * Transforms a point at pixel position {x,y}\r\n * to a coordinate with latitude and longitude.\r\n *\r\n *\r\n * @param {object} point - Point in form of {x: x_val, y: y_val}.\r\n * @returns {object} - Coordinates on the map in form of {x: latitude, y: longitude}.\r\n ","start":7904,"end":8170}},{"name":"coordinatesToPoint","comment":{"type":"Block","value":"*\r\n * Transform coordinates in the map into pixel positions on the deep zoom image.\r\n *\r\n * @param {object} coords - Coordinates of a map position in form {x: latitude, y: longitude}.\r\n * @return - Returns a image position in form of {x: x_val, y: y_val}.\r\n ","start":8326,"end":8608}},{"name":"toRelativePosition","comment":{"type":"Line","value":" /**","start":9133,"end":9139}},{"name":"toAbsolutePixelCoordinates","comment":{"type":"Line","value":" /**","start":9133,"end":9139}},{"name":"width","comment":{"type":"Line","value":" }","start":9637,"end":9641}},{"name":"height","comment":{"type":"Block","value":"*\r\n * Returns a screen point for a coordinate.\r\n ","start":9937,"end":9998}},{"name":"distance","comment":{"type":"Block","value":"*\r\n * Returns a screen point for a coordinate.\r\n ","start":9937,"end":9998}},{"name":"positionInWindow","comment":{"type":"Block","value":"*\r\n * Returns a screen point for a coordinate.\r\n ","start":9937,"end":9998}},{"name":"coordinatesInWindow","comment":{"type":"Block","value":"*\r\n * Returns the coordinates for a screen point.\r\n ","start":10309,"end":10373}},{"name":"setFrame","comment":{"type":"Line","value":"The app does not have an x and y attribute.","start":10835,"end":10880}},{"name":"getFrame","comment":{"type":"Line","value":"The app does not have an x and y attribute.","start":10835,"end":10880}},{"name":"allFromJson","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}},{"name":"_validateJson","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}},{"name":"_validJsonMap","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}},{"name":"_createMap","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}},{"name":"_createDeepZoomMap","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}},{"name":"_extractProjection","comment":{"type":"Block","value":"*\r\n* The DeepZoomMap class extends the GeoMap to create\r\n* maps as deepzoom images from maptiles.\r\n*\r\n* @extends GeoMap\r\n*\t@class\r\n* \t@see {@link maps.html}\r\n","start":13897,"end":14065}}],"children":[{"name":"dev.tuesch.js.map.DeepZoomMap","path":"./dev/tuesch/js/map.js","className":"DeepZoomMap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * @constructor\r\n * @param {object} tilesConfig - The tiles config object, that defines at what path and in which format the tiles are.\r\n * @param {MapData} mapdata - A MapData object, that contains informations of how the given map has to be interpreted.\r\n * @param {object} opts - Additional options to specify the behaviour of the deep zoom image.\r\n ","start":14120,"end":14500}},{"name":"load","comment":{"type":"Block","value":"*\r\n * Creates the DeepZoomImage.\r\n *\r\n * @private\r\n ","start":14891,"end":14963}},{"name":"unloadImage","comment":{"type":"Line","value":" This is currently not used!","start":15510,"end":15540}},{"name":"reloadImage","comment":{"type":"Line","value":" This is currently not used!","start":15510,"end":15540}},{"name":"transformed","comment":{"type":"Block","value":"*\r\n * Event function that is invoked by the deep zoom image, when it has been transformed.\r\n *\r\n * @private\r\n * @param {ScatterEvent} e\r\n ","start":15976,"end":16138}},{"name":"moveTo","comment":{"type":"Block","value":"*\r\n * Jumps to a certain point on the map and adjusts the size of the\r\n * map depending on the distance (zoom).\r\n *\r\n * This happens instantaneously without any animation.\r\n *\r\n * @public\r\n * @param {number}[latitude] - Defines the latitude of the target point on the map.\r\n * @param {number}[longitude] - Defines the longitude of the target point on the map.\r\n * @param {number}[distance = image.scatter.scale] - Defines the scale of the scatter object. Higher values seem to be more 'zoomed' into the map.\r\n * @return {object} - Position of the scatter object in form of {x:x_pos,y:y_pos}.\r\n *\r\n ","start":16242,"end":16892}},{"name":"scaleForFloatingLevel","comment":{"type":"Line","value":"TODO: If frame is not set, the map does not work anymore.","start":20625,"end":20684}},{"name":"floatingLevelForScale","comment":{"type":"Line","value":"TODO: If frame is not set, the map does not work anymore.","start":20625,"end":20684}},{"name":"distance","comment":{"type":"Line","value":"TODO: If frame is not set, the map does not work anymore.","start":20625,"end":20684}},{"name":"clone","comment":{"type":"Line","value":"TODO: If frame is not set, the map does not work anymore.","start":20625,"end":20684}},{"name":"tint","comment":{"type":"Line","value":" /** Returns the tile layer level that corresponds to the given scale.","start":21714,"end":21789}}],"children":[]},{"name":"dev.tuesch.js.map.ImageMap","path":"./dev/tuesch/js/map.js","className":"ImageMap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" transformed(e) {","start":23731,"end":23750}},{"name":"load","comment":{"type":"Line","value":" transformed(e) {","start":23731,"end":23750}},{"name":"clone","comment":{"type":"Line","value":" transformed(e) {","start":23731,"end":23750}},{"name":"moveTo","comment":{"type":"Line","value":"Get pixel position of lat lang values","start":24296,"end":24335}}],"children":[]}]},{"name":"dev.tuesch.js.mapdata.MapData","path":"./dev/tuesch/js/mapdata.js","className":"MapData","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Creates instance of MapData\r\n *\r\n * @constructor\r\n * @param {Projection}[projection] - Specifies the projection of the map (e.g. Mercator Projection).\r\n * @param {object}[opts] - Addiditonal options.\r\n * @param {[[minLat, minLng],[maxLat, maxLng]]}[opts.bounds] - Describes the minimum and maximum coordinates on the map\r\n * @param {Point}[opts.translate] - Defines a translation, when clipping is not an option (e.g. when the whole world is shown, but translated.) \r\n ","start":260,"end":763}},{"name":"toCoordinates","comment":{"type":"Block","value":"*\r\n * Bounds to pixel transforms some bounds in form of {min:{x:minLat, y:minLng},max:{x:maxLat, y:maxLng}}\r\n * to pixel coordinates. \r\n * \r\n * @param {*} bounds \r\n ","start":3092,"end":3281}},{"name":"toPixel","comment":{"type":"Block","value":"*\r\n * Bounds to pixel transforms some bounds in form of {min:{x:minLat, y:minLng},max:{x:maxLat, y:maxLng}}\r\n * to pixel coordinates. \r\n * \r\n * @param {*} bounds \r\n ","start":3092,"end":3281}},{"name":"clip","comment":{"type":"Block","value":"*\r\n * Bounds to pixel transforms some bounds in form of {min:{x:minLat, y:minLng},max:{x:maxLat, y:maxLng}}\r\n * to pixel coordinates. \r\n * \r\n * @param {*} bounds \r\n ","start":3092,"end":3281}},{"name":"boundsToPixel","comment":{"type":"Block","value":"*\r\n * Bounds to pixel transforms some bounds in form of {min:{x:minLat, y:minLng},max:{x:maxLat, y:maxLng}}\r\n * to pixel coordinates. \r\n * \r\n * @param {*} bounds \r\n ","start":3092,"end":3281}},{"name":"maxViewport","comment":null}],"children":[{"name":"dev.tuesch.js.mapdata.DeepZoomMapData","path":"./dev/tuesch/js/mapdata.js","className":"DeepZoomMapData","docPath":null,"methods":[{"name":"constructor","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.observer.TqElement","path":"./dev/tuesch/js/observer.js","className":"TqElement","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_removeDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_updateDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_createDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"inserted","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"exceed","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"reset","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"update","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"debug","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"element","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"closeFunction","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"lifetime","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"starttime","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"timeleft","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"alive","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"remove","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"debugString","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}}],"children":[{"name":"dev.tuesch.js.observer.TqHtmlElement","path":"./dev/tuesch/js/observer.js","className":"TqHtmlElement","docPath":null,"methods":[{"name":"_createDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_updateDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_removeDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}}],"children":[]},{"name":"dev.tuesch.js.observer.TqPixiElement","path":"./dev/tuesch/js/observer.js","className":"TqPixiElement","docPath":null,"methods":[{"name":"_createDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"debugText","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"debugText","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_updateDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_removeDebuggingUtils","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}}],"children":[]}]},{"name":"dev.tuesch.js.observer.TimeQueue","path":"./dev/tuesch/js/observer.js","className":"TimeQueue","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"add","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"update","comment":{"type":"Line","value":"Remove the element that's not alive anymore!","start":5349,"end":5395}},{"name":"_remove","comment":{"type":"Block","value":"*\r\n * Private method to remove elements from the queue.\r\n * The queue gets updated in the updatefunction. If elements\r\n * are not alive anymore _remove() is called on them.\r\n * \r\n * @private\r\n * @param {TQElement} tq - The TimeQueue Element that shall be removed.\r\n * \r\n ","start":5511,"end":5818}},{"name":"remove","comment":{"type":"Block","value":"*\r\n * The public remove method that has to be called from\r\n * outside, when the element got removed by the user.\r\n * \r\n * It's just a request. If the element was already removed\r\n * nothing happend.\r\n * \r\n * @public\r\n * @return {boolean} - Returns true if the element was successfully removed, otherwise false. \r\n ","start":6133,"end":6487}}],"children":[]},{"name":"dev.tuesch.js.overlay.Overlay","path":"./dev/tuesch/js/overlay.js","className":"Overlay","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n *Creates an instance of Overlay.\r\n * @param {*} [{\r\n * name = \"unnamed\", {string}\r\n * connector = false,\r\n * connectorType = \"line\",\r\n * location = null,\r\n * label = false,\r\n * labelType = null,\r\n * labelLocation = null,\r\n * labelAlignment = \"left\",\r\n * labelVerticalAlign = \"top\",\r\n * labelTarget = null,\r\n * shape = \"geometry\", {string} - Defines the shape to be used: geometry, circle, rectangle\r\n * geometry = null,\r\n * geometryType = \"point\",\r\n * geometryFallback = \"circle\",\r\n * informationPopup = \"infocard\",\r\n *\r\n * }={}]\r\n * @memberof Overlay\r\n ","start":186,"end":968}},{"name":"textureParameters","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"setTexture","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"apply","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"create","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"getItemProperty","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"_isReference","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"_resolveReference","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"findAllTextures","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"selectTextures","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"createItem","comment":{"type":"Block","value":"*\r\n * Use a factory to draw the items, if a type is specified.\r\n ","start":8942,"end":9027}},{"name":"_drawLabel","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_gatherFontStyle","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_drawGeometry","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_drawPolygon","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_drawRoutine","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_createIcon","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_createInformation","comment":{"type":"Block","value":"*\r\n * SO: The overlay class is quite convenient.\r\n * But managing the information creation solely inside this\r\n * class restricts us massively.\r\n * \r\n * Maybe a restructuring would be good, that we can handle\r\n * the creation of information with a callback and can adapt\r\n * to any occuring situation.\r\n * \r\n * e.g. \r\n * \r\n * overlay.informationHandler((geo, type, item)=>{\r\n * switch(type){\r\n * case \"popup\": \r\n * createPopup(item.information)\r\n * break;\r\n * \r\n * ....\r\n * }\r\n * })\r\n ","start":16004,"end":16829}},{"name":"_fill","comment":null},{"name":"_drawPoint","comment":null}],"children":[]},{"name":"dev.tuesch.js.pixi.geographics.GeoGraphics","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoGraphics","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * The _adaptCoordinates is called first by the adaptTo Method.\r\n * Here all coordinates are transformed into point coordinates.\r\n * This must be overloaded in subclass.\r\n * \r\n * @abstract\r\n ","start":1585,"end":1807}},{"name":"clone","comment":{"type":"Block","value":"*\r\n * The _adaptCoordinates is called first by the adaptTo Method.\r\n * Here all coordinates are transformed into point coordinates.\r\n * This must be overloaded in subclass.\r\n * \r\n * @abstract\r\n ","start":1585,"end":1807}},{"name":"_cloneOptions","comment":{"type":"Block","value":"*\r\n * The _adaptCoordinates is called first by the adaptTo Method.\r\n * Here all coordinates are transformed into point coordinates.\r\n * This must be overloaded in subclass.\r\n * \r\n * @abstract\r\n ","start":1585,"end":1807}},{"name":"_adaptCoordinates","comment":{"type":"Block","value":"*\r\n * The _adaptCoordinates is called first by the adaptTo Method.\r\n * Here all coordinates are transformed into point coordinates.\r\n * This must be overloaded in subclass.\r\n * \r\n * @abstract\r\n ","start":1585,"end":1807}},{"name":"_getPoints","comment":{"type":"Block","value":"*\r\n * Gets all screen points in a single array.\r\n * \r\n * @abstract\r\n * @returns {array} - Array of all points in the GeoGraphic.\r\n ","start":1957,"end":2102}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * Manipulates all points depending on a function. \r\n * Mainly used to transform points to local space.\r\n *\r\n * @abstract\r\n * @param {function} func\r\n * @memberof GeoGraphics\r\n ","start":2236,"end":2448}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * The _draw method is called last on adaptation. It creates the GraphicData \r\n * of the specified subclass. To manipulate the style of the graphic, hook an onDraw listener\r\n * to the GeoGraphics object. It is called before the _draw and lets the user modify color and \r\n * lineStyle of the drawn object. \r\n * \r\n * Note: It could also be used for more radical manipulations on the graphics object.\r\n * But this should be used with care.\r\n * \r\n * @abstract\r\n ","start":2600,"end":3105}},{"name":"adaptTo","comment":{"type":"Block","value":"*\r\n * Called by the containing geo layer, when the map changes.\r\n ","start":3225,"end":3303}},{"name":"points","comment":{"type":"Block","value":"*\r\n * Retrieves the point data.\r\n * Note: This data changes on adaptation.\r\n ","start":3580,"end":3673}},{"name":"position","comment":{"type":"Block","value":"*\r\n * Returns the screen position of the GeoGraphics.\r\n ","start":3737,"end":3805}},{"name":"map","comment":{"type":"Block","value":"*\r\n * Prepare draw is a private function, that prepares the graphics\r\n * for the next draw call. It also fires the drawHandler.\r\n * \r\n * @private\r\n * @memberof GeoGraphics\r\n ","start":4329,"end":4532}},{"name":"mapLayer","comment":{"type":"Block","value":"*\r\n * Prepare draw is a private function, that prepares the graphics\r\n * for the next draw call. It also fires the drawHandler.\r\n * \r\n * @private\r\n * @memberof GeoGraphics\r\n ","start":4329,"end":4532}},{"name":"_prepareDraw","comment":{"type":"Block","value":"*\r\n * Prepare draw is a private function, that prepares the graphics\r\n * for the next draw call. It also fires the drawHandler.\r\n * \r\n * @private\r\n * @memberof GeoGraphics\r\n ","start":4329,"end":4532}},{"name":"_updatePosition","comment":{"type":"Block","value":"*\r\n * Calculates the center of Mass for a set of points.\r\n *\r\n * @static\r\n * @param {Array} points - Array of points in the format {x: a, y:b}\r\n * @returns {object} - Returns a point containing the center of mass of the polygon.\r\n * @memberof GeoGraphics\r\n ","start":5164,"end":5453}},{"name":"calculateCenterOfMass","comment":{"type":"Block","value":"*\r\n * Calculates the center of Mass for a set of points.\r\n *\r\n * @static\r\n * @param {Array} points - Array of points in the format {x: a, y:b}\r\n * @returns {object} - Returns a point containing the center of mass of the polygon.\r\n * @memberof GeoGraphics\r\n ","start":5164,"end":5453}}],"children":[{"name":"dev.tuesch.js.pixi.geographics.GeoPoint","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoPoint","docPath":null,"methods":[{"name":"clone","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}},{"name":"_adaptCoordinates","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}},{"name":"_getPoints","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}}],"children":[{"name":"dev.tuesch.js.pixi.geographics.GeoText","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoText","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"TODO: Make this more generic: ","start":15986,"end":16018}},{"name":"text","comment":{"type":"Block","value":"*\r\n * A geotext with a notch at a certain Position.\r\n ","start":16970,"end":17028}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * A geotext with a notch at a certain Position.\r\n ","start":16970,"end":17028}},{"name":"adaptTo","comment":{"type":"Block","value":"*\r\n * A geotext with a notch at a certain Position.\r\n ","start":16970,"end":17028}}],"children":[{"name":"dev.tuesch.js.pixi.geographics.GeoFlagLabel","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoFlagLabel","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"_draw","comment":null}],"children":[]}]}]},{"name":"dev.tuesch.js.pixi.geographics.GeoLine","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoLine","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * @param {object} opts - Optional values\r\n * @param {array} [opts.points=[]] - Initial points of the geo shape.\r\n * @param {boolean} [closed=false] - Defines if the\r\n ","start":6508,"end":6699}},{"name":"clone","comment":{"type":"Block","value":"*\r\n * Adds a point to the geo line.\r\n ","start":7186,"end":7236}},{"name":"_cloneOptions","comment":{"type":"Block","value":"*\r\n * Adds a point to the geo line.\r\n ","start":7186,"end":7236}},{"name":"addPoint","comment":{"type":"Block","value":"*\r\n * Adds a point to the geo line.\r\n ","start":7186,"end":7236}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * This resets the fill.\r\n * \r\n * DISCUSS: SO: \"I'm not sure how the line should be defined.\r\n * On the one hand. The line is clearly intended to\r\n * represent a line and not an area. On the other hand,\r\n * why should the user be prevented from using a fill for the \r\n * area within the line. But if he want's a fill, why don't take\r\n * a Polygon in the first place? \r\n * \r\n * (But if it's a predefined GeoJSON object obtained through e.g. elasticsearch,\r\n * then the user is not in full control of the object type and it may be a good\r\n * addition to grant the user this additional design choice.)\r\n * \r\n * The opportunity to do so would result in additional conditions, when creating the\r\n * GeoGraphics of an overlay.\" \r\n * ","start":7905,"end":8909}},{"name":"_getPoints","comment":{"type":"Block","value":"*\r\n * This resets the fill.\r\n * \r\n * DISCUSS: SO: \"I'm not sure how the line should be defined.\r\n * On the one hand. The line is clearly intended to\r\n * represent a line and not an area. On the other hand,\r\n * why should the user be prevented from using a fill for the \r\n * area within the line. But if he want's a fill, why don't take\r\n * a Polygon in the first place? \r\n * \r\n * (But if it's a predefined GeoJSON object obtained through e.g. elasticsearch,\r\n * then the user is not in full control of the object type and it may be a good\r\n * addition to grant the user this additional design choice.)\r\n * \r\n * The opportunity to do so would result in additional conditions, when creating the\r\n * GeoGraphics of an overlay.\" \r\n * ","start":7905,"end":8909}},{"name":"_adaptCoordinates","comment":{"type":"Block","value":"*\r\n * This resets the fill.\r\n * \r\n * DISCUSS: SO: \"I'm not sure how the line should be defined.\r\n * On the one hand. The line is clearly intended to\r\n * represent a line and not an area. On the other hand,\r\n * why should the user be prevented from using a fill for the \r\n * area within the line. But if he want's a fill, why don't take\r\n * a Polygon in the first place? \r\n * \r\n * (But if it's a predefined GeoJSON object obtained through e.g. elasticsearch,\r\n * then the user is not in full control of the object type and it may be a good\r\n * addition to grant the user this additional design choice.)\r\n * \r\n * The opportunity to do so would result in additional conditions, when creating the\r\n * GeoGraphics of an overlay.\" \r\n * ","start":7905,"end":8909}},{"name":"_prepareDraw","comment":{"type":"Block","value":"*\r\n * This resets the fill.\r\n * \r\n * DISCUSS: SO: \"I'm not sure how the line should be defined.\r\n * On the one hand. The line is clearly intended to\r\n * represent a line and not an area. On the other hand,\r\n * why should the user be prevented from using a fill for the \r\n * area within the line. But if he want's a fill, why don't take\r\n * a Polygon in the first place? \r\n * \r\n * (But if it's a predefined GeoJSON object obtained through e.g. elasticsearch,\r\n * then the user is not in full control of the object type and it may be a good\r\n * addition to grant the user this additional design choice.)\r\n * \r\n * The opportunity to do so would result in additional conditions, when creating the\r\n * GeoGraphics of an overlay.\" \r\n * ","start":7905,"end":8909}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * This resets the fill.\r\n * \r\n * DISCUSS: SO: \"I'm not sure how the line should be defined.\r\n * On the one hand. The line is clearly intended to\r\n * represent a line and not an area. On the other hand,\r\n * why should the user be prevented from using a fill for the \r\n * area within the line. But if he want's a fill, why don't take\r\n * a Polygon in the first place? \r\n * \r\n * (But if it's a predefined GeoJSON object obtained through e.g. elasticsearch,\r\n * then the user is not in full control of the object type and it may be a good\r\n * addition to grant the user this additional design choice.)\r\n * \r\n * The opportunity to do so would result in additional conditions, when creating the\r\n * GeoGraphics of an overlay.\" \r\n * ","start":7905,"end":8909}}],"children":[]},{"name":"dev.tuesch.js.pixi.geographics.GeoShape","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoShape","docPath":null,"methods":[{"name":"clone","comment":{"type":"Block","value":"*\r\n * Mets the requirements for the _manipulatePointsMethod().\r\n * Primarily used in subclasses to get the processing steps from\r\n * their superclass.\r\n *\r\n * @static\r\n * @protected\r\n * @param {Array.} points - The points array that shold be manipulated.\r\n * @param {function} func - The function that changes the single point value. Has to return a new point.\r\n * @memberof GeoShape\r\n ","start":9607,"end":10052}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * Mets the requirements for the _manipulatePointsMethod().\r\n * Primarily used in subclasses to get the processing steps from\r\n * their superclass.\r\n *\r\n * @static\r\n * @protected\r\n * @param {Array.} points - The points array that shold be manipulated.\r\n * @param {function} func - The function that changes the single point value. Has to return a new point.\r\n * @memberof GeoShape\r\n ","start":9607,"end":10052}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * Mets the requirements for the _manipulatePointsMethod().\r\n * Primarily used in subclasses to get the processing steps from\r\n * their superclass.\r\n *\r\n * @static\r\n * @protected\r\n * @param {Array.} points - The points array that shold be manipulated.\r\n * @param {function} func - The function that changes the single point value. Has to return a new point.\r\n * @memberof GeoShape\r\n ","start":9607,"end":10052}},{"name":"_getPoints","comment":{"type":"Block","value":"*\r\n * Returns all points of a polygon array.\r\n * Useful for when getting sub polygons in child class.\r\n ","start":10382,"end":10502}},{"name":"_getPointsFrom","comment":{"type":"Block","value":"*\r\n * Returns all points of a polygon array.\r\n * Useful for when getting sub polygons in child class.\r\n ","start":10382,"end":10502}},{"name":"_adaptCoordinates","comment":{"type":"Block","value":"*\r\n * Separates the points array into it's two parts:\r\n * - the solid polygon\r\n * - a hole that is cut into the polygon (optional)\r\n * \r\n * @private\r\n * @returns {object} - Returns an object containing the polygon and the hole in the form of {polygon: [...PIXI.Point], hole: [...PIXI.Point]}\r\n ","start":11319,"end":11655}},{"name":"_adaptPoint","comment":{"type":"Block","value":"*\r\n * Separates the points array into it's two parts:\r\n * - the solid polygon\r\n * - a hole that is cut into the polygon (optional)\r\n * \r\n * @private\r\n * @returns {object} - Returns an object containing the polygon and the hole in the form of {polygon: [...PIXI.Point], hole: [...PIXI.Point]}\r\n ","start":11319,"end":11655}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * Separates the points array into it's two parts:\r\n * - the solid polygon\r\n * - a hole that is cut into the polygon (optional)\r\n * \r\n * @private\r\n * @returns {object} - Returns an object containing the polygon and the hole in the form of {polygon: [...PIXI.Point], hole: [...PIXI.Point]}\r\n ","start":11319,"end":11655}},{"name":"_drawFrom","comment":{"type":"Block","value":"*\r\n * Separates the points array into it's two parts:\r\n * - the solid polygon\r\n * - a hole that is cut into the polygon (optional)\r\n * \r\n * @private\r\n * @returns {object} - Returns an object containing the polygon and the hole in the form of {polygon: [...PIXI.Point], hole: [...PIXI.Point]}\r\n ","start":11319,"end":11655}},{"name":"_pointsToShape","comment":{"type":"Block","value":"*\r\n * Separates the points array into it's two parts:\r\n * - the solid polygon\r\n * - a hole that is cut into the polygon (optional)\r\n * \r\n * @private\r\n * @returns {object} - Returns an object containing the polygon and the hole in the form of {polygon: [...PIXI.Point], hole: [...PIXI.Point]}\r\n ","start":11319,"end":11655}},{"name":"_transformToPIXI","comment":{"type":"Block","value":"*\r\n * Transform an array of poins into an array of PIXI.Points.\r\n * Note: When creating PIXI.Polygons, for some reason the points\r\n * need to be a PIXI.Points object (at least the first one).\r\n *\r\n * @param {array} points - Points in the form of {x:a,y:b}\r\n * @returns An array of PIXI.Points\r\n * @memberof GeoPolygon\r\n ","start":11877,"end":12245}},{"name":"_drawShape","comment":{"type":"Block","value":"*\r\n * Draws a single shape onto the graphics object.\r\n * Useful when being called from subclass.\r\n *\r\n * @protected\r\n * @param {Array.} polygon - An array of PIXI.Points for drawing a polygon.\r\n * @param {Array.} [hole=[]] - An Array of PIXI.Points for cutting a hole into the polygon\r\n * @memberof GeoShape\r\n ","start":12463,"end":12833}}],"children":[{"name":"dev.tuesch.js.pixi.geographics.GeoMultiShape","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoMultiShape","docPath":null,"methods":[{"name":"_manipulatePoints","comment":null},{"name":"_getPointsFrom","comment":null},{"name":"_adaptPoint","comment":null},{"name":"calculateLocation","comment":null},{"name":"_drawFrom","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.pixi.geographics.GeoMultiGraphics","path":"./dev/tuesch/js/pixi/geographics.js","className":"GeoMultiGraphics","docPath":null,"methods":[{"name":"_adaptCoordinates","comment":{"type":"Block","value":"*\r\n * The _adaptCoordinates is called first by the adaptTo Method.\r\n * Here all coordinates are transformed into point coordinates.\r\n * This must be overloaded in subclass.\r\n * \r\n * @abstract\r\n ","start":14146,"end":14368}},{"name":"_getPoints","comment":{"type":"Block","value":"*\r\n * Gets all screen points in a single array.\r\n * \r\n * @abstract\r\n * @returns {array} - Array of all points in the GeoGraphic.\r\n ","start":14417,"end":14562}},{"name":"_manipulatePoints","comment":{"type":"Block","value":"*\r\n * Manipulates all points depending on a function. \r\n * Mainly used to transform points to local space.\r\n *\r\n * @abstract\r\n * @param {function} func\r\n * @memberof GeoGraphics\r\n ","start":14696,"end":14908}},{"name":"_draw","comment":{"type":"Block","value":"*\r\n * The _draw method is called last on adaptation. It creates the GraphicData \r\n * of the specified subclass. To manipulate the style of the graphic, hook an onDraw listener\r\n * to the GeoGraphics object. It is called before the _draw and lets the user modify color and \r\n * lineStyle of the drawn object. \r\n * \r\n * Note: It could also be used for more radical manipulations on the graphics object.\r\n * But this should be used with care.\r\n * \r\n * @abstract\r\n ","start":15060,"end":15565}}],"children":[]}]},{"name":"dev.tuesch.js.pixi.geojson.GeoJson","path":"./dev/tuesch/js/pixi/geojson.js","className":"GeoJson","docPath":null,"methods":[{"name":"isLineType","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"create","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"_getFormatStringOfType","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"types","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"validateAndConvert","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"validateType","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"validateCoordinates","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"validateAndConvertPoint","comment":{"type":"Block","value":"*\r\n * Validates a point if it's an valid coordinate.\r\n * \r\n * NOTE: Here we are not following the GeoJSON standard.\r\n * For convenience multiple forms of representing a coordinate are \r\n * considered valid. A complete list is provided in the GeoUtils. \r\n *\r\n * @param {object} point - The point that is tested for validity. \r\n * @returns\r\n * @memberof GeoJson\r\n ","start":3234,"end":3639}},{"name":"validateLineString","comment":{"type":"Block","value":"*\r\n *Validates if the given points represent a 'LineString'.\r\n *\r\n * @param {array} points - A list of coordinates that represent a line.\r\n * @returns {boolean} - Returns true, if the array is in formes as: [x1,x2,x3,...,xn]. Where x# represent a valid coordinate. \r\n * @memberof GeoJson\r\n ","start":3752,"end":4070}},{"name":"validatePolygon","comment":null},{"name":"convert","comment":null},{"name":"_convertLineString","comment":null},{"name":"_convertPolygon","comment":null},{"name":"_convertMultiPolygon","comment":null}],"children":[]},{"name":"dev.tuesch.js.pixi.geoutils.GeoUtils","path":"./dev/tuesch/js/pixi/geoutils.js","className":"GeoUtils","docPath":null,"methods":[{"name":"fromGeoJsonToGeoGraphics","comment":{"type":"Block","value":"*\r\n * Creates the appropriate GeoGraphics object from a GeoJson type. \r\n * The coordinates need to be alread in the appropriate PIXI format.\r\n * If not already - this can be achieved by calling 'GeoJson.validateAndConvert(type, points)'\r\n * beforehand.\r\n * \r\n * @static\r\n * @param {string} type - Any of the GeoJson types ('Point', 'LineString', 'Polygon', 'MultiPoint', 'MultiLineString', 'MultiPolygon').\r\n * @param {array} coordinates - Array of coordinates that fit the type. The positions within these must be in PIXI format: {x:a, y:b}.\r\n * @returns {GeoGraphics} - Returns a GeoGraphics object. If the conversion fails, it returns null.\r\n * @memberof GeoGraphics\r\n ","start":241,"end":961}},{"name":"validateCoordinate","comment":{"type":"Block","value":"*\r\n * Validates an object, if it's an coordinate object.\r\n * Coordinate objects can be in the following forms:\r\n * \r\n * [lng, lat] - GeoJSON array format. !Attention lng and lat are swapped compared to the x,y format.\r\n * {x: lat, y: lng} - 'correct' PIXI.format\r\n * {lat, lng}\r\n * {latitude: lat, longitude: lng}\r\n *\r\n * @static\r\n * @param {object / array} coordinate - Coordinate to be tested, if it is an valid coordinate.\r\n * @returns - Returns the coordinate properly transformed. If transformation was not possible, it returns null.\r\n * @memberof GeoGraphics\r\n ","start":1933,"end":2557}}],"children":[]},{"name":"dev.tuesch.js.pixi.utils.PIXIUtils","path":"./dev/tuesch/js/pixi/utils.js","className":"PIXIUtils","docPath":null,"methods":[{"name":"toScreenFontSize","comment":{"type":"Block","value":"\r\n* Transform a pixi text to it's actual screensize, \r\n* ignoring it's local transforms\r\n","start":30,"end":123}},{"name":"saveFill","comment":null}],"children":[]},{"name":"dev.tuesch.js.pointofinterest.PointOfInterest","path":"./dev/tuesch/js/pointofinterest.js","className":"PointOfInterest","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" const duration = 5;","start":3673,"end":3695}},{"name":"update","comment":{"type":"Line","value":" const duration = 5;","start":3673,"end":3695}},{"name":"adaptTo","comment":{"type":"Line","value":" const duration = 5;","start":3673,"end":3695}},{"name":"request","comment":{"type":"Line","value":" const duration = 5;","start":3673,"end":3695}},{"name":"clicked","comment":null},{"name":"_createInfoCard","comment":null},{"name":"mapChanged","comment":null},{"name":"close","comment":null},{"name":"updateInfoPoint","comment":null},{"name":"created","comment":null}],"children":[]},{"name":"dev.tuesch.js.program.Program","path":"./dev/tuesch/js/program.js","className":"Program","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Initialize an enteredState function for every sate of the program.\r\n ","start":508,"end":603}},{"name":"state","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"next","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"log","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"error","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"warn","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"define","comment":{"type":"Block","value":"*\r\n * Defines a global variable, adding it's reference to the program and\r\n * the window object.\r\n ","start":2423,"end":2538}},{"name":"set","comment":{"type":"Block","value":"*\r\n *Sets a global variable.\r\n *\r\n * @param {string} name - Name of the global variable.\r\n * @param {any} value - Value to set the variable to.\r\n * @param {boolean} [define=false] - Flag for defining the global (appended to window object) variable directly in the process. Set to true, when global variable was not defined beforehand. Default: false.\r\n * @returns {boolean} - Returns true if variable was set successfully, false otherwise.\r\n * @memberof Program\r\n ","start":3806,"end":4347}}],"children":[]},{"name":"dev.tuesch.js.projections.projection.Projection","path":"./dev/tuesch/js/projections/projection.js","className":"Projection","docPath":null,"methods":[{"name":"forward","comment":null},{"name":"backward","comment":null},{"name":"toString","comment":null},{"name":"name","comment":null},{"name":"maxViewport","comment":null}],"children":[{"name":"dev.tuesch.js.projections.mercator.Mercator","path":"./dev/tuesch/js/projections/mercator.js","className":"Mercator","docPath":null,"methods":[{"name":"forward","comment":null},{"name":"backward","comment":null},{"name":"toString","comment":null},{"name":"maxViewport","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.query.QueryHandler","path":"./dev/tuesch/js/query.js","className":"QueryHandler","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Instantiate the Query Handler with a specific set of QueryParameters.\r\n * Query parameters, which are not specified in the Query Handler will be ignored\r\n * and a notice will be added in the error list. \r\n * \r\n * @param {QueryParameter[]} params - Array of defined query parameters. The name becomes the key to access the object with. \r\n ","start":122,"end":494}},{"name":"toObject","comment":{"type":"Block","value":"*\r\n * Converts a all defined Parameters to a\r\n * javacsript object. \r\n * \r\n * @public\r\n ","start":597,"end":709}},{"name":"split","comment":{"type":"Block","value":"*\r\n * Splits a key-value string of the query request in an\r\n * array in the form of [key, value].\r\n * \r\n * @private\r\n * @param {*} paramString \r\n * @returns {Array} - Returns the key value pair, if splitting was successful. Otherwise it returns null. (Note: null because then you can test with if(pair){//success} else //fail)\r\n ","start":1928,"end":2289}},{"name":"logErrors","comment":{"type":"Block","value":"*\r\n * Prints all occured errors to the console and empties the error list.\r\n ","start":3082,"end":3171}},{"name":"error","comment":{"type":"Block","value":"*\r\n * Logs an error to the error list.\r\n * \r\n * @param {string} - Message to log to the error list. \r\n ","start":3318,"end":3441}},{"name":"get","comment":{"type":"Block","value":"*\r\n * Returns the current Query string\r\n * \r\n * @public\r\n * @static\r\n * @returns {string} - Returns the query string as specified in the URI (Excluding the '?').\r\n ","start":3510,"end":3702}}],"children":[]},{"name":"dev.tuesch.js.query.QueryParameter","path":"./dev/tuesch/js/query.js","className":"QueryParameter","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * \r\n * @param {string} key - Name of the query variable\r\n * @param {function} validationFunc - Function to validate the value with. The function must return a boolean.\r\n ","start":3912,"end":4106}},{"name":"equals","comment":{"type":"Block","value":"*\r\n * Compares a key with the specified key of the query parameter.\r\n * \r\n * @param {string} key - Key that should be tested for equality. \r\n ","start":4261,"end":4423}},{"name":"apply","comment":{"type":"Block","value":"*\r\n * If the value passes the validation test, it's applied to the\r\n * Query parameter and can be accessed with the value attribute.\r\n * \r\n * Note: You should always call equals(key) before calling this function directly.\r\n * \r\n * @param {various} value - Value that should be tested against the validation test. \r\n * @returns {boolean} - Returns whether the validation test succeeded and value was set. If false, the value attribute will return 'undefined'.\r\n ","start":4491,"end":4988}},{"name":"value","comment":{"type":"Block","value":"*\r\n * Returns the value, if it has been successfully applied. Otherwise returns 'undefined'.\r\n ","start":5153,"end":5260}}],"children":[]},{"name":"dev.tuesch.js.signpost.Signpost","path":"./dev/tuesch/js/signpost.js","className":"Signpost","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * \r\n ","start":285,"end":306}},{"name":"guideDirection","comment":{"type":"Block","value":"*\r\n * Returns an orientation in degrees for a given point on the area;\r\n * \r\n * @param {object} point - point on display\r\n * @returns {number} Orientation in degrees\r\n ","start":342,"end":534}}],"children":[{"name":"dev.tuesch.js.signpost.CircularSignpost","path":"./dev/tuesch/js/signpost.js","className":"CircularSignpost","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"guideDirection","comment":null},{"name":"transformRelative","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.submap.Submap","path":"./dev/tuesch/js/submap.js","className":"Submap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"Thr alpha ratio describes when the submap get's invisible, when it's size gets below the minScale and 0. ","start":490,"end":598}},{"name":"addControl","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"setPosition","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"centerAt","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"_cleanupControls","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"_drawControlButtons","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"_createInnerMask","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"toFront","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"_createContainer","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"create","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"open","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"interact","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"resize","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"changeMap","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"setMap","comment":{"type":"Block","value":"*\r\n * Brings controls back to front.\r\n ","start":6266,"end":6325}},{"name":"_changeControlButtonColor","comment":{"type":"Block","value":"*\r\n * Returns the rotation of the submap.\r\n *\r\n * @return {number} - Rotation in radians.\r\n ","start":6903,"end":7015}},{"name":"draw","comment":{"type":"Block","value":"*\r\n * Returns the rotation of the submap.\r\n *\r\n * @return {number} - Rotation in radians.\r\n ","start":6903,"end":7015}},{"name":"rotation","comment":{"type":"Block","value":"*\r\n * Returns the rotation of the submap.\r\n *\r\n * @return {number} - Rotation in radians.\r\n ","start":6903,"end":7015}},{"name":"_calculateDiameter","comment":{"type":"Block","value":"*\r\n * Activate must be called, after the user opened the submap with a gesture.\r\n * The release activates the submap's functionality and applys predefined behaviour,\r\n * like the minDimensions.\r\n ","start":7228,"end":7444}},{"name":"activate","comment":{"type":"Block","value":"*\r\n * Activate must be called, after the user opened the submap with a gesture.\r\n * The release activates the submap's functionality and applys predefined behaviour,\r\n * like the minDimensions.\r\n ","start":7228,"end":7444}},{"name":"activated","comment":{"type":"Line","value":" this.container.resize(this.width, this.height)","start":8003,"end":8052}},{"name":"updateContainer","comment":{"type":"Line","value":" this.container.resize(this.width, this.height)","start":8003,"end":8052}},{"name":"update","comment":{"type":"Block","value":"*\r\n * Moves the map to the location the container is currently hovering above.\r\n ","start":8250,"end":8343}},{"name":"magnify","comment":{"type":"Block","value":"*\r\n * Moves the map to the location the container is currently hovering above.\r\n ","start":8250,"end":8343}},{"name":"localCenter","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"center","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"bottomRight","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"x","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"y","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"setSize","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"width","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"height","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"shrink","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"shrinkClose","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"fadeOut","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"close","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"cleanup","comment":{"type":"Line","value":"There may occur an error on close:","start":10539,"end":10575}},{"name":"destroy","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"_determineControlPosition","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"color","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"foregroundColor","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"backgroundColor","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"changeColor","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}}],"children":[{"name":"dev.tuesch.js.submap.RectSubmap","path":"./dev/tuesch/js/submap.js","className":"RectSubmap","docPath":null,"methods":[{"name":"_filterMinMax","comment":{"type":"Block","value":"*\r\n * For 2 given points with the values {x,y} returns the min and max values of each dimension.\r\n * e.g. for two points {x:0,1, y:1,0} it would return {min: {x:0,y:0}, max:{x:1,y:1}}\r\n *\r\n * @private\r\n * @param {*} a\r\n * @param {*} b\r\n * @returns {object} - Returns the min and max points in the form of {min, max}.\r\n * @memberof RectSubmap\r\n ","start":11654,"end":12038}},{"name":"interact","comment":{"type":"Line","value":"console.log(p_min)","start":13017,"end":13037}},{"name":"open","comment":{"type":"Line","value":"console.log(p_min)","start":13017,"end":13037}},{"name":"draw","comment":{"type":"Block","value":"*\r\n * //TODO find better name.\r\n * \r\n * \r\n * The create method is used, when a gesture is used to create the submap.\r\n * The dimensions of the submap are defined by two points.\r\n * If the max dimension is reached, the dimensions get locked and\r\n * the user can now rotate the map with the two touch points.\r\n * \r\n * @param {any} p1 \r\n * @param {any} [p2=null] \r\n * @param {any} [{\r\n * offset = { x: 0, y: 0 },\r\n * offsetP1 = { x: 0, y: 0 },\r\n * offsetP2 = { x: 0, y: 0 }\r\n * }={}] - D\r\n * @memberof Submap\r\n ","start":13519,"end":14110}},{"name":"create","comment":{"type":"Block","value":"*\r\n * //TODO find better name.\r\n * \r\n * \r\n * The create method is used, when a gesture is used to create the submap.\r\n * The dimensions of the submap are defined by two points.\r\n * If the max dimension is reached, the dimensions get locked and\r\n * the user can now rotate the map with the two touch points.\r\n * \r\n * @param {any} p1 \r\n * @param {any} [p2=null] \r\n * @param {any} [{\r\n * offset = { x: 0, y: 0 },\r\n * offsetP1 = { x: 0, y: 0 },\r\n * offsetP2 = { x: 0, y: 0 }\r\n * }={}] - D\r\n * @memberof Submap\r\n ","start":13519,"end":14110}},{"name":"_applyMinDimensions","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}}],"children":[]},{"name":"dev.tuesch.js.submap.CircleSubmap","path":"./dev/tuesch/js/submap.js","className":"CircleSubmap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"diameter","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"diameter","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"minSize","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"maxSize","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"_drawControlButtons","comment":{"type":"Line","value":" this._adjustControlVisibility()","start":16581,"end":16615}},{"name":"create","comment":{"type":"Line","value":" }","start":19192,"end":19196}},{"name":"interact","comment":{"type":"Line","value":"console.log(\"Submap opened...\")","start":19547,"end":19580}},{"name":"open","comment":{"type":"Line","value":"console.log(\"Submap opened...\")","start":19547,"end":19580}},{"name":"resize","comment":{"type":"Line","value":"TODO: I used ExpoScaleEase.config here but it turned out to just jump. Don't know why. -> SO","start":20193,"end":20287}},{"name":"_calculateDiameter","comment":{"type":"Line","value":" }","start":22074,"end":22078}},{"name":"_calculatePosition","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"updateContainer","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"draw","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"minSize","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"_applyMinDimensions","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}}],"children":[{"name":"dev.tuesch.js.submap.TueschSubmap","path":"./dev/tuesch/js/submap.js","className":"TueschSubmap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"getDefaultButton","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"shrinkClose","comment":{"type":"Line","value":" scale(size, animate, opts) {","start":24133,"end":24164}},{"name":"shrink","comment":{"type":"Line","value":" }","start":25505,"end":25509}},{"name":"updateContainer","comment":{"type":"Line","value":" this.container.interactive = false;","start":25761,"end":25799}},{"name":"activated","comment":{"type":"Line","value":" this.container.interactive = false;","start":25761,"end":25799}}],"children":[{"name":"dev.tuesch.js.submap.OneTouchSubmap","path":"./dev/tuesch/js/submap.js","className":"OneTouchSubmap","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" stop propagation for open new submaps when tapped inside existing submap","start":26020,"end":26095}},{"name":"addButtons","comment":{"type":"Line","value":" close button","start":27447,"end":27462}}],"children":[]}]}]}]},{"name":"dev.tuesch.js.submap.SubmapControl","path":"./dev/tuesch/js/submap.js","className":"SubmapControl","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Called by the submap.\r\n ","start":29868,"end":29910}},{"name":"cleanup","comment":{"type":"Block","value":"*\r\n * Called by the submap.\r\n ","start":29868,"end":29910}},{"name":"setup","comment":{"type":"Block","value":"*\r\n * Called by the submap.\r\n ","start":29868,"end":29910}},{"name":"draw","comment":null},{"name":"activate","comment":null},{"name":"changeColor","comment":null},{"name":"inverted","comment":null},{"name":"backgroundColor","comment":null},{"name":"foregroundColor","comment":null}],"children":[{"name":"dev.tuesch.js.submap.RoundSubmapControl","path":"./dev/tuesch/js/submap.js","className":"RoundSubmapControl","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"setup","comment":null},{"name":"draw","comment":null},{"name":"size","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.textures.Textures","path":"./dev/tuesch/js/textures.js","className":"Textures","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Adds an object containing texturedata to the Textures.\r\n * The texture data has to be in form of:\r\n * \r\n * textures = {\r\n * name: \"link/to/texture.jpg\",\r\n * other: \"link/to/other/img.png\"\r\n * } \r\n *\r\n * @param {object} textures - Textures to add as object. \r\n * @memberof Textures\r\n ","start":443,"end":790}},{"name":"get","comment":{"type":"Block","value":"*\r\n * Adds an object containing texturedata to the Textures.\r\n * The texture data has to be in form of:\r\n * \r\n * textures = {\r\n * name: \"link/to/texture.jpg\",\r\n * other: \"link/to/other/img.png\"\r\n * } \r\n *\r\n * @param {object} textures - Textures to add as object. \r\n * @memberof Textures\r\n ","start":443,"end":790}},{"name":"addMultiple","comment":{"type":"Block","value":"*\r\n * Adds an object containing texturedata to the Textures.\r\n * The texture data has to be in form of:\r\n * \r\n * textures = {\r\n * name: \"link/to/texture.jpg\",\r\n * other: \"link/to/other/img.png\"\r\n * } \r\n *\r\n * @param {object} textures - Textures to add as object. \r\n * @memberof Textures\r\n ","start":443,"end":790}},{"name":"add","comment":{"type":"Block","value":"*\r\n * \r\n ","start":941,"end":962}},{"name":"_extractName","comment":{"type":"Block","value":"*\r\n *Extracts the filename from a image path.\r\n *\r\n * @param {string} link - A path to an image file.\r\n * @returns {string} - Returns the basename of the file. And adds a number if the name already exists.\r\n * @memberof Textures\r\n ","start":1310,"end":1569}}],"children":[]},{"name":"dev.tuesch.js.tmp.cards.js.xmlparser.XMLParser","path":"./dev/tuesch/js/tmp/cards/js/xmlparser.js","className":"XMLParser","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"** Loads the XML from the given path. **","start":1068,"end":1112}},{"name":"replaceDash","comment":{"type":"Block","value":"** Loads the XML from the given path. **","start":1068,"end":1112}},{"name":"removeLastSegment","comment":{"type":"Block","value":"** Loads the XML from the given path. **","start":1068,"end":1112}},{"name":"extractLastSegment","comment":{"type":"Block","value":"** Loads the XML from the given path. **","start":1068,"end":1112}},{"name":"loadXML","comment":{"type":"Block","value":"** Loads the XML from the given path. **","start":1068,"end":1112}},{"name":"loadParseAndCreateDOM","comment":{"type":"Block","value":"** Entry point, loads and parses the XML. Returns a promise that\n completes if all sub objects are loaded and converted into a single\n DOM tree and to add.**","start":1564,"end":1731}},{"name":"loadAndParseXML","comment":{"type":"Block","value":"** Parse the received XML into a JSON structure. Returns a promise. **","start":2919,"end":2993}},{"name":"parseXML","comment":{"type":"Block","value":"** Parse the received XML into a JSON structure. Returns a promise. **","start":2919,"end":2993}},{"name":"createDOM","comment":{"type":"Block","value":"** Create DOM nodes from JSON structure. Returns a promise. **","start":3076,"end":3142}}],"children":[{"name":"dev.tuesch.js.tmp.cards.js.xmlparser.XMLIndexParser","path":"./dev/tuesch/js/tmp/cards/js/xmlparser.js","className":"XMLIndexParser","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\n * Indexdat contains the relevant informations for the\n * single cards the the index, they are inserted at.\n *\n * The problem is, that the cards are loaded asynchronouly,\n * making the order unpredictable. Therefore the cards is an object,\n * that has the src property as key and the card-data as value.\n *\n * The proper index can be determined by using the carsource at index\n * i to retrieve the card-data of that index.\n ","start":3826,"end":4376}},{"name":"parseXML","comment":{"type":"Block","value":"*\n * Indexdat contains the relevant informations for the\n * single cards the the index, they are inserted at.\n *\n * The problem is, that the cards are loaded asynchronouly,\n * making the order unpredictable. Therefore the cards is an object,\n * that has the src property as key and the card-data as value.\n *\n * The proper index can be determined by using the carsource at index\n * i to retrieve the card-data of that index.\n ","start":3826,"end":4376}},{"name":"createDOM","comment":{"type":"Line","value":"Sollte übernommen werden, macht nic kaputt.","start":5509,"end":5554}},{"name":"prepareTemplate","comment":{"type":"Line","value":" set leftcol/rightcol height","start":7351,"end":7381}},{"name":"createCardDOM","comment":{"type":"Line","value":" targetnode.find('.titlebar').css({ 'background': this.colors[tree.type] })","start":7843,"end":7920}},{"name":"mainImgLoaded","comment":{"type":"Line","value":"layout which depends on the actual main img size goes here","start":14770,"end":14830}},{"name":"backgroundFocus","comment":{"type":"Line","value":"box: bb focus point in % (50 for alignment with center, 0 for top/left)","start":19071,"end":19144}},{"name":"completed","comment":{"type":"Block","value":"** Called after the domNode has been added.\n\n At this point we can register a click handler for the\n flip wrapper which allows us to add a popup that can extend over the back\n and front card bounds. Note that popups have to be closed on click events\n outside the popups.\n\n TODO: On mobile devices we have to\n stay within the card bounds. That's much more complicated.\n **","start":19328,"end":19752}},{"name":"openImageHighlight","comment":{"type":"Line","value":"...","start":26385,"end":26390}},{"name":"removeImageHighlight","comment":{"type":"Block","value":"*\n * Closes the currently opened image highlight.\n *\n * @returns {boolean} - True when an highlight was closed, false otherwise.\n * @memberof XMLIndexParser\n ","start":26427,"end":26609}},{"name":"closeZoomable","comment":{"type":"Line","value":"console.log(\"closeZoomable\")","start":27072,"end":27102}},{"name":"removeZoomable","comment":{"type":"Line","value":"console.log(\"checking for open zoomables (animated?: \" + animated + \" )\")","start":28198,"end":28273}},{"name":"openZoomable","comment":{"type":"Line","value":" console.log('openZoomable', wrapper, zoomable)","start":29636,"end":29685}},{"name":"getInnerHeight","comment":{"type":"Block","value":"*\n * Gets the inner Height of an element.\n * \n * as proposed by: https://stackoverflow.com/a/29546964\n ","start":34942,"end":35065}},{"name":"getInnerWidth","comment":{"type":"Block","value":"*\n * Gets the inner Width of an element.\n * \n * as proposed by: https://stackoverflow.com/a/29546964\n ","start":35331,"end":35453}},{"name":"iconsPath","comment":{"type":"Line","value":"console.log(\"get ratio - on dummy loaded:\",source,dummy.width, dummy.height);","start":35926,"end":36005}},{"name":"getRatio","comment":{"type":"Line","value":"console.log(\"get ratio - on dummy loaded:\",source,dummy.width, dummy.height);","start":35926,"end":36005}},{"name":"setupIndex","comment":{"type":"Line","value":" console.log(\"Setup index!\", indexnode)","start":36261,"end":36302}},{"name":"setupZoomables","comment":{"type":"Line","value":" zoomfun()","start":45492,"end":45504}}],"children":[{"name":"dev.tuesch.js.xml.tueschxmlparser.TueschXMLIndexParser","path":"./dev/tuesch/js/xml/tueschxmlparser.js","className":"TueschXMLIndexParser","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * For not overriding the ahrd coded behaviour in\r\n * XMLIndexParser, that would break other applications.\r\n * The iconsPath getter was introduced to the XMLIndexParser.\r\n * To change the icons folder, we can simply overload the\r\n * icons Path in the subclass.\r\n * \r\n * @returns {string} - Returns the path to the icons folder from the root (or from a specified root when defined in the opts parameter)\r\n ","start":941,"end":1385}},{"name":"iconsPath","comment":{"type":"Block","value":"*\r\n * For not overriding the ahrd coded behaviour in\r\n * XMLIndexParser, that would break other applications.\r\n * The iconsPath getter was introduced to the XMLIndexParser.\r\n * To change the icons folder, we can simply overload the\r\n * icons Path in the subclass.\r\n * \r\n * @returns {string} - Returns the path to the icons folder from the root (or from a specified root when defined in the opts parameter)\r\n ","start":941,"end":1385}}],"children":[]}]},{"name":"dev.tuesch.js.tmp.cards.js.xmlparser.XMLCardParser","path":"./dev/tuesch/js/tmp/cards/js/xmlparser.js","className":"XMLCardParser","docPath":null,"methods":[{"name":"parseXML","comment":{"type":"Line","value":" content type: PREVIEW, TEXT, VIDEO, GROUPIMAGE, SINGLEIMAGE, GLOSS_LINK, DETAIL_LINK, DETAIL_ZOOM, SPACE","start":47723,"end":47830}},{"name":"replaceText","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"replaceCDATA","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"replaceEscapedAngleBrackets","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"preserveTags","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"caption","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"zoomCaption","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}},{"name":"createLinkURL","comment":{"type":"Block","value":" Converts absolute URLs in href attributes created by the DOM builder\n into correct src url. ","start":61889,"end":61993}}],"children":[]}]},{"name":"dev.tuesch.js.utils.ObjectUtils","path":"./dev/tuesch/js/utils.js","className":"ObjectUtils","docPath":null,"methods":[{"name":"findPredecessor","comment":{"type":"Block","value":"*\r\n * Finds the previous key in an object.\r\n * \r\n * @param {string} targetKey - The target key, of whom the predecessor is wanted.\r\n ","start":85,"end":238}},{"name":"findSuccessor","comment":{"type":"Block","value":"*\r\n * Finds the successing key in an object.\r\n * \r\n * @param {string} targetKey - The key of whom the successor key should be found.\r\n * @param {object} obj - The object, that is scanned for the successor.\r\n ","start":1187,"end":1420}},{"name":"fromPath","comment":{"type":"Block","value":" Used from: https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript ","start":2552,"end":2679}}],"children":[]},{"name":"dev.tuesch.js.utils.PathUtils","path":"./dev/tuesch/js/utils.js","className":"PathUtils","docPath":null,"methods":[{"name":"fixTrailingSlash","comment":{"type":"Block","value":" Used from: https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript ","start":2552,"end":2679}}],"children":[]},{"name":"dev.tuesch.js.utils.TimeUtils","path":"./dev/tuesch/js/utils.js","className":"TimeUtils","docPath":null,"methods":[{"name":"minutesToMs","comment":{"type":"Block","value":" Used from: https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript ","start":2552,"end":2679}},{"name":"minutesToSeconds","comment":{"type":"Block","value":" Used from: https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript ","start":2552,"end":2679}}],"children":[]},{"name":"dev.tuesch.js.utils.StringUtils","path":"./dev/tuesch/js/utils.js","className":"StringUtils","docPath":null,"methods":[{"name":"capitalize","comment":{"type":"Block","value":" Used from: https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript ","start":2552,"end":2679}}],"children":[]},{"name":"dev.tuesch.js.utils.GeometryUtils","path":"./dev/tuesch/js/utils.js","className":"GeometryUtils","docPath":null,"methods":[{"name":"RandomRange","comment":{"type":"Block","value":"\r\n Recursion is buggy.\r\n ","start":3192,"end":3227}},{"name":"RandomSign","comment":{"type":"Block","value":"\r\n Recursion is buggy.\r\n ","start":3192,"end":3227}},{"name":"toDegrees","comment":{"type":"Block","value":"\r\n Recursion is buggy.\r\n ","start":3192,"end":3227}},{"name":"toRadians","comment":{"type":"Block","value":"\r\n Recursion is buggy.\r\n ","start":3192,"end":3227}},{"name":"subdivide","comment":{"type":"Block","value":"\r\n Recursion is buggy.\r\n ","start":3192,"end":3227}},{"name":"linearInterpolation","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}}],"children":[]},{"name":"dev.tuesch.js.utils.Matrix","path":"./dev/tuesch/js/utils.js","className":"Matrix","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"Transpose","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"Rotation","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"Transform","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"MultiplyPoint","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}}],"children":[]},{"name":"dev.tuesch.js.utils.DomUtils","path":"./dev/tuesch/js/utils.js","className":"DomUtils","docPath":null,"methods":[{"name":"getCenter","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"getTransformedPosition","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"getCSSMatrix","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"positionOnElement","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"applyTransform","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}}],"children":[]},{"name":"dev.tuesch.js.utils.Vector","path":"./dev/tuesch/js/utils.js","className":"Vector","docPath":null,"methods":[{"name":"length","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"normalize","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}},{"name":"scaleTo","comment":{"type":"Block","value":"*\r\n * The EventHandler class is used to take care of a event based design\r\n * pattern. Callbacks can subscribe to an event and these unknown sources\r\n * get notified whenever the event changes.\r\n * \r\n * @export\r\n * @class EventHandler\r\n ","start":7182,"end":7423}}],"children":[]},{"name":"dev.tuesch.js.utils.EventHandler","path":"./dev/tuesch/js/utils.js","className":"EventHandler","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Creates an instance of EventHandler.\r\n * @param {any} name \r\n * @param {any} [{\r\n * listeners = [] - With the listnerers parameter the user can specify a function, array of functions or null (no function - useful when used in constructor with optional parameter).\r\n * }={}] \r\n * @memberof EventHandler\r\n ","start":7464,"end":7818}},{"name":"addMultiple","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"add","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"once","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"remove","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"empty","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"call","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"length","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}}],"children":[]},{"name":"dev.tuesch.js.utils.Dom","path":"./dev/tuesch/js/utils.js","className":"Dom","docPath":null,"methods":[{"name":"getTextHitRect","comment":{"type":"Block","value":"*\r\n * Popups should be displayed right over the text.\r\n * Normally we would expect the popup to appear right over\r\n * the center of the text. A problem in HTML is, that it's hard\r\n * to determine the position of a text link, when it has a line-break \r\n * in it.\r\n * \r\n * This function solves this problem in the (so far) only possible way.\r\n * \r\n * 1. It removes the link from the dom tree.\r\n * 2. It adds an empty copy A of the link to the dom tree. (Copy is important, as the same styles have to be applied.)\r\n * 3. The contents of the link are added one by one to A.\r\n * 4. If the resulting boundingRect is bigger than the previous one, a line break is detected.\r\n * 5. The old line is tested, if the point was inside that boundingBox. If so save that bounding box (Goto: 7), else:\r\n * 6. Saves the content to a preceding clone B. And repeats from 3. \r\n * 7. Replace A with the initial content\r\n * 8. Return the found BoundingBox. If none found. Return the last bounding box.\r\n ","start":9649,"end":10704}},{"name":"printDomRect","comment":null},{"name":"printDomPoint","comment":null}],"children":[]},{"name":"dev.tuesch.var.cards._theme.js.card.Card","path":"./dev/tuesch/var/cards/_theme/js/card.js","className":"Card","docPath":null,"methods":[{"name":"setup","comment":{"type":"Block","value":"*\n *\n *\n * @static\n * @param {*} event\n * @memberof Card\n ","start":1473,"end":1559}},{"name":"close","comment":{"type":"Block","value":"*\n *\n *\n * @static\n * @param {*} event\n * @memberof Card\n ","start":1473,"end":1559}},{"name":"_replaceAttributes","comment":{"type":"Block","value":"*\n * Replaces a set of attributes using a provided function.\n *\n * @static\n * @param {*} html\n * @param {*} attribute\n * @param {*} replaceFunc\n * @memberof Card\n ","start":1875,"end":2074}},{"name":"_replaceCallback","comment":{"type":"Block","value":"*\n * Replaces the onClick callback of the element with an\n * Interaction mapper event.\n *\n * @static\n * @param {*} element\n * @param {*} attributeVal\n * @returns\n * @memberof Card\n ","start":2433,"end":2645}},{"name":"_adjustRelativeLinks","comment":{"type":"Block","value":"*\n * Transform the relative links to absolute ones.\n * \n * Currently covers:\n * Tags: a,img, image, circle\n * Attributes: xlink:href,href,src (first occurence only)\n * \n * @static\n * @param {DomElement} element - The children of the element are inspected, if there are relative paths, that has to be adjusted to absolute ones.\n * @returns\n * @memberof Card\n ","start":4816,"end":5224}},{"name":"_getRelativePath","comment":{"type":"Block","value":"*\n * Concats the given path with the relative path specified in the Card (as static variable).\n ","start":5919,"end":6027}},{"name":"loadHTML","comment":{"type":"Block","value":"*\n * Loads the card text using an ajax request.\n *\n * @static\n * @param {*} path\n * @returns\n * @memberof Card\n ","start":6178,"end":6322}},{"name":"_isLocal","comment":{"type":"Block","value":"*\n * TODO: Maybe put this in a utility script.\n ","start":7056,"end":7116}},{"name":"isEditable","comment":{"type":"Block","value":"*\n * Returns true if the card belongs to an editable page / context.\n *\n * @static\n * @returns\n * @memberof Card\n ","start":7205,"end":7347}},{"name":"closestWithClass","comment":{"type":"Block","value":"*\n * Finds the closest element with the given css class name along the parent chain.\n *\n * @static\n * @param {any} node - The node to start on\n * @param {any} klass - The css class name\n * @returns {element} - The DOM element with the given class name\n * @memberof Card\n ","start":7460,"end":7767}},{"name":"css","comment":{"type":"Block","value":"*\n * Returns a computed style property. Similar to the jQuery.css method.\n *\n * @param {any} node\n * @param {any} attr\n * @returns {any}\n * @memberof Card\n ","start":8031,"end":8219}},{"name":"dragStart","comment":{"type":"Block","value":"*\n * Defines the standard drag behavior of cards. Copies the outer HTML of\n * the card to the dataTransfer object of the drag event.\n *\n * Since dragover does not have the right to see the content we must specify\n * additional type information to ensure that only accepted content\n * can be dropped. Use the optional type parameter to specify custom types.\n *\n * The optional effectAllowed is set to 'all'. This is necessary to ensure\n * that elements can be copied and moved. Unfortunately this\n * adds a plus marker to the mouse that might be misleading. Use\n * DataTransfer.dropEffect in dragover events to provide correct feedback instead.\n *\n * @static\n * @param {any} event\n * @param {string} [type=\"card\"]\n * @param {string} [effectAllowed=\"all\"]\n * @memberof Card\n ","start":8334,"end":9183}},{"name":"_openPopup","comment":{"type":"Block","value":"*\n * Opens a popup by calling the Popup.open method.\n *\n * @static\n * @param {DOM element} parent - The DOM node to add the popup\n * @param {any} position - The x,y position of the popup\n * @param {any} content - The content to show within the popup\n * @param {any} callback - A callback that is called on closing the popup\n * @memberof Card\n ","start":9596,"end":9979}},{"name":"closePopup","comment":{"type":"Block","value":"*\n * Closes a provided popup and unsets it on the context.\n *\n * @static\n * @param {*} context\n * @param {*} popup\n * @memberof Card\n ","start":13237,"end":13403}},{"name":"_createPopup","comment":{"type":"Block","value":"*\n * Creates a new Popup instance.\n *\n * @static\n * @param {DomElement} context - The element on which the Popup should be created.\n * @param {Point} position - The position, where the popup will be shown.\n * @param {object} content - The content of the popup as required by the Popup class.\n * @param {object} [options={}] - Additional options for the popup (optional).\n * @returns {Promise} - Returns a Promise, which is resolved, when the Popup is fully loaded. \n * @memberof Card\n ","start":13752,"end":14282}},{"name":"_overlayCleanup","comment":{"type":"Block","value":"*\n * The cleanup functionality is now covered by the _cleanup function.\n * It cleans up zoomables, popups and open image highlights.\n * \n * TEST if this intereferes with the editor.\n ","start":15921,"end":16148}},{"name":"loadPopup","comment":{"type":"Block","value":"*\n * Opens a popup for a glossary. Typically used as a onlick handler of a link.\n *\n * @static\n * @param {any} event - The trigger event, typically a click event\n * @returns {bool} false - Returns false to prevent default click action\n * @memberof Card\n ","start":16458,"end":16744}},{"name":"_activateCorrespondingHighlights","comment":{"type":"Block","value":"*\n * When an highlight link is clicked, this method activates all\n * corresponding highlights.\n *\n * @static\n * @param {DomElement} context - The context of the element.\n * @param {DomElement} node - The node that (may) contain a highlightId.\n * @param {DomElement} parent - The parent element that may contain more highlightIds.\n * @memberof Card\n ","start":21503,"end":21856}},{"name":"_checkForActiveSource","comment":{"type":"Block","value":"*\n * Tests if any open item already contains the requested Source.\n *\n * @static\n * @param {DomElement} context - Dom context we are in.\n * @param {string} src - Source as dataUrl.\n * @returns {boolean} - True if source is already active, false otherwise.\n * @memberof Card\n ","start":22777,"end":23056}},{"name":"loadHighlightPopup","comment":{"type":"Block","value":"*\n * Opens a popup for a highlight. Typically used as a onlick handler of a link.\n *\n * @static\n * @param {any} event - The trigger event, typically a click event\n * @returns {bool} false - Returns false to prevent default click action\n * @memberof Card\n ","start":23794,"end":24081}},{"name":"_loadPopupContent","comment":{"type":"Block","value":"*\n * Loads the popup from a provided source.\n *\n * @static\n * @private\n * @param {string} source - Url to a popup file. \n * @returns {Promise} - Returns a promise, that's resolved when the data is loaded.\n * @memberof Card\n ","start":27089,"end":27317}},{"name":"openZoomable","comment":{"type":"Block","value":"*\n * Retrieve a Rectangle object from the a given zoomable.\n *\n * @static\n * @param {DomElement} zoomable - The zoomable, the rectangle should be calculated for.\n * @param {DomElement} wrapper - Specifies the coordinate system of the generated rectangle.\n * @returns {object} - Returns an object of the rectangle in the wrapper's coordinate system in the form of {x ,y ,width , height}.\n * @memberof Card\n ","start":28515,"end":28957}},{"name":"zoomableCurrentGeometry","comment":{"type":"Block","value":"*\n * Retrieve a Rectangle object from the a given zoomable.\n *\n * @static\n * @param {DomElement} zoomable - The zoomable, the rectangle should be calculated for.\n * @param {DomElement} wrapper - Specifies the coordinate system of the generated rectangle.\n * @returns {object} - Returns an object of the rectangle in the wrapper's coordinate system in the form of {x ,y ,width , height}.\n * @memberof Card\n ","start":28515,"end":28957}},{"name":"_openZoomable","comment":{"type":"Block","value":"*\n * Opens a zoomable object, which can be a figure containing an image or video or an image group\n *\n * @static\n * @param {any} event - The trigger event, typically a click event\n * @memberof Card\n ","start":30473,"end":30712}},{"name":"_toggleNextIcon","comment":{"type":"Block","value":"*\n * Selects and transforms the zoomicon from a zoomicon to a closeicon \n * or the other way around.\n *\n * @static\n * @param {DomElement} parent - Parent to be searched for an zoomicon.\n * @memberof Card\n ","start":35064,"end":35273}},{"name":"_findNextIcon","comment":{"type":"Line","value":" =======================================================================================================================","start":39128,"end":39250}},{"name":"_openZoomableEditorBehaviour","comment":{"type":"Line","value":" =======================================================================================================================","start":39128,"end":39250}},{"name":"openZoomableVideo","comment":{"type":"Line","value":" =======================================================================================================================","start":39382,"end":39504}},{"name":"closeZoomable","comment":{"type":"Block","value":"*\n * Closes a zoomable object with animation\n *\n * @static\n * @param {any} wrapper - the wrapper containing the index card\n * @param {any} div - the figure containing the relevant elements\n * @param {any} zoomable - the zoomable element, from which the zoomed figure originates\n * @param {any} rect - the target rect for the tween (typically the top left width height of the zoomable)\n * @memberof Card\n ","start":43536,"end":43980}},{"name":"expandIndexCard","comment":{"type":"Block","value":"*\n * Starts and controls the expansion animation of an index card.\n * The assumed card structure is as follows:\n *
\n *
\n *

...

\n *
\n *
...
\n * \n *
\n *
\n *
\n * The basic idea is that the card is cloned. In the animation the clone si expanded while the original is faded out.\n *\n * @param {*} card - The card to expand\n * @param {string} html - The original HTML of the card\n * @param {*} tagName - The tagname of the element that is used as exanded element\n * @param {*} src - The src of the expanded element\n * @param {*} callback - A callback that is called when the expanded element is closed\n ","start":45141,"end":46208}},{"name":"openIndexCard","comment":{"type":"Block","value":"*\n * Opens the index card. Called by the zoom icon click handler.\n * The assumed card structure is as follows:\n *
\n *
\n *

...

\n *
\n *
...
\n * \n *
\n *
\n *
\n * Loads the DOM element from a file source and adds it before the card-content to ensure that the article content\n * can be positioned below the heading.\n *\n *
\n *
INSERTED CONTENT
\n *
\n * ...\n *
\n *
\n *\n * @static\n * @param {any} event - The trigger event, typically a click event\n * @param {string} src - The file source, typically a relative url\n * @memberof Card\n ","start":54714,"end":55852}},{"name":"_selectCardCloseButton","comment":{"type":"Block","value":"*\n * Provides the nearest info-card of the provided item.\n *\n * @static\n * @param {DomElement} child - A dom element for which the context shall be retrieved.\n * @returns {DomElement} - The containing context / info-card. \n * @memberof Card\n ","start":58117,"end":58393}},{"name":"_enableCardCloseButton","comment":{"type":"Block","value":"*\n * Provides the nearest info-card of the provided item.\n *\n * @static\n * @param {DomElement} child - A dom element for which the context shall be retrieved.\n * @returns {DomElement} - The containing context / info-card. \n * @memberof Card\n ","start":58117,"end":58393}},{"name":"_disableCardCloseButton","comment":{"type":"Block","value":"*\n * Provides the nearest info-card of the provided item.\n *\n * @static\n * @param {DomElement} child - A dom element for which the context shall be retrieved.\n * @returns {DomElement} - The containing context / info-card. \n * @memberof Card\n ","start":58117,"end":58393}},{"name":"getContext","comment":{"type":"Block","value":"*\n * Provides the nearest info-card of the provided item.\n *\n * @static\n * @param {DomElement} child - A dom element for which the context shall be retrieved.\n * @returns {DomElement} - The containing context / info-card. \n * @memberof Card\n ","start":58117,"end":58393}},{"name":"_cleanup","comment":{"type":"Block","value":"*\n * The cleanup method closes all active Popups, Zoomables and Highlights.\n *\n * @static\n * @param {DomElement} context - The dom element to inspect.\n * @memberof Card\n ","start":58703,"end":58901}},{"name":"_getContextRect","comment":{"type":"Block","value":"*\n * Retrieves an Rectangle for an element in the local space of a provided context.\n * \n * Note: This works also for rotated DomElements unlike the Element.getBoundingClientRectangle method.\n *\n * @static\n * @param {DomElement} context - The element that defines the space, we want the rectangle to be in.\n * @param {DomElement} element - The element, we want to get the rectangle for.\n * @returns {DomRect} - Returns a DomRect representing the element outline in the space of context.\n * @memberof Card\n ","start":59474,"end":60024}},{"name":"_getGlobalRect","comment":{"type":"Block","value":"*\n * Gets a rectangle in global space for a provided element.\n *\n * Note: This works also for rotated DomElements unlike the Element.getBoundingClientRectangle method.\n * \n * @static\n * @param {DomElement} element\n * @returns {DomRect} - Returns a rectangle that specifies the location in global space.\n * @memberof Card\n ","start":60407,"end":60769}},{"name":"postProcessResponseText","comment":{"type":"Block","value":"*\n * Adjusts all links \n *\n * @static\n * @param {*} htmlString\n * @returns\n * @memberof Card\n ","start":61233,"end":61352}},{"name":"openPopupOrZoomable","comment":{"type":"Block","value":"*\n * There occured a problem with the tap event, as it was canceled by the event on the svg element\n * therefore we restructured the interaction, that only the svg listens for events and if the target is\n * a circle (more are not supported yet) the target is adjusted using the .firstTarget of the event,\n * that is provided by the Hammer.propergate plugin.\n ","start":62132,"end":62515}},{"name":"_preferFirstTarget","comment":{"type":"Block","value":"*\n * Evaluates an event, if it has a first target. If so it returns the first target,\n * otherwise it returns the target.\n ","start":62804,"end":62943}},{"name":"_getPopup","comment":{"type":"Block","value":"*\n * Getter, Setter and 'Unsetter' for the properties hooked onto the context element.\n ","start":63065,"end":63165}},{"name":"_setPopup","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_unsetPopup","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_setPopupSource","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_getPopupSource","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_unsetZoomable","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_setZoomable","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_getZoomable","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_isHighlightActive","comment":{"type":"Block","value":"*\n * Helper function to determine if a proided element is still\n * an active highlight.\n ","start":63928,"end":64030}},{"name":"_getHighlights","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_addHighlight","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_unsetHighlights","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_getHighlightSource","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_getActiveSubcard","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_setSubcard","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_getSubcard","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"_unsetSubcard","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"incrementZIndex","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"getZIndex","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"relativePath","comment":{"type":"Block","value":"*\n * This getter and setter pair solves the problem,\n * when we assign 'relativePath' to a child class, the assign is routed\n * to this base class. And we ensure, that we always set the same \n * private variable. \n * \n * Not doing this lead to some cases, when Card-/ScatterCard.func\n * was called and depending on context their were different values\n * inside the relativePath variable.\n ","start":65183,"end":65612}},{"name":"relativePath","comment":{"type":"Block","value":"* Make the class available in the global namespace ","start":66151,"end":66206}}],"children":[{"name":"dev.tuesch.var.cards._theme.js.card.ScatterCard","path":"./dev/tuesch/var/cards/_theme/js/card.js","className":"ScatterCard","docPath":null,"methods":[{"name":"setup","comment":{"type":"Block","value":"*\n * TODO: Find a more suitable name.\n * Adjusts the HTML to work in the new context.\n *\n * @static\n * @param {*} domElement\n * @param {*} htmlString\n * @param {*} basePath\n * @param {*} [opts={}]\n * @memberof Card\n ","start":66347,"end":66607}},{"name":"addOnCloseListener","comment":{"type":"Block","value":"*\n * Appends a close listener to the scatter element.\n *\n * @static\n * @param {*} element\n * @param {*} callback\n * @memberof Card\n ","start":67290,"end":67454}},{"name":"createCardScatter","comment":{"type":"Block","value":"*\n * Creates a scatter for the card and applies the card to it,\n *\n * @static\n * @param {*} html\n * @param {*} scatterContainer\n * @param {string} [basePath=\"\"]\n * @param {*} [opts={}]\n * @returns\n * @memberof Card\n ","start":67591,"end":67851}},{"name":"loadAndCreateScatterCard","comment":{"type":"Block","value":"*\n *Utility function to create a fully functional card scatter.\n *\n * @static\n * @param {*} scatterContainer\n * @param {*} path\n * @param {string} [basePath=\".\"]\n * @param {*} opts\n * @returns\n * @memberof CardScatter\n ","start":68313,"end":68576}},{"name":"_setLanguage","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"_getLanguage","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}}],"children":[]}]},{"name":"dev.tuesch.var.cards._theme.js.card.CardPluginBase","path":"./dev/tuesch/var/cards/_theme/js/card.js","className":"CardPluginBase","docPath":null,"methods":[{"name":"apply","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"name","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"verify","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"_verifyElementsExist","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"append","comment":{"type":"Block","value":"*\n * Appends the Plugin to the context.\n *\n * @memberof CardPlugin\n ","start":70726,"end":70815}},{"name":"_getVerificationFunctions","comment":{"type":"Line","value":" backgroundColor: \"black\",","start":72666,"end":72694}},{"name":"_verifyContext","comment":{"type":"Line","value":" backgroundColor: \"black\",","start":72666,"end":72694}},{"name":"_verifyRequirements","comment":{"type":"Line","value":" backgroundColor: \"black\",","start":72666,"end":72694}},{"name":"_collectAllRequirements","comment":{"type":"Line","value":" backgroundColor: \"black\",","start":72666,"end":72694}}],"children":[]},{"name":"extern.PIXI.Graphics","path":"extern","className":"PIXI.Graphics","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.display.CoordinateDisplay","path":"./dev/tuesch/js/display.js","className":"CoordinateDisplay","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Creates an instance of a CoordinateDisplay.\r\n *\r\n * @constructor\r\n * @param {MapApp} mapApp - The MapApp where the coordinates should be displayed.\r\n ","start":329,"end":509}},{"name":"toggleCrosshair","comment":{"type":"Block","value":"*\r\n * Refreshes displayed coordinates.\r\n *\r\n * @return {MapApp} Returns the MapApp object for chaining.\r\n ","start":2379,"end":2505}},{"name":"enableCrosshair","comment":{"type":"Block","value":"*\r\n * Refreshes displayed coordinates.\r\n *\r\n * @return {MapApp} Returns the MapApp object for chaining.\r\n ","start":2379,"end":2505}},{"name":"disableCrosshair","comment":{"type":"Block","value":"*\r\n * Refreshes displayed coordinates.\r\n *\r\n * @return {MapApp} Returns the MapApp object for chaining.\r\n ","start":2379,"end":2505}},{"name":"refreshCoordinates","comment":{"type":"Block","value":"*\r\n * Refreshes displayed coordinates.\r\n *\r\n * @return {MapApp} Returns the MapApp object for chaining.\r\n ","start":2379,"end":2505}},{"name":"setCrosshair","comment":null}],"children":[]},{"name":"dev.tuesch.js.graphics.label.Flag","path":"./dev/tuesch/js/graphics/label.js","className":"Flag","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"draw","comment":null},{"name":"typeName","comment":null}],"children":[]},{"name":"dev.tuesch.js.graphics.label.Label","path":"./dev/tuesch/js/graphics/label.js","className":"Label","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"text","comment":null}],"children":[{"name":"dev.tuesch.js.graphics.label.FlagLabel","path":"./dev/tuesch/js/graphics/label.js","className":"FlagLabel","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"draw","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.graphics.Dot","path":"./dev/tuesch/js/graphics.js","className":"Dot","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"draw","comment":null}],"children":[]},{"name":"dev.tuesch.js.graphics.IconDot","path":"./dev/tuesch/js/graphics.js","className":"IconDot","docPath":null,"methods":[{"name":"constructor","comment":null}],"children":[]},{"name":"dev.tuesch.js.pixi.dynamicline.DynamicLine","path":"./dev/tuesch/js/pixi/dynamicline.js","className":"DynamicLine","docPath":null,"methods":[{"name":"constructor","comment":null},{"name":"draw","comment":null},{"name":"drawLine","comment":null},{"name":"updateFrom","comment":null},{"name":"updateTo","comment":null}],"children":[{"name":"dev.tuesch.js.pixi.dynamicline.DynamicBezier","path":"./dev/tuesch/js/pixi/dynamicline.js","className":"DynamicBezier","docPath":null,"methods":[{"name":"drawLine","comment":null}],"children":[]}]},{"name":"dev.tuesch.js.scatter.RigidContainer","path":"./dev/tuesch/js/scatter.js","className":"RigidContainer","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"resize","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"_updateHitArea","comment":{"type":"Line","value":" this.hitArea = new PIXI.Rectangle(0,0, this.width, this.height) ","start":4447,"end":4514}},{"name":"width","comment":{"type":"Block","value":"*\r\n * Should be merged with the regular DisplayObject Scatter if it proves worthy.\r\n ","start":4644,"end":4733}},{"name":"height","comment":{"type":"Block","value":"*\r\n * Should be merged with the regular DisplayObject Scatter if it proves worthy.\r\n ","start":4644,"end":4733}}],"children":[]}]},{"name":"extern.DOMLayer","path":"extern","className":"DOMLayer","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.dom.windows.FeatureWindow","path":"./dev/tuesch/js/dom/windows.js","className":"FeatureWindow","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":"https://stackoverflow.com/a/1026087","start":4053,"end":4090}},{"name":"createRow","comment":{"type":"Line","value":"https://stackoverflow.com/a/1026087","start":4053,"end":4090}},{"name":"update","comment":{"type":"Line","value":"https://stackoverflow.com/a/1026087","start":4053,"end":4090}},{"name":"changed","comment":{"type":"Line","value":"https://stackoverflow.com/a/1026087","start":4053,"end":4090}},{"name":"capitalize","comment":{"type":"Line","value":"https://stackoverflow.com/a/1026087","start":4053,"end":4090}}],"children":[]}]},{"name":"extern.PIXI.Polygon","path":"extern","className":"PIXI.Polygon","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.graphics.label.FlagPolygon","path":"./dev/tuesch/js/graphics/label.js","className":"FlagPolygon","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" close polygon","start":2108,"end":2124}},{"name":"getPoint","comment":null},{"name":"notch","comment":null},{"name":"rect","comment":null},{"name":"placeText","comment":null}],"children":[]}]},{"name":"extern.PIXILayer","path":"extern","className":"PIXILayer","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.layer.geolayer.GeoLayer","path":"./dev/tuesch/js/layer/geolayer.js","className":"GeoLayer","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * When setting the map and mapLayer with the options paramter.\r\n * The GeoLayer becomes a RootLayer, when the root layer should not be a MapLayer.\r\n ","start":539,"end":720}},{"name":"adapt","comment":{"type":"Block","value":"*\r\n * Adapts to a map. If the maplayer should adapt to the parent maplayer,\r\n * no parameter must be specified.\r\n ","start":866,"end":996}},{"name":"place","comment":{"type":"Line","value":"GeoLayers have to be children of a map layer,","start":1985,"end":2032}},{"name":"placeLayer","comment":{"type":"Line","value":"GeoLayers have to be children of a map layer,","start":1985,"end":2032}},{"name":"map","comment":{"type":"Line","value":" therefore we can recursively get the map.","start":2038,"end":2082}},{"name":"mapLayer","comment":{"type":"Block","value":"*\r\n * TODO: It may be a good idea to inherit maplayer from geo layer.\r\n ","start":2904,"end":2980}},{"name":"clone","comment":{"type":"Block","value":"*\r\n * TODO: It may be a good idea to inherit maplayer from geo layer.\r\n ","start":2904,"end":2980}}],"children":[]},{"name":"dev.tuesch.js.layer.geolayer.MapLayer","path":"./dev/tuesch/js/layer/geolayer.js","className":"MapLayer","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":" () => {\r\n\r\n const visibility = this.childrenVisibility\r\n\r\n if (visibility) {\r\n\r\n const zoom = this.mapview.zoom\r\n\r\n if ((visibility.min && zoom < visibility.min) || (visibility.max && zoom > visibility.max)) {\r\n this.elements.forEach(it => it.visible = false)\r\n } else {\r\n this.elements.forEach(it => it.visible = true)\r\n }\r\n }\r\n } ","start":3215,"end":3690}},{"name":"adapt","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"placeLayer","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"placeMap","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"placeElement","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"transformed","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"addOnTransform","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"clone","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"changeMap","comment":{"type":"Line","value":" If set to false, the normal container is used. This is necessary when using submaps and the container need to be a RigidContainer.","start":6015,"end":6148}},{"name":"map","comment":{"type":"Block","value":"*\r\n * This is required for the consistency of georelated layers.\r\n * The request traverses up to the mapLayer where it then returns\r\n * the responsible map layer.\r\n ","start":7778,"end":7963}},{"name":"mapLayer","comment":{"type":"Block","value":"*\r\n * This is required for the consistency of georelated layers.\r\n * The request traverses up to the mapLayer where it then returns\r\n * the responsible map layer.\r\n ","start":7778,"end":7963}},{"name":"removeDynamicItem","comment":{"type":"Block","value":"*\r\n * I'm not super happy with the creation and removal of dynamic items here inside the MapLayer.\r\n * Maybe this should be dont somewhere else.\r\n * \r\n * -SO\r\n ","start":8023,"end":8207}},{"name":"addDynamicItem","comment":null},{"name":"cleanup","comment":null}],"children":[]}]},{"name":"extern.PIXIApp","path":"extern","className":"PIXIApp","docPath":"./doc/out/PIXIApp.html","methods":[],"children":[{"name":"dev.tuesch.js.mapapp.MapApp","path":"./dev/tuesch/js/mapapp.js","className":"MapApp","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" Default values.","start":515,"end":533}},{"name":"setup","comment":{"type":"Line","value":" TODO get access to fps display","start":2580,"end":2613}},{"name":"layout","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"sceneFactory","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"addMaps","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"setMap","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"addMap","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"transformed","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"_mapChanged","comment":{"type":"Block","value":"*\r\n * TODO: A problem is that the map layer has no container\r\n * on its own and it lives in the ScatterContainer. \r\n * Here we guarantee, that the layer order is as it \r\n * is defined in the layers.\r\n ","start":4690,"end":4935}},{"name":"_doesOverlayElementExist","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"_getOverlayElement","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"_setOverlayElement","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"place","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"addMapOverlay","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"locationToClipboard","comment":{"type":"Block","value":"*\r\n * Copies the current coordinates to the clipboard.\r\n ","start":6421,"end":6490}},{"name":"pathToClipboard","comment":{"type":"Line","value":" PATH_MODE is default.","start":7449,"end":7473}},{"name":"map","comment":{"type":"Block","value":"*\r\n * TODO: move styling (except opacity) to css.\r\n ","start":8282,"end":8354}},{"name":"getRelativePosition","comment":{"type":"Block","value":"*\r\n * TODO: move styling (except opacity) to css.\r\n ","start":8282,"end":8354}},{"name":"clearDrawData","comment":{"type":"Block","value":"*\r\n * TODO: move styling (except opacity) to css.\r\n ","start":8282,"end":8354}},{"name":"showNotification","comment":{"type":"Block","value":"*\r\n * TODO: move styling (except opacity) to css.\r\n ","start":8282,"end":8354}},{"name":"_currentLocationToString","comment":{"type":"Line","value":" If keycode does not exist or is invalid - return.","start":9308,"end":9360}},{"name":"_setupKeyboardUtils","comment":{"type":"Line","value":" If keycode does not exist or is invalid - return.","start":9308,"end":9360}},{"name":"_resetDrawMode","comment":{"type":"Line","value":" Disable hotkey if an error occured.","start":13401,"end":13439}},{"name":"_extractKeyCodes","comment":{"type":"Line","value":" Disable hotkey if an error occured.","start":13401,"end":13439}}],"children":[]}]},{"name":"extern.ScatterContainer","path":"extern","className":"ScatterContainer","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.scatter.AdvancedScatterContainer","path":"./dev/tuesch/js/scatter.js","className":"AdvancedScatterContainer","docPath":null,"methods":[{"name":"applyToChildScattersRecursively","comment":{"type":"Block","value":"*\r\n * The update method was adjusted to draw bounds and polygpns\r\n ","start":811,"end":890}},{"name":"update","comment":{"type":"Block","value":"*\r\n * The update method was adjusted to draw bounds and polygpns\r\n ","start":811,"end":890}},{"name":"width","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"height","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}}],"children":[{"name":"dev.tuesch.js.scatter.RigidScatterContainer","path":"./dev/tuesch/js/scatter.js","className":"RigidScatterContainer","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"resize","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"width","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"height","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}},{"name":"_calculateBounds","comment":{"type":"Block","value":"*\r\n * Resizes the scattercontainer to the provided dimensions.\r\n * \r\n * @param {number} width - Target width of the resize.\r\n * @param {number} height - Target height of the resize.\r\n * @memberof RigidContainer\r\n ","start":3974,"end":4215}}],"children":[]}]}]},{"name":"extern.DisplayObjectScatter","path":"extern","className":"DisplayObjectScatter","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.scatter.AdvancedScatter","path":"./dev/tuesch/js/scatter.js","className":"AdvancedScatter","docPath":null,"methods":[{"name":"startThrow","comment":{"type":"Line","value":" Call next velocity to ansure that specializations","start":4906,"end":4958}},{"name":"animateThrow","comment":{"type":"Line","value":"Moved this outside, as the time continously increases,","start":5247,"end":5303}},{"name":"parent","comment":{"type":"Line","value":" Returns the parent is a scatter get the parent scatter.","start":6626,"end":6684}},{"name":"_getThrowDelta","comment":{"type":"Block","value":"*\r\n * TODO\r\n * A scatter which width does not increase when child elements are added.\r\n ","start":7312,"end":7404}},{"name":"_updateThrowDeltaTime","comment":{"type":"Block","value":"*\r\n * TODO\r\n * A scatter which width does not increase when child elements are added.\r\n ","start":7312,"end":7404}}],"children":[{"name":"dev.tuesch.js.scatter.CompactScatter","path":"./dev/tuesch/js/scatter.js","className":"CompactScatter","docPath":null,"methods":[],"children":[]},{"name":"dev.tuesch.js.scatter.CoverScatter","path":"./dev/tuesch/js/scatter.js","className":"CoverScatter","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Line","value":" The reference to the element handler needs to be stored, ","start":8770,"end":8830}},{"name":"_applyInitialCover","comment":{"type":"Line","value":"let delta = { x: 0, y: 0 }","start":9750,"end":9778}},{"name":"boundaries","comment":{"type":"Line","value":"let delta = { x: 0, y: 0 }","start":9750,"end":9778}},{"name":"transform","comment":{"type":"Line","value":"let delta = { x: 0, y: 0 }","start":9750,"end":9778}},{"name":"outsideBoundaries","comment":{"type":"Line","value":" Helper function to limit an Axis inside a container, or 'glue' it","start":11207,"end":11275}},{"name":"calculateMinCoverScale","comment":{"type":"Line","value":" console.log(\"CALCULATED SCALE:\", scale)","start":13251,"end":13293}},{"name":"_getThrowDelta","comment":{"type":"Line","value":" console.log(width, height)","start":13641,"end":13670}},{"name":"containerChanged","comment":{"type":"Line","value":" console.log(width, height)","start":13641,"end":13670}},{"name":"forceCover","comment":{"type":"Block","value":"*\r\n * The MapObjectScatter somewhat inverts the behaviour of\r\n * regular throwables. Regular throwables should bounce of the wall, when they\r\n * overlap to a certain amount. Maps on the otherhand are intended to overlap with the\r\n * scatter container heavily to hide irrelevant parts of the map without revealing\r\n * any background.\r\n *\r\n * @class\r\n * @extends DisplayObjectScatter\r\n","start":14412,"end":14799}},{"name":"requestScale","comment":{"type":"Block","value":"*\r\n * The MapObjectScatter somewhat inverts the behaviour of\r\n * regular throwables. Regular throwables should bounce of the wall, when they\r\n * overlap to a certain amount. Maps on the otherhand are intended to overlap with the\r\n * scatter container heavily to hide irrelevant parts of the map without revealing\r\n * any background.\r\n *\r\n * @class\r\n * @extends DisplayObjectScatter\r\n","start":14412,"end":14799}},{"name":"requestFocus","comment":{"type":"Block","value":"*\r\n * The MapObjectScatter somewhat inverts the behaviour of\r\n * regular throwables. Regular throwables should bounce of the wall, when they\r\n * overlap to a certain amount. Maps on the otherhand are intended to overlap with the\r\n * scatter container heavily to hide irrelevant parts of the map without revealing\r\n * any background.\r\n *\r\n * @class\r\n * @extends DisplayObjectScatter\r\n","start":14412,"end":14799}}],"children":[{"name":"dev.tuesch.js.scatter.MapObjectScatter","path":"./dev/tuesch/js/scatter.js","className":"MapObjectScatter","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * x=null, y=null,\r\n minScale=0.1,\r\n maxScale=1.0,\r\n startScale=1.0,\r\n autoBringToFront=true,\r\n translatable=true, scalable=true, rotatable=true, resizable=false,\r\n movableX=true,\r\n movableY=true,\r\n throwVisibility=44,\r\n throwDamping = 0.95,\r\n autoThrow=true,\r\n rotationDegrees=null,\r\n rotation=null,\r\n onTransform = null }\r\n ","start":14865,"end":15505}},{"name":"moveTo","comment":null},{"name":"lock","comment":null},{"name":"unlock","comment":null},{"name":"getWorldScatter","comment":null}],"children":[]}]}]}]},{"name":"extern.XMLCardLoader","path":"extern","className":"XMLCardLoader","docPath":null,"methods":[],"children":[{"name":"dev.tuesch.js.xml.tueschcardloader.TueschCardLoader","path":"./dev/tuesch/js/xml/tueschcardloader.js","className":"TueschCardLoader","docPath":null,"methods":[{"name":"constructor","comment":{"type":"Block","value":"*\r\n * \r\n * \r\n * @param {*} assetsPath \r\n * @param {*} index \r\n * @param {*} cardLoaderOpts\r\n * @param {*} otps \r\n ","start":460,"end":606}}],"children":[]}]}]}