8338 lines
520 KiB
Plaintext
Vendored
8338 lines
520 KiB
Plaintext
Vendored
{
|
|
"cells": [
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "# Quickstart"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "To start working with Kotlin DataFrame in a notebook, run the cell with the next code:"
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"metadata": {
|
|
"collapsed": true,
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:28.079572Z",
|
|
"start_time": "2025-12-09T10:20:26.879230Z"
|
|
}
|
|
},
|
|
"source": [
|
|
"%useLatestDescriptors\n",
|
|
"%use dataframe"
|
|
],
|
|
"outputs": [],
|
|
"execution_count": 1
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "This will load all necessary DataFrame dependencies (of the latest stable version) and all imports, as well as DataFrame rendering. Learn more [here](https://kotlin.github.io/dataframe/gettingstartedkotlinnotebook.html#integrate-kotlin-dataframe)."
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Read DataFrame"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Kotlin DataFrame supports all popular data formats, including CSV, JSON and Excel, as well as reading from various databases. Read a CSV with the \"Jetbrains Repositories\" dataset into `df` variable:"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:28.915734Z",
|
|
"start_time": "2025-12-09T10:20:28.105945Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"val df = DataFrame.readCsv(\n",
|
|
" \"https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv\"\n",
|
|
")"
|
|
],
|
|
"outputs": [],
|
|
"execution_count": 2
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Display And Explore"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "To display your dataframe as a cell output, place it in the last line of the cell:"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:29.059137Z",
|
|
"start_time": "2025-12-09T10:20:28.943542Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "df",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_1()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_1\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108864"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 562 rows</p><p class="dataframe_description">DataFrame: rowsCount = 562, columnsCount = 5</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"full_name: String\">full_name</span>", children: [], rightAlign: false, values: ["JetBrains/JPS","JetBrains/YouTrackSharp","JetBrains/colorSchemeTool","JetBrains/ideavim","JetBrains/youtrack-vcs-hooks","JetBrains/youtrack-rest-ruby-library","JetBrains/emacs4ij","JetBrains/codereview4intellij","JetBrains/teamcity-nuget-support","JetBrains/Grammar-Kit","JetBrains/intellij-starteam-plugin","JetBrains/la-clojure","JetBrains/MPS","JetBrains/intellij-community","JetBrains/TeamCity.ServiceMessages","JetBrains/youtrack-rest-python-library","JetBrains/intellij-scala","JetBrains/teamcity-messages","JetBrains/teamcity-cpp","JetBrains/kotlin"] }, \n",
|
|
"{ name: "<span title=\"html_url: URL\">html_url</span>", children: [], rightAlign: false, values: ["<a href='https://github.com/JetBrains/JPS' target='_blank'>https://github.com/JetBrains/JPS</a>","<span class=\"formatted\" title=\"https://github.com/JetBrains/YouTrackSharp\"><a href='https://github.com/JetBrains/YouTrackSharp' target='_blank'>https://github.com/JetBrains/YouTrack<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/colorSchemeTool\"><a href='https://github.com/JetBrains/colorSchemeTool' target='_blank'>https://github.com/JetBrains/colorSch<span class=\"structural\">...</span></a></span>","<a href='https://github.com/JetBrains/ideavim' target='_blank'>https://github.com/JetBrains/ideavim</a>","<span class=\"formatted\" title=\"https://github.com/JetBrains/youtrack-vcs-hooks\"><a href='https://github.com/JetBrains/youtrack-vcs-hooks' target='_blank'>https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/youtrack-rest-ruby-library\"><a href='https://github.com/JetBrains/youtrack-rest-ruby-library' target='_blank'>https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></a></span>","<a href='https://github.com/JetBrains/emacs4ij' target='_blank'>https://github.com/JetBrains/emacs4ij</a>","<span class=\"formatted\" title=\"https://github.com/JetBrains/codereview4intellij\"><a href='https://github.com/JetBrains/codereview4intellij' target='_blank'>https://github.com/JetBrains/coderevi<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/teamcity-nuget-support\"><a href='https://github.com/JetBrains/teamcity-nuget-support' target='_blank'>https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></a></span>","<a href='https://github.com/JetBrains/Grammar-Kit' target='_blank'>https://github.com/JetBrains/Grammar-Kit</a>","<span class=\"formatted\" title=\"https://github.com/JetBrains/intellij-starteam-plugin\"><a href='https://github.com/JetBrains/intellij-starteam-plugin' target='_blank'>https://github.com/JetBrains/intellij<span class=\"structural\">...</span></a></span>","<a href='https://github.com/JetBrains/la-clojure' target='_blank'>https://github.com/JetBrains/la-clojure</a>","<a href='https://github.com/JetBrains/MPS' target='_blank'>https://github.com/JetBrains/MPS</a>","<span class=\"formatted\" title=\"https://github.com/JetBrains/intellij-community\"><a href='https://github.com/JetBrains/intellij-community' target='_blank'>https://github.com/JetBrains/intellij<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/TeamCity.ServiceMessages\"><a href='https://github.com/JetBrains/TeamCity.ServiceMessages' target='_blank'>https://github.com/JetBrains/TeamCity<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/youtrack-rest-python-library\"><a href='https://github.com/JetBrains/youtrack-rest-python-library' target='_blank'>https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/intellij-scala\"><a href='https://github.com/JetBrains/intellij-scala' target='_blank'>https://github.com/JetBrains/intellij<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/teamcity-messages\"><a href='https://github.com/JetBrains/teamcity-messages' target='_blank'>https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></a></span>","<span class=\"formatted\" title=\"https://github.com/JetBrains/teamcity-cpp\"><a href='https://github.com/JetBrains/teamcity-cpp' target='_blank'>https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></a></span>","<a href='https://github.com/JetBrains/kotlin' target='_blank'>https://github.com/JetBrains/kotlin</a>"] }, \n",
|
|
"{ name: "<span title=\"stargazers_count: Int\">stargazers_count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">23</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">115</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">290</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">47</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">11</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">41</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">534</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">218</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">118</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">125</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">27</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: String\">topics</span>", children: [], rightAlign: false, values: ["[]","<span class=\"formatted\" title=\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></span>","[]","<span class=\"formatted\" title=\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></span>","[]","[]","[]","[]","<span class=\"formatted\" title=\"[nuget, nuget-feed, teamcity, teamcity-plugin]\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></span>","[]","[]","[]","[domain-specific-language, dsl]","<span class=\"formatted\" title=\"[code-editor, ide, intellij, intellij-community, intellij-platform]\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[c-sharp, teamcity, teamcity-service-messages]\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></span>","[]","[intellij-idea, intellij-plugin, scala]","[]","[]","<span class=\"formatted\" title=\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></span>"] }, \n",
|
|
"{ name: "<span title=\"watchers: Int\">watchers</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">23</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">115</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">290</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">47</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">11</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">41</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">534</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">218</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">118</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">125</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">27</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>"] }, \n",
|
|
"], id: 67108864, rootId: 67108864, totalRows: 562 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108864) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_1() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_1\");\n",
|
|
" resize_iframe_out_1(elem);\n",
|
|
" setInterval(resize_iframe_out_1, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_1(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",
|
|
" white-space: nowrap;\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_67108865\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">html_url</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">watchers</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">https://github.com/JetBrains/JPS</td><td style=\"vertical-align:top\">23</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">23</td></tr><tr><td style=\"vertical-align:top\">JetBrains/YouTrackSharp</td><td style=\"vertical-align:top\">https://github.com/JetBrains/YouTrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">115</td><td style=\"vertical-align:top\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">115</td></tr><tr><td style=\"vertical-align:top\">JetBrains/colorSchemeTool</td><td style=\"vertical-align:top\">https://github.com/JetBrains/colorSch<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">290</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">290</td></tr><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">https://github.com/JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6120</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-vcs-hooks</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">5</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-ruby-library</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">8</td></tr><tr><td style=\"vertical-align:top\">JetBrains/emacs4ij</td><td style=\"vertical-align:top\">https://github.com/JetBrains/emacs4ij</td><td style=\"vertical-align:top\">47</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">47</td></tr><tr><td style=\"vertical-align:top\">JetBrains/codereview4intellij</td><td style=\"vertical-align:top\">https://github.com/JetBrains/coderevi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">11</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">11</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-nuget-support</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">41</td><td style=\"vertical-align:top\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">41</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">https://github.com/JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">534</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">534</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-starteam-plugin</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">6</td></tr><tr><td style=\"vertical-align:top\">JetBrains/la-clojure</td><td style=\"vertical-align:top\">https://github.com/JetBrains/la-clojure</td><td style=\"vertical-align:top\">218</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">218</td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">https://github.com/JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">1241</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">12926</td></tr><tr><td style=\"vertical-align:top\">JetBrains/TeamCity.ServiceMessages</td><td style=\"vertical-align:top\">https://github.com/JetBrains/TeamCity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39</td><td style=\"vertical-align:top\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-python-library</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">118</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">118</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">1066</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-messages</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">125</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">125</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-cpp</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">27</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">27</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">https://github.com/JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108865\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"full_name\",\"html_url\",\"stargazers_count\",\"topics\",\"watchers\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"java.net.URL\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":562,\"ncol\":5,\"is_formatted\":false},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/JPS\",\"html_url\":\"https://github.com/JetBrains/JPS\",\"stargazers_count\":23,\"topics\":\"[]\",\"watchers\":23},{\"full_name\":\"JetBrains/YouTrackSharp\",\"html_url\":\"https://github.com/JetBrains/YouTrackSharp\",\"stargazers_count\":115,\"topics\":\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\",\"watchers\":115},{\"full_name\":\"JetBrains/colorSchemeTool\",\"html_url\":\"https://github.com/JetBrains/colorSchemeTool\",\"stargazers_count\":290,\"topics\":\"[]\",\"watchers\":290},{\"full_name\":\"JetBrains/ideavim\",\"html_url\":\"https://github.com/JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\",\"watchers\":6120},{\"full_name\":\"JetBrains/youtrack-vcs-hooks\",\"html_url\":\"https://github.com/JetBrains/youtrack-vcs-hooks\",\"stargazers_count\":5,\"topics\":\"[]\",\"watchers\":5},{\"full_name\":\"JetBrains/youtrack-rest-ruby-library\",\"html_url\":\"https://github.com/JetBrains/youtrack-rest-ruby-library\",\"stargazers_count\":8,\"topics\":\"[]\",\"watchers\":8},{\"full_name\":\"JetBrains/emacs4ij\",\"html_url\":\"https://github.com/JetBrains/emacs4ij\",\"stargazers_count\":47,\"topics\":\"[]\",\"watchers\":47},{\"full_name\":\"JetBrains/codereview4intellij\",\"html_url\":\"https://github.com/JetBrains/codereview4intellij\",\"stargazers_count\":11,\"topics\":\"[]\",\"watchers\":11},{\"full_name\":\"JetBrains/teamcity-nuget-support\",\"html_url\":\"https://github.com/JetBrains/teamcity-nuget-support\",\"stargazers_count\":41,\"topics\":\"[nuget, nuget-feed, teamcity, teamcity-plugin]\",\"watchers\":41},{\"full_name\":\"JetBrains/Grammar-Kit\",\"html_url\":\"https://github.com/JetBrains/Grammar-Kit\",\"stargazers_count\":534,\"topics\":\"[]\",\"watchers\":534},{\"full_name\":\"JetBrains/intellij-starteam-plugin\",\"html_url\":\"https://github.com/JetBrains/intellij-starteam-plugin\",\"stargazers_count\":6,\"topics\":\"[]\",\"watchers\":6},{\"full_name\":\"JetBrains/la-clojure\",\"html_url\":\"https://github.com/JetBrains/la-clojure\",\"stargazers_count\":218,\"topics\":\"[]\",\"watchers\":218},{\"full_name\":\"JetBrains/MPS\",\"html_url\":\"https://github.com/JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\",\"watchers\":1241},{\"full_name\":\"JetBrains/intellij-community\",\"html_url\":\"https://github.com/JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\",\"watchers\":12926},{\"full_name\":\"JetBrains/TeamCity.ServiceMessages\",\"html_url\":\"https://github.com/JetBrains/TeamCity.ServiceMessages\",\"stargazers_count\":39,\"topics\":\"[c-sharp, teamcity, teamcity-service-messages]\",\"watchers\":39},{\"full_name\":\"JetBrains/youtrack-rest-python-library\",\"html_url\":\"https://github.com/JetBrains/youtrack-rest-python-library\",\"stargazers_count\":118,\"topics\":\"[]\",\"watchers\":118},{\"full_name\":\"JetBrains/intellij-scala\",\"html_url\":\"https://github.com/JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\",\"watchers\":1066},{\"full_name\":\"JetBrains/teamcity-messages\",\"html_url\":\"https://github.com/JetBrains/teamcity-messages\",\"stargazers_count\":125,\"topics\":\"[]\",\"watchers\":125},{\"full_name\":\"JetBrains/teamcity-cpp\",\"html_url\":\"https://github.com/JetBrains/teamcity-cpp\",\"stargazers_count\":27,\"topics\":\"[]\",\"watchers\":27},{\"full_name\":\"JetBrains/kotlin\",\"html_url\":\"https://github.com/JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\",\"watchers\":39402}]}"
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 3
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Kotlin Notebook has special interactive outputs for `DataFrame`. Learn more about them [here](https://kotlin.github.io/dataframe/kotlin-dataframe-features-in-kotlin-notebook.html)."
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Use `.describe()` method to get dataset summaries — column types, number of nulls and simple statistics."
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:29.338002Z",
|
|
"start_time": "2025-12-09T10:20:29.218066Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "df.describe()",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_2()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_2\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108866"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">DataFrame: rowsCount = 5, columnsCount = 14</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["full_name","html_url","stargazers_count","topics","watchers"] }, \n",
|
|
"{ name: "<span title=\"type: String\">type</span>", children: [], rightAlign: false, values: ["String","URL","Int","String","Int"] }, \n",
|
|
"{ name: "<span title=\"count: Int\">count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>"] }, \n",
|
|
"{ name: "<span title=\"unique: Int\">unique</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">562</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">165</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">145</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">165</span></span>"] }, \n",
|
|
"{ name: "<span title=\"nulls: Int\">nulls</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
|
"{ name: "<span title=\"top: java.io.Serializable\">top</span>", children: [], rightAlign: false, values: ["JetBrains/JPS","<a href='https://github.com/JetBrains/JPS' target='_blank'>https://github.com/JetBrains/JPS</a>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","[]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
|
"{ name: "<span title=\"freq: Int\">freq</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">100</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">401</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">100</span></span>"] }, \n",
|
|
"{ name: "<span title=\"mean: Double?\">mean</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">244,759786</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">244,759786</span></span>"] }, \n",
|
|
"{ name: "<span title=\"std: Double?\">std</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1862,801982</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1862,801982</span></span>"] }, \n",
|
|
"{ name: "<span title=\"min: Comparable<*>?\">min</span>", children: [], rightAlign: false, values: ["JetBrains/Android-Tuts-Samples","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","[2d, graphics, java, skia]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
|
"{ name: "<span title=\"p25: Comparable<*>?\">p25</span>", children: [], rightAlign: false, values: ["JetBrains/eslint-config","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2,0</span></span>","[]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2,0</span></span>"] }, \n",
|
|
"{ name: "<span title=\"median: Comparable<*>?\">median</span>", children: [], rightAlign: false, values: ["JetBrains/lightbeam","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,0</span></span>","[]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,0</span></span>"] }, \n",
|
|
"{ name: "<span title=\"p75: Comparable<*>?\">p75</span>", children: [], rightAlign: false, values: ["JetBrains/teamcity-bitbucket-issues","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">48,0</span></span>","[awt, swing]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">48,0</span></span>"] }, \n",
|
|
"{ name: "<span title=\"max: Comparable<*>?\">max</span>", children: [], rightAlign: false, values: ["JetBrains/ztools","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","[youtrack, youtrack-workflow]","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>"] }, \n",
|
|
"], id: 67108866, rootId: 67108866, totalRows: 5 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108866) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_2() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_2\");\n",
|
|
" resize_iframe_out_2(elem);\n",
|
|
" setInterval(resize_iframe_out_2, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_2(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",
|
|
" white-space: nowrap;\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_67108867\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">type</th><th class=\"bottomBorder\" style=\"text-align:left\">count</th><th class=\"bottomBorder\" style=\"text-align:left\">unique</th><th class=\"bottomBorder\" style=\"text-align:left\">nulls</th><th class=\"bottomBorder\" style=\"text-align:left\">top</th><th class=\"bottomBorder\" style=\"text-align:left\">freq</th><th class=\"bottomBorder\" style=\"text-align:left\">mean</th><th class=\"bottomBorder\" style=\"text-align:left\">std</th><th class=\"bottomBorder\" style=\"text-align:left\">min</th><th class=\"bottomBorder\" style=\"text-align:left\">p25</th><th class=\"bottomBorder\" style=\"text-align:left\">median</th><th class=\"bottomBorder\" style=\"text-align:left\">p75</th><th class=\"bottomBorder\" style=\"text-align:left\">max</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">full_name</td><td style=\"vertical-align:top\">String</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">JetBrains/Android-Tuts-Samples</td><td style=\"vertical-align:top\">JetBrains/eslint-config</td><td style=\"vertical-align:top\">JetBrains/lightbeam</td><td style=\"vertical-align:top\">JetBrains/teamcity-bitbucket-issues</td><td style=\"vertical-align:top\">JetBrains/ztools</td></tr><tr><td style=\"vertical-align:top\">html_url</td><td style=\"vertical-align:top\">URL</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">https://github.com/JetBrains/JPS</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td></tr><tr><td style=\"vertical-align:top\">stargazers_count</td><td style=\"vertical-align:top\">Int</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">165</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">100</td><td style=\"vertical-align:top\">244,759786</td><td style=\"vertical-align:top\">1862,801982</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">2,000000</td><td style=\"vertical-align:top\">8,000000</td><td style=\"vertical-align:top\">48,000000</td><td style=\"vertical-align:top\">39402</td></tr><tr><td style=\"vertical-align:top\">topics</td><td style=\"vertical-align:top\">String</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">145</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">401</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">[2d, graphics, java, skia]</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">[awt, swing]</td><td style=\"vertical-align:top\">[youtrack, youtrack-workflow]</td></tr><tr><td style=\"vertical-align:top\">watchers</td><td style=\"vertical-align:top\">Int</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">165</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">100</td><td style=\"vertical-align:top\">244,759786</td><td style=\"vertical-align:top\">1862,801982</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">2,000000</td><td style=\"vertical-align:top\">8,000000</td><td style=\"vertical-align:top\">48,000000</td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108867\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"name\",\"type\",\"count\",\"unique\",\"nulls\",\"top\",\"freq\",\"mean\",\"std\",\"min\",\"p25\",\"median\",\"p75\",\"max\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"java.io.Serializable\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Double?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Double?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"}],\"nrow\":5,\"ncol\":14,\"is_formatted\":false},\"kotlin_dataframe\":[{\"name\":\"full_name\",\"type\":\"String\",\"count\":562,\"unique\":562,\"nulls\":0,\"top\":\"JetBrains/JPS\",\"freq\":1,\"mean\":null,\"std\":null,\"min\":\"JetBrains/Android-Tuts-Samples\",\"p25\":\"JetBrains/eslint-config\",\"median\":\"JetBrains/lightbeam\",\"p75\":\"JetBrains/teamcity-bitbucket-issues\",\"max\":\"JetBrains/ztools\"},{\"name\":\"html_url\",\"type\":\"URL\",\"count\":562,\"unique\":562,\"nulls\":0,\"top\":\"https://github.com/JetBrains/JPS\",\"freq\":1,\"mean\":null,\"std\":null,\"min\":null,\"p25\":null,\"median\":null,\"p75\":null,\"max\":null},{\"name\":\"stargazers_count\",\"type\":\"Int\",\"count\":562,\"unique\":165,\"nulls\":0,\"top\":\"1\",\"freq\":100,\"mean\":244.75978647686833,\"std\":1862.8019819171673,\"min\":\"0\",\"p25\":\"2.0\",\"median\":\"8.0\",\"p75\":\"48.0\",\"max\":\"39402\"},{\"name\":\"topics\",\"type\":\"String\",\"count\":562,\"unique\":145,\"nulls\":0,\"top\":\"[]\",\"freq\":401,\"mean\":null,\"std\":null,\"min\":\"[2d, graphics, java, skia]\",\"p25\":\"[]\",\"median\":\"[]\",\"p75\":\"[awt, swing]\",\"max\":\"[youtrack, youtrack-workflow]\"},{\"name\":\"watchers\",\"type\":\"Int\",\"count\":562,\"unique\":165,\"nulls\":0,\"top\":\"1\",\"freq\":100,\"mean\":244.75978647686833,\"std\":1862.8019819171673,\"min\":\"0\",\"p25\":\"2.0\",\"median\":\"8.0\",\"p75\":\"48.0\",\"max\":\"39402\"}]}"
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 4
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Select Columns"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Kotlin DataFrame features a typesafe [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html), enabling flexible and safe selection of any combination of columns.\n",
|
|
"Column selectors are widely used across operations — one of the simplest examples is `.select { }`, which returns a new DataFrame with only the columns chosen in [Columns Selection](https://kotlin.github.io/dataframe/columnselectors.html) expression.\n",
|
|
"\n",
|
|
"After executing the cell where a `DataFrame` variable is declared, an extension with properties for its columns is automatically generated.\n",
|
|
"These properties can then be used in the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) expression for typesafe and convenient column access.\n",
|
|
"\n",
|
|
"Select some columns:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:29.601195Z",
|
|
"start_time": "2025-12-09T10:20:29.445469Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"// Select \"full_name\", \"stargazers_count\" and \"topics\" columns\n",
|
|
"val dfSelected = df.select { full_name and stargazers_count and topics }\n",
|
|
"dfSelected"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_5()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_5\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108872"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 562 rows</p><p class="dataframe_description">DataFrame: rowsCount = 562, columnsCount = 3</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"full_name: String\">full_name</span>", children: [], rightAlign: false, values: ["JetBrains/JPS","JetBrains/YouTrackSharp","JetBrains/colorSchemeTool","JetBrains/ideavim","JetBrains/youtrack-vcs-hooks","JetBrains/youtrack-rest-ruby-library","JetBrains/emacs4ij","JetBrains/codereview4intellij","JetBrains/teamcity-nuget-support","JetBrains/Grammar-Kit","JetBrains/intellij-starteam-plugin","JetBrains/la-clojure","JetBrains/MPS","JetBrains/intellij-community","JetBrains/TeamCity.ServiceMessages","JetBrains/youtrack-rest-python-library","JetBrains/intellij-scala","JetBrains/teamcity-messages","JetBrains/teamcity-cpp","JetBrains/kotlin"] }, \n",
|
|
"{ name: "<span title=\"stargazers_count: Int\">stargazers_count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">23</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">115</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">290</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">47</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">11</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">41</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">534</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">218</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">118</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">125</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">27</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: String\">topics</span>", children: [], rightAlign: false, values: ["[]","<span class=\"formatted\" title=\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></span>","[]","<span class=\"formatted\" title=\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></span>","[]","[]","[]","[]","<span class=\"formatted\" title=\"[nuget, nuget-feed, teamcity, teamcity-plugin]\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></span>","[]","[]","[]","[domain-specific-language, dsl]","<span class=\"formatted\" title=\"[code-editor, ide, intellij, intellij-community, intellij-platform]\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[c-sharp, teamcity, teamcity-service-messages]\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></span>","[]","[intellij-idea, intellij-plugin, scala]","[]","[]","<span class=\"formatted\" title=\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></span>"] }, \n",
|
|
"], id: 67108872, rootId: 67108872, totalRows: 562 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108872) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_5() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_5\");\n",
|
|
" resize_iframe_out_5(elem);\n",
|
|
" setInterval(resize_iframe_out_5, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_5(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",
|
|
" white-space: nowrap;\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_67108873\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">23</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/YouTrackSharp</td><td style=\"vertical-align:top\">115</td><td style=\"vertical-align:top\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/colorSchemeTool</td><td style=\"vertical-align:top\">290</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-vcs-hooks</td><td style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-ruby-library</td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/emacs4ij</td><td style=\"vertical-align:top\">47</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/codereview4intellij</td><td style=\"vertical-align:top\">11</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-nuget-support</td><td style=\"vertical-align:top\">41</td><td style=\"vertical-align:top\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">534</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-starteam-plugin</td><td style=\"vertical-align:top\">6</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/la-clojure</td><td style=\"vertical-align:top\">218</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/TeamCity.ServiceMessages</td><td style=\"vertical-align:top\">39</td><td style=\"vertical-align:top\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-python-library</td><td style=\"vertical-align:top\">118</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-messages</td><td style=\"vertical-align:top\">125</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-cpp</td><td style=\"vertical-align:top\">27</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108873\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"full_name\",\"stargazers_count\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":562,\"ncol\":3,\"is_formatted\":false},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/JPS\",\"stargazers_count\":23,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/YouTrackSharp\",\"stargazers_count\":115,\"topics\":\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\"},{\"full_name\":\"JetBrains/colorSchemeTool\",\"stargazers_count\":290,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"full_name\":\"JetBrains/youtrack-vcs-hooks\",\"stargazers_count\":5,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/youtrack-rest-ruby-library\",\"stargazers_count\":8,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/emacs4ij\",\"stargazers_count\":47,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/codereview4intellij\",\"stargazers_count\":11,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/teamcity-nuget-support\",\"stargazers_count\":41,\"topics\":\"[nuget, nuget-feed, teamcity, teamcity-plugin]\"},{\"full_name\":\"JetBrains/Grammar-Kit\",\"stargazers_count\":534,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/intellij-starteam-plugin\",\"stargazers_count\":6,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/la-clojure\",\"stargazers_count\":218,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"full_name\":\"JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"full_name\":\"JetBrains/TeamCity.ServiceMessages\",\"stargazers_count\":39,\"topics\":\"[c-sharp, teamcity, teamcity-service-messages]\"},{\"full_name\":\"JetBrains/youtrack-rest-python-library\",\"stargazers_count\":118,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"full_name\":\"JetBrains/teamcity-messages\",\"stargazers_count\":125,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/teamcity-cpp\",\"stargazers_count\":27,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"}]}"
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 5
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Raw Filtering"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Some operations use `RowExpression`, i.e., an expression that applies for all `DataFrame` rows.\n",
|
|
"For example `.filter { }` returns a new `DataFrame` with rows that satisfy a condition given by row expression.\n",
|
|
"\n",
|
|
"Inside a row expression, you can access the values of the current row by column names through auto-generated properties.\n",
|
|
"Similar to the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html), but in this case the properties represent actual values, not column references.\n",
|
|
"\n",
|
|
"Filter rows by \"stargazers_count\" value:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:29.680739Z",
|
|
"start_time": "2025-12-09T10:20:29.615594Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"// Keep only rows where \"stargazers_count\" value is more than 1000\n",
|
|
"val dfFiltered = dfSelected.filter { stargazers_count >= 1000 }\n",
|
|
"dfFiltered"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_6()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_6\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108874"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 24 rows</p><p class="dataframe_description">DataFrame: rowsCount = 24, columnsCount = 3</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"full_name: String\">full_name</span>", children: [], rightAlign: false, values: ["JetBrains/ideavim","JetBrains/MPS","JetBrains/intellij-community","JetBrains/intellij-scala","JetBrains/kotlin","JetBrains/intellij-plugins","JetBrains/Exposed","JetBrains/kotlin-web-site","JetBrains/idea-gitignore","JetBrains/swot","JetBrains/phpstorm-stubs","JetBrains/gradle-intellij-plugin","JetBrains/svg-sprite-loader","JetBrains/resharper-unity","JetBrains/kotlin-native","JetBrains/create-react-kotlin-app","JetBrains/ring-ui","JetBrains/kotlinconf-app","JetBrains/JetBrainsMono","<span class=\"formatted\" title=\"JetBrains/intellij-platform-plugin-template\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></span>"] }, \n",
|
|
"{ name: "<span title=\"stargazers_count: Int\">stargazers_count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1737</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1074</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1181</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1072</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1110</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1058</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1815</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1017</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7101</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2424</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2836</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2628</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6059</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1133</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: String\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></span>","[domain-specific-language, dsl]","<span class=\"formatted\" title=\"[code-editor, ide, intellij, intellij-community, intellij-platform]\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></span>","[intellij-idea, intellij-plugin, scala]","<span class=\"formatted\" title=\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></span>","[]","[dao, kotlin, orm, sql]","[kotlin]","<span class=\"formatted\" title=\"[gitignore, ignore-files, intellij, intellij-plugin, java]\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></span>","[]","[]","<span class=\"formatted\" title=\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></span>","[c, compiler, kotlin, llvm, objective-c]","<span class=\"formatted\" title=\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></span>","[components, jetbrains-ui, react]","[]","<span class=\"formatted\" title=\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></span>"] }, \n",
|
|
"], id: 67108874, rootId: 67108874, totalRows: 24 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108874) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_6() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_6\");\n",
|
|
" resize_iframe_out_6(elem);\n",
|
|
" setInterval(resize_iframe_out_6, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_6(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",
|
|
" white-space: nowrap;\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_67108875\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108875\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"full_name\",\"stargazers_count\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":24,\"ncol\":3,\"is_formatted\":false},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"full_name\":\"JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"full_name\":\"JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"full_name\":\"JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"full_name\":\"JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"},{\"full_name\":\"JetBrains/intellij-plugins\",\"stargazers_count\":1737,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/Exposed\",\"stargazers_count\":5688,\"topics\":\"[dao, kotlin, orm, sql]\"},{\"full_name\":\"JetBrains/kotlin-web-site\",\"stargazers_count\":1074,\"topics\":\"[kotlin]\"},{\"full_name\":\"JetBrains/idea-gitignore\",\"stargazers_count\":1181,\"topics\":\"[gitignore, ignore-files, intellij, intellij-plugin, java]\"},{\"full_name\":\"JetBrains/swot\",\"stargazers_count\":1072,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/phpstorm-stubs\",\"stargazers_count\":1110,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/gradle-intellij-plugin\",\"stargazers_count\":1058,\"topics\":\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\"},{\"full_name\":\"JetBrains/svg-sprite-loader\",\"stargazers_count\":1815,\"topics\":\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\"},{\"full_name\":\"JetBrains/resharper-unity\",\"stargazers_count\":1017,\"topics\":\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\"},{\"full_name\":\"JetBrains/kotlin-native\",\"stargazers_count\":7101,\"topics\":\"[c, compiler, kotlin, llvm, objective-c]\"},{\"full_name\":\"JetBrains/create-react-kotlin-app\",\"stargazers_count\":2424,\"topics\":\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\"},{\"full_name\":\"JetBrains/ring-ui\",\"stargazers_count\":2836,\"topics\":\"[components, jetbrains-ui, react]\"},{\"full_name\":\"JetBrains/kotlinconf-app\",\"stargazers_count\":2628,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/JetBrainsMono\",\"stargazers_count\":6059,\"topics\":\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\"},{\"full_name\":\"JetBrains/intellij-platform-plugin-template\",\"stargazers_count\":1133,\"topics\":\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\"}]}"
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 6
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Columns Rename"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Columns can be renamed using the `.rename { }` operation, which also uses the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) to select a column to rename.\n",
|
|
"The `rename` operation does not perform the renaming immediately; instead, it creates an intermediate object that must be finalized into a new `DataFrame` by calling the `.into()` function with the new column name.\n",
|
|
"\n",
|
|
"Rename \"full_name\" and \"stargazers_count\" columns:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.004783Z",
|
|
"start_time": "2025-12-09T10:20:29.850025Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"// Rename \"full_name\" column into \"name\"\n",
|
|
"val dfRenamed = dfFiltered\n",
|
|
" .rename { full_name }.into(\"name\")\n",
|
|
" // And \"stargazers_count\" into \"starsCount\"\n",
|
|
" .rename { stargazers_count }.into(\"starsCount\")\n",
|
|
"dfRenamed"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_9()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_9\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108880"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 24 rows</p><p class="dataframe_description">DataFrame: rowsCount = 24, columnsCount = 3</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["JetBrains/ideavim","JetBrains/MPS","JetBrains/intellij-community","JetBrains/intellij-scala","JetBrains/kotlin","JetBrains/intellij-plugins","JetBrains/Exposed","JetBrains/kotlin-web-site","JetBrains/idea-gitignore","JetBrains/swot","JetBrains/phpstorm-stubs","JetBrains/gradle-intellij-plugin","JetBrains/svg-sprite-loader","JetBrains/resharper-unity","JetBrains/kotlin-native","JetBrains/create-react-kotlin-app","JetBrains/ring-ui","JetBrains/kotlinconf-app","JetBrains/JetBrainsMono","<span class=\"formatted\" title=\"JetBrains/intellij-platform-plugin-template\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></span>"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1737</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1074</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1181</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1072</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1110</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1058</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1815</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1017</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7101</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2424</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2836</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2628</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6059</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1133</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: String\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></span>","[domain-specific-language, dsl]","<span class=\"formatted\" title=\"[code-editor, ide, intellij, intellij-community, intellij-platform]\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></span>","[intellij-idea, intellij-plugin, scala]","<span class=\"formatted\" title=\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></span>","[]","[dao, kotlin, orm, sql]","[kotlin]","<span class=\"formatted\" title=\"[gitignore, ignore-files, intellij, intellij-plugin, java]\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></span>","[]","[]","<span class=\"formatted\" title=\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></span>","[c, compiler, kotlin, llvm, objective-c]","<span class=\"formatted\" title=\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></span>","[components, jetbrains-ui, react]","[]","<span class=\"formatted\" title=\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></span>"] }, \n",
|
|
"], id: 67108880, rootId: 67108880, totalRows: 24 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108880) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_9() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_9\");\n",
|
|
" resize_iframe_out_9(elem);\n",
|
|
" setInterval(resize_iframe_out_9, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_9(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",
|
|
" white-space: nowrap;\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_67108881\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108881\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":24,\"ncol\":3,\"is_formatted\":false},\"kotlin_dataframe\":[{\"name\":\"JetBrains/ideavim\",\"starsCount\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"name\":\"JetBrains/MPS\",\"starsCount\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"name\":\"JetBrains/intellij-community\",\"starsCount\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"name\":\"JetBrains/intellij-scala\",\"starsCount\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"name\":\"JetBrains/kotlin\",\"starsCount\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"},{\"name\":\"JetBrains/intellij-plugins\",\"starsCount\":1737,\"topics\":\"[]\"},{\"name\":\"JetBrains/Exposed\",\"starsCount\":5688,\"topics\":\"[dao, kotlin, orm, sql]\"},{\"name\":\"JetBrains/kotlin-web-site\",\"starsCount\":1074,\"topics\":\"[kotlin]\"},{\"name\":\"JetBrains/idea-gitignore\",\"starsCount\":1181,\"topics\":\"[gitignore, ignore-files, intellij, intellij-plugin, java]\"},{\"name\":\"JetBrains/swot\",\"starsCount\":1072,\"topics\":\"[]\"},{\"name\":\"JetBrains/phpstorm-stubs\",\"starsCount\":1110,\"topics\":\"[]\"},{\"name\":\"JetBrains/gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\"},{\"name\":\"JetBrains/svg-sprite-loader\",\"starsCount\":1815,\"topics\":\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\"},{\"name\":\"JetBrains/resharper-unity\",\"starsCount\":1017,\"topics\":\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\"},{\"name\":\"JetBrains/kotlin-native\",\"starsCount\":7101,\"topics\":\"[c, compiler, kotlin, llvm, objective-c]\"},{\"name\":\"JetBrains/create-react-kotlin-app\",\"starsCount\":2424,\"topics\":\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\"},{\"name\":\"JetBrains/ring-ui\",\"starsCount\":2836,\"topics\":\"[components, jetbrains-ui, react]\"},{\"name\":\"JetBrains/kotlinconf-app\",\"starsCount\":2628,\"topics\":\"[]\"},{\"name\":\"JetBrains/JetBrainsMono\",\"starsCount\":6059,\"topics\":\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\"},{\"name\":\"JetBrains/intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\"}]}"
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 7
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Modify Columns"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Columns can be modified using the `update { }` and `convert { }` operations.\n",
|
|
"Both operations select columns to modify via the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) and, similar to `rename`, create an intermediate object that must be finalized to produce a new `DataFrame`.\n",
|
|
"\n",
|
|
"The `update` operation preserves the original column types, while `convert` allows changing the type.\n",
|
|
"In both cases, column names and their positions remain unchanged.\n",
|
|
"\n",
|
|
"Update \"name\" and convert \"topics\":"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.263103Z",
|
|
"start_time": "2025-12-09T10:20:30.063961Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"val dfUpdated = dfRenamed\n",
|
|
" // Update \"name\" values with only its second part (after '/')\n",
|
|
" .update { name }.with { it.split(\"/\")[1] }\n",
|
|
" // Convert \"topics\" `String` values into `List<String>` by splitting:\n",
|
|
" .convert { topics }.with { it.removeSurrounding(\"[\", \"]\").split(\", \") }\n",
|
|
"dfUpdated"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_10()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_10\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108882"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 24 rows</p><p class="dataframe_description">DataFrame: rowsCount = 24, columnsCount = 3</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["ideavim","MPS","intellij-community","intellij-scala","kotlin","intellij-plugins","Exposed","kotlin-web-site","idea-gitignore","swot","phpstorm-stubs","gradle-intellij-plugin","svg-sprite-loader","resharper-unity","kotlin-native","create-react-kotlin-app","ring-ui","kotlinconf-app","JetBrainsMono","intellij-platform-plugin-template"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1737</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1074</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1181</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1072</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1110</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1058</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1815</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1017</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7101</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2424</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2836</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2628</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6059</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1133</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: List<String>\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"ideavim\nintellij\nintellij-platform\njb-official\nkotlin\nvim\nvim-emulator\"><span class=\"structural\">[</span>ideavim<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>intellij-pl<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"domain-specific-language\ndsl\"><span class=\"structural\">[</span>domain-specific-language<span class=\"structural\">, </span>dsl<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"code-editor\nide\nintellij\nintellij-community\nintellij-platform\"><span class=\"structural\">[</span>code-editor<span class=\"structural\">, </span>ide<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"intellij-idea\nintellij-plugin\nscala\"><span class=\"structural\">[</span>intellij-idea<span class=\"structural\">, </span>intellij-plugin<span class=\"structural\">, </span>scala<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"compiler\ngradle-plugin\nintellij-plugin\nkotlin\nkotlin-library\nmaven-plugin\nprogramming-language\"><span class=\"structural\">[</span>compiler<span class=\"structural\">, </span>gradle-plugin<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dao\nkotlin\norm\nsql\"><span class=\"structural\">[</span>dao<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>orm<span class=\"structural\">, </span>sql<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"kotlin\"><span class=\"structural\">[</span>kotlin<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"gitignore\nignore-files\nintellij\nintellij-plugin\njava\"><span class=\"structural\">[</span>gitignore<span class=\"structural\">, </span>ignore-files<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"gradle\ngradle-intellij-plugin\ngradle-kotlin-dsl\ngroovy\nintellij\nintellij-ides\nintellij-platform\nintellij-plugin\nintellij-sdk\njetbrains-plugin\nkotlin\nplugin-verifier\npublishing-dsl\nsetup-dsl\nteamcity\ntravis-configuration\"><span class=\"structural\">[</span>gradle<span class=\"structural\">, </span>gradle-intellij-plugin<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"sprite\nsvg\nsvg-sprite\nsvg-stack\nwebpack\nwebpack-loader\nwebpack-plugin\nwebpack2\nwebpack3\"><span class=\"structural\">[</span>sprite<span class=\"structural\">, </span>svg<span class=\"structural\">, </span>svg-sprite<span class=\"structural\">, </span>svg-s<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"hacktoberfest\njetbrains\nplugin\nresharper\nresharper-plugin\nrider\nunity\nunity-editor\"><span class=\"structural\">[</span>hacktoberfest<span class=\"structural\">, </span>jetbrains<span class=\"structural\">, </span>plugin<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"c\ncompiler\nkotlin\nllvm\nobjective-c\"><span class=\"structural\">[</span>c<span class=\"structural\">, </span>compiler<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>llvm<span class=\"structural\">, </span>objective-c<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"create-react-app\njetbrains-ui\nkotlin\nreact\nwebpack\"><span class=\"structural\">[</span>create-react-app<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"components\njetbrains-ui\nreact\"><span class=\"structural\">[</span>components<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span>react<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"coding-font\nfont\nligatures\nmonospaced-font\nprogramming-font\nprogramming-ligatures\"><span class=\"structural\">[</span>coding-font<span class=\"structural\">, </span>font<span class=\"structural\">, </span>ligatures<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"intellij\nintellij-idea\nintellij-idea-plugin\nintellij-platform\nintellij-plugin\nintellij-plugins\njetbrains-plugin\"><span class=\"structural\">[</span>intellij<span class=\"structural\">, </span>intellij-idea<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>"] }, \n",
|
|
"], id: 67108882, rootId: 67108882, totalRows: 24 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108882) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_10() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_10\");\n",
|
|
" resize_iframe_out_10(elem);\n",
|
|
" setInterval(resize_iframe_out_10, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_10(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",
|
|
" white-space: nowrap;\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_67108883\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-platform-plugin-template</td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108883\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"}],\"nrow\":24,\"ncol\":3,\"is_formatted\":false},\"kotlin_dataframe\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"]},{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"]},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"]},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"]},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"]},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"]},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"]},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"]},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"]},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"]},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"]},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"]},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"]},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"]},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"]},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"]},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"]},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"]},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"]},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"]}]}"
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 8
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Check the new \"topics\" type out:"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.372959Z",
|
|
"start_time": "2025-12-09T10:20:30.335099Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "dfUpdated.topics.type()",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"kotlin.collections.List<kotlin.String>"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 9
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Adding New Columns"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"The `.add { }` function allows creating a `DataFrame` with a new column, where the value for each row is computed based on the existing values in that row. These values can be accessed within the row expressions.\n",
|
|
"\n",
|
|
"Add a new `Boolean` column \"isIntellij\":"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.646751Z",
|
|
"start_time": "2025-12-09T10:20:30.504078Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"// Add a `Boolean` column indicating whether the `name` contains the \"intellij\" substring\n",
|
|
"// or the topics include \"intellij\".\n",
|
|
"val dfWithIsIntellij = dfUpdated.add(\"isIntellij\") {\n",
|
|
" name.contains(\"intellij\") || \"intellij\" in topics\n",
|
|
"}\n",
|
|
"dfWithIsIntellij"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_13()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_13\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108888"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">... showing only top 20 of 24 rows</p><p class="dataframe_description">DataFrame: rowsCount = 24, columnsCount = 4</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["ideavim","MPS","intellij-community","intellij-scala","kotlin","intellij-plugins","Exposed","kotlin-web-site","idea-gitignore","swot","phpstorm-stubs","gradle-intellij-plugin","svg-sprite-loader","resharper-unity","kotlin-native","create-react-kotlin-app","ring-ui","kotlinconf-app","JetBrainsMono","intellij-platform-plugin-template"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1737</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1074</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1181</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1072</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1110</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1058</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1815</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1017</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7101</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2424</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2836</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2628</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6059</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1133</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: List<String>\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"ideavim\nintellij\nintellij-platform\njb-official\nkotlin\nvim\nvim-emulator\"><span class=\"structural\">[</span>ideavim<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>intellij-pl<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"domain-specific-language\ndsl\"><span class=\"structural\">[</span>domain-specific-language<span class=\"structural\">, </span>dsl<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"code-editor\nide\nintellij\nintellij-community\nintellij-platform\"><span class=\"structural\">[</span>code-editor<span class=\"structural\">, </span>ide<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"intellij-idea\nintellij-plugin\nscala\"><span class=\"structural\">[</span>intellij-idea<span class=\"structural\">, </span>intellij-plugin<span class=\"structural\">, </span>scala<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"compiler\ngradle-plugin\nintellij-plugin\nkotlin\nkotlin-library\nmaven-plugin\nprogramming-language\"><span class=\"structural\">[</span>compiler<span class=\"structural\">, </span>gradle-plugin<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dao\nkotlin\norm\nsql\"><span class=\"structural\">[</span>dao<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>orm<span class=\"structural\">, </span>sql<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"kotlin\"><span class=\"structural\">[</span>kotlin<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"gitignore\nignore-files\nintellij\nintellij-plugin\njava\"><span class=\"structural\">[</span>gitignore<span class=\"structural\">, </span>ignore-files<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"gradle\ngradle-intellij-plugin\ngradle-kotlin-dsl\ngroovy\nintellij\nintellij-ides\nintellij-platform\nintellij-plugin\nintellij-sdk\njetbrains-plugin\nkotlin\nplugin-verifier\npublishing-dsl\nsetup-dsl\nteamcity\ntravis-configuration\"><span class=\"structural\">[</span>gradle<span class=\"structural\">, </span>gradle-intellij-plugin<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"sprite\nsvg\nsvg-sprite\nsvg-stack\nwebpack\nwebpack-loader\nwebpack-plugin\nwebpack2\nwebpack3\"><span class=\"structural\">[</span>sprite<span class=\"structural\">, </span>svg<span class=\"structural\">, </span>svg-sprite<span class=\"structural\">, </span>svg-s<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"hacktoberfest\njetbrains\nplugin\nresharper\nresharper-plugin\nrider\nunity\nunity-editor\"><span class=\"structural\">[</span>hacktoberfest<span class=\"structural\">, </span>jetbrains<span class=\"structural\">, </span>plugin<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"c\ncompiler\nkotlin\nllvm\nobjective-c\"><span class=\"structural\">[</span>c<span class=\"structural\">, </span>compiler<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>llvm<span class=\"structural\">, </span>objective-c<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"create-react-app\njetbrains-ui\nkotlin\nreact\nwebpack\"><span class=\"structural\">[</span>create-react-app<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"components\njetbrains-ui\nreact\"><span class=\"structural\">[</span>components<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span>react<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"coding-font\nfont\nligatures\nmonospaced-font\nprogramming-font\nprogramming-ligatures\"><span class=\"structural\">[</span>coding-font<span class=\"structural\">, </span>font<span class=\"structural\">, </span>ligatures<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"intellij\nintellij-idea\nintellij-idea-plugin\nintellij-platform\nintellij-plugin\nintellij-plugins\njetbrains-plugin\"><span class=\"structural\">[</span>intellij<span class=\"structural\">, </span>intellij-idea<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>"] }, \n",
|
|
"{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["true","false","true","true","false","true","false","false","true","false","false","true","false","false","false","false","false","false","false","true"] }, \n",
|
|
"], id: 67108888, rootId: 67108888, totalRows: 24 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108888) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_13() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_13\");\n",
|
|
" resize_iframe_out_13(elem);\n",
|
|
" setInterval(resize_iframe_out_13, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_13(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",
|
|
" white-space: nowrap;\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_67108889\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-platform-plugin-template</td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108889\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"nrow\":24,\"ncol\":4,\"is_formatted\":false},\"kotlin_dataframe\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"],\"isIntellij\":false},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"],\"isIntellij\":true},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"],\"isIntellij\":true},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"],\"isIntellij\":false},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"],\"isIntellij\":true},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"],\"isIntellij\":true},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"],\"isIntellij\":false},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"],\"isIntellij\":false},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"],\"isIntellij\":true}]}"
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 10
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Grouping And Aggregating"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"A `DataFrame` can be grouped by column keys, meaning its rows are split into groups based on the values in the key columns.\n",
|
|
"The `.groupBy { }` operation selects columns and groups the `DataFrame` by their values, using them as grouping keys.\n",
|
|
"\n",
|
|
"The result is a `GroupBy` — a `DataFrame`-like structure that associates each key with the corresponding subset of the original `DataFrame`.\n",
|
|
"\n",
|
|
"Group `dfWithIsIntellij` by \"isIntellij\":"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.745848Z",
|
|
"start_time": "2025-12-09T10:20:30.657771Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"val groupedByIsIntellij = dfWithIsIntellij.groupBy { isIntellij }\n",
|
|
"groupedByIsIntellij"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_14()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_14\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108890"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">GroupBy</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["true","false"] }, \n",
|
|
"{ name: "<span title=\"group: DataFrame<*>\">group</span>", children: [], rightAlign: false, values: [{ frameId: 67108891, value: "<b>DataFrame 7 x 4</b>" },{ frameId: 67108892, value: "<b>DataFrame 17 x 4</b>" }] }, \n",
|
|
"], id: 67108890, rootId: 67108890, totalRows: 2 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["ideavim","intellij-community","intellij-scala","intellij-plugins","idea-gitignore"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1066</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1737</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1181</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: List<String>\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"ideavim\nintellij\nintellij-platform\njb-official\nkotlin\nvim\nvim-emulator\"><span class=\"structural\">[</span>ideavim<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>intellij-pl<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"code-editor\nide\nintellij\nintellij-community\nintellij-platform\"><span class=\"structural\">[</span>code-editor<span class=\"structural\">, </span>ide<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"intellij-idea\nintellij-plugin\nscala\"><span class=\"structural\">[</span>intellij-idea<span class=\"structural\">, </span>intellij-plugin<span class=\"structural\">, </span>scala<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"gitignore\nignore-files\nintellij\nintellij-plugin\njava\"><span class=\"structural\">[</span>gitignore<span class=\"structural\">, </span>ignore-files<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>"] }, \n",
|
|
"{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["true","true","true","true","true"] }, \n",
|
|
"], id: 67108891, rootId: 67108890, totalRows: 7 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["MPS","kotlin","Exposed","kotlin-web-site","swot"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1241</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1074</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1072</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: List<String>\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"domain-specific-language\ndsl\"><span class=\"structural\">[</span>domain-specific-language<span class=\"structural\">, </span>dsl<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"compiler\ngradle-plugin\nintellij-plugin\nkotlin\nkotlin-library\nmaven-plugin\nprogramming-language\"><span class=\"structural\">[</span>compiler<span class=\"structural\">, </span>gradle-plugin<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dao\nkotlin\norm\nsql\"><span class=\"structural\">[</span>dao<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>orm<span class=\"structural\">, </span>sql<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"kotlin\"><span class=\"structural\">[</span>kotlin<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>"] }, \n",
|
|
"{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["false","false","false","false","false"] }, \n",
|
|
"], id: 67108892, rootId: 67108890, totalRows: 17 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108890) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_14() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_14\");\n",
|
|
" resize_iframe_out_14(elem);\n",
|
|
" setInterval(resize_iframe_out_14, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_14(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",
|
|
" white-space: nowrap;\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_67108893\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">group</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\"><details><summary>DataFrame [7 x 4]</summary><table class=\"dataframe\" id=\"static_df_67108894\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr></tbody></table><p>... showing only top 5 of 7 rows</p></details></td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\"><details><summary>DataFrame [17 x 4]</summary><table class=\"dataframe\" id=\"static_df_67108895\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr></tbody></table><p>... showing only top 5 of 17 rows</p></details></td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108893\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"isIntellij\",\"group\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"FrameColumn\"}],\"nrow\":2,\"ncol\":2,\"is_formatted\":false},\"kotlin_dataframe\":[{\"isIntellij\":true,\"group\":{\"data\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"],\"isIntellij\":true},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"],\"isIntellij\":true},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"],\"isIntellij\":true},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"],\"isIntellij\":true},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"],\"isIntellij\":true}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"ncol\":4,\"nrow\":7}}},{\"isIntellij\":false,\"group\":{\"data\":[{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"],\"isIntellij\":false},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"],\"isIntellij\":false},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"],\"isIntellij\":false},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"],\"isIntellij\":false},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"skija\",\"starsCount\":2242,\"topics\":[\"2d\",\"graphics\",\"java\",\"skia\"],\"isIntellij\":false},{\"name\":\"projector-docker\",\"starsCount\":1853,\"topics\":[\"awt\",\"docker\",\"swing\"],\"isIntellij\":false},{\"name\":\"projector-server\",\"starsCount\":1025,\"topics\":[\"awt\",\"swing\"],\"isIntellij\":false},{\"name\":\"compose-jb\",\"starsCount\":6805,\"topics\":[\"android\",\"awt\",\"compose\",\"declarative-ui\",\"desktop\",\"gui\",\"javascript\",\"kotlin\",\"multiplatform\",\"reactive\",\"swing\",\"ui\"],\"isIntellij\":false}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"ncol\":4,\"nrow\":17}}}]}"
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 11
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"A `GroupBy` can be aggregated — that is, you can compute one or several summary statistics for each group.\n",
|
|
"The result of the aggregation is a `DataFrame` containing the key columns along with new columns holding the computed statistics for a corresponding group.\n",
|
|
"\n",
|
|
"For example, `count()` computes size of a group:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.895238Z",
|
|
"start_time": "2025-12-09T10:20:30.861929Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "groupedByIsIntellij.count()",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_17()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_17\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108904"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">DataFrame: rowsCount = 2, columnsCount = 2</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["true","false"] }, \n",
|
|
"{ name: "<span title=\"count: Int\">count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">7</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">17</span></span>"] }, \n",
|
|
"], id: 67108904, rootId: 67108904, totalRows: 2 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108904) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_17() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_17\");\n",
|
|
" resize_iframe_out_17(elem);\n",
|
|
" setInterval(resize_iframe_out_17, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_17(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",
|
|
" white-space: nowrap;\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_67108905\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">count</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\">7</td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\">17</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108905\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"isIntellij\",\"count\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":2,\"ncol\":2,\"is_formatted\":false},\"kotlin_dataframe\":[{\"isIntellij\":true,\"count\":7},{\"isIntellij\":false,\"count\":17}]}"
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 12
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Compute several statistics with `.aggregate { }`, which provides a DSL for aggregating:"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:30.982831Z",
|
|
"start_time": "2025-12-09T10:20:30.913541Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"groupedByIsIntellij.aggregate {\n",
|
|
" // Compute sum and max of \"starsCount\" within each group into \"sumStars\" and \"maxStars\" columns\n",
|
|
" sumOf { starsCount } into \"sumStars\"\n",
|
|
" maxOf { starsCount } into \"maxStars\"\n",
|
|
"}"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_18()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_18\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108906"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">DataFrame: rowsCount = 2, columnsCount = 3</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["true","false"] }, \n",
|
|
"{ name: "<span title=\"sumStars: Int\">sumStars</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">25221</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">85392</span></span>"] }, \n",
|
|
"{ name: "<span title=\"maxStars: Int\">maxStars</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>"] }, \n",
|
|
"], id: 67108906, rootId: 67108906, totalRows: 2 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108906) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></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",
|
|
" white-space: nowrap;\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_67108907\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">sumStars</th><th class=\"bottomBorder\" style=\"text-align:left\">maxStars</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\">25221</td><td style=\"vertical-align:top\">12926</td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\">85392</td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108907\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"isIntellij\",\"sumStars\",\"maxStars\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":2,\"ncol\":3,\"is_formatted\":false},\"kotlin_dataframe\":[{\"isIntellij\":true,\"sumStars\":25221,\"maxStars\":12926},{\"isIntellij\":false,\"sumStars\":85392,\"maxStars\":39402}]}"
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 13
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Sorting Rows"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"`.sort {}`/`.sortByDesc` sorts rows by value in selected columns, returning a DataFrame.\n",
|
|
"\n",
|
|
"`take(n)` returns a new `DataFrame` with the first `n` rows.\n",
|
|
"\n",
|
|
"Combine them to get Top-10 repositories by number of stars:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:31.178843Z",
|
|
"start_time": "2025-12-09T10:20:31.141760Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"val dfTop10 = dfWithIsIntellij\n",
|
|
" // Sort by \"starsCount\" value descending\n",
|
|
" .sortByDesc { starsCount }\n",
|
|
" .take(10)\n",
|
|
"dfTop10"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe onload=\"o_resize_iframe_out_21()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_21\" frameBorder=\"0\" srcdoc=\" <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",
|
|
" white-space: nowrap;\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",
|
|
":root {\n",
|
|
" --scroll-bg: #f5f5f5;\n",
|
|
" --scroll-fg: #b3b3b3;\n",
|
|
"}\n",
|
|
":root[theme="dark"], :root [data-jp-theme-light="false"]{\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; /* Mostly for vertical scrollbars */\n",
|
|
" height: 10px; /* Mostly for horizontal scrollbars */\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",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <table class="dataframe" id="df_67108912"></table>\n",
|
|
"\n",
|
|
"<p class="dataframe_description">DataFrame: rowsCount = 10, columnsCount = 4</p>\n",
|
|
"\n",
|
|
" </body>\n",
|
|
" <script>\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 < 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 < df.cols.length; i++) {\n",
|
|
" if (df.cols[i].values.length > 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 < df.cols.length; i++) {\n",
|
|
" let col = df.cols[i]\n",
|
|
" if (col.parent === undefined && col.children.length > 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 < 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 < result.length; i++) {\n",
|
|
" let row = result[i]\n",
|
|
" for (let j = 0; j < row.length; j++) {\n",
|
|
" let cell = row[j]\n",
|
|
" if (j === 0)\n",
|
|
" cell.leftBd = false\n",
|
|
" if (j < 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 > 0) {\n",
|
|
" let j = 0\n",
|
|
" for (let i = 0; j < 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 < col.children.length; i++) {\n",
|
|
" let child = col.children[i]\n",
|
|
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
|
" let childRight = i === col.children.length - 1 && (col.children.length > 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 < 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 > 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("df_" + id)\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.getTableData = function (id) {\n",
|
|
" return this.getTableElement(id).df\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.createExpander = function (isExpanded) {\n",
|
|
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
|
" let svg = document.createElementNS(svgNs, "svg")\n",
|
|
" svg.classList.add("expanderSvg")\n",
|
|
" let path = document.createElementNS(svgNs, "path")\n",
|
|
" if (isExpanded) {\n",
|
|
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
|
" } else {\n",
|
|
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
|
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
|
" }\n",
|
|
" path.setAttribute("fill", "currentColor")\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 = ""\n",
|
|
"\n",
|
|
" let df = table.df\n",
|
|
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
|
"\n",
|
|
" // header\n",
|
|
" let header = document.createElement("thead")\n",
|
|
" table.appendChild(header)\n",
|
|
"\n",
|
|
" let renderData = this.computeRenderData(df)\n",
|
|
" for (let j = 0; j < renderData.length; j++) {\n",
|
|
" let rowData = renderData[j]\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" let isLastRow = j === renderData.length - 1\n",
|
|
" header.appendChild(tr);\n",
|
|
" for (let i = 0; i < rowData.length; i++) {\n",
|
|
" let cell = rowData[i]\n",
|
|
" let th = document.createElement("th");\n",
|
|
" th.setAttribute("colspan", 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("a")\n",
|
|
" link.className = "expander"\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 ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (isLastRow)\n",
|
|
" classes += " bottomBorder"\n",
|
|
" if (classes.length > 0)\n",
|
|
" th.setAttribute("class", classes)\n",
|
|
" tr.appendChild(th)\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" // body\n",
|
|
" let body = document.createElement("tbody")\n",
|
|
" table.appendChild(body)\n",
|
|
"\n",
|
|
" let columns = renderData.pop()\n",
|
|
" for (let row = 0; row < df.nrow; row++) {\n",
|
|
" let tr = document.createElement("tr");\n",
|
|
" body.appendChild(tr)\n",
|
|
" for (let i = 0; i < columns.length; i++) {\n",
|
|
" let cell = columns[i]\n",
|
|
" let td = document.createElement("td");\n",
|
|
" let colId = cell.id\n",
|
|
" let col = df.cols[colId]\n",
|
|
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
|
" if (col.rightAlign)\n",
|
|
" classes += " rightAlign"\n",
|
|
" if (classes.length > 0)\n",
|
|
" td.setAttribute("class", 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("a")\n",
|
|
" link.className = "expander"\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("p"))\n",
|
|
" const childTable = document.createElement("table")\n",
|
|
" childTable.className = "dataframe"\n",
|
|
" childTable.id = "df_" + 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("p")\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("style", 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 < 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("script");\n",
|
|
" script.text = node.innerHTML;\n",
|
|
"\n",
|
|
" let i = -1, attrs = node.attributes, attr;\n",
|
|
" while (++i < 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["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
|
" if (funQueue) {\n",
|
|
" funQueue.forEach(function (f) {\n",
|
|
" f();\n",
|
|
" });\n",
|
|
" funQueue = [];\n",
|
|
" }\n",
|
|
"})()\n",
|
|
"\n",
|
|
"/*<!--*/\n",
|
|
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["kotlin","intellij-community","kotlin-native","compose-jb","ideavim","JetBrainsMono","Exposed","ring-ui","kotlinconf-app","create-react-kotlin-app"] }, \n",
|
|
"{ name: "<span title=\"starsCount: Int\">starsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">39402</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">12926</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7101</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6805</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6120</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6059</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5688</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2836</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2628</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2424</span></span>"] }, \n",
|
|
"{ name: "<span title=\"topics: List<String>\">topics</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"compiler\ngradle-plugin\nintellij-plugin\nkotlin\nkotlin-library\nmaven-plugin\nprogramming-language\"><span class=\"structural\">[</span>compiler<span class=\"structural\">, </span>gradle-plugin<span class=\"structural\">, </span>intel<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"code-editor\nide\nintellij\nintellij-community\nintellij-platform\"><span class=\"structural\">[</span>code-editor<span class=\"structural\">, </span>ide<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">, </span>i<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"c\ncompiler\nkotlin\nllvm\nobjective-c\"><span class=\"structural\">[</span>c<span class=\"structural\">, </span>compiler<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>llvm<span class=\"structural\">, </span>objective-c<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"android\nawt\ncompose\ndeclarative-ui\ndesktop\ngui\njavascript\nkotlin\nmultiplatform\nreactive\nswing\nui\"><span class=\"structural\">[</span>android<span class=\"structural\">, </span>awt<span class=\"structural\">, </span>compose<span class=\"structural\">, </span>declara<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"ideavim\nintellij\nintellij-platform\njb-official\nkotlin\nvim\nvim-emulator\"><span class=\"structural\">[</span>ideavim<span class=\"structural\">, </span>intellij<span class=\"structural\">, </span>intellij-pl<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"coding-font\nfont\nligatures\nmonospaced-font\nprogramming-font\nprogramming-ligatures\"><span class=\"structural\">[</span>coding-font<span class=\"structural\">, </span>font<span class=\"structural\">, </span>ligatures<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dao\nkotlin\norm\nsql\"><span class=\"structural\">[</span>dao<span class=\"structural\">, </span>kotlin<span class=\"structural\">, </span>orm<span class=\"structural\">, </span>sql<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"components\njetbrains-ui\nreact\"><span class=\"structural\">[</span>components<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span>react<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"structural\">[</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"create-react-app\njetbrains-ui\nkotlin\nreact\nwebpack\"><span class=\"structural\">[</span>create-react-app<span class=\"structural\">, </span>jetbrains-ui<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>"] }, \n",
|
|
"{ name: "<span title=\"isIntellij: Boolean\">isIntellij</span>", children: [], rightAlign: false, values: ["false","true","false","false","true","false","false","false","false","false"] }, \n",
|
|
"], id: 67108912, rootId: 67108912, totalRows: 10 } ) });\n",
|
|
"/*-->*/\n",
|
|
"\n",
|
|
"call_DataFrame(function() { DataFrame.renderTable(67108912) });\n",
|
|
"\n",
|
|
"\n",
|
|
" </script>\n",
|
|
" </html>\"></iframe>\n",
|
|
" <script>\n",
|
|
" function o_resize_iframe_out_21() {\n",
|
|
" let elem = document.getElementById(\"iframe_out_21\");\n",
|
|
" resize_iframe_out_21(elem);\n",
|
|
" setInterval(resize_iframe_out_21, 5000, elem);\n",
|
|
" }\n",
|
|
" function resize_iframe_out_21(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",
|
|
" white-space: nowrap;\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_67108913\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">compose-jb</td><td style=\"vertical-align:top\">6805</td><td style=\"vertical-align:top\">[android, awt, compose, declarative-u<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr></tbody></table>\n",
|
|
" </body>\n",
|
|
" <script>\n",
|
|
" document.getElementById(\"static_df_67108913\").style.display = \"none\";\n",
|
|
" </script>\n",
|
|
" </html>"
|
|
],
|
|
"application/kotlindataframe+json": "{\"$version\":\"2.2.0\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"nrow\":10,\"ncol\":4,\"is_formatted\":false},\"kotlin_dataframe\":[{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"compose-jb\",\"starsCount\":6805,\"topics\":[\"android\",\"awt\",\"compose\",\"declarative-ui\",\"desktop\",\"gui\",\"javascript\",\"kotlin\",\"multiplatform\",\"reactive\",\"swing\",\"ui\"],\"isIntellij\":false},{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false}]}"
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 14
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Plotting With Kandy"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Kandy is a Kotlin plotting library designed to bring Kotlin DataFrame features into chart creation, providing a convenient and typesafe way to build data visualizations.\n",
|
|
"\n",
|
|
"Kandy can be loaded into notebook using `%use kandy`:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:31.598882Z",
|
|
"start_time": "2025-12-09T10:20:31.229127Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "%use kandy",
|
|
"outputs": [],
|
|
"execution_count": 15
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "Build a simple bar chart with the `.plot { }` extension for DataFrame, that allows to use extension properties inside Kandy plotting DSL (a plot will be rendered as output after cell execution):"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:31.905768Z",
|
|
"start_time": "2025-12-09T10:20:31.643746Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"dfTop10.plot {\n",
|
|
" bars {\n",
|
|
" x(name)\n",
|
|
" y(starsCount)\n",
|
|
" }\n",
|
|
"\n",
|
|
" layout.title = \"Top 10 JetBrains repositories by stars count\"\n",
|
|
"}"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
" <iframe src='about:blank' style='border:none !important;' width='600' height='400' srcdoc=\"<html lang="en">\n",
|
|
" <head>\n",
|
|
" <meta charset="UTF-8">\n",
|
|
" <style> html, body { margin: 0; padding: 0; overflow: hidden; } </style>\n",
|
|
" <script type="text/javascript" data-lets-plot-script="library" src="https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.5.1/js-package/distr/lets-plot.min.js"></script>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <div id="q4mnJ5"></div>\n",
|
|
" <script type="text/javascript" data-lets-plot-script="plot">\n",
|
|
" \n",
|
|
" (function() {\n",
|
|
" // ----------\n",
|
|
" \n",
|
|
" const forceImmediateRender = false;\n",
|
|
" const responsive = false;\n",
|
|
" \n",
|
|
" let sizing = {\n",
|
|
" width_mode: "FIXED",\n",
|
|
" height_mode: "FIXED",\n",
|
|
" width: 600.0, \n",
|
|
" height: 400.0 \n",
|
|
" };\n",
|
|
" \n",
|
|
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
|
|
" if (preferredWidth !== undefined) {\n",
|
|
" sizing = {\n",
|
|
" width_mode: 'FIXED',\n",
|
|
" height_mode: 'SCALED',\n",
|
|
" width: parseFloat(preferredWidth)\n",
|
|
" };\n",
|
|
" }\n",
|
|
" \n",
|
|
" const containerDiv = document.getElementById("q4mnJ5");\n",
|
|
" let fig = null;\n",
|
|
" \n",
|
|
" function renderPlot() {\n",
|
|
" if (fig === null) {\n",
|
|
" const plotSpec = {\n",
|
|
""ggtitle":{\n",
|
|
""text":"Top 10 JetBrains repositories by stars count"\n",
|
|
"},\n",
|
|
""mapping":{\n",
|
|
"},\n",
|
|
""data":{\n",
|
|
""starsCount":[39402.0,12926.0,7101.0,6805.0,6120.0,6059.0,5688.0,2836.0,2628.0,2424.0],\n",
|
|
""name":["kotlin","intellij-community","kotlin-native","compose-jb","ideavim","JetBrainsMono","Exposed","ring-ui","kotlinconf-app","create-react-kotlin-app"]\n",
|
|
"},\n",
|
|
""kind":"plot",\n",
|
|
""scales":[{\n",
|
|
""aesthetic":"x",\n",
|
|
""discrete":true\n",
|
|
"},{\n",
|
|
""aesthetic":"y",\n",
|
|
""limits":[null,null]\n",
|
|
"}],\n",
|
|
""layers":[{\n",
|
|
""mapping":{\n",
|
|
""x":"name",\n",
|
|
""y":"starsCount"\n",
|
|
"},\n",
|
|
""stat":"identity",\n",
|
|
""sampling":"none",\n",
|
|
""inherit_aes":false,\n",
|
|
""position":"dodge",\n",
|
|
""geom":"bar",\n",
|
|
""data":{\n",
|
|
"}\n",
|
|
"}],\n",
|
|
""data_meta":{\n",
|
|
""series_annotations":[{\n",
|
|
""type":"str",\n",
|
|
""column":"name"\n",
|
|
"},{\n",
|
|
""type":"int",\n",
|
|
""column":"starsCount"\n",
|
|
"}]\n",
|
|
"},\n",
|
|
""spec_id":"2"\n",
|
|
"};\n",
|
|
" fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing);\n",
|
|
" } else {\n",
|
|
" fig.updateView({});\n",
|
|
" }\n",
|
|
" }\n",
|
|
" \n",
|
|
" const renderImmediately = \n",
|
|
" forceImmediateRender || (\n",
|
|
" sizing.width_mode === 'FIXED' && \n",
|
|
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
|
|
" );\n",
|
|
" \n",
|
|
" if (renderImmediately) {\n",
|
|
" renderPlot();\n",
|
|
" }\n",
|
|
" \n",
|
|
" if (!renderImmediately || responsive) {\n",
|
|
" // Set up observer for initial sizing or continuous monitoring\n",
|
|
" var observer = new ResizeObserver(function(entries) {\n",
|
|
" for (let entry of entries) {\n",
|
|
" if (entry.contentBoxSize && \n",
|
|
" entry.contentBoxSize[0].inlineSize > 0) {\n",
|
|
" if (!responsive && observer) {\n",
|
|
" observer.disconnect();\n",
|
|
" observer = null;\n",
|
|
" }\n",
|
|
" renderPlot();\n",
|
|
" if (!responsive) {\n",
|
|
" break;\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
" });\n",
|
|
" \n",
|
|
" observer.observe(containerDiv);\n",
|
|
" }\n",
|
|
" \n",
|
|
" // ----------\n",
|
|
" })();\n",
|
|
" \n",
|
|
" </script>\n",
|
|
" </body>\n",
|
|
"</html>\"></iframe> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=0ed20205-5b5c-4988-8a8d-e592061aec25 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
|
|
" <style type=\"text/css\">\n",
|
|
" .plt-container {\n",
|
|
" font-family: sans-serif;\n",
|
|
" user-select: none;\n",
|
|
" -webkit-user-select: none;\n",
|
|
" -moz-user-select: none;\n",
|
|
" -ms-user-select: none;\n",
|
|
"}\n",
|
|
"text {\n",
|
|
" text-rendering: optimizeLegibility;\n",
|
|
"}\n",
|
|
"#pjIigP1 .plot-title {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 16.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .plot-subtitle {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 15.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .plot-caption {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .hyperlink-element {\n",
|
|
"fill: #118ed8;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;\n",
|
|
"}\n",
|
|
"#pjIigP1 .legend-title {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 15.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .legend-item {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .axis-title-x {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 15.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .axis-text-x {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#d6NyezU .axis-tooltip-text-x {\n",
|
|
"fill: #ffffff;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .axis-title-y {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 15.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .axis-text-y {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#d6NyezU .axis-tooltip-text-y {\n",
|
|
"fill: #ffffff;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .facet-strip-text-x {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#pjIigP1 .facet-strip-text-y {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#d6NyezU .tooltip-text {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: normal;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#d6NyezU .tooltip-title {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: bold;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"#d6NyezU .tooltip-label {\n",
|
|
"fill: #474747;\n",
|
|
"font-weight: bold;\n",
|
|
" font-style: normal;font-family: sans-serif;\n",
|
|
"font-size: 13.0px;\n",
|
|
"\n",
|
|
"}\n",
|
|
"\n",
|
|
" </style>\n",
|
|
" <g id=\"pjIigP1\">\n",
|
|
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 0.0 L0.0 400.0 L600.0 400.0 L600.0 0.0 Z\">\n",
|
|
" </path>\n",
|
|
" <g transform=\"translate(21.0 22.0 ) \">\n",
|
|
" <g>\n",
|
|
" <g transform=\"translate(46.97651758668602 0.0 ) \">\n",
|
|
" <g>\n",
|
|
" <line x1=\"33.19565665715089\" y1=\"0.0\" x2=\"33.19565665715089\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"84.26589766815226\" y1=\"0.0\" x2=\"84.26589766815226\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"135.33613867915363\" y1=\"0.0\" x2=\"135.33613867915363\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"186.40637969015498\" y1=\"0.0\" x2=\"186.40637969015498\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"237.47662070115635\" y1=\"0.0\" x2=\"237.47662070115635\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"288.5468617121577\" y1=\"0.0\" x2=\"288.5468617121577\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"339.61710272315906\" y1=\"0.0\" x2=\"339.61710272315906\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"390.68734373416044\" y1=\"0.0\" x2=\"390.68734373416044\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"441.7575847451618\" y1=\"0.0\" x2=\"441.7575847451618\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"492.8278257561632\" y1=\"0.0\" x2=\"492.8278257561632\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(46.97651758668602 0.0 ) \">\n",
|
|
" <g>\n",
|
|
" <line x1=\"0.0\" y1=\"258.13961002434917\" x2=\"526.023482413314\" y2=\"258.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"0.0\" y1=\"195.74499867410367\" x2=\"526.023482413314\" y2=\"195.74499867410367\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"0.0\" y1=\"133.35038732385817\" x2=\"526.023482413314\" y2=\"133.35038732385817\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"0.0\" y1=\"70.95577597361267\" x2=\"526.023482413314\" y2=\"70.95577597361267\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" <line x1=\"0.0\" y1=\"8.561164623367176\" x2=\"526.023482413314\" y2=\"8.561164623367176\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
|
|
" </line>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g clip-path=\"url(#c34u7Bv)\" clip-bounds-jfx=\"[rect (46.97651758668602, 0.0), (526.023482413314, 258.13961002434917)]\">\n",
|
|
" <g transform=\"translate(46.97651758668602 0.0 ) \">\n",
|
|
" <g>\n",
|
|
" <g>\n",
|
|
" <rect x=\"469.8462173012126\" y=\"243.01515623304965\" height=\"15.124453791299516\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"418.7759762902112\" y=\"241.74230616150464\" height=\"16.397303862844524\" width=\"45.96321690990118\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"367.7057352792098\" y=\"240.44449824541954\" height=\"17.69511177892963\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"316.63549426820845\" y=\"222.64955508832952\" height=\"35.49005493601965\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"265.56525325720713\" y=\"220.33471500723542\" height=\"37.80489501711375\" width=\"45.96321690990118\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"214.49501224620573\" y=\"219.95410787799892\" height=\"38.185502146350245\" width=\"45.96321690990126\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"163.42477123520436\" y=\"215.6800770005071\" height=\"42.459533023842056\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"112.354530224203\" y=\"213.83319650453984\" height=\"44.306413519809325\" width=\"45.96321690990125\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"61.284289213201646\" y=\"177.48833539302183\" height=\"80.65127463132734\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" <rect x=\"10.214048202200278\" y=\"12.292362382111861\" height=\"245.8472476422373\" width=\"45.963216909901234\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
|
|
" </rect>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"c34u7Bv\">\n",
|
|
" <rect x=\"46.97651758668602\" y=\"0.0\" width=\"526.023482413314\" height=\"258.13961002434917\">\n",
|
|
" </rect>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
" </g>\n",
|
|
" <g>\n",
|
|
" <g transform=\"translate(46.97651758668602 258.13961002434917 ) \">\n",
|
|
" <g transform=\"translate(33.19565665715089 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>kotlin</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(84.26589766815226 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>intellij-community</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(135.33613867915363 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>kotlin-native</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(186.40637969015498 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>compose-jb</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(237.47662070115635 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>ideavim</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(288.5468617121577 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>JetBrainsMono</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(339.61710272315906 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>Exposed</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(390.68734373416044 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>ring-ui</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(441.7575847451618 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>kotlinconf-app</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(492.8278257561632 0.0 ) \">\n",
|
|
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
|
|
" </line>\n",
|
|
" <g transform=\"translate(0.0 6.0 ) rotate(-30.0 ) \">\n",
|
|
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\" y=\"0.0\">\n",
|
|
" <tspan>create-react-kotlin-app</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <line x1=\"0.0\" y1=\"0.0\" x2=\"526.023482413314\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
|
|
" </line>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(46.97651758668602 0.0 ) \">\n",
|
|
" <g transform=\"translate(0.0 258.13961002434917 ) \">\n",
|
|
" <g transform=\"translate(-2.0 0.0 ) \">\n",
|
|
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n",
|
|
" <tspan>0</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(0.0 195.74499867410367 ) \">\n",
|
|
" <g transform=\"translate(-2.0 0.0 ) \">\n",
|
|
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n",
|
|
" <tspan>10,000</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(0.0 133.35038732385817 ) \">\n",
|
|
" <g transform=\"translate(-2.0 0.0 ) \">\n",
|
|
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n",
|
|
" <tspan>20,000</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(0.0 70.95577597361267 ) \">\n",
|
|
" <g transform=\"translate(-2.0 0.0 ) \">\n",
|
|
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n",
|
|
" <tspan>30,000</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(0.0 8.561164623367176 ) \">\n",
|
|
" <g transform=\"translate(-2.0 0.0 ) \">\n",
|
|
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n",
|
|
" <tspan>40,000</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(67.97651758668601 15.8 ) \">\n",
|
|
" <text class=\"plot-title\" y=\"0.0\">\n",
|
|
" <tspan>Top 10 JetBrains repositories by stars count</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(15.0 151.06980501217458 ) rotate(-90.0 ) \">\n",
|
|
" <text class=\"axis-title-y\" y=\"0.0\" text-anchor=\"middle\">\n",
|
|
" <tspan>starsCount</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" <g transform=\"translate(330.988258793343 394.0 ) \">\n",
|
|
" <text class=\"axis-title-x\" y=\"0.0\" text-anchor=\"middle\">\n",
|
|
" <tspan>name</tspan>\n",
|
|
" </text>\n",
|
|
" </g>\n",
|
|
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 0.0 L0.0 400.0 L600.0 400.0 L600.0 0.0 Z\" pointer-events=\"none\">\n",
|
|
" </path>\n",
|
|
" </g>\n",
|
|
" <g id=\"d6NyezU\">\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" <script>document.getElementById(\"0ed20205-5b5c-4988-8a8d-e592061aec25\").style.display = \"none\";</script>"
|
|
],
|
|
"application/plot+json": {
|
|
"output_type": "lets_plot_spec",
|
|
"output": {
|
|
"ggtitle": {
|
|
"text": "Top 10 JetBrains repositories by stars count"
|
|
},
|
|
"mapping": {},
|
|
"data": {
|
|
"starsCount": [
|
|
39402.0,
|
|
12926.0,
|
|
7101.0,
|
|
6805.0,
|
|
6120.0,
|
|
6059.0,
|
|
5688.0,
|
|
2836.0,
|
|
2628.0,
|
|
2424.0
|
|
],
|
|
"name": [
|
|
"kotlin",
|
|
"intellij-community",
|
|
"kotlin-native",
|
|
"compose-jb",
|
|
"ideavim",
|
|
"JetBrainsMono",
|
|
"Exposed",
|
|
"ring-ui",
|
|
"kotlinconf-app",
|
|
"create-react-kotlin-app"
|
|
]
|
|
},
|
|
"kind": "plot",
|
|
"scales": [
|
|
{
|
|
"aesthetic": "x",
|
|
"discrete": true
|
|
},
|
|
{
|
|
"aesthetic": "y",
|
|
"limits": [
|
|
null,
|
|
null
|
|
]
|
|
}
|
|
],
|
|
"layers": [
|
|
{
|
|
"mapping": {
|
|
"x": "name",
|
|
"y": "starsCount"
|
|
},
|
|
"stat": "identity",
|
|
"sampling": "none",
|
|
"inherit_aes": false,
|
|
"position": "dodge",
|
|
"geom": "bar"
|
|
}
|
|
],
|
|
"data_meta": {
|
|
"series_annotations": [
|
|
{
|
|
"type": "str",
|
|
"column": "name"
|
|
},
|
|
{
|
|
"type": "int",
|
|
"column": "starsCount"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"apply_color_scheme": true,
|
|
"swing_enabled": true
|
|
}
|
|
},
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 16
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "## Write DataFrame"
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"`DataFrame` supports writing to (almost) all formats that it is capable of reading.\n",
|
|
"\n",
|
|
"Write to Excel:"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-12-09T10:20:32.590688Z",
|
|
"start_time": "2025-12-09T10:20:31.917440Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": "dfWithIsIntellij.writeExcel(\"jb_repos.xlsx\")",
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2025-12-09T10:20:31.971974Z Execution of code 'dfWithIsIntellij.wri...' ERROR Log4j API could not find a logging provider.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 17
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Kotlin",
|
|
"language": "kotlin",
|
|
"name": "kotlin"
|
|
},
|
|
"language_info": {
|
|
"name": "kotlin",
|
|
"version": "1.9.23",
|
|
"mimetype": "text/x-kotlin",
|
|
"file_extension": ".kt",
|
|
"pygments_lexer": "kotlin",
|
|
"codemirror_mode": "text/x-kotlin",
|
|
"nbconvert_exporter": ""
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|