Compare commits
6 Commits
minimal-pl
...
master
Author | SHA1 | Date |
---|---|---|
Luka Kavčič | d63b3f212e | 4 months ago |
Luka Kavčič | e028344b97 | 4 months ago |
Luka Kavčič | 23414b6d8b | 4 months ago |
Luka Kavčič | 002f6aa7fb | 2 years ago |
Luka Kavčič | f865c798a8 | 2 years ago |
Luka Kavčič | a199ab5750 | 2 years ago |
@ -0,0 +1,21 @@
|
||||
FROM alpine:3.15
|
||||
|
||||
RUN apk --update add redis
|
||||
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
|
||||
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
|
||||
RUN python3 -m ensurepip
|
||||
RUN pip3 install --no-cache --upgrade pip setuptools
|
||||
|
||||
ADD ./plugin-server.py /var/www/plugin-server/plugin-server.py
|
||||
ADD ./plugin-loader.js /var/www/plugin-server/plugin-loader.js
|
||||
ADD ./requirements.txt /var/www/plugin-server/requirements.txt
|
||||
|
||||
WORKDIR /var/www/plugin-server/
|
||||
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
RUN ln -s /var/www/plugins/ ./
|
||||
|
||||
CMD /usr/bin/redis-server & python plugin-server.py
|
@ -0,0 +1,12 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
main:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
restart: always
|
||||
volumes:
|
||||
- ./plugins:/var/www/plugins
|
||||
ports:
|
||||
- "8085:5000"
|
@ -1,48 +1,56 @@
|
||||
function plugin_load(config, div, entry) {
|
||||
$("#load-pre-status").text("Loading...");
|
||||
var status_span = $('#load-status');
|
||||
|
||||
var len1 = config.javascript && config.javascript.length || 0;
|
||||
var len2 = config.globals && config.javascript.length || 0;
|
||||
var num_progress = len1 + len2;
|
||||
|
||||
status_span.after(" / " + num_progress);
|
||||
status_span.text("0");
|
||||
|
||||
var progress = 0;
|
||||
var check = function() {
|
||||
if (++progress == num_progress) {
|
||||
status_span.parent().empty();
|
||||
if(typeof plugin_init !== 'undefined') plugin_init(div, entry);
|
||||
if(typeof plugin_render !== 'undefined') plugin_render(div, entry);
|
||||
}
|
||||
}
|
||||
|
||||
config.javascript.forEach(function(script) {
|
||||
$.ajax({
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
url: script,
|
||||
success: function () {
|
||||
status_span.text(progress + 1 + "");
|
||||
check();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Object.keys(config.globals).forEach(function(global_name) {
|
||||
$.get(config.globals[global_name], function(data) {
|
||||
window[global_name] = data;
|
||||
check();
|
||||
});
|
||||
});
|
||||
|
||||
config.css.forEach(function(css_url) {
|
||||
var link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = css_url;
|
||||
link.media = 'all';
|
||||
$('head').append(link);
|
||||
});
|
||||
}
|
||||
function plugin_start(div, entry, editable) {
|
||||
if(typeof plugin_init !== 'undefined') plugin_init(div, entry, editable);
|
||||
if(typeof plugin_render !== 'undefined') plugin_render(div, entry);
|
||||
}
|
||||
|
||||
function plugin_load(config, div, entry, editable) {
|
||||
$("#load-pre-status").text("Loading...");
|
||||
var status_span = $('#load-status');
|
||||
|
||||
var len_deps = config.dependencies && config.dependencies.length || 0;
|
||||
var len_globals = config.globals && Object.keys(config.globals).length || 0;
|
||||
|
||||
var progress = 0;
|
||||
var num_progress = len_deps + len_globals;
|
||||
|
||||
status_span.after(" / " + num_progress);
|
||||
status_span.text("0");
|
||||
|
||||
var check = function() {
|
||||
status_span.text(progress + 1 + "");
|
||||
if (++progress >= num_progress) { // has to be >= for num_progress = 0
|
||||
status_span.parent().empty();
|
||||
$.ajax({dataType: "script", cache: true, url: config.javascript, success: function() { plugin_start(div, entry, editable); }});
|
||||
}
|
||||
}
|
||||
|
||||
config.dependencies.forEach(function(script) {
|
||||
$.ajax({
|
||||
dataType: "script",
|
||||
cache: true,
|
||||
url: script,
|
||||
success: check
|
||||
});
|
||||
});
|
||||
|
||||
Object.keys(config.globals).forEach(function(global_name) {
|
||||
$.get(config.globals[global_name], function(data) {
|
||||
window[global_name] = data;
|
||||
check();
|
||||
});
|
||||
});
|
||||
|
||||
config.css.forEach(function(css_url) {
|
||||
var link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = css_url;
|
||||
link.media = 'all';
|
||||
$('head').append(link);
|
||||
});
|
||||
|
||||
// always adding a style element for to use for convenience
|
||||
$('head').append($('<style id="dynamic_styler"></style>'));
|
||||
|
||||
if(num_progress == 0) check();
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
#
|
||||
# This file is autogenerated by pip-compile with python 3.8
|
||||
#
|
||||
async-timeout==4.0.2
|
||||
# via redis
|
||||
click==8.1.3
|
||||
# via flask
|
||||
deprecated==1.2.13
|
||||
# via redis
|
||||
flask==2.1.2
|
||||
# via
|
||||
# -r requirements.in
|
||||
# flask-cors
|
||||
flask-cors==3.0.10
|
||||
# via -r requirements.in
|
||||
importlib-metadata==4.11.4
|
||||
# via flask
|
||||
itsdangerous==2.1.2
|
||||
# via flask
|
||||
jinja2==3.1.2
|
||||
# via flask
|
||||
markupsafe==2.1.1
|
||||
# via jinja2
|
||||
packaging==21.3
|
||||
# via redis
|
||||
pyparsing==3.0.9
|
||||
# via packaging
|
||||
redis==4.3.3
|
||||
# via -r requirements.in
|
||||
six==1.16.0
|
||||
# via flask-cors
|
||||
werkzeug==2.1.2
|
||||
# via flask
|
||||
wrapt==1.14.1
|
||||
# via deprecated
|
||||
zipp==3.8.0
|
||||
# via importlib-metadata
|
Loading…
Reference in new issue