import * as React from "react"; /* tslint:disable:no-var-requires */ const styles: any = require("./Node.module.css"); /* tslint:enable:no-var-requires */ import { INodeProps } from "./INodeProps"; class Node extends React.Component { public render() { return this._getNestedFolderTypeNode(); } private _getNestedFolderTypeNode() { const { bgColor, onClick, name, id, label, valueWithFormat, valueUnit, hasChildren, xTranslated, yTranslated, isSelectedNode, width, height, fontSize, textColor, nodeTotalNodes, globalTotalNodes, url, hideNumberOfChildren, treemapId, developer } = this.props; const cursor = hasChildren === true && isSelectedNode === false ? "pointer" : "auto"; const itemsWidth = this._getNumberItemsWidthByNumberOfChars(fontSize, nodeTotalNodes.toString().length); const clipWidth = width > itemsWidth ? width - itemsWidth : width; return ( {this._getLabelNewLine()} {!hideNumberOfChildren && this._getNumberOfItemsRect()} {label} {valueUnit} : {valueWithFormat} Developer : {developer} ); } private _getNumberItemsHeightByFontSize(fontSize: number) { return fontSize; } private _getNumberItemsWidthByNumberOfChars(fontSize: number, numberOfChars: number) { return fontSize / 2 * numberOfChars + 5; } private _getNumberOfItemsRect() { const { bgColor, name, width, height, fontSize, textColor, nodeTotalNodes } = this.props; const itemsWidth = this._getNumberItemsWidthByNumberOfChars(fontSize, nodeTotalNodes.toString().length); const itemsHeight = this._getNumberItemsHeightByFontSize(fontSize); if (width > itemsWidth && height > itemsHeight) { return ( {nodeTotalNodes} ); } } private _getLabelNewLine() { const { label, textColor, fontSize, valueWithFormat, valueUnit, hasChildren, nodeTotalNodes, globalTotalNodes, hideValue } = this.props; if (hasChildren === true) { const fullLabel = hideValue ? label : label + valueWithFormat + " " + valueUnit ; const labelFinal = label; return ( {labelFinal} {/* Total {valueWithFormat} */} ); } else { if (label) { const fullLabel = hideValue ? label : label + valueWithFormat + " " + valueUnit ; return ( {label} {valueUnit}: {valueWithFormat} ); } } } } export default Node;