diff --git a/templates/footer.html b/templates/footer.html index 124760db1749fc44de57facda2f91bced3a0056b..5481d5cb61ccaafeb9fde405eab12c1251e6d896 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,6 +1,6 @@ {%- import "macros/svgs.jinja" as svg -%} -{%- set jupyter_name = "Jupyter-JSC" -%} +{%- set jupyter_name = "Jupyter4NFDI" -%} {#- Get all systems configured for this hub, sort them by weight and assign status ids -#} diff --git a/templates/login.html b/templates/login.html index 9a3d7941ee35cb24a7af0cbbd903fd7d48f7c1ce..4d5c4c75dd93c613ba5e9cbaae4e8b9662266bde 100644 --- a/templates/login.html +++ b/templates/login.html @@ -57,28 +57,21 @@ <button type="button" data-bs-target="#login-carousel" data-bs-slide-to="3" aria-label="Slide 4"></button> </div> <div class="carousel-inner"> - {{ carousel_item("Jupyter", "https://jupyter.org", "Supercomputing in Your Browser", - "Jupyter-JSC is designed to provide the rich high performance computing (HPC) ecosystem - to the world's most popular software: web browsers. JupyterLab is a web-based interactive - development environment for Jupyter notebooks, code, and data. JupyterLab is flexible - to support a wide range of workflows in data science, scientific computing, and machine learning.", - "active") }} - {{ carousel_item("Jupyter Notebooks", "https://jupyter-notebook.readthedocs.io/en/stable/notebook.html", - "Share your Workflows", "Jupyter-JSC allows you to create and share documents that contain + "Share your Workflows", "Jupyter4NFDI allows you to create and share documents that contain live code, equations, visualizations and explanatory text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, machine learning and much more.") }} {{ carousel_item("JupyterLab", "https://jupyterlab.readthedocs.io", "Next-Generation Notebook Interface", - "Jupyter-JSC gives access to JupyterLab, a web-based interactive development environment for Jupyter + "Jupyter4NFDI gives access to JupyterLab, a web-based interactive development environment for Jupyter notebooks, code, and data. JupyterLab is flexible: configure and arrange the user interface to support a wide range of workflows in data science, scientific computing, and machine learning. JupyterLab is extensible and modular: write plugins that add new components and integrate with existing ones.") }} {{ carousel_item("JupyterHub", "https://jupyterhub.readthedocs.io", "Serving Jupyter Notebooks for Multiple - Users", "Jupyter-JSC is a JupyterHub to serve Jupyter notebooks for multiple users. It can be used in + Users", "Jupyter4NFDI is a JupyterHub to serve Jupyter notebooks for multiple users. It can be used in classes of students, a corporate data science group or scientific research group. It is a multi-user hub that spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server.") }} </div> diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000000000000000000000000000000000000..b47f63814380ed4fa2e7c0cf7453071c78834633 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,135 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta charset="utf-8"> + {% block meta -%} + {%- endblock -%} + + <title>{% block title %}Jupyter4NFDI{% endblock %}</title> + <meta http-equiv="X-UA-Compatible" content="chrome=1"> + <meta property="og:image" content='{{ static_url("images/mini_website.jpg", include_version=True) }}'> + <meta property="og:locale" content="en_US"> + <meta property="og:site_name" content="jupyter-jsc"> + <meta property="og:title" content="jupyter-jsc"> + <meta property="og:type" content="website"> + <meta property="og:url" content="https://{{hostname}}{{ base_url|default('', true) }}"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + {% block favicon -%} + <link rel="icon" href='{{static_url("images/favicon.svg", include_version=True)}}' type="jpg/png" /> + {%- endblock %} + + <link rel="stylesheet" href='{{static_url("components/bootstrap-5.0/dist/css/bootstrap.min.css")}}' type="text/css" /> + <link rel="stylesheet" href='{{static_url("components/font-awesome-4.7.0/css/font-awesome.min.css")}}' type="text/css" /> + <link rel="stylesheet" href='{{static_url("css/base.css")}}' type="text/css" /> + <link rel="stylesheet" href='{{static_url("css/header.css")}}' type="text/css" /> + <link rel="stylesheet" href='{{static_url("css/footer.css")}}' type="text/css" /> + <link rel="stylesheet" href='{{static_url("components/jquery-confirm/jquery-confirm.min.css")}}' /> + {% block stylesheet -%} + {%- endblock %} + + <script src='{{static_url("components/jquery/dist/jquery.min.js")}}' type="text/javascript" charset="utf-8"></script> + <script src='{{static_url("components/bootstrap-5.0/dist/js/bootstrap.bundle.min.js")}}' type="text/javascript" charset="utf-8"></script> + <script src='{{static_url("components/requirejs/require.js")}}' type="text/javascript" charset="utf-8"></script> + <script src='{{static_url("components/jquery/dist/jquery.min.js")}}'></script> + <script src='{{static_url("components/jquery-confirm/jquery-confirm.min.js")}}'></script> + {% block scripts -%} + {%- endblock %} + <script> + var evtSourcesGlobal = {}; + require.config({ + {%- if version_hash -%} + urlArgs: "v={{version_hash}}", + {%- endif -%} + baseUrl: '{{static_url("js", include_version=True)}}', + paths: { + components: '../components', + jquery: '../components/jquery/dist/jquery.min', + bootstrap: '../components/bootstrap-5.0/dist/js/bootstrap.min', + moment: "../components/moment/moment", + }, + shim: { + bootstrap: { + deps: ["jquery"], + exports: "bootstrap" + }, + } + }); + </script> + <script type="text/javascript"> + window.jhdata = { + base_url: "{{ base_url }}", + prefix: "{{prefix}}", + {%- if user %} + user: "{{user.json_escaped_name}}", + {%- endif -%} + {%- if user and user.active %} + user_active: true, + {%- else %} + user_active: false, + {%- endif -%} + {%- if admin_access %} + admin_access: true, + {%- else %} + admin_access: false, + {%- endif -%} + {%- if not no_spawner_check and user and user.spawner.options_form %} + options_form: true, + {%- else %} + options_form: false, + {%- endif %} + {%- if cancel_url %} + cancel_url: "{{ cancel_url }}", + {%- endif %} + xsrf_token: "{{ xsrf_token }}", + } + </script> +</head> + +<body> + <noscript> + <div id='noscript'> + JupyterHub requires JavaScript.<br> + Please enable it to proceed. + </div> + </noscript> + + <div class="d-flex flex-column h-100"> + {#- HEADER -#} + {% include "header.html" %} + + {#- MAIN #} + <main> + {% block main %} + {% endblock %} + </main> + + {#- FOOTER #} + {% include "footer.html" %} + </div> + + {#- SCRIPTS #} + <script src='{{static_url("js/logout.js", include_version=True) }}' type="text/javascript" charset="utf-8"></script> + <script type="text/javascript"> + // Enable tooltips everywhere + function enableTooltips() { + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { + return new bootstrap.Tooltip(tooltipTriggerEl); + }) + } + $( function() { enableTooltips() }); + </script> + {% block script -%} + {%- endblock %} + <script> + window.onbeforeunload = function() { + if (typeof evtSourcesGlobal !== 'undefined') { + for (const [key, value] of Object.entries(evtSourcesGlobal)) { + value.close(); + } + } + } + </script> +</body> +</html>