Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mlverse/pagedtablejs
JavaScript data table for Data Science
https://github.com/mlverse/pagedtablejs
data-science data-table data-visualization
Last synced: about 1 month ago
JSON representation
JavaScript data table for Data Science
- Host: GitHub
- URL: https://github.com/mlverse/pagedtablejs
- Owner: mlverse
- License: gpl-3.0
- Created: 2020-05-19T19:16:58.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-18T22:59:41.000Z (about 4 years ago)
- Last Synced: 2024-11-13T16:45:56.283Z (about 2 months ago)
- Topics: data-science, data-table, data-visualization
- Language: JavaScript
- Homepage: https://mlverse.github.io/pagedtablejs/
- Size: 587 KB
- Stars: 2
- Watchers: 4
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Getting Started
To use `pagedtable.js` include its source:
```html
```
Or install from NPM:
```bash
npm install pagedtablejs
```You can then easily create a table with the JSON from a URL:
```html
```
```html
/*display*/
[{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"},{"Sepal.Length":4.9,"Sepal.Width":3,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"},{"Sepal.Length":4.7,"Sepal.Width":3.2,"Petal.Length":1.3,"Petal.Width":0.2,"Species":"setosa"},{"Sepal.Length":4.6,"Sepal.Width":3.1,"Petal.Length":1.5,"Petal.Width":0.2,"Species":"setosa"},{"Sepal.Length":5,"Sepal.Width":3.6,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}]
```Or by embedding JSON directly into your HTML as follows:
```html
/*preview*/
[
{ "name": "Mazda RX4", "mpg": 21.0 },
{ "name": "Mazda RX4 Wag", "mpg": 21.0 },
{ "name": "Datsun 710", "mpg": 22.8 },
{ "name": "Hornet 4 Drive", "mpg": 21.4 },
{ "name": "Hornet Sportabout", "mpg": 18.7 }
]
```Notice that the data is specified row-wise, which is the default serialization for tables in JSON.
# Paging
Paging is automatically enabled as needed. If there is not enough space to render all rows or all columns, `pagedtable.js` will add paging for you.
```html
/*preview*/
[
{ "Column A": 1, "Column B": 1, "Column C": 1, "Column D": 1, "Column E": 1},
{ "Column A": 2, "Column B": 2, "Column C": 2, "Column D": 2, "Column E": 2},
{ "Column A": 3, "Column B": 3, "Column C": 3, "Column D": 3, "Column E": 3},
{ "Column A": 4, "Column B": 4, "Column C": 4, "Column D": 4, "Column E": 4},
{ "Column A": 5, "Column B": 5, "Column C": 5, "Column D": 5, "Column E": 5},
{ "Column A": 6, "Column B": 6, "Column C": 6, "Column D": 6, "Column E": 6}
]
```You can also customize the range of rows and columns to show by adding `options` in your data source:
```html
/*preview*/
{
"options": {
"rows": { "min": 2, "max": 4 },
"columns": { "min": 2, "max": 3 }
},
"data": [
{ "Column A": 1, "Column B": 1, "Column C": 1, "Column D": 1, "Column E": 1},
{ "Column A": 2, "Column B": 2, "Column C": 2, "Column D": 2, "Column E": 2},
{ "Column A": 3, "Column B": 3, "Column C": 3, "Column D": 3, "Column E": 3},
{ "Column A": 4, "Column B": 4, "Column C": 4, "Column D": 4, "Column E": 4},
{ "Column A": 5, "Column B": 5, "Column C": 5, "Column D": 5, "Column E": 5},
{ "Column A": 6, "Column B": 6, "Column C": 6, "Column D": 6, "Column E": 6}
]
}
```# Customizing
Appart from specifying the minimum rows and columns to display, you can also customize the columns with specific labels, alignment and type.
```html
/*preview*/
.pagedtable {
font-style: italic;
}
.pagedtable .even {
background-color: rgba(140, 200, 140, 0.1);
}
{
"columns": [
{ "name": "name", "label": "Automobile", "type": "character" },
{ "name": "mpg", "label": "MPG", "type": "numeric" }
],
"options": {
"columns": { "min": 1, "max": 20 },
"rows": { "min": 10, "max": 20 },
"shadowDOM": true
},
"data": [
{ "name": "Mazda RX4", "mpg": 21.0 },
{ "name": "Mazda RX4 Wag", "mpg": 21.0 },
{ "name": "Datsun 710", "mpg": 22.8 },
{ "name": "Hornet 4 Drive", "mpg": 21.4 },
{ "name": "Hornet Sportabout", "mpg": 18.7 }
]
}
```Notice that the previous example also makes use of `` to customize additional styles. Under the hood, a paged table makes use of the [Shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) to have consistent styling, to turn this off set `shadowDOM` to `false` in the options.
# HTML
Inline HTML can be rendered as needed. `pagedtable.js` will attempt to do some cleaning through [`DOMPurify`](https://github.com/cure53/DOMPurify), and will then render the html inside the table cell for you if it is valid HTML. By default the HTML will not be rendered, and needs to be enabled.
```html
/*preview*/
<div data-pagedtable>
<script data-pagedtable-source type="application/json">
{
"columns": [
{ "name": "name", "label": "Automobile", "type": "character" },
{ "name": "mpg", "label": "MPG", "type": "numeric" },
{ "name": "car_image", "label": "Picture", "type": "image", "html": true }
],
"data": [
{ "name": "Mazda RX4", "mpg": 21.0, "car_image": "<img src='https://upload.wikimedia.org/wikipedia/commons/5/5b/1974_Mazda_RX4_Coupe_%2824282369814%29.jpg' height=20/>"},
{ "name": "Mazda RX4 Wag", "mpg": 21.0, "car_image": "<img src='https://upload.wikimedia.org/wikipedia/commons/1/16/Mazda_RX4_Wagon_%281976%2C_127_PS%29.JPG' height=20/>"},
{ "name": "Datsun 710", "mpg": 22.8, "car_image": "<img src='https://upload.wikimedia.org/wikipedia/commons/9/95/Datsun_710_two-door_orange%2C_front_left.jpg' height=20/>"},
{ "name": "Hornet 4 Drive", "mpg": 21.4, "car_image": "<img src='https://upload.wikimedia.org/wikipedia/commons/4/46/1970_AMC_Hornet_SST_2-door_green_Kenosha-f.jpg' height=20/>"},
{ "name": "Hornet Sportabout", "mpg": 18.7, "car_image": "<img src='https://upload.wikimedia.org/wikipedia/commons/c/cc/1976_AMC_Hornet_Sportabout.jpg' height=20/>"}
]
}
</script>
</div>
```# Programmatic
You can also create a paged table programmatically by creating the `PagedTable` object on your:
```html
/*preview*/
<div id="pagedtable"></div>
<script type="application/javascript">
// create a data frame
var dataframe = []
for (var idx = 0; idx < 26; idx++) {
dataframe[idx] = { letter: String.fromCharCode('A'.charCodeAt(0) + idx), number: idx + 1 };
}// create a paged table
pagedtable.create(dataframe, "pagedtable");
</script>
```# Loading
You can make use of [D3.js](https://d3js.org/) and other libraries to load data into `pagedtable.js`; for instance, using D3s `csv()` function we can load data as follows:
```html
<div id="pagedtable-d3"></div>
<script type="application/javascript">
d3.csv("https://cdn.rawgit.com/vlandham/js_data/master/data/cities.csv").then(function(dataframe) {
(new PagedTable("pagedtable-d3", dataframe)).init();
});
</script>
```
```html
/*display*/
<div id="pagedtable-d3"></div>
```# Frameworks
You can also integrate `pagedetable.js` with frameworks like [Vue.js](http://vuejs.com/), [React](https://reactjs.org/), [Svelte](https://svelte.dev/) and many others. The next example shows how to make use of Vue.js, please make sure that you reference the framework docs to properly integrate and follow best practices.
```html
/*display*/
<iframe src="examples/vue.html" style="height: 460px;"></iframe>
```