// Copyright Epic Games, Inc. All Rights Reserved. /** * Stats icon that can be clicked. */ export class StatsIcon { _rootElement: HTMLButtonElement; _statsIcon: SVGElement; _tooltipText: HTMLElement; /** * Get the the button containing the stats icon. */ public get rootElement(): HTMLButtonElement { if (!this._rootElement) { this._rootElement = document.createElement('button'); this._rootElement.type = 'button'; this._rootElement.classList.add('UiTool'); this._rootElement.id = 'statsBtn'; this._rootElement.appendChild(this.statsIcon); this._rootElement.appendChild(this.tooltipText); } return this._rootElement; } public get tooltipText(): HTMLElement { if (!this._tooltipText) { this._tooltipText = document.createElement('span'); this._tooltipText.classList.add('tooltiptext'); this._tooltipText.innerHTML = 'Information'; } return this._tooltipText; } public get statsIcon(): SVGElement { if (!this._statsIcon) { this._statsIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); this._statsIcon.setAttributeNS(null, 'id', 'statsIcon'); this._statsIcon.setAttributeNS(null, 'x', '0px'); this._statsIcon.setAttributeNS(null, 'y', '0px'); this._statsIcon.setAttributeNS(null, 'viewBox', '0 0 330 330'); // create svg group for the paths const svgGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g'); svgGroup.classList.add('svgIcon'); this._statsIcon.appendChild(svgGroup); // create paths for the icon itself, the inner and out path of a cog const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path1.setAttributeNS( null, 'd', 'M165,0.008C74.019,0.008,0,74.024,0,164.999c0,90.977,74.019,164.992,165,164.992s165-74.015,165-164.992C330,74.024,255.981,0.008,165,0.008z M165,299.992c-74.439,0-135-60.557-135-134.992S90.561,30.008,165,30.008s135,60.557,135,134.991C300,239.436,239.439,299.992,165,299.992z' ); const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path2.setAttributeNS( null, 'd', 'M165,130.008c-8.284,0-15,6.716-15,15v99.983c0,8.284,6.716,15,15,15s15-6.716,15-15v-99.983C180,136.725,173.284,130.008,165,130.008z' ); const path3 = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path3.setAttributeNS( null, 'd', 'M165,70.011c-3.95,0-7.811,1.6-10.61,4.39c-2.79,2.79-4.39,6.66-4.39,10.61s1.6,7.81,4.39,10.61c2.79,2.79,6.66,4.39,10.61,4.39s7.81-1.6,10.609-4.39c2.79-2.8,4.391-6.66,4.391-10.61s-1.601-7.82-4.391-10.61C172.81,71.61,168.95,70.011,165,70.011z' ); svgGroup.appendChild(path1); svgGroup.appendChild(path2); svgGroup.appendChild(path3); } return this._statsIcon; } }