1
0
mirror of https://github.com/kalmarek/SmallHyperbolic synced 2024-07-27 13:05:31 +02:00

add a few bells and whistles

This commit is contained in:
Marek Kaluba 2022-02-06 01:57:18 +01:00
parent 13ea973ae4
commit 07a2744af4
No known key found for this signature in database
GPG Key ID: 8BF1A3855328FC15
3 changed files with 102 additions and 11 deletions

View File

@ -10,6 +10,15 @@ async function fetch_json(url) {
} }
} }
function filter_group_json(obj) {
for (let key of Object.keys(obj)) {
if (key.match(/utf8/) != null) {
delete obj[key];
}
}
return obj
}
function columnName(key) { function columnName(key) {
let words = key.split("_"); let words = key.split("_");
for (let i = 0; i < words.length; i++) { for (let i = 0; i < words.length; i++) {
@ -34,6 +43,7 @@ function fillRow(row, group_json) {
for (let key of Object.keys(group_json)) { for (let key of Object.keys(group_json)) {
let cell = row.insertCell(); let cell = row.insertCell();
let cell_content; let cell_content;
// swtich(key){
let value = group_json[key] let value = group_json[key]
if (key == "quotients" || key == "quotients_utf8") { if (key == "quotients" || key == "quotients_utf8") {
cell_content = JSON.stringify(value); cell_content = JSON.stringify(value);
@ -50,6 +60,9 @@ function fillRow(row, group_json) {
} }
function fillTableFromJson(table, json) { function fillTableFromJson(table, json) {
for (let i=0; i<json.length; i++) {
json[i] = filter_group_json(json[i]);
}
let keys = Object.keys(json[0]); let keys = Object.keys(json[0]);
for (let group of json) { for (let group of json) {
let row = table.insertRow(); let row = table.insertRow();
@ -58,23 +71,80 @@ function fillTableFromJson(table, json) {
generateTableHead(table, keys); generateTableHead(table, keys);
} }
// table.setData(groups_url); function rerender_with_katex(elt) {
let txt = elt.textContent;
if (txt != null && txt != "" && txt != "null") {
let txt = elt.textContent
.replace(/\*/g, "")
.replace(/-1/g, "{-1}")
.replace(/inf/g, "\\infty")
;
katex.render(txt, elt);
}
}
function rerender_columns_katex(table, columns = [
"name",
"generators",
"relations",
"witnesses non hyperbolictity",
"L2 quotients",
]) {
let header = table.rows[0];
let column_indices = [];
for (let col_idx = 0; col_idx < header.cells.length; col_idx++) {
let label = header.cells[col_idx].textContent;
let found = columns.indexOf(label);
if (found >= 0) {
column_indices.push(col_idx);
columns.splice(found, 1);
}
}
if (columns.length != 0) {
console.log("In Katexify: some columns were not found! " + columns);
}
for (let col_idx of column_indices) {
// we're skipping the header row
for (let row of table.rows) {
if ( row == header ) { continue; }
rerender_with_katex(row.cells[col_idx]);
}
}
return table
}
const filtersConfig = { const filtersConfig = {
base_path: 'tablefilter/', base_path: 'tablefilter/',
autofilter: { auto_filter: {
delay: 200 delay: 400
}, },
filters_row_index: 1, filters_row_index: 1,
highlight_keywords: true,
responsive: true,
state: true, state: true,
sticky_headers: true,
// popup_filters: true,
no_results_message: true,
alternate_rows: true, alternate_rows: true,
mark_active_columns: true,
rows_counter: true, rows_counter: true,
btn_reset: true, btn_reset: true,
status_bar: true, status_bar: true,
msg_filter: 'Filtering...' msg_filter: 'Filtering...',
extensions: [{
name: 'colsVisibility',
at_start: [2,4,5,6,7,15],
text: 'Hidden Columns: ',
enable_tick_all: true
}, {
name: 'sort'
}]
}; };
async function setup_table(data) { async function setup_table(data) {
fillTableFromJson(table, data); fillTableFromJson(table, data);
console.log("created table of length " + table.rows.length); console.log("created table of length " + table.rows.length);
@ -94,3 +164,8 @@ let filtered_table = fetch_json(groups_url)
.then(setup_filter) .then(setup_filter)
; ;
let button = document.getElementById("katexify");
button.addEventListener("click", ()=>{
rerender_columns_katex(table);
button.disabled = true;
});

View File

@ -7,14 +7,29 @@
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css"
integrity="sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ" crossorigin="anonymous">
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"
integrity="sha384-VQ8d8WVFw0yHhCk5E8I86oOhv48xLpnDZx5T9GogA/Y84DcCKWXDmSDfn13bzFZY"
crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js"
integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>
</head> </head>
<body> <body>
<h3> <div style="padding-left: 1%;">
Generalized Triangle Groups <h3>
</h3> Generalized Triangle Groups of <a href="https://arxiv.org/abs/2011.09276">2011.09276</a>
<table id='GeneralizedTriangleGroups' border=0 class="dataframe"> </h3>
</table> by Pierre-Emmanuel Caprace, Marston Conder, Marek Kaluba and Stefan Witzel.
<br>
<button type="button" id="katexify">Katexify!</button>
<table id='GeneralizedTriangleGroups' border=0 class="dataframe"></table>
</div>
</body> </body>
<script src="tablefilter/tablefilter.js"></script> <script src="tablefilter/tablefilter.js"></script>

File diff suppressed because one or more lines are too long