// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. require(["jquery", "bootstrap", "moment", "jhapi", "utils"], function ($, bs, moment, JHAPI, utils) { "use strict"; var base_url = window.jhdata.base_url; var prefix = window.jhdata.prefix; var api = new JHAPI(base_url); var get_row = function (element) { while (!element.hasClass("user-row")) { element = element.parent(); } return element; }; $(".time-col").map(function (i, el) { // convert ISO datestamps to nice momentjs ones el = $(el); el.text(moment(new Date(el.text())).fromNow()); }); $(".stop-server").click(function () { var el = $(this); var row = get_row(el); var user = row.data('user'); el.text("stopping..."); api.stop_server(user, { success: function () { window.location.reload(); } }); }); $(".access-server").click(function () { var el = $(this); var row = get_row(el); var user = row.data('user'); var w = window.open(); api.admin_access(user, { async: false, success: function () { w.location = utils.url_path_join(prefix, 'user', user); }, error: function (xhr, err) { w.close(); console.error("Failed to gain access to server", err); } }); }); $(".start-server").click(function () { var el = $(this); var row = get_row(el); var user = row.data('user'); el.text("starting..."); api.start_server(user, { success: function () { window.location.reload(); } }); }); $(".edit-user").click(function () { var el = $(this); var row = get_row(el); var user = row.data('user'); var admin = row.data('admin'); var dialog = $("#edit-user-dialog"); dialog.data('user', user); dialog.find(".username-input").val(user); dialog.find(".admin-checkbox").attr("checked", admin==='True'); dialog.modal(); }); $("#edit-user-dialog").find(".save-button").click(function () { var dialog = $("#edit-user-dialog"); var user = dialog.data('user'); var name = dialog.find(".username-input").val(); var admin = dialog.find(".admin-checkbox").prop("checked"); api.edit_user(user, { admin: admin, name: name }, { success: function () { window.location.reload(); } }); }); $(".delete-user").click(function () { var el = $(this); var row = get_row(el); var user = row.data('user'); var dialog = $("#delete-user-dialog"); dialog.find(".delete-username").text(user); dialog.modal(); }); $("#delete-user-dialog").find(".delete-button").click(function () { var dialog = $("#delete-user-dialog"); var username = dialog.find(".delete-username").text(); console.log("deleting", username); api.delete_user(username, { success: function () { window.location.reload(); } }); }); $("#add-user").click(function () { var dialog = $("#add-user-dialog"); dialog.find(".username-input").val(''); dialog.find(".admin-checkbox").prop("checked", false); dialog.modal(); }); $("#add-user-dialog").find(".save-button").click(function () { var dialog = $("#add-user-dialog"); var username = dialog.find(".username-input").val(); var admin = dialog.find(".admin-checkbox").prop("checked"); api.add_user(username, {admin: admin}, { success: function () { window.location.reload(); } }); }); });