Files
Unify/framework/client/debugManager.js

315 lines
5.6 KiB
JavaScript
Raw Permalink Normal View History

2025-12-25 11:16:59 +01:00
import tools from '../unify/tools.js';
import socketMessage from '../unify/socketMessage.js';
import unify from '../unify/unify.js';
import groupsFlat from '../server/themeGroups.js';
export default class debug {
objects = new Array();
socketManager = false;
parseFilename( filename ) {
if( filename[0] == "-" ) {
return false;
}
if( !filename ) {
filename = "Unknown";
}
var emtpySpaces = 28 - filename.length;
for( var c = 0; c < emtpySpaces; c++) {
filename += " ";
}
return filename;
}
processDebugMessage( message ) {
switch( message.parameters.action ) {
case "log":
this.logDebugMessage( message );
break;
case "addObject":
this.addDebugObject( message );
break;
case "updateFile":
this.updateFile( message );
break;
}
}
checkVisible( element ) {
return element.offsetWidth > 0 || element.offsetHeight > 0;
}
getVisibleInherites( className, visible ) {
var core = document.cores[0];
this.cacheArray = new Array();
var objects = core.dependencieMap[className];
if( !objects ) {
return false;
}
for (var b = 0; b < objects.length; b++) {
var object = objects[b];
if( tools.isVisible( object.element ) || visible ) {
this.cacheArray.push( object );
}
}
console.log("created cache array", this.cacheArray);
}
async updateFile( message ) {
var parameters = message.parameters;
var file = parameters.file;
var fullPath = file.path + "/" + file.name;
var currentPath = "../cache/platforms/"+document.config.os+"/"+document.config.device+"/"+document.config.tint+"/" + fullPath + "?disableCache=" + Math.random();
console.log("message", message);
console.log("currentPath", currentPath);
var newImport = await import(currentPath);
var newInstance = new newImport.default();
unify.extend( newInstance );
console.log("newInstance", newInstance);
var className = newInstance.getClassName();
this.getVisibleInherites( className, false );
newInstance.create = false;
this.updateMainObjects( newInstance );
this.updateInherites( newInstance );
var that = this;
setTimeout(function(){
that.getVisibleInherites( className, true );
that.updateInherites( newInstance );
}, 1000);
//function () {
//this.getVisibleInherites( className, true );
//this.updateInherites( newInstance );
//}
}
updateInherites() {
var objects = this.cacheArray;
for ( var c = 0; c < objects.length; c++ ) {
var object = objects[c];
this.instantiateInheritence( object );
}
}
updateMainObjects( newInstance ) {
var core = document.cores[0];
var idObjects = core.classObjects[ newInstance.getClassName() ];
if( idObjects ) {
idObjects = idObjects.filter( n => n );
console.log( idObjects );
for ( var i = 0; i < idObjects.length; i++ ) {
var object = idObjects[i];
object.updateProperties( newInstance );
}
}
}
async instantiateInheritence( object ) {
var newConstructor = object.constructor;
if( object.__sourcePath ) {
var currentPath = "../cache/platforms/" + document.config.os + "/" + document.config.device + "/" + document.config.tint +"/" + object.__sourcePath + "?disableCache=" + Math.random();
var newImport = await import( currentPath );
if( newImport.default ) {
var newInstance = new newImport.default();
unify.extend( newInstance );
console.log("Hot swap Unify Object", object.getClassName(), object.element, newInstance["background"]);
var reload = object.updateProperties( newInstance );
}
} else {
console.log("error object doesnt have sourcePath", object);
}
}
addDebugObject( message ) {
var object = cycle.retrocycle( message.parameters.object );
if( object.applicationPathString ) {
console.log( "add object", object );
var div = document.createElement("div");
div.innerHTML = object.applicationPathString;
var socket = this.socketManager.socket;
div.onclick = function(){
console.log( object.applicationPathString );
var message = new socketMessage();
message.controller = "settings";
message.method = "debugObject";
message.object = object.applicationPathString;
socket.send( JSON.stringify( message ) );
this.style.color = "green";
console.log( this.style.color );
};
document.body.appendChild( div );
}
}
logDebugMessage( message ) {
var parameters = message.parameters;
var parameter1 = cycle.retrocycle( parameters.parameter1 );
var parameter2 = cycle.retrocycle( parameters.parameter2 );
var parameter3 = cycle.retrocycle( parameters.parameter3 );
if(parameter1 == "clear_console") {
console.clear();
}
var filename = parameters.filename;
if( parameters.lineNumber ) {
filename += ":" + parameters.lineNumber;
}
filename = this.parseFilename( filename );
if( parameters.parameter3 ) {
console.log( filename, parameter1, parameter2, parameter3 );
} else if( parameters.parameter2 ) {
console.log( filename, parameter1, parameter2 );
} else {
console.log( filename, parameter1 );
}
}
}