Hallo,
es kam, wie es kommen musste: Hier der wahrscheinlich erwartete Post mit der Frage, wie man jetzt eigentlich eigene Plugins für ein FTUI-Widget (oder FTUI generell) erstellt. ;)
Hab schon ein paar Mal angemerkt, dass ich mir das ansehen werde, stecke aber fest.
Ich weiß, ich kann mit
function depends_myWidget() {
var deps = [];
deps.push('<bestehendesWidget>');
return deps;
}
...
var me = $.extend(new Modul_spinner(), {
widgetname: 'mywidget';
});
return me;
den Code eines bestehenden Widgets in meinem neuen verwenden. Und dann natürlich neue Funktionen hinzufügen bzw. bestehende überschreiben.
Aber, wie könnte ich z.B. bestehenden Funktionen etwas hinzufügen? Oder etwas ändern?
Anders gefragt: Gab's mal irgendwo Hinweise, wie man sowas macht? Eine Suche danach blieb leider erfolglos, auch wenn ich mir einbilde, mal etwas darüber gelesen zu haben.
Danke!
Stefan
Einstiegspunkt ist hier: https://wiki.fhem.de/wiki/FTUI_eigene_Widgets
Kenn ich, danke! Ich möchte aber kein komplett neues Widget schreiben, sondern einem bestehenden Widget Funktionen hinzufügen. Ohne, dass das bei einem Update von FTUI wieder überschrieben wird.
Konkret: Mir geht's noch immer um's Vibrieren. Und zwar bei einem Spinner. Ich will also weder die Vibrier-Funktion in die Original-Widget-Datei einbauen, noch die unter anderem Namen kopieren und das dort dann einbauen. Kann ja sein, dass es Updates für die Datei von dir gibt, die würden mir dann fehlen. Deswegen suche ich die Möglichkeit, ein Plugin für ein Plugin zu basteln ;).
Hi,
da hast Du meiner Ansicht nach zwei Möglichkeiten:
1) das fhem-update entsprechend anpassen, damit nichts überschrieben wird (sh hier https://forum.fhem.de/index.php?topic=53861.0 (https://forum.fhem.de/index.php?topic=53861.0))
2) das widget-File auf einen neuen Namen kopieren und entsprechend anpassen. Dann musst Dir halt den JS-Code ansehen und zb den Widget-Namen entsprechend ändern, damit das funktioniert. Ist aber keine Hexerei.... (allerdings bekommst Du für dieses von Dir modifizierte Plugin natürlich keine Updates mehr)...
Cheers,
Pula
Hier ein kleines Beispiel zur Inspiration
/* FTUI Plugin
* Copyright (c) 2018 Mario Stephan <mstephan@shared-files.de>
* Under MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/* global ftui:true, Modul_switch:true */
"use strict";
function depends_newbutton() {
var deps = [];
if(typeof window["Modul_switch"] === 'undefined'){
deps.push('switch');
}
if (!$.fn.DoSomething) {
deps.push(ftui.config.basedir + "lib/dosomething.js");
}
return deps;
}
var Modul_newbutton = function () {
function init_ui(elem) {
base.init_ui.call(me, elem);
// init extra jquery plugin
elem.DoSomething();
elem.on('clicked', function() {
console.log('clicked:');
});
}
// public
// inherit all public members from base class
var parent = new Modul_switch();
var base = {
init_ui: parent.init_ui
};
var me = $.extend(parent, {
//override or own public members
widgetname: 'newbutton',
init_ui: init_ui,
});
return me;
};
Danke Mario, sehr hilfreich!
Dann mach ich mich mal ans Werk.