| /** |
| * @module modules/word-cloud-sk |
| * @description <h2><code>word-cloud-sk</code></h2> |
| * |
| * Displays the key-value pairs found in a cluster, and also |
| * shows the relative frequency of how often they appear. |
| * |
| * @example |
| */ |
| import { define } from 'elements-sk/define'; |
| import { html } from 'lit-html'; |
| import { ElementSk } from '../../../infra-sk/modules/ElementSk'; |
| import { ValuePercent } from '../json'; |
| |
| export class WordCloudSk extends ElementSk { |
| private _items: ValuePercent[]; |
| |
| constructor() { |
| super(WordCloudSk.template); |
| this._items = []; |
| } |
| |
| private static rows = (ele: WordCloudSk) => ele._items.map( |
| (item) => html` <tr> |
| <td class="value">${item.value}</td> |
| <td class="textpercent">${item.percent}%</td> |
| <td class="percent" title="${item.percent}%" |
| ><div style="width: ${item.percent}px"></div |
| ></td> |
| </tr>`, |
| ); |
| |
| private static template = (ele: WordCloudSk) => html` |
| <table> |
| ${WordCloudSk.rows(ele)} |
| </table> |
| `; |
| |
| connectedCallback(): void { |
| super.connectedCallback(); |
| this._upgradeProperty('items'); |
| this._render(); |
| } |
| |
| /** A serialized slice of ValuePercent. |
| |
| For example: |
| |
| [ |
| {value:"config=565", percent: 60}, |
| {value:"config=8888", percent: 40}, |
| {value:"cpu_or_gpu=cpu", percent: 20}, |
| {value:"cpu_or_gpu=gpu", percent: 10}, |
| ] |
| */ |
| get items(): ValuePercent[] { |
| return this._items; |
| } |
| |
| set items(val: ValuePercent[]) { |
| if (!val) { |
| return; |
| } |
| this._items = val; |
| this._render(); |
| } |
| } |
| |
| define('word-cloud-sk', WordCloudSk); |