UNPKG

@maap-jupyterlab/dps-jupyter-extension

Version:

A JupyterLab extension for submitting and viewing jobs.

99 lines (98 loc) 3.54 kB
import { Notification } from "@jupyterlab/apputils"; import { getEnvironmentInfo } from "../api/maap_py"; import { DEFAULT_USERNAME, JUPYTER_EXT } from "../constants"; /** * Converts seconds to a human-readable string using this format: * HHh MMm SSs * * @param seconds - string */ export const secondsToReadableString = (seconds) => { let d = Number(seconds); let h = Math.floor(d / 3600); let m = Math.floor(d % 3600 / 60); let s = Math.floor(d % 3600 % 60); var str = h + 'h ' + m + 'm ' + s + 's '; return str; }; export const getProducts = (products) => { // if (products.length !> 0) { // return "" // } const urls = new Set(); products.forEach((product) => { product["urls"].forEach((url) => { urls.add(url); }); }); let urls_str = Array.from(urls).join('\r\n'); return urls_str; }; export var getUserInfo = function (callback) { window.parent._keycloak.loadUserInfo().success(function (profile) { callback(profile); }).error(function () { return "error"; }); }; export async function getUsernameToken(state, profileId, callback) { let uname = DEFAULT_USERNAME; let ticket = ''; let ade_server = ''; let response = getEnvironmentInfo(); response.then((data) => { console.log("ADE SERVER: ", data["ade_server"]); ade_server = data["ade_server"]; }).finally(() => { if ("https://" + ade_server === document.location.origin) { getUserInfo(function (profile) { if (profile['cas:username'] === undefined) { Notification.error("Get profile failed.", { autoClose: false }); } else { console.log("Getting username..."); uname = profile['cas:username']; ticket = profile['proxyGrantingTicket']; callback(uname, ticket); Notification.success("Got profile."); } }); } else { console.log("Getting username...1"); console.log(state); state.fetch(profileId).then((profile) => { let profileObj = JSON.parse(JSON.stringify(profile)); console.log(profileObj); Notification.success("Got profile."); uname = profileObj.preferred_username; ticket = profileObj.proxyGrantingTicket; callback(uname, ticket); }).catch((error) => { console.log("failed to get profile"); console.log(error); callback(uname, ticket); Notification.error("Get profile failed. ", { autoClose: false }); }); } }); } // Copies jupyter notebook command to user clipboard export async function copyNotebookCommand(text) { try { await navigator.clipboard.writeText(text).then(() => { Notification.success("Copied Jupyter Notebook python command to clipboard.", { autoClose: false }); }); } catch (error) { console.warn('Copy failed', error); } } export const openSubmitJobs = (jupyterApp, data) => { if (jupyterApp.commands.hasCommand(JUPYTER_EXT.SUBMIT_JOBS_OPEN_COMMAND)) { if (data == null) { jupyterApp.commands.execute(JUPYTER_EXT.SUBMIT_JOBS_OPEN_COMMAND, null); } else { jupyterApp.commands.execute(JUPYTER_EXT.SUBMIT_JOBS_OPEN_COMMAND, data); } } };