Merge pull request #972 from blink1073/add-lab-page
Add Lab Page
commit
d6b4ef071b
@ -0,0 +1,28 @@
|
||||
"""Tornado handlers for the tree view."""
|
||||
|
||||
# Copyright (c) Jupyter Development Team.
|
||||
# Distributed under the terms of the Modified BSD License.
|
||||
|
||||
from tornado import web
|
||||
from ..base.handlers import IPythonHandler
|
||||
|
||||
|
||||
class LabHandler(IPythonHandler):
|
||||
|
||||
"""Render the Jupyter Lab View."""
|
||||
|
||||
@web.authenticated
|
||||
def get(self):
|
||||
self.write(self.render_template('lab.html',
|
||||
page_title='Jupyter Lab',
|
||||
terminals_available=self.settings['terminals_available']))
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# URL to handler mappings
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
default_handlers = [
|
||||
(r"/lab", LabHandler),
|
||||
]
|
||||
|
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,28 @@
|
||||
// Copyright (c) Jupyter Development Team.
|
||||
// Distributed under the terms of the Modified BSD License.
|
||||
'use strict';
|
||||
|
||||
require('jupyter-js-plugins/lib/default-theme/index.css');
|
||||
|
||||
var phosphide = require('phosphide/lib/core/application');
|
||||
|
||||
var app = new phosphide.Application({
|
||||
extensions: [
|
||||
require('phosphide/lib/extensions/commandpalette').commandPaletteExtension,
|
||||
require('jupyter-js-plugins/lib/terminal/plugin').terminalExtension,
|
||||
require('jupyter-js-plugins/lib/filehandler/plugin').fileHandlerExtension,
|
||||
require('jupyter-js-plugins/lib/filebrowser/plugin').fileBrowserExtension,
|
||||
require('jupyter-js-plugins/lib/imagehandler/plugin').imageHandlerExtension,
|
||||
require('jupyter-js-plugins/lib/help/plugin').helpHandlerExtension,
|
||||
require('jupyter-js-plugins/lib/readonly-notebook/plugin').notebookHandlerExtension,
|
||||
require('jupyter-js-plugins/lib/shortcuts/plugin').shortcutsExtension
|
||||
],
|
||||
providers: [
|
||||
require('jupyter-js-plugins/lib/documentmanager/plugin').documentManagerProvider,
|
||||
require('jupyter-js-plugins/lib/services/plugin').servicesProvider
|
||||
]
|
||||
});
|
||||
|
||||
window.onload = function() {
|
||||
app.run();
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "jupyter-js-lab",
|
||||
"version": "0.1.0",
|
||||
"description": "JupyterLab",
|
||||
"main": "lib/index.js",
|
||||
"typings": "lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"jupyter-js-plugins": "^0.9.0",
|
||||
"phosphide": "^0.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"css-loader": "^0.23.1",
|
||||
"es6-promise": "^3.0.2",
|
||||
"file-loader": "^0.8.5",
|
||||
"json-loader": "^0.5.4",
|
||||
"rimraf": "^2.5.0",
|
||||
"style-loader": "^0.13.0",
|
||||
"typescript": "^1.7.5",
|
||||
"url-loader": "^0.5.7",
|
||||
"webpack": "^1.12.11"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf build",
|
||||
"build": "webpack --config webpack.conf.js",
|
||||
"postinstall": "npm dedupe",
|
||||
"test": "echo 'no tests specified'"
|
||||
},
|
||||
"author": "Project Jupyter",
|
||||
"license": "BSD-3-Clause"
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
// Support for Node 0.10
|
||||
// See https://github.com/webpack/css-loader/issues/144
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var ContextReplacementPlugin = require("webpack/lib/ContextReplacementPlugin");
|
||||
|
||||
module.exports = {
|
||||
entry: './index.js',
|
||||
output: {
|
||||
path: './build',
|
||||
filename: 'bundle.js'
|
||||
},
|
||||
node: {
|
||||
fs: "empty"
|
||||
},
|
||||
debug: true,
|
||||
bail: true,
|
||||
module: {
|
||||
loaders: [
|
||||
{ test: /\.css$/, loader: 'style-loader!css-loader' },
|
||||
{ test: /\.json$/, loader: 'json-loader' },
|
||||
// jquery-ui loads some images
|
||||
{ test: /\.(jpg|png|gif)$/, loader: "file" },
|
||||
// required to load font-awesome
|
||||
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
|
||||
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
|
||||
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/octet-stream" },
|
||||
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
|
||||
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=image/svg+xml" }
|
||||
]
|
||||
},
|
||||
externals: {
|
||||
"base/js/namespace": "base/js/namespace",
|
||||
"notebook/js/outputarea": "notebook/js/outputarea",
|
||||
"services/kernels/comm": "services/kernels/comm"
|
||||
},
|
||||
plugins: [
|
||||
new ContextReplacementPlugin(
|
||||
/codemirror\/mode.*$/,
|
||||
/codemirror\/mode.*\.js$/
|
||||
)
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,99 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>{{page_title}}</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<link rel="stylesheet" type="text/css" href="{{static_url("components/font-awesome/css/font-awesome.css")}}"></link>
|
||||
<script src="{{static_url("components/es6-promise/promise.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>
|
||||
require.config({
|
||||
{% if version_hash %}
|
||||
urlArgs: "v={{version_hash}}",
|
||||
{% endif %}
|
||||
baseUrl: '{{static_url("", include_version=False)}}',
|
||||
paths: {
|
||||
{% if ignore_minified_js %}
|
||||
'auth/js/main': 'auth/js/main',
|
||||
{% else %}
|
||||
'auth/js/main': 'auth/js/main.min',
|
||||
{% endif %}
|
||||
custom : '{{ base_url }}custom',
|
||||
nbextensions : '{{ base_url }}nbextensions',
|
||||
widgets : '{{ base_url }}deprecatedwidgets',
|
||||
kernelspecs : '{{ base_url }}kernelspecs',
|
||||
underscore : 'components/underscore/underscore-min',
|
||||
backbone : 'components/backbone/backbone-min',
|
||||
jquery: 'components/jquery/jquery.min',
|
||||
bootstrap: 'components/bootstrap/js/bootstrap.min',
|
||||
bootstraptour: 'components/bootstrap-tour/build/js/bootstrap-tour.min',
|
||||
'jquery-ui': 'components/jquery-ui/ui/minified/jquery-ui.min',
|
||||
moment: 'components/moment/moment',
|
||||
codemirror: 'components/codemirror',
|
||||
termjs: 'components/term.js/src/term',
|
||||
typeahead: 'components/jquery-typeahead/dist/jquery.typeahead'
|
||||
},
|
||||
map: { // for backward compatibility
|
||||
"*": {
|
||||
"jqueryui": "jquery-ui",
|
||||
}
|
||||
},
|
||||
shim: {
|
||||
typeahead: {
|
||||
deps: ["jquery"],
|
||||
exports: "typeahead"
|
||||
},
|
||||
underscore: {
|
||||
exports: '_'
|
||||
},
|
||||
backbone: {
|
||||
deps: ["underscore", "jquery"],
|
||||
exports: "Backbone"
|
||||
},
|
||||
bootstrap: {
|
||||
deps: ["jquery"],
|
||||
exports: "bootstrap"
|
||||
},
|
||||
bootstraptour: {
|
||||
deps: ["bootstrap"],
|
||||
exports: "Tour"
|
||||
},
|
||||
"jquery-ui": {
|
||||
deps: ["jquery"],
|
||||
exports: "$"
|
||||
}
|
||||
},
|
||||
waitSeconds: 30,
|
||||
});
|
||||
|
||||
require.config({
|
||||
map: {
|
||||
'*':{
|
||||
'contents': '{{ contents_js_source }}',
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
{% block meta %}
|
||||
{% endblock %}
|
||||
|
||||
</head>
|
||||
|
||||
<body class="{% block bodyclasses %}{% endblock %}" {% block params %}{% endblock %}>
|
||||
|
||||
{% block script %}
|
||||
<script id='jupyter-config-data' type="application/json">{
|
||||
"baseUrl": "{{base_url | urlencode}}",
|
||||
"wsUrl": "{{ws_url| urlencode}}",
|
||||
"notebookPath": "{{notebook_path | urlencode}}"
|
||||
}</script>
|
||||
<script src="{{ static_url("lab/build/bundle.js") }}" type="text/javascript" charset="utf-8"></script>
|
||||
{% endblock %}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in new issue