Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addon: Tooltips #81

Merged
merged 7 commits into from
May 1, 2023
Merged

Addon: Tooltips #81

merged 7 commits into from
May 1, 2023

Conversation

fenglisch
Copy link
Collaborator

Auf Nutzer:innen-Feedback hin habe ich dieses kleine Addon erstellt, um zur Nutzung des "Doppelt gewichten"-Button anzuregen. Teilweise ist den Nutzer:innen nicht klar, was der bringt und dass sie den anklicken müssen, bevor sie ihre eigentliche Antwort auswählen.

Auf Nutzer:innen-Feedback hin habe ich dieses kleine Addon erstellt, um zur Nutzung des "Doppelt gewichten"-Button anzuregen. Teilweise ist den Nutzer:innen nicht klar, was der bringt und dass sie den anklicken müssen, bevor sie ihre eigentliche Antwort auswählen.
@msteudtn
Copy link
Owner

msteudtn commented Feb 7, 2023

Der Firefox in meiner Linux-Test-VM erzeugt keinen Tooltip. Der Chromium-Browser fügt aber alles ins DOM ein und zeigt es an.

Ich vermute, dass das Problem um die Zeile 60 bei votingDoubleTooltip.append(votingDoubleTooltipText, closeTooltip) liegt. Vielleicht hat Firefox ein Problem mit append() aber es könnte auch etwas anderes sein.

... oder ich habe ein paar seltsame Einstellungen bei mir und bei dir funktioniert alles. :)

Ich habe keine Tests auf mobilen Geräten gemacht.

Abgesehen davon: Gute Idee und Umsetzung! 👍 :)

@msteudtn
Copy link
Owner

msteudtn commented Feb 7, 2023

Nachtrag: Solange #82 noch nicht umgesetzt ist, wäre ein Tooltip auf einen der beiden unteren Buttons am Ende auch noch eine nützliche Ergänzung.

... Das muss nicht gleich in der ersten Version drin sein, sondern reicht sicherlich auch später. :)

Davor wurde Bubbling nur beim X-Button, also beim Schließen, verhindert, nicht beim Klicken auf einen anderen Teil des Tooltips. Dadurch könnte versehentlich der Doppelt Gewichten Button ausgelöst werden
Um Browser-Support zu gewährleisten (#81 (comment))
@fenglisch
Copy link
Collaborator Author

fenglisch commented Feb 7, 2023

An das ganze Thema Browser-Support muss ich mich noch gewöhnen 🙈
Danke für das Feedback!
Ich habe node.append einfach durch zweimal node.appendChild ersetzt (e95ddf4) :-)

@msteudtn
Copy link
Owner

msteudtn commented Feb 8, 2023

Korrektur: Es lag nicht am appendChild() sondern daran, dass in der /system/output.js (Zeile 30) der Inhalt von #votingDouble überschrieben wurde nachdem das Addon seinen Inhalt eingefügt hat. Chromium hat wohl die Daten in anderer Reihenfolge geladen.

Um das zu lösen, habe ich nach dem Eventlistener (load) noch einen Eventlistener (click) auf den "Los geht's"-Startbutton gelegt. Das ist keine optimale Lösung aber es erfüllt seinen Zweck.

window.addEventListener("load", () => {
	
  const elButtonStart = document.getElementById("descriptionButtonStart");
  elButtonStart.addEventListener("click", () => {
		
    // Erzeuge den Tooltip und seine Inhalte
   [...]
    // Stylesheet ins DOM einfügen
    document.head.appendChild(styleSheet)
    })
})

- tooltipVotingDouble aus dem btnVotingDouble in den DIV-Container verschoben
- tooltipResultsShort und tooltipResultsByThesis ergänzt
@fenglisch
Copy link
Collaborator Author

fenglisch commented Feb 14, 2023

Korrektur: Es lag nicht am appendChild() sondern daran, dass in der /system/output.js (Zeile 30) der Inhalt von #votingDouble überschrieben wurde nachdem das Addon seinen Inhalt eingefügt hat. Chromium hat wohl die Daten in anderer Reihenfolge geladen.

Um das zu lösen, habe ich nach dem Eventlistener (load) noch einen Eventlistener (click) auf den "Los geht's"-Startbutton gelegt. Das ist keine optimale Lösung aber es erfüllt seinen Zweck.

Ah verstehe. Ja, das klingt doch nach einem sinnvollen Workaround, habe ich gleich so übernommen.

@fenglisch
Copy link
Collaborator Author

Ich hab jetzt zwei weitere Tooltips hinzugefügt. @msteudtn kannst du testen, ob das bei dir klappt?

@fenglisch fenglisch changed the title Addon: Tooltip für votingDouble-Button Addon: Tooltips Feb 14, 2023
@msteudtn
Copy link
Owner

Der Tooltip bei "Doppelt gewichten" wird bei mir angezeigt 👍 - aber ohne eine Hintergrundfarbe. Das verwirrt ein wenig, wenn in der mobilen Ansicht die Abstimmen-Buttons durchschimmern. :(

Die anderen Buttons werden nicht angezeigt. Laut Browser-Konsole kann die ID .querySelector("#resultsShortTable") in Zeile 149 nicht gefunden werden. Ich glaube, dass diese Tabelle nicht standardmäßig in der INDEX.HTML drin ist, sondern erst später zusammen mit den Ergebnissen aufgebaut wird.

In den anderen Addons habe ich deshalb den MutationObserver() auf eine inhaltliche Änderung von #resultsHeading gelegt. z.B. in https://github.com/msteudtn/Mat-O-Wahl/blob/master/extras/addon_show_first_results.js

	resultsHeadingContent = $("#resultsHeading").text()
	if (!resultsHeadingContent) {
		// nix. Noch keine Ergebnisse im DIV
	}
	else {
		// der eigentliche Code oder eine neue Funktion
		}
	} // end: else

* Ändere default Wert von `TOOLTIP_BACKGROUND_COLOR` zu `var(--info)` (Bootstrap-Variable)
* Korrigiere if expression in Zeile 224
* Erzeuge Variable `TOOLTIP_RESULTS_BY_THESIS_QUESTION_NUMBER`, die bestimmt, bei welcher Frage der Tooltip angezeigt werden soll
@fenglisch
Copy link
Collaborator Author

fenglisch commented Feb 15, 2023

Der Tooltip bei "Doppelt gewichten" wird bei mir angezeigt 👍 - aber ohne eine Hintergrundfarbe. Das verwirrt ein wenig, wenn in der mobilen Ansicht die Abstimmen-Buttons durchschimmern. :(

Ja, dafür muss oben die Variable const TOOLTIP_BACKGROUND_COLOR definiert sein. Bei uns habe ich das auf var(--secondary-color) eingestellt, aber die Variable gibt es ja in Bootstrap nicht (weshalb ich sie so genannt habe). Habe das jetzt zu var(--info) geändert, aber ist ja eh nur ein default. Wenn wir in den Stylesheets eigene Variablen einführen, können wir davon eine nehmen.

Die anderen Buttons werden nicht angezeigt. Laut Browser-Konsole kann die ID .querySelector("#resultsShortTable") in Zeile 149 nicht gefunden werden. Ich glaube, dass diese Tabelle nicht standardmäßig in der INDEX.HTML drin ist, sondern erst später zusammen mit den Ergebnissen aufgebaut wird.

Der MutationObserver bezieht sich ja auf document.querySelector("#resultsHeading"), das schon von Anfang an im DOM ist.

Der TOOLTIP_RESULTS_SHORT setzt aber voraus, dass die resultsByPartyAnswers innerhalb der resultsShortTable angezeigt wird, was erst durch meine Änderungen an der output.js der Fall ist (s. #82 (comment)). Das hatte ich vergessen. Theoretisch könnte ich das Addon nochmal umbauen, aber ich fände es ohnehin besser, wenn wir die Migration der resultsByPartyAnswers durchziehen.

Der TOOLTIP_RESULTS_BY_THESIS kann auch nicht funktionieren, sehe ich gerade. Er sucht nach #resultsByThesisQuestion${i}, aber das ist eine ID, die ich offenbar vor einiger Zeit mal zu Hilfszwecken selbst eingebaut habe, zur <div class="col col-10" role="cell"> 🙈

Also vermutlich ergibt das Addon erst nach einem Update der output.js Sinn

- Kommentare am Ende der Klammern
- "previousSibling()" wieder zurück auf "previousElementSibling()" zurück gesetzt. So funktioniert es in der `#resultsbyThesisTable`. 
- Noch kein Test mit Ergebnissen direkt in `#resultsShort` möglich
@msteudtn msteudtn merged commit e7e33d6 into master May 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants