Commit 20d7ab86 authored by Boxiang Sun's avatar Boxiang Sun

erp5_notebook: delay the python package loading after the main content loaded

parent 4e82e614
...@@ -3,17 +3,6 @@ ...@@ -3,17 +3,6 @@
(function (window) { (function (window) {
"use strict"; "use strict";
function sideEffectDiv(sideEffectClass, reportSideEffect) {
// appends a side effect div to the side effect area
var div = document.createElement("div");
div.setAttribute("class", sideEffectClass);
if (reportSideEffect === undefined) {
div.setAttribute("style", "display:");
}
document.body.appendChild(div);
return div;
}
var IODide = function createIODide() { var IODide = function createIODide() {
var iodide = { var iodide = {
output: { output: {
...@@ -49,6 +38,10 @@ ...@@ -49,6 +38,10 @@
Module = {}, Module = {},
packages, packages,
loadedPackages = [], loadedPackages = [],
py_div_id_prefix = "py_div_id_",
py_div_id_count = 0,
py_div_id_count_2 = 0,
props = {},
// Regexp for validating package name and URI // Regexp for validating package name and URI
package_name_regexp = '[a-z0-9_][a-z0-9_\-]*', package_name_regexp = '[a-z0-9_][a-z0-9_\-]*',
package_uri_regexp = new RegExp('^https?://.*?(' + package_name_regexp + ').js$', 'i'); package_uri_regexp = new RegExp('^https?://.*?(' + package_name_regexp + ').js$', 'i');
...@@ -60,6 +53,20 @@ ...@@ -60,6 +53,20 @@
return; return;
}; };
function sideEffectDiv(sideEffectClass, reportSideEffect) {
var div = document.getElementById(py_div_id_prefix + py_div_id_count_2),
pre = div.getElementsByTagName('pre')[0],
result = pre.getElementsByTagName('code')[0];
py_div_id_count_2 += 1;
div.removeChild(div.firstChild);
div.setAttribute("class", sideEffectClass);
if (reportSideEffect === undefined) {
div.setAttribute("style", "display:");
}
return div;
}
// Copied from jio // Copied from jio
function ajax(param) { function ajax(param) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
...@@ -419,24 +426,36 @@ ...@@ -419,24 +426,36 @@
}) })
.push(undefined, function(error) { .push(undefined, function(error) {
console.log(error); console.log(error);
}) });
return queue; return queue;
} }
function renderCodeblock(result_text) { function renderCodeblock(result_text) {
if (result_text !== undefined) {
var div = document.getElementById(py_div_id_prefix + py_div_id_count_2),
pre = div.getElementsByTagName('pre')[0],
result = pre.getElementsByTagName('code')[0];
py_div_id_count_2 += 1;
result.innerHTML = result_text;
}
}
function addPyCellStub() {
var div = document.createElement('div'), var div = document.createElement('div'),
pre = document.createElement('pre'), pre = document.createElement('pre'),
result = document.createElement('code'); result = document.createElement('code');
div.setAttribute("id", py_div_id_prefix + py_div_id_count);
py_div_id_count += 1;
div.style.border = '1px solid #C3CCD0'; div.style.border = '1px solid #C3CCD0';
div.style.margin = '40px 10px'; div.style.margin = '40px 10px';
div.style.paddingLeft = '10px'; div.style.paddingLeft = '10px';
if (result_text !== undefined) { result.innerHTML = "Loading pyodide";
result.innerHTML = result_text; pre.appendChild(result);
pre.appendChild(result); div.appendChild(pre);
div.appendChild(pre); document.body.appendChild(div);
document.body.appendChild(div);
}
} }
function executePyCell(line_list) { function executePyCell(line_list) {
...@@ -518,23 +537,22 @@ ...@@ -518,23 +537,22 @@
// empty block, do nothing. // empty block, do nothing.
return; return;
} }
addPyCellStub();
var queue = new RSVP.Queue();
if (!is_pyodide_loaded) { if (!is_pyodide_loaded) {
console.log("Loading pyodide"); props.queue = new RSVP.Queue()
queue.push(function () { .push(function () {
return initPyodide(); return initPyodide();
}) })
.push(function () { .push(function () {
return pyodideLoadPackage('matplotlib'); return pyodideLoadPackage('matplotlib');
}); });
is_pyodide_loaded = true; is_pyodide_loaded = true;
} }
queue.push(function () {
props.queue.push(function () {
return executePyCell(cell._line_list); return executePyCell(cell._line_list);
}); });
return queue; return;
} }
return executeUnknownCellType(cell); return executeUnknownCellType(cell);
} }
...@@ -557,6 +575,13 @@ ...@@ -557,6 +575,13 @@
for (i = 0; i < len; i += 1) { for (i = 0; i < len; i += 1) {
queue.push(deferCellExecution(cell_list[i])); queue.push(deferCellExecution(cell_list[i]));
} }
// Python packages loading and execution
queue
.push(function () {
return props.queue;
});
return queue return queue
.push(function () { .push(function () {
console.info('JSMD executed.'); console.info('JSMD executed.');
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment