Meshviewer v11.0.0

Hallo,

Meshviewer v11.0.0 release istbald fertig. Dokumentation wurde aktualisiert.

  • [!!!][TASK] Router hash form # to #! (indezierbar)

  • [TASK] Inject title in metatags (and title) - (less hardcoded)

  • [TASK] Add optional fullscreen mode (Entweder immer verfügbar oder nur als iframe embed - via config)

  • [TASK] Domain code adjustments [noch fehlend]

  • [TASK] GeoJSON support - erlaubt einzeichnen von Elementen in die Karte

  • [TASK] Night mode color adjustments

  • [TASK] NodeJS v10 support, removed v9 support (active v6,v8,v10)

  • [TASK] Add possibility for custom links e.g. DSGVO
    image

  • [TASK] Add OpenGraph, twitter card & Microdata + Favicon update
    image

  • [TASK] Simple offline service worker

  • [TASK] Add source/target address to link variables with fallback (babel support)

  • [TASK] Show rectangle gateway in forcegraph
    image

  • [TASK] Show offline in graph (Vermeidung von toten links)
    image

  • [TASK] Dependency updates

  • [BUGFIX] URL router can fail at high load

  • [BUGFIX] Loadavg with multiple cores in %

  • [BUGFIX] Allow negative coordinates

  • More detail in the commit history

https://doc.meshviewer.org/changelog.html

Vielen Dank an alle contributors & bitte Bug Reports auf github!
:tada::star_struck:

Code auf GitHub

Viele Gruesse
xaver

8 „Gefällt mir“

Vielen Dank für deine ganze Mühe und Arbeit damit.

Arbeitet der schon mit dem Multidomänen-Feature von Gluon 2018.1 zusammen?

1 „Gefällt mir“

Ich vermute Domaincode wurde noch nicht angepasst, da lang die Frage war, was genau geändert werden soll bzw. was mit dem site_code passiert.

Aktuelle Stand:

  • Es muss in yanic der Output meshviewer.json angepasst werden.
  • Wir werden site_code / domain_code machen
    • Es hieß das es bei Domaincode zu Überschneidungen kommen kann
    • Allgemein wurde sich leider wenig gedanken gemacht wie man das ganze gut aufbaut. Meine Idee persönlich wäre wie in Java packages de.freifunk.regensburg.stadt at.funkfeuer.wels.umland oder so. Dann wuerde ich sogar gerne die site_code weglassen. Jede Community nutzt aktuell den site_code sehr unterschiedlich - erkennt man hier ganz gut meshviewer/config.js at multiple · ffrgb/meshviewer · GitHub
  • Es wird dann ein Filter für die Kombination geben könnte auch site_code1 / domain1 site_code1 / domain2 sein. und kann gefiltert werden. Ausgabe im Node detail kann man ja seit v10 auch Anpassungen via JS machen und anderes splitten oder anzeigen.

(Ansonsten nutzten wir 2018.1 als stable release und läuft soweit)

2 „Gefällt mir“

Nach Lehrbuch ist site_code für alle abgefrühstückten »Domains« identisch und die Domain-Daten tauchen AFAICS nirgends auf. Da ist auf zuvielen Ebenen unsinnig, sodaß

Es ging darum wie dieser im Meshviewer genutzt wird. side_code gw gwv6 und domain code als filter ist unsinnig - da kann man gleich eine Readme vorschalten. Daher wird es jedenfalls nur ein Filter geben und beide werte in Kombination, da es hieß das domain code über mehrere communities hinweg nicht unique ist.

2 „Gefällt mir“

So noch paar Änderungen für v11:

  • Title wird an viel mehr stellen via gulp gesetzt (metatags, offline.html usw.) - Weniger Anpassungen nötig falls eine Anpassung gewünscht ist.
  • Fullscreenmode verfügbar (Entweder immer oder nur wenn Meshviewer via iFrame läuft - via config)

Zudem Test (Pull request aktuell) als Locationpicker in luci:

  • Idee wäre offline serviceworker auszubauen und dann die Karte auch ohne Internet aus dem Cache zu nutzten samt Map&nodes.
  • Implementiert via Message um CORS, X-Frame-Options, CSP usw zu vermeiden. und in Luci paar Zeilen Lisener Window.postMessage() - Web APIs | MDN
  • Allgemein mehr Messenger zur Verfügung zu stellen um Embed die Kommunikation zu vereinfachen (nicht nur für location).
  • Privacy Policy, Tiles usw. alles wie auf der Webseite
  • Arbeit basiert auf @tata Arbeit für eine bessere Auswahl.

Release ist aktuell nach dem domain_code Einbau geplant. Gerne können Übersetzungen aktualisiert werden oder weitere hinzugefügt usw.

2 „Gefällt mir“

Alea iacta est, wir haben v2018.1 dahingehend geändert, daß bei gluonutil_has_domains() gilt:

  • gluon_site_code enthält den site_code
  • site_code enthält den domain_code
  • domain_code enthält den domain_code

Rationale: der domain- ersetzt mit Multidomain faktisch den site-code, der site_code ist/war aber Unterscheidungsmerkmal in bisheriger Mappingsoftware: firmwareseitige Anpassung ist nötig.

Insofern wäre es schön, wenn …

… der geplante Filter hinreichend offen wäre, die Variablen frei zu benennen.

Also wie gesagt ich waere den weg mit wenigsten problemen gegangen.
Meshviewer wird nie viel machen nur die Eigenschaft für node Objekt wird anderes gefüllt und so ist es sicher unique. Beispielsweise ffrgb / ffrgb_cty oder so. In der Node kannst du das umbauen usw, Filter code ist noch nicht refactored, daher auch nicht in URL usw. Filter splittet einfach jeden wert der anderes ist als getrennte Position.

@wusel soweit ich sehe nutzt ihr eh nicht den Meshviewer von ffrgb, sondern eine alte Version.

Yepp, und es wird mal wieder Zeit für Renovierungen. Hopglass war eigentlich die Wahl, Testinstallation läuft auch schon, aber das ist ja wohl eine Sackgasse.

Also Benennung kann via Translation einbauen wie man will. Würde es eh Sektion betiteln oder so. Unabhängig von Firmware, yanic usw. Feld bleibt so, um keine unnützen Komplikationen zu verursachen.

[Offtopic]
Also yanic kann einiges, auch forward von respondd usw. Also sollte schnell testweise laufen. Meshviewer vs Hopglass frontend kann sich jeder aussuchen usw. yanic kann eh beides ausspucken. Glaube Hopglass hat auch mal mit meshviewer.json rumgespielt und anfangs auch auf multi map vertreten gewesen.
[/Offtopic]

Weitere Anpassung:

Kleiner XSS fix im Tooltip auf der Karte (ähnliches Problem auch in Hopglass und vermutlich allen anderen Versionen vorhanden)

Indexierung klappt inzwischen mit der URL-Änderung:
https://www.google.com/search?q=site%3Aregensburg.freifunk.net%2Fmeshviewer%2F

*sigh* Welchen Feenstaub habe ich übersehen, zu kaufen, welches Einhorn habe ich vergessen, zu opfern? Ich meine, ich bin https://doc.meshviewer.org/build_install.html gefolgt, aber die vierbuchstabigen Wundertools mögen mich mal wieder nicht:

ffgt@map:~$ git clone https://github.com/ffrgb/meshviewer.git fuck-1
Cloning into 'fuck-1'...
remote: Counting objects: 4739, done.
remote: Compressing objects: 100% (66/66), done.
remote: Total 4739 (delta 51), reused 71 (delta 42), pack-reused 4631
Receiving objects: 100% (4739/4739), 2.35 MiB | 2.76 MiB/s, done.
Resolving deltas: 100% (3224/3224), done.
ffgt@map:~$ cd fuck-1/
ffgt@map:~/fuck-1$ yarn
yarn install v1.9.4
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 18.91s.
ffgt@map:~/fuck-1$ gulp
[00:40:02] Using gulpfile ~/fuck-1/gulpfile.js
/usr/lib/nodejs/gulp/bin/gulp.js:132
    gulpInst.start.apply(gulpInst, toRun);
                   ^

TypeError: Cannot read property 'apply' of undefined
    at /usr/lib/nodejs/gulp/bin/gulp.js:132:20
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Function.Module.runMain (module.js:695:11)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3
ffgt@map:~/fuck-1$ nodejs --version
v8.10.0
ffgt@map:~/fuck-1$ cat /etc/issue
Ubuntu 18.04.1 LTS \n \l

Da ich den identischen Fehler mit angepaßter config.js bekomme, gehe ich davon aus, daß der Fehler entweder im aktuellen Code (commit 8bf34987442076f94ae68ddf849681760f69b4b9) liegt oder die Pakete aus Ubuntu 18.04.1 nicht passen? Die Fehlermeldung sagt mir leider nur »Computer sagt: „Nö.“« :frowning:

yarn run gulp sollte klappen. Die gulp cli von dir is vermutlich zu alt

1 „Gefällt mir“

Awesome, danke! Das tut. Das vielleicht als Default in die Anleitung packen für Leute ohne Node-Hintergrund?

Steht bisher nur klein drin:
https://doc.meshviewer.org/build_install.html#build-utilises

Das ganze zeug is etwas nervig. gulp-cli v1.irgendwas und v.2 kann gulp v3 und v4. Gulp is inzwischen auch als v4 released nach Jahren in alpha.

yarn add global gulp-cli sollte klappen, aber schaut so aus als gulp-cli bei dir das Systempaket war.

Das GeoJSON Feature ist ziemlich interessant, allerdings scheitere ich aktuell daran, die Daten dynamisch zu laden (soll ja, wenn ich den Kommentar im Github Issue richtig verstanden habe, auch funktionieren).

Ist das folgende die gemeinte Herangehensweise und wenn ja, wo ist der Fehler?

...
    'geo': [
      {
        'json': [
            function () {
              return require('helper').getJSON('https://opendata.ffggrz.de/');
            },
            {
              'type': 'FeatureCollection',
...

Allgemein - Point hat kein Style
https://leafletjs.com/reference-1.3.0.html#geojson

Es gibt noch ein Issue mitn return.
hier der Code

geo: [
      {
        json: function () {
          return require('helper').getJSON('http://localhost:3000/test.json').then(function (result) {
            return result.features ? result.features : false;
          }, function () {
            return false;
          });
        },

        option: {
          pointToLayer: function (feature, latlng) {
            return L.circleMarker(latlng, {
              radius: 8,
              fillColor: '#ff7800',
              color: '#000',
              weight: 1,
              opacity: 1,
              fillOpacity: 0.8
            }).bindTooltip(feature.properties.temperature ? 'Temperatur: ' + feature.properties.temperature.toString() + 'C' : '');
          }
        }
      }
    ]

map.js anpassung

if (config.geo) {
  [].forEach.call(config.geo, function (geo) {
    geo.json().then(function (result) {
      if (result) {
        L.geoJSON(result, geo.option).addTo(map);
      }
    });
  });
}

URL austauschen nicht vergessen (deine hatte kein CORS header)

EDIT: Werde das noch fertig einbauen, will aber zuvor noch eine Sachen testen. Zum Zeitpunkt der Implementierung hab ich mit etwas demo content genierten und eingespielt. Der weg oben ist am asyncron gescheitert und mitn promises wartet der. (function{}()) ging nicht weil die map nicht da war. so ist es der bessere weg.

Vielen Dank, ich habe es nach einigen Versuchen dann zum laufen bekommen.

Ich habe die map.js so angepasst, dass sowohl statische Einträge (wie in der aktuellen Doku), als auch Funktionen verwendet werden können (siehe Github PR #266).

Oh, ich habe deinen Edit jetzt erst gesehen … vllt ist der PR ja trotzdem nützlich. :slight_smile:

Werde es mir anschauen und überlegen was sinnvoll ist. Problem ist auch etwas die Optionen, das die alle etwas anderes arbeiten. Muss mir wie geschrieben bisschen anschauen was möglich ist. Vlt lasse ich nur funciton zu. Das ganze ist schon sehr spezifisch und function mitn return geht immer. In den meisten fällen wir man etwas basteln müssen. Das mitn Tooltip geht mit der Lösung auch sehr schön. Werde mir das auch mit den anderen Formen wie Polygon anschauen.

Den Edit hab ich gerade geschrieben, zur Zeit viel zu tun, daher nicht dazu gekommen.