Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Nov 18 06:44

    peuter on gh-pages

    Deploy to GitHub Pages: ab27628… (compare)

  • Nov 17 00:53

    github-actions[bot] on v0.12.0-dev44

    (compare)

  • Nov 16 17:32

    ChristianMayer on develop

    upgrade monaco editor to 0.30.1 Merge pull request #1091 from p… (compare)

  • Nov 16 17:32
    ChristianMayer closed #1091
  • Nov 16 16:37
    peuter labeled #1091
  • Nov 16 16:37
    peuter review_requested #1091
  • Nov 16 16:37
    peuter milestoned #1091
  • Nov 16 16:37
    peuter labeled #1091
  • Nov 16 16:37
    peuter opened #1091
  • Nov 16 00:54

    github-actions[bot] on v0.12.0-dev43

    (compare)

  • Nov 15 17:51

    peuter on gh-pages

    Deploy to GitHub Pages: 428650b… (compare)

  • Nov 15 17:45

    peuter on develop

    - fix readonly mode for json co… (compare)

  • Nov 15 15:45

    peuter on develop

    init with default (compare)

  • Nov 15 15:39

    peuter on develop

    try with params (compare)

  • Nov 15 15:22

    peuter on develop

    print event name (compare)

  • Nov 15 00:53

    github-actions[bot] on v0.12.0-dev42

    (compare)

  • Nov 14 20:19

    ChristianMayer on develop

    make manager work in readonly m… make sure that showManager is n… improve mockup filters and 4 more (compare)

  • Nov 14 20:19
    ChristianMayer closed #1089
  • Nov 14 15:05
    ChristianMayer labeled #1090
  • Nov 14 15:05
    ChristianMayer opened #1090
Christian Mayer
@ChristianMayer
Ganz komisch, jetzt scheint es zu gehen. Einziger Unterschied: die Entwicklungskonsole war jetzt offen
Christian Mayer
@ChristianMayer
Aber eine grundsätzliche Frage zu #1075: Damit kann man nun beliebigen Inhalt unter ein <custom> bringen.
Wie ist denn da genau der Use-Case?
Bei einem Plugin läuft das ja unter dem Plugin-Element und nicht unter einem Custom-Element
Tobias Bräutigam
@peuter

wenn ich auf den Editor gehe kommt der alte XML-Editor. Ich dachte der ist ganz ausgebaut?

Wo denn? Wenn das ein Link in einer veralteten Config ist, kann das sein. Der alte ist noch nicht komplett ausgebaut, weil ich den bisher immer nochmal brauchte um nachschauen zu können, wie gewisse Dinge dort funktioniert haben, bzw. für Vergleiche mit dem neuen. Mittlerweile ist das aber vermutlich nicht mehr nötig und er könnte weg.

Damit kann man nun beliebigen Inhalt unter ein <custom> bringen. Wie ist denn da genau der Use-Case?

Das ist für User-Plugins, von denen die CometVisu (und deren Schema) nichts weiß. Mit denen macht man sich ansonsten ja zwangsläufig die Config kaputt (bzw. validiert die dann nicht mehr gegen das Schema). Um das zu vermeiden kann mal solche Dinge in ein Custom-Element packen und darin schalten und walten wie man möchte.

Christian Mayer
@ChristianMayer
@peuter wie kann ich #1077 testen? Ich kenne gerade kein Problem (außer #1078) das da gelöst werden könnte, d.h. was muss ich machen um das Problem zu sehen das hier gefixt wird?
Tobias Bräutigam
@peuter
Die CometVisu muss in einem "unsafe environment" ausgeführt werden, d.h. kein https und kein localhost. Dann einfach im XML-Tree Editor bei einem Element auf kopieren klicken (das führt ohne 1077 schon zu einer Exception), den zweiten Teil des Fixes kannst Du testen indem Du eine Config im Text-Editor auf machst und einfach per Tastenkombi ein Copy&Paste versuchst. Das Paste ging vorher nicht. Und mit https / localhost sollte das Copy & Paste von Xml-Tree-Editor zum Texteditor auch gehen, d.h. im Tree-Editor ein Element kopieren und im Texteditor einfügen, dann sollte da der outerHTML Inhalt des kopierten Elements eingefügt werden.
Christian Mayer
@ChristianMayer
OK, schaue ich mir an. Wobei (mindestens) im Safe Environment (ich teste eigentlich immer per HTTPS) ein Text-Copy nicht funktioniert, ein Paste in der Textarea dagegen schon (vgl. #1078)
Christian Mayer
@ChristianMayer
Wo kann ich einstellen, dass in der Doku ein :kbd: auch "wie eine Taste" aussieht, vgl. https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/CheatSheet.html#inline-code-text-roles ?
4 replies
Christian Mayer
@ChristianMayer

@peuter bei #1079 habe ich einen Satz an Tutorials für den RPi angefangen. (Meine beiden Visu Rechner haben nach einem Update nicht mehr so gewollt wie ich wollte und habe die nun durch einen RPi 4 ersetzt. Damit ich in Zukunft wieder weiß wie man das aufsetzt hab ich's gleich mal in ein Tutorial geschrieben...)
Bitte mal (insbesondere rpi_kiosk.rst und rpi_prequesites.rst) intensiv ansehen, ob's von außen verständlich ist, auch für Anfänger / den durchschnittlichen Häusle-Bauer, der Stil passt, kein inhaltlicher Fehler drinnen ist, etc. pp.

Wenn das so passt, dann würde ich mal eine Docker Installation versuchen und beschreiben. Die brauche ich zwar nicht, aber unseren "Kunden" könnte das dann wohl gut helfen.
Evtl. mache ich, wenn dann alles stabil ist, auch noch ein paar kurze Videos zu jedem Abschnitt. Die junge Generation sucht ja nicht mehr bei Google, die sucht in YouTube :O

Tobias Bräutigam
@peuter
Ich habe mal meine Anmerkungen zu dem PR gemacht. Wirklich beurteilen, ob das für einen Anfänger passt kann ich auch nicht. Dazu bräuchte man einen wirklichen Anfänger und selbst da ist das wohl immer individuell ob jemand damit klar kommt oder nicht. Zumindest ist da aus meiner Sicht alles nötige in der richtigen Tiefe erklärt.
Christian Mayer
@ChristianMayer
OK, danke. Den wahren Test hat man eh erst in der Praxis. Aber 4-Augen hilft halt schon mal für den neutralen Blick
Tobias Bräutigam
@peuter
Ich habe gerade bei dem versuch den PR abzusegnen aus Versehen den falschen Button geklickt und den Draft Status aufgehoben. Ich finde keinen Button mit dem ich das rückgängig machen kann und ein manuelles Hinzufügen von "Draft:" zum Title scheint da nicht zu helfen. Nur zur Info, dass das keine Absicht war. Vielleicht hast Du ja die Möglichkeit das zu korrigieren.
Christian Mayer
@ChristianMayer
Kein Problem. Das mit dem Draft ist ja auch ein relativ neues Feature
Tobias Bräutigam
@peuter
Habs gerade selbst gefunden, war aber auch nicht sonderlich prominent dargestellt.
Kenne das von Gitlab, da ist das etwas besser gelöst.
Christian Mayer
@ChristianMayer
Kann es sein, dass die Doku nach einem Merge aktuell nicht mehr gebaut wird? Die Änderungen von #1079 scheinen nämlich nicht da zu sein
Tobias Bräutigam
@peuter
Ja richtig, ich hatte die Mail zum fehlgeschlagenen Job bekommen, weiß auch wie ich das fixen kann, hab es nur vergessen. Das Problem ist, dass der Hilfs-Docker-Container in dem die Screenshots erstellt werden von Zeit zu Zeit erneuert werden müsste, damit der Chrome da drin wieder eine aktuelle Version hat. Da müsste ich mal einen Cronjob erstellen, der diesen Job übernimmt (1x im Monat dürfte locker reichen). Ich hab das bisher immer von Hand gemacht und jedesmal gedacht "da müsste ich mal einen cronjob machen" und dabei ist es bisher geblieben.
Christian Mayer
@ChristianMayer
:)
Christian Mayer
@ChristianMayer
@peuter zu #1083 : Gibt es einen Grund die ganzen ' durch " zu ersetzen?
Tobias Bräutigam
@peuter
Hauptgrund ist, dass das bei Eslint so eingestellt ist (default) und aus meiner Sicht sieht es sauberer aus, wenn das einheitlich ist. Ist mir im Grunde egal ob ' oder ", aber wild gemischt ist "unschön".
Christian Mayer
@ChristianMayer
Klar, gemischt ist doof. Bisher ist halt ' der quasi Standard in der CV gewesen.
Mir ist es letztendlich egal was wir nehmen (das ' kam mir beim Start der Entwicklung damals irgendwie logischer vor, hab da aber keine tieferen Emotionen zu) - nur ein hin und her je nach aktueller Mondphase würde ich gerne vermeiden wollen. Das macht Code-Vergleiche über größere Versionsdifferenzen hinweg halt unschön.
Tobias Bräutigam
@peuter
Mir egal, ich kann das auch in ' ändern, dass kann eslint ja dann zum Glück automatisch umstellen.
Christian Mayer
@ChristianMayer
Wäre vielleicht besser, da würde ich erwarten, dass dann die betroffenen Zeilen der Änderung deutlich runter gehen
Tobias Bräutigam
@peuter
Ok sind jetzt single quotes, aber ich glaube weniger ist es nicht geworden.
Christian Mayer
@ChristianMayer
Da fällt dann auf wo man bisher gemischt unterwegs war ;)
Lustig, dass if ('' !== this.user) { böse ist und durch if (this.user !== '') { ersetzt wird.
Ich hatte mal gelernt, dass das eigentlich die zu bevorzugende Variante ist, da wenn die Konstante links steht ein aus versehen getipptes = statt einem == (oder gar ===) keinen versteckten Fehler erzeugt und statt dessen schon beim compilieren gefunden wird.
Tobias Bräutigam
@peuter
Diese Dinge findet der Linter auch, daher kann das dann nicht mehr aus Versehen passieren.
Christian Mayer
@ChristianMayer
Klar. Ist halt der Unterschied zwischen defensivem Programmieren und einem extra Tool das man für diesen Job braucht.
Intuitiv neige ich auch immer zu dem Variable <op> Konstante und muss mich bewusst zu dem Konstante <op> Variable zwingen.
Lustig ist halt, dass es den Linter überhaupt interessiert - und der dann dabei noch die eigentlich unsichere Variante bevorzugt
Tobias Bräutigam
@peuter
Eigentlich wollte ich den Lint-Job dazu bringen, dass der gefundene Fehler direkt als Review-Kommentar in den Pull-Request schreibt. Leider hat der keine Rechte dazu, weil die Actions des PRs im Fork ausgeführt werden und diese keine Rechte haben, Änderungen im PR des Main-Repos vorzunehmen.
Wäre schön gewesen, wenn nicht nicht erst in die Log-Ausgabe der Lint-Action schauen muss, wenn die fehlgeschlagen ist. Aber nun gut, man kann nicht alles haben. Ich denke aber damit bin ich soweit durch mit dem PR.
Christian Mayer
@ChristianMayer
ok, dann schau ich nochmal drauf
Christian Mayer
@ChristianMayer
Ich hab schon paar mal jetzt gesehen, dass Code wie if (!json.hasOwnProperty('v')) { ersetzt wird durch if (!Object.prototype.hasOwnProperty.call(json, 'v')) {
Wieso mag der das direkte hasOwnProperty nicht und bevorzugt die unübersichtlichere Konstruktion mit call?

In diesen Untiefen des JS bin nicht nicht so zu Hause, und habe den Code auch gerade nicht ausgecheckt. Aber ist bei source/class/cv/Application.js Zeile 95 / 96 die Änderung

      return new (Function.prototype.bind.apply(Client, args)); // jshint ignore:line

zu

      return new (Function.prototype.bind.apply(Client, args))(); // jshint ignore:line

wirklich neutral bzw. korrekt?

Tobias Bräutigam
@peuter
Wenn da Objekt, was da geprüft wird könnte hasOwnProperty überschrieben haben und immer true zurückgeben und somit diese Checks aushebeln. In den meisten Fällen wird das bei uns nicht relevant sein, aber das ist durchaus berechtigt und es schadet nicht wenn man sich sowas angewöhnt.
Wenn das nicht korrekt wäre, würde ja der Client nicht mehr funktionieren, dass wäre mir dann doch aufgefallen. Ich glaube in JS ist new MyClass auch dasselbe wie new MyClass().
Christian Mayer
@ChristianMayer

Optisches Thema, vgl. source/class/cv/Transform.js, Zeilen 133 - 137.
War:

      var encoding = transform in cv.Transform.registry
        ? cv.Transform.registry[transform].encode(value, parameter)
        : (basetrans in cv.Transform.registry
          ? cv.Transform.registry[basetrans].encode(value, parameter)
          : value);

Neu:

      const encoding = transform in cv.Transform.registry ?
        cv.Transform.registry[transform].encode(value, parameter) :
        (basetrans in cv.Transform.registry ?
          cv.Transform.registry[basetrans].encode(value, parameter) :
          value);

Ich finde das alte optisch deutlich übersichtlicher...

Tobias Bräutigam
@peuter
Hm, seltsam. Die alte Variante scheint der default bei Eslint zu sein. Ich hab auch keine Stelle gefunden an der das überschrieben wurde. Ich hab es jetzt nochmal explizit angegeben, damit wären wir wieder bei der alten Variante.
Tobias Bräutigam
@peuter
Da sind jetzt noch ca. 30 veränderte Dateien hinzugekommen. Das sind allerdings nur die Tests und benötigen aus meiner Sicht kein Review, wenn die ohne Fehler ausgeführt werden, dann sollte das als Review reichen.
Christian Mayer
@ChristianMayer
Bist Du mit den Änderungen durch, oder soll ich noch etwas warten?
Tobias Bräutigam
@peuter
Nein, ich bin durch.
Christian Mayer
@ChristianMayer
Also Test bevor ich mir #1084 ansehe hatte ich eine sehr leere Config mit aktuellem develop im XML Editor geöffnet. Aber da gibt's schon ein Problem:
019690 qx.ui.core.queue.Widget: Error in the 'Widget' queue:TypeError: Exception while creating child control 'icon' of widget cv.ui.manager.tree.VirtualElementItem[2939-0]: Cannot read properties of undefined (reading 'connectWidget') TypeError: Exception while creating child control 'icon' of widget cv.ui.manager.tree.VirtualElementItem[2939-0]: Cannot read properties of undefined (reading 'connectWidget')
https://timberwolf76.local/proxy/visugit/obiwan/transpiled/qx/ui/core/Widge…y/visugit/obiwan/transpiled/cv/ui/manager/tree/VirtualElementItem.js:54:46
process    @    Native.js:50
__log__P_87_7    @    Logger.js:603
error    @    Logger.js:307
self.__retries__P_218_3    @    Manager.js:111
__executeAndRescheduleOnError__P_218_5    @    Manager.js:222
flush    @    Manager.js:97
(anonymous)    @    Manager.js:68
cb    @    AnimationFrame.js:183
requestAnimationFrame (async)        
...
Im Tree steht auch gar nichts. Und ziehe ich das (+) trotzdem dort rum kommt noch:
Tree.js:879 Uncaught TypeError: target.getModel is not a function
    at wrapper.<anonymous> (Tree.js:879)
    at EventHandler.js:316
    at Function.series (Utils.js:332)
    at EventHandler.js:314
    at Function.then (Utils.js:159)
    at wrapper._dispatchEvent (EventHandler.js:313)
    at AbstractBubbling.js:238
    at Function.series (Utils.js:332)
    at AbstractBubbling.js:223
    at Function.series (Utils.js:332)
    at AbstractBubbling.js:220
    at Function.then (Utils.js:159)
    at wrapper.dispatchEvent (AbstractBubbling.js:215)
    at wrapper.dispatchEvent (Manager.js:975)
    at Object.dispatchEvent (Registration.js:272)
    at wrapper.__fireEvent__P_213_17 (DragDrop.js:488)
Meine komplette Test-Config die ich dafür geöffnet habe ist:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lib_version="9" design="pure" xsi:noNamespaceSchemaLocation="../visu_config.xsd">
  <meta>
    <plugins/>
    <mappings/>
    <stylings/>
    <statusbar>
      <status type="html"><![CDATA[
        <img src="resource/icon/comet_64_ff8000.png" alt="CometVisu" /> by <a href="https://www.cometvisu.org/">CometVisu.org</a>
          - <a href="manager.php">Config-Manager</a>
          - <a href=".?forceReload=true">Reload</a>
 ]]>
      </status>
      <status type="html" condition="!edit" hrefextend="config"><![CDATA[
        - <a href="editor/">Edit</a>
 ]]>
      </status>
      <status type="html" condition="edit" hrefextend="config"><![CDATA[
        - <a href=".">normal Mode</a>
 ]]>
      </status>
      <status type="html"><![CDATA[
        - <a href="?config=demo">Widget Demo</a>
 ]]>
      </status>
      <status type="html" hrefextend="config"><![CDATA[
        - <a href="check_config.php">Check Config</a>
 ]]>
      </status>
    </statusbar>
  </meta>
  <page name="StartXXöX"/>
</pages>
Tobias Bräutigam
@peuter
Hm seltsam, so ganz erklären kann ich ich es nicht (warum das sonst funktioniert). Hab den Fix mal mit in dem PR gepackt und dazu noch einen Fix für PHP 7.4 Kompatibilität, den ich auch schon mal gemacht hatte, der aber scheinbar irgendwie verloren gegangen ist.
Christian Mayer
@ChristianMayer
@peuter spricht was dagegen auf ES7 zu gehen (JSHint: 'Exponentiation operator' is only available in ES7 (use 'esversion: 7').(W119))?
Dann könnte ich den Exponential-Operator ** Nutzen ohne angemeckert zu werden...
Christian Mayer
@ChristianMayer
@peuter und noch eine andere Frage: kann man die Demo-Seite (https://www.cometvisu.org/CometVisu/de/develop/demo/#id_) befähigen den neuen Editor anzuzeigen? (Scheitert daran, dass gar keine Dateien angezeigt werden; außerdem scheint die Version schon etwas alt zu sein)
Tobias Bräutigam
@peuter
Schalt mal jshint ab und eslint ein. Da benutzen wir "ecmaVersion": 2017 was laut Doku = 8 ist also sogar noch eine Nummer neuer als ES7. Vermutlich sollten wir mal die .jshintrclöschen, dass hab ich wohl bei der lint-Pull-Request vergessen.
Tobias Bräutigam
@peuter
Bei der Demo fehlt ja das Backend, daher wird das immer schwierig da einen voll funktionsfähigen Editor zur Verfügung zu stellen. Alle Editoren können da nur Read-Only funktionieren und dann müsste man trotzdem die gesamte Backend-Kommunikation faken. Alles machbar, ist aber Fleißarbeit.
Tobias Bräutigam
@peuter
Die Demo wird zusammen mit der Doku erzeugt (aus historischen Gründen), liegt ja beides auf den Github-Pages. Mit der Umstellung auf Github Actions wird die Doku nur noch erzeigt, wenn es auch Änderungen daran gegeben hat. Das hat es wohl länger nicht, daher ist die Demo auch nicht mehr auf dem aktuellsten Stand. Ist wohl schlauer das zu trennen. Das birgt aber wieder die Gefahr von Konflikten wenn zwei CI-Jobs gleichzeitig Änderungen an den GH-Pages vornehmen.