Keine Tortendiagramme sichtbar

Hmm, ich stehe mal wieder auf der Leitung.

Verstehe ich es richtig, dass du diese Lösung noch am ausarbeiten bist?

Verstehe ich es richtig, dass du diese Lösung noch am ausarbeiten bist?

Genau so sieht es aus. Wenn ich die Zeit finde (leider ist mein Urlaub gerade vorbei), dann werde ich mal schauen, ob ich da was beisteuern kann.

4 Likes

Ich habe mal gestöbert, da ich mich mit diesen Dingen null auskenne.
Dabei bin ich auf Swing und JFace gestoßen

wenn nicht vorhanden – emuliert werden müssen (z. B. Z-Ordnung auf GTK+). Zudem sind die SWT-Bibliotheken nicht standardmäßig auf dem ausführenden System verfügbar und müssen mit der Anwendung ausgeliefert werden, während Swing Bestandteil der Java-Laufzeitumgebung (Java Runtime Environment, JRE) ist

…Das GUI-Toolkit JFace setzt aus den von SWT gelieferten Basiskomponenten komplexere Widgets zusammen und stellt eine Abstraktionsschicht (Viewer) für den Zugriff auf die Komponenten bereit. JFace erleichtert die Entwicklung von Desktop-Anwendungen auf SWT-Basis erheblich.

Bedeutet aber vermutlich jede Menge Programmierarbeit und totales Umbauen von PP?

Ist halt auch immer so eine Sache, eine Software für Win und Linux zu schreiben. Wobei Linux tendenziell einfacher sein sollte, da ja open source?

Jedenfalls meine Hochachtung an alle, die sich aktiv beteiligen PP noch besser zu machen als es eh schon ist!

Ich versuche hier auch mal mein Glück. Mein größtes Problem ist hier allerdings Eclipse und der ganze quatsch. Mein täglich Butter-Brot ist python und c. Darum scheitere ich leider schrecklich an dem ganzen Buildkrams den es hier gibt…(launchconfigurations??? run as???..)

Ich würde fast wetten, das Problem liegt in:

    public void notifyModelUpdated()
    {
        Client filteredClient = clientFilter.getSelectedFilter().filter(getClient());
        setToContext(UIConstants.Context.FILTERED_CLIENT, filteredClient);
        snapshot = ClientSnapshot.create(filteredClient, converter, LocalDate.now());

        browser.refresh();
        updateWarningInToolBar();

        setInformationPaneInput(null);
    }

von HoldingsPieCHartView.java

Methode. Da die charts initial gerendert werden scheint:

    @Override
    protected Control createBody(Composite parent)
    {
        browser = make(EmbeddedBrowser.class);
        browser.setHtmlpage("/META-INF/html/pie.html"); //$NON-NLS-1$
        updateWarningInToolBar();
        return browser.createControl(parent, LoadDataFunction::new,
                        b -> new ItemSelectedFunction(b, uuid -> snapshot.getAssetPositions()
                                        .filter(p -> uuid.equals(p.getInvestmentVehicle().getUUID())).findAny()
                                        .ifPresent(p -> setInformationPaneInput(p.getInvestmentVehicle()))));
    }

ja zu funktionieren.

Wenn ich es schaffen würde den debugger ans laufen zu bekommen, dann würde ich wetten, dass nach dem:

        browser.refresh();

call, der wiederum:

    public void refresh()
    {
        browser.setText(loadHTML(htmlpage));
    }

aufruft nix mehr geht. Wahrscheinlich muss hier vorher noch so was wie ein clear aufgerufen werden. Ohne funktionierenden Debugger natürlich nur geraten.

Okay, der debgger läuft. Alles was ich gedacht habe ist quatsch. Es hat etwas mit

    @Override
    protected Control createBody(Composite parent)
    {
        browser = make(EmbeddedBrowser.class);
        browser.setHtmlpage("/META-INF/html/pie.html"); //$NON-NLS-1$
        updateWarningInToolBar();
        return browser.createControl(parent, LoadDataFunction::new,
                        b -> new ItemSelectedFunction(b, uuid -> snapshot.getAssetPositions()
                                        .filter(p -> uuid.equals(p.getInvestmentVehicle().getUUID())).findAny()
                                        .ifPresent(p -> setInformationPaneInput(p.getInvestmentVehicle()))));
    }

    private

zu tun. Diese funktion wird zwei mal auf gerufen und beim zweiten mal gitb es die Fehlermeldungen:

SWT WebKitGDBus: there was an error executing something synchronously with the extension.
SWT WebKitGDBus: the error message is: The connection is closed
SWT webkit: failure registering BrowserFunction loadData
SWT WebKitGDBus: there was an error executing something synchronously with the extension.
SWT WebKitGDBus: the error message is: The connection is closed
SWT webkit: failure registering BrowserFunction onItemSelected

in der public final Control createControl(Composite parent, Consumer<Browser>... functions)

functions[ii].accept(browser);

geht nicht. Dabei purzelt er auf die Nase, nur was functions ist, weiß ich noch nicht. Aber dabei gibt es einen WebkitGDBus error.

536141 – [Webkit2][Gtk] BrowserFunction lost after page reload on Linux/GTK sieht für mich relevant aus

Ich vermute eclipse.platform.swt.git - Eclipse Platform SWT war/ist der commit im swt der es kaputt macht. Da wurde was am DBUS handling geändert und dadurch geht es nicht mehr so wie bisher. Nur wie man es löst, keine Ahnung.

Downgraden ist nicht wirklich eine Lösung. Für das flatpack package könnte ich das zwar machen, aber gut finde ich das eig. nicht. Lieber wäre mir, wenn wir den Browser wieder zum laufen bekommen.

4 Likes

@deisi Meiner Ansicht nach spricht einiges dafür, die Browservariante komplett zu entfernen. Alle anderen Diagramme werden mit SWTChart gerendert. Die Lib kann inzwischen auch Tortendiagramme. Das war wohl früher nicht so. Der Umbau sollte eigentlich keine großen Schwierigkeiten bereiten, es muss nur gemacht werden. Ich bin nur leider noch nicht dazu gekommen.

2 Likes

gerne, nur das übersteigt mein PP und mein Java wissen aktuell. Ich dachte ich bekomme es vielleicht mit ein bisschen Gefummel raus was es ist und kann es mit wenigen Zeilen lösen. Aber aktuell sehe ich noch nicht was genau schief geht. Dann muss ich mich wohl in Geduld üben.

I have updated the SWT libraries to the latest version. This is a current build for Linux. In case you want to test if the embedded browser mess is a little bit better.

Habe den Build 0.56.0.202110020744 (Okt. 2021) bei mir getestet. Das Verhalten hat sich jedoch nicht verändert: die Kuchengrafiken / Tortengrafiken werden nur 1x zur Anzeige gebracht. Insofern keine Fehlerbehebung bei mir feststellbar.

Linux Mint 19.3 Cinnamon v4.4.8
Linux Kernel 5.4.0-87-generic
1 Like

Leider unverändert:

:~/Downloads/portfolio$ ./PortfolioPerformance 

** (Portfolio Performance:3321): CRITICAL **: 11:37:32.614: JNI class pointer is NULL for class org/eclipse/swt/accessibility/AccessibleObject


** (Portfolio Performance:3321): CRITICAL **: 11:37:32.614: JNI class pointer is NULL for class org/eclipse/swt/accessibility/AccessibleObject

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

(Portfolio Performance:3321): Gtk-WARNING **: 11:38:11.001: Negative content width -4 (allocation 14, extents 9x9) while allocating gadget (node entry, owner GtkSearchEntry)
*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug

*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug

*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug


(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.042: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.042: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.042: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.042: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.050: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.050: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.050: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

(Portfolio Performance:3321): Gtk-CRITICAL **: 11:38:11.050: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar
SWT WebKitGDBus: there was an error executing something synchronously with the extension.
SWT WebKitGDBus: the error message is: Verbindung ist geschlossen
SWT webkit: failure registering BrowserFunction loadData
SWT WebKitGDBus: there was an error executing something synchronously with the extension.
SWT WebKitGDBus: the error message is: Verbindung ist geschlossen
SWT webkit: failure registering BrowserFunction onItemSelected

Ubuntu 20.04.3 LTS
Kernel 5.4.0-88-generic
openjdk version “11.0.11” 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

Ja, hat leider nicht gereicht. Schön wäre es gewesen :frowning:

Ich wollte heute mal probieren, einen PieChart mit SWTChart zu rendern. Leider bin ich da sehr schnell ausgebremst worden, weil Portfolio eine doch recht alte Version von 2016 verwendet. Und diese unterstützt leider diese Diagramme noch nicht. Ein Upgrade scheint wohl nicht so ohne weiteres möglich zu sein. Sonst wäre dieser Branch vermutlich schon lange gemerged worden.

Das Upgrade durchzuführen übersteigt dann leider auch meine Fähigkeiten. Dafür hab ich zu lange nichts mehr mit Java gemacht.

@AndreasB Hast du irgendwelche Pläne die Lib noch zu aktualisieren? Irgendwann wird es vermutlich eh notwendig werden…

Mir ist aufgefallen, dass die beiden SWTChart Bibliotheken auch (erst mal) nebeneinander existieren können. Warum? Beim Umzug nach Eclipse wurde der Package Name geändert.

Mit diesem Commit habe ich ein erst Implementierung gemacht. Schau mal in HoldingsPieChartView2.

Du musst in den Einstellungen einen Haken bei “use SWTChart pie charts” setzen damit die verwendet werden.

Es ist noch etwas rudimentär:

  • Keine Tooltips
  • Keine Labels
  • Pie Chart ist nicht zentriert
  • Slice kann nicht ausgewählt werden (um in der InformationPane Daten anzuzeigen)
  • Dark Mode wird nicht unterstützt

Ganz so “nackig” würde ich die nicht veröffentlichen wollen. Es wäre cool wenn Du as beitragen könntest :smile:

4 Likes

Finde ich nicht. Bei allem das mit google zu tun hat bin ich misstrauisch.
Warum geht so was nicht mit Firefox? Den haben doch auch viele Leute.

Gibt es da eine Anleitung wie man das macht, ohne ein Linuxstudium machen zu müssen?
Mit deepL kann ich zwar übersetzen lassen, aber das ist mühsam.

Eine Anleitung für einen Hacken, der über das Menü in den Einstellungen zu finden ist?

Nein, selbstverständlich nicht!
Es geht natürlich um die Implementierung.

Ok, das sollte bereits in der aktuellen Version implementiert sein.

Danke, Und wie aktiviert man das?

Bei mir funktionieren die Anzeigen der Bestände (Tortendiagramme) nicht. Treilweise nicht mal beim 1. Aufruf.

2 Likes

Danke, ich bin erleichtert. Im Link sah das alles so kompliziert aus.

PP ist einfach klasse!! (Du auch :wink: )