Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
recursive-include example *
recursive-include pynetworktables2js/js *
recursive-include pynetworktables2js/js *
recursive-include pynetworktables2js/css *
30 changes: 30 additions & 0 deletions example/www/tableviewer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/networktables/css/tableviewer.css"/>
</head>
<body>

<div id="tableviewer"></div>

<!-- This starts the NetworkTables websocket, it can be accessed from multiple
pages simultaneously -->
<script src="/networktables/networktables.js"></script>

<!-- Obviously, you will want to copy this file locally in a real
dashboard, as the Driver Station won't have internet access -->
<script src="https://code.jquery.com/jquery-2.2.2.min.js"></script>

<script src="/networktables/tableviewer.js"></script>


<script type="text/javascript">
"use strict";

var $tableviewer = $('#tableviewer').tableviewer();

</script>

</body>
</html>
109 changes: 109 additions & 0 deletions pynetworktables2js/css/tableviewer.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@

.tableviewer ul, .tableviewer li {
list-style: none;
}

.tableviewer ul {
padding-left: 0;
}

.tableviewer li.boolean, .tableviewer li.number, .tableviewer li.string {
padding-left: 25px;
}

.tableviewer li.table, .tableviewer li.array {
padding-left: 19px;
}

.tableviewer > ul {
padding-left: 0;
}

.tableviewer button.expanded, .tableviewer button.collapsed {
background: none;
border: none;
outline: none;
}

.tableviewer button.expanded::before {
content: "▼";
}

.tableviewer button.collapsed::before {
content: "▶";
}

.tableviewer button.collapsed + ul, .tableviewer button.collapsed + span + ul {
display: none;
}


.tableviewer .key::after {
content: ":";
display: inline-block;
padding: 0 10px;
}

.tableviewer span.type {
text-transform: capitalize;
color: #aaa;
font-size: x-small;
margin-left: 13px;
display: inline-block;
bottom: 2px;
position: relative;
}

.tableviewer .number span.type {
margin-left: 0;
}


.tableviewer input[type=number] {
position: relative;
border: none;
outline: none;
padding-left: 10px;
width: 100%;
text-overflow: ellipsis;
}

.tableviewer li.string, .tableviewer li.number {
display: flex;
flex-wrap: nowrap;
align-items: center;
}

.tableviewer li.string .key, .tableviewer li.number .key {
display: flex;
}

.tableviewer input[type="number"]::-webkit-outer-spin-button,
.tableviewer input[type="number"]::-webkit-inner-spin-button {
position: absolute;
left: -5px;
}


.tableviewer input[type=text] {
width: 100%;
border: none;
outline: none;
text-overflow: ellipsis;
margin: 0 3px;
}

.tableviewer .phantom-input {
position: absolute;
visibility: hidden;
-webkit-user-select: none;
}

.tableviewer input, .tableviewer .phantom-input {
font-family: "Times New Roman", Times, serif;
font-size: 12px;
}

.tableviewer .array ul .type {
display: none;
}
Loading