mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import $ from "jquery";
 | 
						|
 | 
						|
import render_admin_playground_list from "../templates/settings/admin_playground_list.hbs";
 | 
						|
 | 
						|
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);
 | 
						|
}
 |