mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Commits from @MartB and more ...
- Commit: 1d9165f403
- New default QT capture implementation
- UploadHandler added to Effects Configurator to allow uploading GIF files
- Docker compile script and instruction
- Travis Fix
This commit is contained in:
@@ -2,6 +2,7 @@ $(document).ready( function() {
|
||||
performTranslation();
|
||||
var oldDelList = [];
|
||||
var effectName = "";
|
||||
var imageData = "";
|
||||
var effects_editor = null;
|
||||
var effectPy = "";
|
||||
var testrun;
|
||||
@@ -31,9 +32,30 @@ $(document).ready( function() {
|
||||
function triggerTestEffect() {
|
||||
testrun = true;
|
||||
var args = effects_editor.getEditor('root.args');
|
||||
requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()));
|
||||
requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()), imageData);
|
||||
};
|
||||
|
||||
// Specify upload handler for image files
|
||||
JSONEditor.defaults.options.upload = function(type, file, cbs) {
|
||||
var fileReader = new FileReader();
|
||||
|
||||
//check file
|
||||
if (!file.type.startsWith('image')) {
|
||||
imageData = "";
|
||||
cbs.failure('File upload error');
|
||||
// TODO clear file dialog.
|
||||
showInfoDialog('error', "", $.i18n('infoDialog_writeimage_error_text', file.name));
|
||||
return;
|
||||
}
|
||||
|
||||
fileReader.onload = function () {
|
||||
imageData = this.result.split(',')[1];
|
||||
console.log(imageData);
|
||||
cbs.success(file.name);
|
||||
};
|
||||
|
||||
fileReader.readAsDataURL(file);
|
||||
};
|
||||
|
||||
$("#effectslist").off().on("change", function(event) {
|
||||
if(effects_editor != null)
|
||||
@@ -48,6 +70,7 @@ $(document).ready( function() {
|
||||
|
||||
effectPy = ':';
|
||||
effectPy += effects[idx].schemaContent.script;
|
||||
imageData = "";
|
||||
$("#name-input").trigger("change");
|
||||
|
||||
$("#eff_desc").html(createEffHint($.i18n(effects[idx].schemaContent.title),$.i18n(effects[idx].schemaContent.title+'_desc')));
|
||||
@@ -84,7 +107,7 @@ $(document).ready( function() {
|
||||
|
||||
// Save Effect
|
||||
$('#btn_write').off().on('click',function() {
|
||||
requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()));
|
||||
requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()),imageData);
|
||||
$(hyperion).one("cmd-create-effect", function(event) {
|
||||
if (event.response.success)
|
||||
showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName));
|
||||
@@ -163,9 +186,9 @@ $(document).ready( function() {
|
||||
//create basic effect list
|
||||
var effects = serverSchema.properties.effectSchemas.internal
|
||||
for(var idx=0; idx<effects.length; idx++)
|
||||
{
|
||||
$("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title)));
|
||||
}
|
||||
{
|
||||
$("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title)));
|
||||
}
|
||||
$("#effectslist").trigger("change");
|
||||
|
||||
updateDelEffectlist();
|
||||
|
@@ -41,7 +41,7 @@ $(document).ready( function() {
|
||||
currentVersion = sysInfo.hyperion.version;
|
||||
});
|
||||
|
||||
$(hyperion).on("cmd-config-getschema", function(event) {
|
||||
$(hyperion).one("cmd-config-getschema", function(event) {
|
||||
serverSchema = event.response.info;
|
||||
requestServerConfig();
|
||||
|
||||
@@ -63,7 +63,7 @@ $(document).ready( function() {
|
||||
requestServerConfigSchema();
|
||||
});
|
||||
|
||||
$(hyperion).on("ready", function(event) {
|
||||
$(hyperion).one("ready", function(event) {
|
||||
loadContent();
|
||||
});
|
||||
|
||||
|
@@ -270,15 +270,15 @@ function requestWriteConfig(config, full)
|
||||
sendToHyperion("config","setconfig", '"config":'+JSON.stringify(serverConfig));
|
||||
}
|
||||
|
||||
function requestWriteEffect(effectName,effectPy,effectArgs)
|
||||
function requestWriteEffect(effectName,effectPy,effectArgs,data)
|
||||
{
|
||||
var cutArgs = effectArgs.slice(1, -1);
|
||||
sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs);
|
||||
sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs+',"imageData":"'+data+'"');
|
||||
}
|
||||
|
||||
function requestTestEffect(effectName,effectPy,effectArgs)
|
||||
function requestTestEffect(effectName,effectPy,effectArgs,data)
|
||||
{
|
||||
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'}, "priority":'+webPrio+', "origin":"'+webOrigin+'", "pythonScript":"'+effectPy+'"');
|
||||
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'}, "priority":'+webPrio+', "origin":"'+webOrigin+'", "pythonScript":"'+effectPy+'", "imageData":"'+data+'"');
|
||||
}
|
||||
|
||||
function requestDeleteEffect(effectName)
|
||||
|
@@ -10,7 +10,7 @@ $(document).ready(function() {
|
||||
var canvas_height;
|
||||
var canvas_width;
|
||||
var twoDPaths = [];
|
||||
var toggleLeds = false;
|
||||
var toggleLeds, toggleLedsNum = false;
|
||||
|
||||
/// add prototype for simple canvas clear() method
|
||||
CanvasRenderingContext2D.prototype.clear = function(){
|
||||
@@ -148,9 +148,17 @@ $(document).ready(function() {
|
||||
// can be used as fallback when Path2D is not available
|
||||
//roundRect(ledsCanvasNodeCtx, led.hscan.minimum * canvas_width, led.vscan.minimum * canvas_height, (led.hscan.maximum-led.hscan.minimum) * canvas_width, (led.vscan.maximum-led.vscan.minimum) * canvas_height, 4, true, colors[idx])
|
||||
//ledsCanvasNodeCtx.fillRect(led.hscan.minimum * canvas_width, led.vscan.minimum * canvas_height, (led.hscan.maximum-led.hscan.minimum) * canvas_width, (led.vscan.maximum-led.vscan.minimum) * canvas_height);
|
||||
|
||||
ledsCanvasNodeCtx.fillStyle = (useColor) ? "rgba("+colors[idx].red+","+colors[idx].green+","+colors[idx].blue+",0.9)" : "hsl("+(idx*360/leds.length)+",100%,50%)";
|
||||
ledsCanvasNodeCtx.fill(twoDPaths[idx]);
|
||||
ledsCanvasNodeCtx.stroke(twoDPaths[idx]);
|
||||
|
||||
if(toggleLedsNum)
|
||||
{
|
||||
ledsCanvasNodeCtx.fillStyle = "blue";
|
||||
ledsCanvasNodeCtx.textAlign = "center";
|
||||
ledsCanvasNodeCtx.fillText(idx, (led.hscan.minimum * canvas_width) + ( ((led.hscan.maximum-led.hscan.minimum) * canvas_width) / 2), (led.vscan.minimum * canvas_height) + ( ((led.vscan.maximum-led.vscan.minimum) * canvas_height) / 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,12 +181,11 @@ $(document).ready(function() {
|
||||
resetImage()
|
||||
}
|
||||
|
||||
// -----------------------FIX THIS-------------------------
|
||||
// ------------------------------------------------------------------
|
||||
// $('#leds_toggle_num').off().on("click", function() {
|
||||
// $('.led_num').toggle();
|
||||
// toggleClass('#leds_toggle_num', "btn-danger", "btn-success");
|
||||
//});
|
||||
$('#leds_toggle_num').off().on("click", function() {
|
||||
toggleLedsNum = !toggleLedsNum
|
||||
toggleClass('#leds_toggle_num', "btn-danger", "btn-success");
|
||||
});
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
$('#leds_toggle').off().on("click", function() {
|
||||
|
@@ -5982,24 +5982,8 @@ JSONEditor.defaults.editors.upload = JSONEditor.AbstractEditor.extend({
|
||||
if(!this.preview_value) return;
|
||||
|
||||
var self = this;
|
||||
|
||||
var mime = this.preview_value.match(/^data:([^;,]+)[;,]/);
|
||||
if(mime) mime = mime[1];
|
||||
if(!mime) mime = 'unknown';
|
||||
|
||||
var file = this.uploader.files[0];
|
||||
|
||||
this.preview.innerHTML = '<strong>Type:</strong> '+mime+', <strong>Size:</strong> '+file.size+' bytes';
|
||||
if(mime.substr(0,5)==="image") {
|
||||
this.preview.innerHTML += '<br>';
|
||||
var img = document.createElement('img');
|
||||
img.style.maxWidth = '100%';
|
||||
img.style.maxHeight = '100px';
|
||||
img.src = this.preview_value;
|
||||
this.preview.appendChild(img);
|
||||
}
|
||||
|
||||
this.preview.innerHTML += '<br>';
|
||||
var uploadButton = this.getButton('Upload', 'upload', 'Upload');
|
||||
this.preview.appendChild(uploadButton);
|
||||
uploadButton.addEventListener('click',function(event) {
|
||||
@@ -6036,6 +6020,11 @@ JSONEditor.defaults.editors.upload = JSONEditor.AbstractEditor.extend({
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if(this.jsoneditor.options.auto_upload || this.schema.options.auto_upload) {
|
||||
uploadButton.dispatchEvent(new MouseEvent('click'));
|
||||
this.preview.removeChild(uploadButton);
|
||||
}
|
||||
},
|
||||
enable: function() {
|
||||
if(this.uploader) this.uploader.disabled = false;
|
||||
@@ -6825,10 +6814,7 @@ JSONEditor.defaults.themes.bootstrap3 = JSONEditor.AbstractTheme.extend({
|
||||
},
|
||||
getButton: function(text, icon, title) {
|
||||
var el = this._super(text, icon, title);
|
||||
if(icon.className.includes("fa-times"))
|
||||
el.className += 'btn btn-sm btn-danger';
|
||||
else
|
||||
el.className += 'btn btn-sm btn-primary';
|
||||
el.className += 'btn btn-default';
|
||||
return el;
|
||||
},
|
||||
getTable: function() {
|
||||
|
@@ -316,8 +316,6 @@ function createJsonEditor(container,schema,setconfig,usePanel,arrayre)
|
||||
$('#'+container).off();
|
||||
$('#'+container).html("");
|
||||
|
||||
//JSONEditor.plugins.selectize.enable = true;
|
||||
|
||||
if (typeof arrayre === 'undefined')
|
||||
arrayre = true;
|
||||
|
||||
|
Reference in New Issue
Block a user