FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: drhirn am 07 Februar 2018, 15:41:36

Titel: Eigene Plugins schreiben
Beitrag von: drhirn am 07 Februar 2018, 15:41:36
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
Titel: Antw:Eigene Plugins schreiben
Beitrag von: setstate am 07 Februar 2018, 15:56:57
Einstiegspunkt ist hier: https://wiki.fhem.de/wiki/FTUI_eigene_Widgets
Titel: Antw:Eigene Plugins schreiben
Beitrag von: drhirn am 07 Februar 2018, 15:59:14
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 ;).
Titel: Antw:Eigene Plugins schreiben
Beitrag von: pula am 07 Februar 2018, 22:40:20
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
Titel: Antw:Eigene Plugins schreiben
Beitrag von: setstate am 08 Februar 2018, 00:44:50
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;
};
Titel: Antw:Eigene Plugins schreiben
Beitrag von: drhirn am 08 Februar 2018, 09:14:24
Danke Mario, sehr hilfreich!
Dann mach ich mich mal ans Werk.