processcube.apptemplate
Version:
A AppTemplate for a App build with and for the ProcessCube Plattform
87 lines (72 loc) • 3.01 kB
HTML
<script type="text/javascript" src="resources/@5minds/node-red-contrib-processcube-studio-plugin/addExternalTask.js"></script>
<script type="text/javascript" src="resources/@5minds/node-red-contrib-processcube-studio-plugin/focusExternalTask.js"></script>
<script type="text/javascript" src="resources/@5minds/node-red-contrib-processcube-studio-plugin/addCustomForm.js"></script>
<script type="text/javascript">
(function() {
// Speichere Query-Parameter SOFORT beim Laden, bevor Node-RED sie entfernt
var params = null;
var action = null;
// Parse Query-Parameter aus URL (vor dem Hash)
(function captureQueryParams() {
var search = window.location.search;
if (search) {
const searchParams = new URLSearchParams(search);
params = Object.fromEntries(searchParams.entries());
action = searchParams.get('action');
}
})();
RED.events.on("editor:open", function() {
console.log("Editor geöffnet - Query-Parameter:", params ? Object.fromEntries(params) : null);
});
// Plugin-Definition für Node-RED Editor
RED.plugins.registerPlugin("studio-plugin", {
type: "studio-plugin",
onadd: function() {
console.log("Studio Plugin initialisiert");
var hasExecutedAction = false;
RED.studio = {
actions: {
focusExternalTask: focusExternalTask,
addExternalTask: addExternalTask,
addCustomForm: addCustomForm
}
};
const actionFunction = RED.studio.actions[action];
RED.comms.subscribe("studio-plugin.actions", function(topic, msg) {
console.log(`Message ${JSON.stringify(msg)} received from backend`);
const actionFunction = RED.studio.actions[msg.action];
if (actionFunction) {
actionFunction(msg.params);
} else {
console.warn("Unbekannte Aktion:", msg.action);
}
});
//Event-Listener für Workspace-Änderungen
RED.events.on("workspace:change", function() {
console.log("Workspace geändert");
if (!hasExecutedAction) {
setTimeout(() => {
if (actionFunction) {
actionFunction(params);
}
}, 500); // Verzögerung, um sicherzustellen, dass der Editor bereit ist
hasExecutedAction = true;
}
});
}
});
})();
</script>
<style>
.node-highlight {
animation: pulse 0.5s ease-in-out 4;
}
@keyframes pulse {
0%, 100% {
filter: drop-shadow(0 0 0 rgba(255, 165, 0, 0));
}
50% {
filter: drop-shadow(0 0 15px rgba(255, 165, 0, 1)) drop-shadow(0 0 25px rgba(255, 165, 0, 0.5));
}
}
</style>