Skip to content

Instantly share code, notes, and snippets.

@Jolanrensen
Created June 17, 2024 11:34
Show Gist options
  • Save Jolanrensen/b3f6f4004c57600e25018b19f1f254c7 to your computer and use it in GitHub Desktop.
Save Jolanrensen/b3f6f4004c57600e25018b19f1f254c7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-06-17T09:47:05.809826Z",
"start_time": "2024-06-17T09:47:01.165827Z"
}
},
"cell_type": "code",
"source": "%use dataframe",
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-06-17T11:24:30.427887Z",
"start_time": "2024-06-17T11:24:27.865609Z"
}
},
"cell_type": "code",
"source": [
"/**\n",
" * nodes: *\n",
" * name: String\n",
" * cpu:\n",
" * requests: String\n",
" * requestsPercent: String\n",
" * limits: String\n",
" * limitsPercent: String\n",
" * memory:\n",
" * requests: String\n",
" * requestsPercent: String\n",
" * limits: String\n",
" * limitsPercent: String\n",
" * pods: *\n",
" * name: String\n",
" * namespace: String\n",
" * cpu:\n",
" * requests: String\n",
" * requestsPercent: String\n",
" * limits: String\n",
" * limitsPercent: String\n",
" * memory:\n",
" * requests: String\n",
" * requestsPercent: String\n",
" * limits: String\n",
" * limitsPercent: String\n",
" */\n",
"\n",
"data class Node(\n",
" val name: String,\n",
" val cpu: ReqLim,\n",
" val memory: ReqLim,\n",
" val pods: List<Pod>,\n",
")\n",
"\n",
"data class ReqLim(\n",
" val requests: String,\n",
" val requestsPercent: String,\n",
" val limits: String,\n",
" val limitsPercent: String,\n",
")\n",
"\n",
"data class Pod(\n",
" val name: String,\n",
" val namespace: String,\n",
" val cpu: ReqLim,\n",
" val memory: ReqLim,\n",
")"
],
"outputs": [],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-06-17T11:25:02.046940Z",
"start_time": "2024-06-17T11:24:59.590393Z"
}
},
"cell_type": "code",
"source": [
"val nodes = listOf(\n",
" Node(\n",
" \"a\",\n",
" ReqLim(\"1\", \"10\", \"2\", \"20\"),\n",
" ReqLim(\"3\", \"30\", \"4\", \"40\"),\n",
" listOf(\n",
" Pod(\n",
" \"a1\",\n",
" \"ns1\",\n",
" ReqLim(\"1\", \"10\", \"2\", \"20\"),\n",
" ReqLim(\"3\", \"30\", \"4\", \"40\"),\n",
" ),\n",
" Pod(\n",
" \"a2\",\n",
" \"ns2\",\n",
" ReqLim(\"5\", \"50\", \"6\", \"60\"),\n",
" ReqLim(\"7\", \"70\", \"8\", \"80\"),\n",
" ),\n",
" ),\n",
" ),\n",
" Node(\n",
" \"b\",\n",
" ReqLim(\"9\", \"90\", \"10\", \"100\"),\n",
" ReqLim(\"11\", \"110\", \"12\", \"120\"),\n",
" listOf(\n",
" Pod(\n",
" \"b1\",\n",
" \"ns3\",\n",
" ReqLim(\"13\", \"130\", \"14\", \"140\"),\n",
" ReqLim(\"15\", \"150\", \"16\", \"160\"),\n",
" ),\n",
" Pod(\n",
" \"b2\",\n",
" \"ns4\",\n",
" ReqLim(\"17\", \"170\", \"18\", \"180\"),\n",
" ReqLim(\"19\", \"190\", \"20\", \"200\"),\n",
" ),\n",
" ),\n",
" ),\n",
").toDataFrame(maxDepth = Int.MAX_VALUE)\n",
"nodes"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_18()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_18\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_419430442&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 2, columnsCount = 4&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;a&quot;,&quot;b&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;1&quot;,&quot;9&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;10&quot;,&quot;90&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;2&quot;,&quot;10&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;20&quot;,&quot;100&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;cpu: DataRow&lt;*&gt;&bsol;&quot;&gt;cpu&lt;&sol;span&gt;&quot;, children: [1, 2, 3, 4], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 1&bsol;nrequestsPercent: 10&bsol;nlimits: 2&bsol;nlimitsPercent: 20&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 9&bsol;nrequestsPercent: 90&bsol;nlimits: 10&bsol;nlimitsPercent: 100&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;9&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;3&quot;,&quot;11&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;30&quot;,&quot;110&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;4&quot;,&quot;12&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;40&quot;,&quot;120&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;memory: DataRow&lt;*&gt;&bsol;&quot;&gt;memory&lt;&sol;span&gt;&quot;, children: [6, 7, 8, 9], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 3&bsol;nrequestsPercent: 30&bsol;nlimits: 4&bsol;nlimitsPercent: 40&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;3&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 11&bsol;nrequestsPercent: 110&bsol;nlimits: 12&bsol;nlimitsPercent: 120&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;11&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;pods: DataFrame&lt;*&gt;&bsol;&quot;&gt;pods&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [{ frameId: 419430443, value: &quot;&lt;b&gt;DataFrame 2 x 4&lt;&sol;b&gt;&quot; },{ frameId: 419430444, value: &quot;&lt;b&gt;DataFrame 2 x 4&lt;&sol;b&gt;&quot; }] }, \n",
"], id: 419430442, rootId: 419430442, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;a1&quot;,&quot;a2&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;namespace: String&bsol;&quot;&gt;namespace&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ns1&quot;,&quot;ns2&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;1&quot;,&quot;5&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;10&quot;,&quot;50&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;2&quot;,&quot;6&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;20&quot;,&quot;60&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;cpu: DataRow&lt;*&gt;&bsol;&quot;&gt;cpu&lt;&sol;span&gt;&quot;, children: [2, 3, 4, 5], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 1&bsol;nrequestsPercent: 10&bsol;nlimits: 2&bsol;nlimitsPercent: 20&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 5&bsol;nrequestsPercent: 50&bsol;nlimits: 6&bsol;nlimitsPercent: 60&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;5&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;3&quot;,&quot;7&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;30&quot;,&quot;70&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;4&quot;,&quot;8&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;40&quot;,&quot;80&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;memory: DataRow&lt;*&gt;&bsol;&quot;&gt;memory&lt;&sol;span&gt;&quot;, children: [7, 8, 9, 10], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 3&bsol;nrequestsPercent: 30&bsol;nlimits: 4&bsol;nlimitsPercent: 40&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;3&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 7&bsol;nrequestsPercent: 70&bsol;nlimits: 8&bsol;nlimitsPercent: 80&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;7&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: 419430443, rootId: 419430442, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;b1&quot;,&quot;b2&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;namespace: String&bsol;&quot;&gt;namespace&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ns3&quot;,&quot;ns4&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;13&quot;,&quot;17&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;130&quot;,&quot;170&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;14&quot;,&quot;18&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;140&quot;,&quot;180&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;cpu: DataRow&lt;*&gt;&bsol;&quot;&gt;cpu&lt;&sol;span&gt;&quot;, children: [2, 3, 4, 5], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 13&bsol;nrequestsPercent: 130&bsol;nlimits: 14&bsol;nlimitsPercent: 140&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;13&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 17&bsol;nrequestsPercent: 170&bsol;nlimits: 18&bsol;nlimitsPercent: 180&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;17&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;15&quot;,&quot;19&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;150&quot;,&quot;190&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;16&quot;,&quot;20&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;160&quot;,&quot;200&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;memory: DataRow&lt;*&gt;&bsol;&quot;&gt;memory&lt;&sol;span&gt;&quot;, children: [7, 8, 9, 10], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 15&bsol;nrequestsPercent: 150&bsol;nlimits: 16&bsol;nlimitsPercent: 160&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;15&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 19&bsol;nrequestsPercent: 190&bsol;nlimits: 20&bsol;nlimitsPercent: 200&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;19&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: 419430444, rootId: 419430442, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(419430442) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_18() {\n",
" let elem = document.getElementById(\"iframe_out_18\");\n",
" resize_iframe_out_18(elem);\n",
" setInterval(resize_iframe_out_18, 5000, elem);\n",
" }\n",
" function resize_iframe_out_18(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_419430445\"><thead><tr><th class=\"rightBorder\" style=\"text-align:left\">name</th><th class=\"leftBorder\" style=\"text-align:left\">cpu</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th class=\"leftBorder\" style=\"text-align:left\">memory</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th style=\"text-align:left\">pods</th></tr><tr><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\">limitsPercent</th><th class=\"bottomBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\">limitsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\"></th></tr></thead><tbody><tr><td class=\"rightBorder\" style=\"vertical-align:top\">a</td><td class=\"leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">10</td><td style=\"vertical-align:top\">2</td><td class=\"rightBorder\" style=\"vertical-align:top\">20</td><td class=\"leftBorder\" style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">30</td><td style=\"vertical-align:top\">4</td><td class=\"rightBorder\" style=\"vertical-align:top\">40</td><td style=\"vertical-align:top\"><details><summary>DataFrame [2 x 4]</summary><table class=\"dataframe\" id=\"static_df_419430446\"><thead><tr><th style=\"text-align:left\">name</th><th class=\"rightBorder\" style=\"text-align:left\">namespace</th><th class=\"leftBorder\" style=\"text-align:left\">cpu</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">memory</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"bottomBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\">limitsPercent</th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder\" style=\"text-align:left\">limitsPercent</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">a1</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns1</td><td class=\"leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">10</td><td style=\"vertical-align:top\">2</td><td class=\"rightBorder\" style=\"vertical-align:top\">20</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">30</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">40</td></tr><tr><td style=\"vertical-align:top\">a2</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns2</td><td class=\"leftBorder\" style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">50</td><td style=\"vertical-align:top\">6</td><td class=\"rightBorder\" style=\"vertical-align:top\">60</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">7</td><td style=\"vertical-align:top\">70</td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">80</td></tr></tbody></table></details></td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">b</td><td class=\"leftBorder\" style=\"vertical-align:top\">9</td><td style=\"vertical-align:top\">90</td><td style=\"vertical-align:top\">10</td><td class=\"rightBorder\" style=\"vertical-align:top\">100</td><td class=\"leftBorder\" style=\"vertical-align:top\">11</td><td style=\"vertical-align:top\">110</td><td style=\"vertical-align:top\">12</td><td class=\"rightBorder\" style=\"vertical-align:top\">120</td><td style=\"vertical-align:top\"><details><summary>DataFrame [2 x 4]</summary><table class=\"dataframe\" id=\"static_df_419430447\"><thead><tr><th style=\"text-align:left\">name</th><th class=\"rightBorder\" style=\"text-align:left\">namespace</th><th class=\"leftBorder\" style=\"text-align:left\">cpu</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">memory</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"bottomBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\">limitsPercent</th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder\" style=\"text-align:left\">limitsPercent</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">b1</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns3</td><td class=\"leftBorder\" style=\"vertical-align:top\">13</td><td style=\"vertical-align:top\">130</td><td style=\"vertical-align:top\">14</td><td class=\"rightBorder\" style=\"vertical-align:top\">140</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">15</td><td style=\"vertical-align:top\">150</td><td style=\"vertical-align:top\">16</td><td style=\"vertical-align:top\">160</td></tr><tr><td style=\"vertical-align:top\">b2</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns4</td><td class=\"leftBorder\" style=\"vertical-align:top\">17</td><td style=\"vertical-align:top\">170</td><td style=\"vertical-align:top\">18</td><td class=\"rightBorder\" style=\"vertical-align:top\">180</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">190</td><td style=\"vertical-align:top\">20</td><td style=\"vertical-align:top\">200</td></tr></tbody></table></details></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_419430445\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.0.0\",\"metadata\":{\"columns\":[\"name\",\"cpu\",\"memory\",\"pods\"],\"nrow\":2,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"a\",\"cpu\":{\"data\":{\"requests\":\"1\",\"requestsPercent\":\"10\",\"limits\":\"2\",\"limitsPercent\":\"20\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"3\",\"requestsPercent\":\"30\",\"limits\":\"4\",\"limitsPercent\":\"40\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"pods\":{\"data\":[{\"name\":\"a1\",\"namespace\":\"ns1\",\"cpu\":{\"data\":{\"requests\":\"1\",\"requestsPercent\":\"10\",\"limits\":\"2\",\"limitsPercent\":\"20\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"3\",\"requestsPercent\":\"30\",\"limits\":\"4\",\"limitsPercent\":\"40\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},{\"name\":\"a2\",\"namespace\":\"ns2\",\"cpu\":{\"data\":{\"requests\":\"5\",\"requestsPercent\":\"50\",\"limits\":\"6\",\"limitsPercent\":\"60\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"7\",\"requestsPercent\":\"70\",\"limits\":\"8\",\"limitsPercent\":\"80\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}}],\"metadata\":{\"kind\":\"FrameColumn\",\"ncol\":4,\"nrow\":2}}},{\"name\":\"b\",\"cpu\":{\"data\":{\"requests\":\"9\",\"requestsPercent\":\"90\",\"limits\":\"10\",\"limitsPercent\":\"100\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"11\",\"requestsPercent\":\"110\",\"limits\":\"12\",\"limitsPercent\":\"120\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"pods\":{\"data\":[{\"name\":\"b1\",\"namespace\":\"ns3\",\"cpu\":{\"data\":{\"requests\":\"13\",\"requestsPercent\":\"130\",\"limits\":\"14\",\"limitsPercent\":\"140\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"15\",\"requestsPercent\":\"150\",\"limits\":\"16\",\"limitsPercent\":\"160\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},{\"name\":\"b2\",\"namespace\":\"ns4\",\"cpu\":{\"data\":{\"requests\":\"17\",\"requestsPercent\":\"170\",\"limits\":\"18\",\"limitsPercent\":\"180\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"19\",\"requestsPercent\":\"190\",\"limits\":\"20\",\"limitsPercent\":\"200\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}}],\"metadata\":{\"kind\":\"FrameColumn\",\"ncol\":4,\"nrow\":2}}}]}"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 13
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-06-17T11:32:32.829379Z",
"start_time": "2024-06-17T11:32:32.732442Z"
}
},
"cell_type": "code",
"source": [
"nodes\n",
" .remove { cpu and memory } // removing the node stats\n",
" .explode { pods } // exploding the pods, which repeats the node name for each row in the pod\n",
" // .flatten(keepParentNameForColumns = true) // you can flatten if you want"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_36()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_36\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_419430510&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 4, columnsCount = 2&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;a&quot;,&quot;a&quot;,&quot;b&quot;,&quot;b&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;a1&quot;,&quot;a2&quot;,&quot;b1&quot;,&quot;b2&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;namespace: String&bsol;&quot;&gt;namespace&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ns1&quot;,&quot;ns2&quot;,&quot;ns3&quot;,&quot;ns4&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;1&quot;,&quot;5&quot;,&quot;13&quot;,&quot;17&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;10&quot;,&quot;50&quot;,&quot;130&quot;,&quot;170&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;2&quot;,&quot;6&quot;,&quot;14&quot;,&quot;18&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;20&quot;,&quot;60&quot;,&quot;140&quot;,&quot;180&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;cpu: DataRow&lt;*&gt;&bsol;&quot;&gt;cpu&lt;&sol;span&gt;&quot;, children: [3, 4, 5, 6], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 1&bsol;nrequestsPercent: 10&bsol;nlimits: 2&bsol;nlimitsPercent: 20&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 5&bsol;nrequestsPercent: 50&bsol;nlimits: 6&bsol;nlimitsPercent: 60&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;5&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 13&bsol;nrequestsPercent: 130&bsol;nlimits: 14&bsol;nlimitsPercent: 140&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;13&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 17&bsol;nrequestsPercent: 170&bsol;nlimits: 18&bsol;nlimitsPercent: 180&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;17&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requests: String&bsol;&quot;&gt;requests&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;3&quot;,&quot;7&quot;,&quot;15&quot;,&quot;19&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;requestsPercent: String&bsol;&quot;&gt;requestsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;30&quot;,&quot;70&quot;,&quot;150&quot;,&quot;190&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limits: String&bsol;&quot;&gt;limits&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;4&quot;,&quot;8&quot;,&quot;16&quot;,&quot;20&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;limitsPercent: String&bsol;&quot;&gt;limitsPercent&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;40&quot;,&quot;80&quot;,&quot;160&quot;,&quot;200&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;memory: DataRow&lt;*&gt;&bsol;&quot;&gt;memory&lt;&sol;span&gt;&quot;, children: [8, 9, 10, 11], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 3&bsol;nrequestsPercent: 30&bsol;nlimits: 4&bsol;nlimitsPercent: 40&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;3&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 7&bsol;nrequestsPercent: 70&bsol;nlimits: 8&bsol;nlimitsPercent: 80&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;7&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercent...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 15&bsol;nrequestsPercent: 150&bsol;nlimits: 16&bsol;nlimitsPercent: 160&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;15&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;requests: 19&bsol;nrequestsPercent: 190&bsol;nlimits: 20&bsol;nlimitsPercent: 200&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requests: &lt;&sol;span&gt;19&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;requestsPercen...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;pods: DataRow&lt;*&gt;&bsol;&quot;&gt;pods&lt;&sol;span&gt;&quot;, children: [1, 2, 7, 12], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;name: a1&bsol;nnamespace: ns1&bsol;ncpu: { requests:1, requestsPercent:10, limits:2, limitsPercent:20 }&bsol;nmemory: { requests:3, requestsPercent:30, limits:4, limitsPercent:40 }&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;name: &lt;&sol;span&gt;a1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;namespace: &lt;&sol;span&gt;ns1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;c...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;m...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;name: a2&bsol;nnamespace: ns2&bsol;ncpu: { requests:5, requestsPercent:50, limits:6, limitsPercent:60 }&bsol;nmemory: { requests:7, requestsPercent:70, limits:8, limitsPercent:80 }&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;name: &lt;&sol;span&gt;a2&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;namespace: &lt;&sol;span&gt;ns2&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;c...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;m...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;name: b1&bsol;nnamespace: ns3&bsol;ncpu: { requests:13, requestsPercent:130, limits:14, limitsPercent:140 }&bsol;nmemory: { requests:15, requestsPercent:150, limits:16, limitsPercent:160 }&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;name: &lt;&sol;span&gt;b1&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;namespace: &lt;&sol;span&gt;ns3&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;c...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;m...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;name: b2&bsol;nnamespace: ns4&bsol;ncpu: { requests:17, requestsPercent:170, limits:18, limitsPercent:180 }&bsol;nmemory: { requests:19, requestsPercent:190, limits:20, limitsPercent:200 }&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;{ &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;name: &lt;&sol;span&gt;b2&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;namespace: &lt;&sol;span&gt;ns4&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;c...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;m...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt; }&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: 419430510, rootId: 419430510, totalRows: 4 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(419430510) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_36() {\n",
" let elem = document.getElementById(\"iframe_out_36\");\n",
" resize_iframe_out_36(elem);\n",
" setInterval(resize_iframe_out_36, 5000, elem);\n",
" }\n",
" function resize_iframe_out_36(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_419430511\"><thead><tr><th class=\"rightBorder\" style=\"text-align:left\">name</th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">pods</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"rightBorder\" style=\"text-align:left\"></th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">name</th><th class=\"rightBorder\" style=\"text-align:left\">namespace</th><th class=\"leftBorder\" style=\"text-align:left\">cpu</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th class=\"rightBorder\" style=\"text-align:left\"></th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">memory</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder rightBorder\" style=\"text-align:left\">limitsPercent</th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\">requests</th><th class=\"bottomBorder\" style=\"text-align:left\">requestsPercent</th><th class=\"bottomBorder\" style=\"text-align:left\">limits</th><th class=\"bottomBorder\" style=\"text-align:left\">limitsPercent</th></tr></thead><tbody><tr><td class=\"rightBorder\" style=\"vertical-align:top\">a</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">a1</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns1</td><td class=\"leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">10</td><td style=\"vertical-align:top\">2</td><td class=\"rightBorder\" style=\"vertical-align:top\">20</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">30</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">40</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">a</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">a2</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns2</td><td class=\"leftBorder\" style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">50</td><td style=\"vertical-align:top\">6</td><td class=\"rightBorder\" style=\"vertical-align:top\">60</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">7</td><td style=\"vertical-align:top\">70</td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">80</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">b</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">b1</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns3</td><td class=\"leftBorder\" style=\"vertical-align:top\">13</td><td style=\"vertical-align:top\">130</td><td style=\"vertical-align:top\">14</td><td class=\"rightBorder\" style=\"vertical-align:top\">140</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">15</td><td style=\"vertical-align:top\">150</td><td style=\"vertical-align:top\">16</td><td style=\"vertical-align:top\">160</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">b</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">b2</td><td class=\"rightBorder\" style=\"vertical-align:top\">ns4</td><td class=\"leftBorder\" style=\"vertical-align:top\">17</td><td style=\"vertical-align:top\">170</td><td style=\"vertical-align:top\">18</td><td class=\"rightBorder\" style=\"vertical-align:top\">180</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">190</td><td style=\"vertical-align:top\">20</td><td style=\"vertical-align:top\">200</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_419430511\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.0.0\",\"metadata\":{\"columns\":[\"name\",\"pods\"],\"nrow\":4,\"ncol\":2},\"kotlin_dataframe\":[{\"name\":\"a\",\"pods\":{\"data\":{\"name\":\"a1\",\"namespace\":\"ns1\",\"cpu\":{\"data\":{\"requests\":\"1\",\"requestsPercent\":\"10\",\"limits\":\"2\",\"limitsPercent\":\"20\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"3\",\"requestsPercent\":\"30\",\"limits\":\"4\",\"limitsPercent\":\"40\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},\"metadata\":{\"kind\":\"ColumnGroup\"}}},{\"name\":\"a\",\"pods\":{\"data\":{\"name\":\"a2\",\"namespace\":\"ns2\",\"cpu\":{\"data\":{\"requests\":\"5\",\"requestsPercent\":\"50\",\"limits\":\"6\",\"limitsPercent\":\"60\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"7\",\"requestsPercent\":\"70\",\"limits\":\"8\",\"limitsPercent\":\"80\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},\"metadata\":{\"kind\":\"ColumnGroup\"}}},{\"name\":\"b\",\"pods\":{\"data\":{\"name\":\"b1\",\"namespace\":\"ns3\",\"cpu\":{\"data\":{\"requests\":\"13\",\"requestsPercent\":\"130\",\"limits\":\"14\",\"limitsPercent\":\"140\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"15\",\"requestsPercent\":\"150\",\"limits\":\"16\",\"limitsPercent\":\"160\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},\"metadata\":{\"kind\":\"ColumnGroup\"}}},{\"name\":\"b\",\"pods\":{\"data\":{\"name\":\"b2\",\"namespace\":\"ns4\",\"cpu\":{\"data\":{\"requests\":\"17\",\"requestsPercent\":\"170\",\"limits\":\"18\",\"limitsPercent\":\"180\"},\"metadata\":{\"kind\":\"ColumnGroup\"}},\"memory\":{\"data\":{\"requests\":\"19\",\"requestsPercent\":\"190\",\"limits\":\"20\",\"limitsPercent\":\"200\"},\"metadata\":{\"kind\":\"ColumnGroup\"}}},\"metadata\":{\"kind\":\"ColumnGroup\"}}}]}"
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 22
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": ""
}
],
"metadata": {
"kernelspec": {
"display_name": "Kotlin",
"language": "kotlin",
"name": "kotlin"
},
"language_info": {
"name": "kotlin",
"version": "1.9.0",
"mimetype": "text/x-kotlin",
"file_extension": ".kt",
"pygments_lexer": "kotlin",
"codemirror_mode": "text/x-kotlin",
"nbconvert_exporter": ""
},
"ktnbPluginMetadata": {
"projectLibraries": [
"Gradle: org.jetbrains.dokka:kotlin-analysis-intellij:1.8.10"
]
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment