Quellcode durchsuchen

Reinstate the app example

Steven Silvester vor 7 Jahren
Ursprung
Commit
d73e8a7dc6

+ 32 - 0
examples/app/Untitled.ipynb

@@ -0,0 +1,32 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python [default]",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.5.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 88 - 0
examples/app/example.ipynb


+ 59 - 0
examples/app/extract-data.js

@@ -0,0 +1,59 @@
+var rpt = require('read-package-tree');
+var data = require('./package.json');
+var path = require('path');
+var glob = require('glob');
+var fs = require('fs-extra');
+
+var seen = {};
+
+var schemaDir = path.resolve('./schemas');
+fs.removeSync(schemaDir);
+fs.ensureDirSync(schemaDir);
+
+var themesDir = path.resolve('./themes');
+fs.removeSync(themesDir);
+fs.ensureDirSync(themesDir);
+
+
+function extractNode(data) {
+  data.children.forEach(function(child) {
+    extractNode(child);
+  });
+
+  if (seen[data.package.name]) {
+    return;
+  }
+  seen[data.package.name] = true;
+  var jlab = data.package.jupyterlab
+  if (!jlab) {
+    return;
+  }
+
+  // Handle schemas.
+  var schemaDir = jlab['schemaDir'];
+  if (schemaDir) {
+    debugger;
+    schemaDir = path.join(data.realpath, schemaDir);
+    var schemas = glob.sync(path.join(schemaDir, '*'));
+    schemas.forEach(function(schemaPath) {
+      var file = path.basename(schemaPath);
+      var to = path.join('schemas', file);
+      fs.copySync(schemaPath, to);
+    });
+  }
+
+  // Handle themes.
+  var themeDir = jlab['themeDir'];
+  if (themeDir) {
+    var name = data.package.name.replace('@', '');
+    name = name.replace('/', '-');
+    var from = path.join(data.realpath, themeDir);
+    var to = path.join('themes', name);
+    fs.copySync(from, to);
+  }
+}
+
+
+rpt('.', function (er, data) {
+  extractNode(data);
+})

+ 15 - 0
examples/app/index.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>JupyterLab Custom App</title>
+  <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML-full,Safe&amp;delayStartupUntil=configured"></script>
+</head>
+<body>
+  <script id='jupyter-config-data' type="application/json">{ 
+  "baseUrl": "{{base_url}}",
+  "wsUrl": "{{ws_url}}",
+  "terminalsAvailable": "{{terminals_available}}"
+ }</script>
+  <script src="example/bundle.js" main="index"></script>
+</body>
+</html>

+ 43 - 0
examples/app/index.js

@@ -0,0 +1,43 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+// ES6 Promise polyfill
+require('es6-promise/auto');
+
+// Load the core theming before any other package.
+require('@jupyterlab/theme-light-extension/style/embed.css');
+
+var JupyterLab = require('@jupyterlab/application').JupyterLab;
+
+
+var mods = [
+  require('@jupyterlab/application-extension'),
+  require('@jupyterlab/apputils-extension'),
+  require('@jupyterlab/codemirror-extension'),
+  require('@jupyterlab/completer-extension'),
+  require('@jupyterlab/console-extension'),
+  require('@jupyterlab/csvviewer-extension'),
+  require('@jupyterlab/docmanager-extension'),
+  require('@jupyterlab/fileeditor-extension'),
+  require('@jupyterlab/faq-extension'),
+  require('@jupyterlab/filebrowser-extension'),
+  require('@jupyterlab/help-extension'),
+  require('@jupyterlab/imageviewer-extension'),
+  require('@jupyterlab/inspector-extension'),
+  require('@jupyterlab/launcher-extension'),
+  require('@jupyterlab/markdownviewer-extension'),
+  require('@jupyterlab/notebook-extension'),
+  require('@jupyterlab/running-extension'),
+  require('@jupyterlab/settingeditor-extension'),
+  require('@jupyterlab/shortcuts-extension'),
+  require('@jupyterlab/tabmanager-extension'),
+  require('@jupyterlab/terminal-extension'),
+  require('@jupyterlab/tooltip-extension')
+];
+
+
+window.onload = function() {
+  var lab = new JupyterLab({ namespace: 'lab-example' });
+  lab.registerPluginModules(mods);
+  lab.start();
+}

BIN
examples/app/jupyter.png


+ 60 - 0
examples/app/main.py

@@ -0,0 +1,60 @@
+"""
+Copyright (c) Jupyter Development Team.
+Distributed under the terms of the Modified BSD License.
+"""
+
+import os
+from jinja2 import FileSystemLoader
+from notebook.base.handlers import IPythonHandler, FileFindHandler
+from notebook.utils import url_path_join as ujoin
+from notebook.notebookapp import NotebookApp
+from traitlets import Unicode
+from jupyterlab_launcher.handlers import (
+    default_settings_path, default_themes_path, SettingsHandler
+)
+
+HERE = os.path.dirname(__file__)
+
+
+class ExampleHandler(IPythonHandler):
+    """Handle requests between the main app page and notebook server."""
+
+    def get(self):
+        """Get the main page for the application's interface."""
+        return self.write(self.render_template("index.html",
+            static=self.static_url, base_url=self.base_url,
+            terminals_available=self.settings['terminals_available']))
+
+    def get_template(self, name):
+        loader = FileSystemLoader(os.getcwd())
+        return loader.load(self.settings['jinja2_env'], name)
+
+
+class ExampleApp(NotebookApp):
+
+    default_url = Unicode('/example')
+
+    def init_webapp(self):
+        """initialize tornado webapp and httpserver.
+        """
+        super(ExampleApp, self).init_webapp()
+        base_url = self.web_app.settings['base_url']
+        settings_path = ujoin(
+            base_url, default_settings_path + '(?P<section_name>[\w.-]+)'
+        )
+
+        default_handlers = [
+            (ujoin(base_url, '/example?'), ExampleHandler),
+            (ujoin(base_url, '/example/(.*)'), FileFindHandler,
+                {'path': 'build'}),
+            ((settings_path, SettingsHandler, {
+                'schemas_dir': os.path.join(HERE, 'schemas'),
+                'settings_dir': ''
+                })
+            )
+        ]
+        self.web_app.add_handlers(".*$", default_handlers)
+
+
+if __name__ == '__main__':
+    ExampleApp.launch_instance()

+ 48 - 0
examples/app/package.json

@@ -0,0 +1,48 @@
+{
+  "private": true,
+  "name": "@jupyterlab/example-app",
+  "scripts": {
+    "build": "node extract-data && webpack",
+    "clean": "rimraf build"
+  },
+  "dependencies": {
+    "@jupyterlab/application": "^0.9.0",
+    "@jupyterlab/application-extension": "^0.9.0",
+    "@jupyterlab/apputils-extension": "^0.9.0",
+    "@jupyterlab/codemirror-extension": "^0.9.0",
+    "@jupyterlab/completer-extension": "^0.9.0",
+    "@jupyterlab/console-extension": "^0.9.0",
+    "@jupyterlab/csvviewer-extension": "^0.9.0",
+    "@jupyterlab/docmanager-extension": "^0.9.0",
+    "@jupyterlab/faq-extension": "^0.9.0",
+    "@jupyterlab/filebrowser-extension": "^0.9.0",
+    "@jupyterlab/fileeditor-extension": "^0.9.0",
+    "@jupyterlab/help-extension": "^0.9.0",
+    "@jupyterlab/imageviewer-extension": "^0.9.0",
+    "@jupyterlab/inspector-extension": "^0.9.0",
+    "@jupyterlab/launcher-extension": "^0.9.0",
+    "@jupyterlab/markdownviewer-extension": "^0.9.0",
+    "@jupyterlab/notebook-extension": "^0.9.0",
+    "@jupyterlab/running-extension": "^0.9.0",
+    "@jupyterlab/settingeditor-extension": "^0.4.0",
+    "@jupyterlab/shortcuts-extension": "^0.9.0",
+    "@jupyterlab/tabmanager-extension": "^0.9.0",
+    "@jupyterlab/terminal-extension": "^0.9.0",
+    "@jupyterlab/theme-light-extension": "^0.9.0",
+    "@jupyterlab/tooltip-extension": "^0.9.0",
+    "es6-promise": "^4.1.0"
+  },
+  "devDependencies": {
+    "file-loader": "^0.10.1",
+    "fs-extra": "^4.0.1",
+    "glob": "7.1.2",
+    "rimraf": "^2.5.2",
+    "read-package-data": "^5.1.6",
+    "style-loader": "^0.13.1",
+    "raw-loader": "^0.5.1",
+    "url-loader": "^0.5.7",
+    "watch": "^1.0.2",
+    "webpack": "^2.2.1"
+  },
+  "version": "0.10.0"
+}

+ 36 - 0
examples/app/webpack.config.js

@@ -0,0 +1,36 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+// Support for Node 0.10
+// See https://github.com/webpack/css-loader/issues/144
+require('es6-promise').polyfill();
+
+module.exports = {
+  entry: './index.js',
+  output: {
+    path: __dirname + '/build',
+    filename: 'bundle.js',
+    publicPath: 'lab/'
+  },
+  node: {
+    fs: 'empty'
+  },
+  bail: true,
+  devtool: 'source-map',
+  module: {
+    rules: [
+      { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] },
+      { test: /\.json$/, use: 'json-loader' },
+      { test: /\.html$/, use: 'file-loader' },
+      { test: /\.md$/, use: 'raw-loader' },
+      // jquery-ui loads some images
+      { test: /\.(jpg|png|gif)$/, use: 'file-loader' },
+      // required to load font-awesome
+      { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=application/font-woff' },
+      { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=application/font-woff' },
+      { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=application/octet-stream' },
+      { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, use: 'file-loader' },
+      { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=image/svg+xml' }
+    ]
+  }
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.