Skip to content

Commit b406f2f

Browse files
committed
implements table renderer
1 parent a3742b3 commit b406f2f

36 files changed

+3930
-225
lines changed

R/notebook.R

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ r$run(function() {
8686
type = "table",
8787
result = list(
8888
html = knitr::kable(table, format = "html"),
89-
markdown = paste0(knitr::kable(table, format = "markdown"), collapse = "\n")
89+
markdown = paste0(knitr::kable(table, format = "markdown"), collapse = "\n"),
90+
data = head(out$value, 1000)
9091
)
9192
)
9293
} else {

package-lock.json

Lines changed: 3738 additions & 171 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@
6666
"enableProposedApi": true,
6767
"main": "./dist/extension",
6868
"contributes": {
69+
"notebookOutputRenderer": [
70+
{
71+
"id": "r-notebook-table-renderer",
72+
"displayName": "Notebook Table Renderer",
73+
"entrypoint": "./dist/tableRenderer.js",
74+
"mimeTypes": [
75+
"ms-vscode.r-notebook/table"
76+
]
77+
}
78+
],
6979
"viewsContainers": {
7080
"activitybar": [
7181
{
@@ -617,12 +627,12 @@
617627
"category": "R",
618628
"command": "r.helpPanel.openForSelection"
619629
},
620-
{
621-
"title": "Restart Kernel",
622-
"command": "r.notebook.restartKernel",
623-
"icon": "$(refresh)",
630+
{
631+
"title": "Restart Kernel",
632+
"command": "r.notebook.restartKernel",
633+
"icon": "$(refresh)",
624634
"category": "R"
625-
}
635+
}
626636
],
627637
"keybindings": [
628638
{
@@ -1034,23 +1044,38 @@
10341044
"typescript": "^4.1.3",
10351045
"vscode-test": "^1.5.0",
10361046
"webpack": "^5.19.0",
1037-
"webpack-cli": "^4.4.0",
1047+
"webpack-cli": "^4.5.0",
10381048
"yamljs": "^0.3.0"
10391049
},
10401050
"dependencies": {
1051+
"@fortawesome/fontawesome-free": "^5.15.2",
1052+
"@types/datatables.net": "^1.10.19",
1053+
"@types/react": "^17.0.0",
1054+
"@types/react-dom": "^17.0.0",
1055+
"@types/vscode-notebook-renderer": "^1.48.0",
1056+
"@types/webpack-env": "^1.16.0",
10411057
"bootstrap": "^4.6.0",
10421058
"cheerio": "^1.0.0-rc.5",
1059+
"css-loader": "^5.0.2",
10431060
"datatables.net": "^1.10.23",
10441061
"datatables.net-bs4": "^1.10.23",
10451062
"datatables.net-fixedheader-jqui": "^3.1.7",
1063+
"file-loader": "^6.2.0",
10461064
"fotorama": "^4.6.4",
10471065
"fs-extra": "^9.1.0",
10481066
"highlight.js": "^10.5.0",
10491067
"jquery": "^3.5.1",
10501068
"jquery.json-viewer": "^1.4.0",
1069+
"mdbreact": "^5.0.1",
10511070
"popper.js": "^1.16.1",
1071+
"preact": "^10.5.12",
1072+
"react-bootstrap-table-next": "^4.0.3",
1073+
"react-dom": "^17.0.1",
10521074
"showdown": "^1.9.1",
1075+
"style-loader": "^2.0.0",
10531076
"tree-kill": "^1.2.2",
1077+
"url-loader": "^4.1.1",
1078+
"webpack-dev-server": "^3.11.2",
10541079
"winreg": "^1.2.4"
10551080
}
10561081
}

samples/test1.rmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ df = data.frame(a = c(1,2,3,4), b = c(10, 20, 13, 1))
88
library(ggplot2)
99
library(plotly)
1010
11-
11+
df
1212
```
1313
```{r}
1414
ggplot(df, aes(a, b)) + geom_point()
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import * as React from 'react';
2+
import { render } from 'react-dom';
3+
4+
import { MDBDataTable } from 'mdbreact';
5+
import '@fortawesome/fontawesome-free/css/all.min.css';
6+
import 'bootstrap-css-only/css/bootstrap.min.css';
7+
import 'mdbreact/dist/css/mdb.css';
8+
9+
const notebookApi = acquireNotebookRendererApi("r-notebook-table-renderer");
10+
11+
const DatatablePage = ({ data }) => {
12+
const columns = Object.keys(data[0]).map((k) => {
13+
return {
14+
label: k.charAt(0).toLocaleUpperCase() + k.slice(1),
15+
field: k,
16+
sort: 'asc'
17+
}
18+
})
19+
const datatable = {
20+
columns: columns,
21+
rows: data
22+
}
23+
return <MDBDataTable small hover entriesOptions={[10, 20, 25]} entries={10} data={datatable} autoWidth />;
24+
}
25+
26+
notebookApi.onDidCreateOutput((evt) => {
27+
const output = evt.output.data[evt.mimeType];
28+
render(
29+
<div style={{ padding: '5px', backgroundColor: "white" }}>
30+
<DatatablePage data={output}/>
31+
{/* <DataTable2 data={output} /> */}
32+
</div> as any, evt.element)
33+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const notebookApi = acquireNotebookRendererApi("r-notebook-table-renderer");
2+
3+
4+
notebookApi.onDidCreateOutput((evt) => {
5+
const output = evt.output.data[evt.mimeType];
6+
evt.element.innerHTML =
7+
});

src/client/tsconfig.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"extends": "../tsconfig.base.json",
3+
"compilerOptions": {
4+
"lib": [
5+
"ES2019",
6+
"DOM"
7+
],
8+
"jsx": "react",
9+
"types": ["vscode-notebook-renderer", "webpack-env"],
10+
"rootDir": ".",
11+
}
12+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)