2021-04-16 04:04:18 +02:00
|
|
|
import $ from "jquery";
|
|
|
|
|
2021-04-20 03:52:02 +02:00
|
|
|
import render_admin_playground_list from "../templates/settings/admin_playground_list.hbs";
|
2021-04-16 04:04:18 +02:00
|
|
|
|
|
|
|
import * as ListWidget from "./list_widget";
|
|
|
|
import {page_params} from "./page_params";
|
|
|
|
import * as ui from "./ui";
|
|
|
|
|
|
|
|
const meta = {
|
|
|
|
loaded: false,
|
|
|
|
};
|
|
|
|
|
|
|
|
export function reset() {
|
|
|
|
meta.loaded = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function compare_by_index(a, b, i) {
|
|
|
|
if (a[i] > b[i]) {
|
|
|
|
return 1;
|
|
|
|
} else if (a[i] === b[i]) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
function sort_pygments_language(a, b) {
|
|
|
|
return compare_by_index(a, b, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
function sort_playground_name(a, b) {
|
|
|
|
return compare_by_index(a, b, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function maybe_disable_widgets() {
|
|
|
|
if (page_params.is_admin) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function populate_playgrounds(playgrounds_data) {
|
|
|
|
if (!meta.loaded) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const playgrounds_table = $("#admin_playgrounds_table").expectOne();
|
|
|
|
ListWidget.create(playgrounds_table, playgrounds_data, {
|
|
|
|
name: "playgrounds_list",
|
|
|
|
modifier(playground) {
|
|
|
|
return render_admin_playground_list({
|
|
|
|
playground: {
|
|
|
|
playground_name: playground.name,
|
|
|
|
pygments_language: playground.pygments_language,
|
|
|
|
url_prefix: playground.url_prefix,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
},
|
|
|
|
filter: {
|
|
|
|
element: playgrounds_table.closest(".settings-section").find(".search"),
|
|
|
|
predicate(item, value) {
|
|
|
|
return (
|
|
|
|
item.name.toLowerCase().includes(value) ||
|
|
|
|
item.pygments_language.toLowerCase().includes(value)
|
|
|
|
);
|
|
|
|
},
|
|
|
|
onupdate() {
|
|
|
|
ui.reset_scrollbar(playgrounds_table);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
parent_container: $("#playground-settings").expectOne(),
|
|
|
|
init_sort: [sort_pygments_language],
|
|
|
|
sort_fields: {
|
|
|
|
pygments_language: sort_pygments_language,
|
|
|
|
playground_name: sort_playground_name,
|
|
|
|
},
|
|
|
|
simplebar_container: $("#playground-settings .progressive-table-wrapper"),
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function set_up() {
|
|
|
|
build_page();
|
|
|
|
maybe_disable_widgets();
|
|
|
|
}
|
|
|
|
|
|
|
|
function build_page() {
|
|
|
|
meta.loaded = true;
|
|
|
|
populate_playgrounds(page_params.realm_playgrounds);
|
|
|
|
}
|