{"version":3,"sources":["main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["class lv {\r\n /**\r\n * iterates through all elements and calls function create on them\r\n */\r\n public initLoaderAll(): void {\r\n let divs = document.getElementsByTagName(\"DIV\");\r\n for (let i = 0; i < divs.length; i++) {\r\n if (!divs[i].hasChildNodes()) {\r\n lv.create(divs[i]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * returns list of non-main classes (every except the one that specifies the element)\r\n * @param classList\r\n * @param notIncludingClass\r\n */\r\n private static getModifyingClasses(classList: Array, notIncludingClass: string): string[] {\r\n let modifyingClasses: string[] = [];\r\n for (let i = 0; i < classList.length; i++) {\r\n if (classList[i] != notIncludingClass) {\r\n modifyingClasses.push(classList[i]);\r\n }\r\n }\r\n return modifyingClasses;\r\n }\r\n\r\n /**\r\n * decides type of passed element and returns its object\r\n * @param element - pass existing element or null\r\n * @param classString - classes separated with one space that specifies type of element, optional, only when passing null instead of element\r\n */\r\n public static create(element: HTMLDivElement = null, classString?: string): lv.ElementBase {\r\n let classes : Array = [];\r\n if (element != null) {\r\n let listOfClasses = element.classList;\r\n for (let i = 0; i < listOfClasses.length; i++) {\r\n classes.push(listOfClasses[i]);\r\n }\r\n } else if (classString != null) {\r\n classes = classString.split(\" \");\r\n }\r\n for (let i = 0; i < classes.length; i++) {\r\n switch (classes[i]) {\r\n case \"lv-bars\":\r\n return new lv.Circle(element, lv.CircleType.Bars, lv.getModifyingClasses(classes, \"lv-bars\"));\r\n case \"lv-squares\":\r\n return new lv.Circle(element, lv.CircleType.Squares, lv.getModifyingClasses(classes, \"lv-squares\"));\r\n case \"lv-circles\":\r\n return new lv.Circle(element, lv.CircleType.Circles, lv.getModifyingClasses(classes, \"lv-circles\"));\r\n case \"lv-dots\":\r\n return new lv.Circle(element, lv.CircleType.Dots, lv.getModifyingClasses(classes, \"lv-dots\"));\r\n case \"lv-spinner\":\r\n return new lv.Circle(element, lv.CircleType.Spinner, lv.getModifyingClasses(classes, \"lv-spinner\"));\r\n case \"lv-dashed\":\r\n return new lv.Circle(element, lv.CircleType.Dashed, lv.getModifyingClasses(classes, \"lv-dashed\"));\r\n case \"lv-determinate_circle\":\r\n return new lv.Circle(element, lv.CircleType.DeterminateCircle, lv.getModifyingClasses(classes, \"lv-determinate_circle\"));\r\n case \"lv-line\":\r\n return new lv.Bar(element, lv.BarType.Line, lv.getModifyingClasses(classes, \"lv-line\"));\r\n case \"lv-bordered_line\":\r\n return new lv.Bar(element, lv.BarType.BorderedLine, lv.getModifyingClasses(classes, \"lv-bordered_line\"));\r\n case \"lv-determinate_line\":\r\n return new lv.Bar(element, lv.BarType.DeterminateLine, lv.getModifyingClasses(classes, \"lv-determinate_line\"));\r\n case \"lv-determinate_bordered_line\":\r\n return new lv.Bar(element, lv.BarType.DeterminateBorderedLine, lv.getModifyingClasses(classes, \"lv-determinate_bordered_line\"));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * observes for changes in DOM and creates new element's objects\r\n * @param mutationList\r\n * @param observer\r\n */\r\n private callback(mutationList, observer: MutationObserver): void {\r\n for (let i = 0; i < mutationList.length; i++) {\r\n if (mutationList[i].type === \"childList\") {\r\n try {\r\n if (mutationList[i].addedNodes[0].classList.length > 0) {\r\n // filling the node with divs when it is empty\r\n lv.create(mutationList[i].addedNodes[0]);\r\n }\r\n } catch (error) {}\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * initializing the observer and starting observation\r\n */\r\n private observer: MutationObserver;\r\n constructor() {\r\n this.observer = new MutationObserver(this.callback);\r\n }\r\n public startObserving() {\r\n this.observer.observe(document.body, {childList: true, subtree: true});\r\n }\r\n public stopObserving() {\r\n this.observer.disconnect();\r\n }\r\n}\r\nnamespace lv {\r\n interface IDictionary {\r\n [key: number]: IDescription;\r\n }\r\n interface IDescription {\r\n divCount: number;\r\n className: string;\r\n }\r\n\r\n /**\r\n * specifies functions same for all elements\r\n */\r\n export abstract class ElementBase {\r\n \r\n protected element: HTMLDivElement;\r\n \r\n constructor(element: HTMLDivElement) {\r\n this.element = element === null ? document.createElement('div') : element;\r\n }\r\n\r\n public show(): void {\r\n this.element.style.display = null;\r\n }\r\n\r\n public hide(): void {\r\n this.element.style.display = \"none\";\r\n }\r\n\r\n public remove(): void {\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n public setLabel(labelText: string): void {\r\n this.element.setAttribute(\"data-label\", labelText);\r\n }\r\n\r\n public removeLabel(): void {\r\n this.element.removeAttribute(\"data-label\");\r\n }\r\n\r\n public showPercentage(): void {\r\n this.element.setAttribute(\"data-percentage\", \"true\");\r\n }\r\n\r\n public hidePercentage(): void {\r\n this.element.removeAttribute(\"data-percentage\");\r\n }\r\n\r\n /**\r\n * adds class or classes to element\r\n * @param classString - string that contains classes separated with one space\r\n */\r\n public addClass(classString: string): void {\r\n let classList = classString.split(\" \");\r\n for (let i = 0; i < classList.length; i++) {\r\n this.element.classList.add(classList[i]);\r\n }\r\n }\r\n\r\n /**\r\n * if element contains specified class or classes, it/they are removed\r\n * @param classString - string that contains classes separated with one space\r\n */\r\n public removeClass(classString: string): void {\r\n let classList = classString.split(\" \");\r\n for (let i = 0; i < classList.length; i++) {\r\n if (this.element.classList.contains(classList[i])) {\r\n this.element.classList.remove(classList[i]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * returns DOM element - needed for placing or removing the element with jquery\r\n */\r\n public getElement(): HTMLDivElement {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * updates determinate element\r\n * @param type\r\n * @param newValue\r\n * @param maxValue\r\n */\r\n public abstract update(type: string, newValue: number, maxValue: number): void;\r\n\r\n /**\r\n * resets determinate element to 0\r\n * @param maxValue\r\n */\r\n public reset(maxValue: number): void {\r\n this.update('set', 0, maxValue);\r\n }\r\n\r\n /**\r\n * sets determinate element to 100%\r\n * @param maxValue\r\n */\r\n public fill(maxValue: number): void {\r\n this.update('set', maxValue, maxValue);\r\n }\r\n\r\n /**\r\n * adds positive or negative value to a determinate element\r\n * @param addValue\r\n * @param maxValue\r\n */\r\n public add(addValue: number, maxValue: number): void {\r\n this.update('add', addValue, maxValue);\r\n }\r\n\r\n /**\r\n * sets loading bar to passed value\r\n * @param value\r\n * @param maxValue\r\n */\r\n public set(value: number, maxValue: number): void {\r\n this.update('set', value, maxValue);\r\n }\r\n\r\n /**\r\n * initializes an element\r\n * @param loaderElement\r\n * @param description\r\n */\r\n public initLoader(loaderElement: HTMLDivElement, description: IDescription): void {\r\n // manual addition on specified object\r\n if (!loaderElement.hasChildNodes()) {\r\n this.fillElement(loaderElement, description.className, description.divCount);\r\n }\r\n }\r\n\r\n /**\r\n * fills element with appropriate number of divs\r\n * @param element\r\n * @param elementClass\r\n * @param divNumber\r\n */\r\n private fillElement(element: HTMLElement, elementClass: string, divNumber: number): void {\r\n for (let i = 0; i < divNumber; i += 1) {\r\n element.appendChild(document.createElement(\"DIV\"));\r\n }\r\n if (elementClass === \"lv-determinate_circle\" || elementClass === \"lv-determinate_line\" || elementClass === \"lv-determinate_bordered_line\") {\r\n element.lastElementChild.innerHTML = \"0\";\r\n }\r\n if (!element.classList.contains(elementClass)) {\r\n element.classList.add(elementClass);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * class for linear elements\r\n */\r\n export class Bar extends ElementBase {\r\n private divCount: IDictionary = {};\r\n\r\n /**\r\n * creates linear element\r\n * @param element\r\n * @param barType\r\n * @param classes\r\n */\r\n constructor(element: HTMLDivElement, barType: BarType, classes: string[] = null) {\r\n super(element);\r\n this.divCount[BarType.Line] = {className: \"lv-line\", divCount: 1};\r\n this.divCount[BarType.BorderedLine] = {className: \"lv-bordered_line\", divCount: 1};\r\n this.divCount[BarType.DeterminateLine] = {className: \"lv-determinate_line\", divCount: 2};\r\n this.divCount[BarType.DeterminateBorderedLine] = {className: \"lv-determinate_bordered_line\", divCount: 2};\r\n this.initLoader(this.element, this.divCount[barType]);\r\n for (let i = 0; i < classes.length; i++) {\r\n this.element.classList.add(classes[i]);\r\n }\r\n }\r\n\r\n /**\r\n * type specific update function for linear element\r\n * @param type\r\n * @param newValue\r\n * @param maxValue\r\n */\r\n update(type: string, newValue: number, maxValue: number): void {\r\n // getting current width of line from the page\r\n let line: HTMLDivElement = this.element.firstElementChild;\r\n let percentage: HTMLDivElement = this.element.lastElementChild;\r\n let currentWidth: number = parseFloat(line.style.width);\r\n // protective condition for empty line\r\n if (isNaN(currentWidth)) {\r\n currentWidth = 0;\r\n }\r\n // end point of the animation\r\n let goalWidth: number;\r\n if (type === \"add\") {\r\n goalWidth = currentWidth + Math.round((newValue / maxValue) * 1000) / 10;\r\n } else if (type === \"set\") {\r\n goalWidth = Math.round((newValue / maxValue) * 1000) / 10;\r\n }\r\n // prevent overflow from both sides\r\n if (goalWidth > 100) {\r\n goalWidth = 100.0;\r\n }\r\n if (goalWidth < 0) {\r\n goalWidth = 0;\r\n }\r\n let animation = setInterval(frame, 5);\r\n function frame() {\r\n if (currentWidth > goalWidth) { // shortening the line\r\n if (currentWidth < goalWidth + 0.01) {\r\n clearInterval(animation);\r\n } else {\r\n currentWidth -= 0.1;\r\n }\r\n } else { // extending the line\r\n if (currentWidth > goalWidth - 0.01) {\r\n clearInterval(animation);\r\n } else {\r\n currentWidth += 0.1;\r\n }\r\n }\r\n line.style.width = currentWidth + \"%\";\r\n // updating the percentage\r\n percentage.innerHTML = currentWidth.toFixed(1);\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * class for square or circular elements\r\n */\r\n export class Circle extends ElementBase {\r\n\r\n private divCount: IDictionary = {};\r\n\r\n /**\r\n * creates square or circular element\r\n * @param element\r\n * @param circleType\r\n * @param classes\r\n */\r\n constructor(element: HTMLDivElement, circleType: CircleType, classes: string[] = null) {\r\n super(element);\r\n this.divCount[CircleType.Bars] = {className: \"lv-bars\", divCount: 8};\r\n this.divCount[CircleType.Squares] = {className: \"lv-squares\", divCount: 4};\r\n this.divCount[CircleType.Circles] = {className: \"lv-circles\", divCount: 12};\r\n this.divCount[CircleType.Dots] = {className: \"lv-dots\", divCount: 4};\r\n this.divCount[CircleType.DeterminateCircle] = {className: \"lv-determinate_circle\", divCount: 4};\r\n this.divCount[CircleType.Spinner] = {className: \"lv-spinner\", divCount: 1};\r\n this.divCount[CircleType.Dashed] = {className: \"lv-dashed\", divCount: 1};\r\n this.initLoader(this.element, this.divCount[circleType]);\r\n for (let i = 0; i < classes.length; i++) {\r\n this.element.classList.add(classes[i]);\r\n }\r\n }\r\n\r\n /**\r\n * type specific update function for non-linear elements\r\n * @param type\r\n * @param newValue\r\n * @param maxValue\r\n */\r\n update(type: string, newValue: number, maxValue: number): void {\r\n let rotationOffset: number = -45; // initial rotation of the spinning div in css\r\n // separating individual parts of the circle\r\n let background: HTMLDivElement = this.element.children[0];\r\n let overlay: HTMLDivElement = this.element.children[1];\r\n let spinner: HTMLDivElement = this.element.children[2];\r\n let percentage: HTMLDivElement = this.element.children[3];\r\n // getting the colors defined in css\r\n let backgroundColor: string = window.getComputedStyle(background).borderTopColor;\r\n let spinnerColor: string = window.getComputedStyle(spinner).borderTopColor;\r\n // computing current rotation of spinning part of circle using rotation matrix\r\n let rotationMatrix = window.getComputedStyle(spinner).getPropertyValue(\"transform\").split(\"(\")[1].split(\")\")[0].split(\",\");\r\n let currentAngle: number = Math.round(Math.atan2(parseFloat(rotationMatrix[1]), parseFloat(rotationMatrix[0])) * (180 / Math.PI)) - rotationOffset;\r\n // safety conditions for full and empty circle (360 <=> 0 and that caused problems)\r\n if (percentage.innerHTML === \"100\") {\r\n currentAngle = 360;\r\n }\r\n if (currentAngle < 0) {\r\n currentAngle += 360;\r\n }\r\n // end point of the animation\r\n let goalAngle: number;\r\n if (type === \"add\") {\r\n goalAngle = currentAngle + Math.round((newValue / maxValue) * 360);\r\n } else if (type === \"set\") {\r\n goalAngle = Math.round((newValue / maxValue) * 360);\r\n }\r\n // prevent overflow to both sides\r\n if (goalAngle > 360) {\r\n goalAngle = 360;\r\n }\r\n if (goalAngle < 0) {\r\n goalAngle = 0;\r\n }\r\n let id = setInterval(frame, 3);\r\n function frame() {\r\n if (currentAngle === goalAngle) { // stopping the animation when end point is reached\r\n clearInterval(id);\r\n } else {\r\n if (currentAngle < goalAngle) { // \"filling\" the circle\r\n if (currentAngle === 90) {\r\n background.style.borderRightColor = spinnerColor;\r\n overlay.style.borderTopColor = \"transparent\";\r\n } else if (currentAngle === 180) {\r\n background.style.borderBottomColor = spinnerColor;\r\n } else if (currentAngle === 270) {\r\n background.style.borderLeftColor = spinnerColor;\r\n }\r\n currentAngle += 1;\r\n } else { // \"emptying the circle\"\r\n if (currentAngle === 270) {\r\n background.style.borderLeftColor = backgroundColor;\r\n } else if (currentAngle === 180) {\r\n background.style.borderBottomColor = backgroundColor;\r\n } else if (currentAngle === 90) {\r\n background.style.borderRightColor = backgroundColor;\r\n overlay.style.borderTopColor = backgroundColor;\r\n }\r\n currentAngle -= 1;\r\n }\r\n // rotating the circle\r\n spinner.style.transform = \"rotate(\" + (rotationOffset + currentAngle).toString() + \"deg)\";\r\n // updating percentage\r\n percentage.innerHTML = (Math.round((currentAngle / 360) * 100)).toString();\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * list of linear elements\r\n */\r\n export enum BarType {\r\n Line,\r\n BorderedLine,\r\n DeterminateLine,\r\n DeterminateBorderedLine,\r\n }\r\n\r\n /**\r\n * list of non-linear elements\r\n */\r\n export enum CircleType {\r\n Bars,\r\n Squares,\r\n Circles,\r\n Dots,\r\n DeterminateCircle,\r\n Spinner,\r\n Dashed,\r\n }\r\n}"]}