2Abendsegler / GClh

GC little helper II - Some little things to make life easy (on www.geocaching.com). Powerful, configurable tool to improve and expand the geocaching pages.
GNU General Public License v2.0
59 stars 38 forks source link

[Cache Listing] New feature for the menu "copy data to clipboard" in cache listing: Addition of data to clipboard. #1365

Closed 2Abendsegler closed 4 years ago

2Abendsegler commented 4 years ago

http://geoclub.de/forum/viewtopic.php?f=117&t=81216&p=1310456#p1310456

Ist es möglich noch einen Platzhalter für "Zwischenablage leeren" und "Zwischenablage einfügen" einzubauen? Ich würde mir gerne einen GC-Code Sammler basteln, um z.B. die Liste in GSAK einzulesen.

Ruko2010 commented 4 years ago

Ich verstehe noch nicht ganz, was hier genau gewünscht ist?

2Abendsegler commented 4 years ago

Die Anforderung ist zweiteilig. Zum einen soll die Zwischenablage gecleart werden. Zum anderen soll man Werte in der Zwischenablage ergänzen.

Beispiel: Mehrere GC Codes in die Zwischenablage kopieren.

Ich könnte mir das so vorstellen dass man einen neuen Platzhalter der die Zwischenablage sichert verwendet. Dann wird der Platzhalter #GCCode# verwendet. Und als letztes wird ein neuer Platzhalter verwendet, der den gesicherten Inhalt nimmt und den aktuellen Inhalt der Zwischenanlage nimmt und gemeinsam in die Zwischenablage stellt.

Der neue userdefinierte Eintrag fürs Menü Copy to Clipboard könnte dann so aussehen:

SaveClipboard##GCCode# #AppendClipboard

Wenn ich das zweimal mit unterschiedlichen Listings mache, dann stehen in der Zwischenablage die beiden GC Codes getrennt mit blank.

Ruko2010 commented 4 years ago

Ok, ich verstehe, aber wäre das nicht an sich nur 1 neue Platzhalter? #GCCode# #CurrentClipboard#

und dann gäbe es noch zusätzlich einen Button, der die Zwischenablage leert. Aber das ist doch kein Platzhalter oder, sondern ein einfacher Button, so dass man wieder "von vorn" beginnen kann wenn man das will.

2Abendsegler commented 4 years ago

Um die Zwischenablage zu leeren könnte man auch einen Button machen, ja. Nur benötigt man das Teil ausschließlich im Rahmen einer Sammlung für die Zwischenablage. Man könnte auch darauf verzichten und einfach den ersten GC Code ganz normal anwählen und erst ab dem zweiten an die bestehende Zwischenablage dranhängen.

Ja, das wäre nur ein neuer Platzhalter den man mit verschiedenen anderen, hier eben dem GC Code, in einem eigenen Menüeintrag kombinieren kann.

2Abendsegler commented 4 years ago

Vielleicht benötigt man einen eigenen zur Sicherung der Zwischenablage, weil die Zwischenablage nach #GCCode# schon geleert ist. Das muss man sehen wie man es macht, über einen Platzhalter oder übers Program immer sichern.

Herr-Ma commented 4 years ago

Wie wäre es denn, wenn man in die bisherigen Platzhalter einfach ergänzt? D.h.

GCCode# heißt GC-Code ins Clipboard einfügen

+GCCode# heißt Clipboardinhalt um GC-Gode (in neuer Zeile) ergänzen

Herr-Ma commented 4 years ago

...oder aber einen Schalter, den man über das Menü Toggeln kann. Ist er aktiviert, dann wird alles angewählte zustätzlich hinzugefügt. Ist er nicht aktiv, dann wird wie bisher "normal kopiert". Man müsste dazu allerdings den Schalterzustand in der Config speichern und im Popup einen Eintrag mit Toggle-Möglichkeit incl. Kennzeichnung hinzufügen.

Vorteil: keine zwei Einträge für "hinzufügen" und "Ergänzen" für GCCode, GCNamen, .... Nachteil: deutlich höherer Entwicklungsaufwand

2Abendsegler commented 4 years ago

Moin,

ja, ein einziger Menüeintrag für "hinzufügen" und "Ergänzen" wäre schon die richtig nette Lösung, hast schon recht.

Man könnte hinter den Haupteintrag ein Mülltonnen Icon setzen zum Clearen der Zwischenablage, hatte Ruko2010 schon vorgeschlagen. Mit title "Clear Clipboard".

Anstatt per Button/Icon im Haupteintrag zu Toggeln könnte man je ein Icon in den Menüzeilen vorsehen, vielleicht als Plus-Zeichen, das alternativ in die Zwischenablage ergänzt. Mit entsprechenden title müsste man dann noch kurz beschreiben was nun wo zu machen ist. Für die Menüzeilen "Copy ... to Clipboard" oder richtiger "Clear Clipboard and copy ... to Clipboard". Und fürs Icon hinter den Menüzeilen "Append ... to Clipboard" oder so ähnlich. An den titles müßte man vielleicht noch etwas feilen.

Vielleicht müsste man den Haupteintrag "Copy to Clipboard" noch anpassen, also irgendwas was "hinzufügen" und "Ergänzen" beinhaltet.

Also etwa so ... fup

Problematisch scheint mir im Moment aber, dass wir alle ziemlich faul sind, mich eingeschlossen 😁

Herr-Ma commented 4 years ago

Mir kommt da gerade ein andere Gedanke: Wie wäre es denn, wenn wir einfach sagen:

Mausklick = copy to clipboard Mausklick + Ctrl (oder Shift oder Alt oder was auch immer) = append zu clipboard

Wäre dann auch bestimmt einfach umzusetzen, da kein Eingriff ins UI erfolgen muss. Und fürs Leeren des Clipboards finden wir schon was...

PS: Ja, ich bin derzeit auch faul ;-)

2Abendsegler commented 4 years ago

Mausklick = copy to clipboard Mausklick + Ctrl (oder Shift oder Alt oder was auch immer) = append zu clipboard

Das ist auch nicht schlecht und vermutlich einfacher. Das muss man dem gemeinen User aber auch erklären, über title oder so.

@Ruko2010 , @capoaira: Was meint ihr?

capoaira commented 4 years ago

Ich nutze diese Funktion so gut wie nie, aber am schönsten fände ich diese Lösung:

Vielleicht müsste man den Haupteintrag "Copy to Clipboard" noch anpassen, also irgendwas was "hinzufügen" und "Ergänzen" beinhaltet.

Also etwa so ... fup


Strg + Click ist auch eine gute Idee, aber das müsste aber erklärt werden und ich weiß nicht, wie viele sich so etwas durchlesen. Bevor ich hier selber mitgemacht habe, hatte ich auch einfach auf weiter geklickt und fertig... Ich denke, das die Funktion so von niemandem bemerkt wird.

Ruko2010 commented 4 years ago

Mir geht es genau wie @capoaira Das mit Ctrl find ich unschön, da man das erst erklären muss und das nicht sofort erkennbar ist, dass es da zwei Funktionen gibt. Mir gefällt das mit dem Plus hinten dran am besten.

2Abendsegler commented 4 years ago

@capoaira, @Herr-Ma, @Ruko2010: Könnt ihr bitte testen ob ihr damit klar kommt und die Beschreibung verständlich ist? Danke.

Hier geht es zur Version mit den Änderungen. Hier geht es zu den neuen Parametern 'Activate adding to existing Clipboard' und 'Separator between addings' im Config. Hier geht es zurück zur aktuellen Version.

Herr-Ma commented 4 years ago

Hallo zusammen,

bei mir stellt es sich wie folgt dar (eingestellter Seperator = ——):

Listing 1 (Bahnradweg #1) öffnen, Listing 2 (Ach du dickes Ei) in zweitem Tab öffnen:

  1. Cachename in Listing 1 mit Rest kopieren:

Inhalt Zwischenablage: Bahnradweg #1

  1. In zweiten Tab wechseln, Name mit Add-Funktion kopieren

Inhalt Zwischenablage: Der Natur auf der Spur - Original oder im Spiegel?----- GC8NH54----- Ach du dickes Ei

Äh…wo kommt das denn jetzt her? Ich habe mit anderen Listings vor dem Kommentar hier getestet, da war was davon in der Ablage

Hab ich die Funktion falsch verstanden? Ich hatte das so verstanden, das man in verschiedenen Listings Infos sammeln kann. Bei mir stellt es sich im Moment so dar, dass ich für jedes Listing eine eigene Zwischenablage habe, die intern gespeichert wird, aber nicht direkt mit der Zwischenablage des Systems etwas zu tun hat. Ich teste auf einem Mac mit FF 79.0...

LG, Marcus aka Herr Ma

2Abendsegler commented 4 years ago

@Herr-Ma: Danke für die Rückmeldung.

Du hast die Funktion nicht falsch verstanden. Optimal wäre es wenn man die Zwischenablage des Systems auslesen könnte, um dann dort etwas hinzuzufügen. Die Zwischenablage des Systems kann ich aber nicht auslesen, ein solches Feature wird nicht von allen Browsern unterstützt, und ich habe es auch für Firefox schon nicht zum Laufen gebracht.

Das Add Feature funktioniert im Moment so wie der GClh Config. Wenn man zwei Tabs öffnet und dann in jedem Tab die Daten des GClh Configs speichert, dann überschreibt das letzte Speichern das erste.

Für das neue Feature bedeutet das, dass ein neuer Tab erst dann geöffnet werden darf, wenn das Clipboard durch den ersten Tab befüllt wurde. Dann wird also der Inhalt des Clipboards auch zum neuen Tab weitergereicht, eben so wie auch die Daten im GClh Config.

Die Restriktionen sind auch beschrieben im "?" hinter dem Parameter Activate adding to existing Clipboard. Ist aber völlig in Ordnung, dass du es nicht gelesen hast, oder mein Englisch dort gegebenenfalls nicht verständlich war. Ich wollte ja sehen, ob man klar kommt bei einer gewöhnlichen Vorgehensweise. Das Ergebnis ist nun klar ... 😕

Ich bau das Feature zurück und überlege noch mal, wie das Auslesen der Zwischenablage des Systems bewerkstelligt werden kann, zumindest für diejenigen Browser, die das unterstützen. Für die anderen Browser würde das Feature dann gar nicht unterstützt werden.

@capoaira, @Ruko2010: Ein Testen ist im Moment nicht mehr notwendig. Ich bau das Feature zurück.

2Abendsegler commented 4 years ago

@Herr-Ma: Noch eine Ergänzung. Wenn du mit einer Sammlung im Clipboard beginnen möchtest, dann musst du als erstes das Feature "Copy to Clipboard" nutzen, weil dort zuerst ein Reset gemacht wird. Alle folgenden Aktionen kannst du dann mit "Add to Clipboard" machen.

Das scheint auch nicht ganz klar geworden zu sein. 🙄

Herr-Ma commented 4 years ago

Hallo Frank,

Sorry, ich wollte dich nicht entmutigen. Ich muss auch zugeben, dass ich vor Wochen auch schon damit rumgespielt habe, bin aber auch gnadenlos an der mangelnden Unterstützung des Clipboards gescheitert - das Lesen daraus wollte einfach nicht funktionieren...

LG, Marcus aka Herr Ma

2Abendsegler commented 4 years ago

Hey Marcus, kein Problem ... 😊 LG Frank

2Abendsegler commented 4 years ago

Das Auslesen der Zwischenablage über document.execCommand('paste') ist wegen Sicherheitsbedenken in keinem aktuellen Browser mehr möglich. Die meisten Browser verfügen aber über eine asynchrone Clipboard API, mit der man nach Genehmigung durch den Anwender, die Zwischenablage auslesen kann. (Weiterführende Informationen)

Das Einholen einer solchen vom Browser generierten Genehmigung empfinde ich für ein Tool wie den GClh nicht mehr als angemessen. Ich würde eine solche Anfrage vermutlich nicht genehmigen. Oder ich wäre zumindest verunsichert, warum hier eine Genehmigung eingeholt werden muss. So etwas brauchen wir meines Erachtens nicht.

Großartige Verbesserungen wollen mir im Moment nicht mehr einfallen.

Ich habe nochmal einen PR mit der Erweiterung aufgemacht, falls es sich noch jemand ansehen möchte. Vielleicht hat ja noch jemand ne Idee. 😊


Hier noch ein Überblick in Bildern:

Unbenannt1

Unbenannt2

Unbenannt3

capoaira commented 4 years ago

Wäre es nicht eine Möglichkeit eine eigene Zwischenablage zu basteln. Also eine Variabel, die sich immer das kopierte merkt und wenn etwas hinzugefügt wird, wird der Text erweitert und der neue Text dem clipboard hinzugefügt.

2Abendsegler commented 4 years ago

Das habe ich quasi gemacht.

Das Problem besteht aber darin dass der Config Inhalt durch Tampermonkey verwaltet wird und nur beim Laden einer Seite einmal zur Verfügung gestellt wird. Wenn ich also beispielsweise zwei GC Seiten anwähle und jeweils dort einen Add ins Clipboard mache, dann weiß die eine Seite nicht was die andere gemacht hat. Genau das Gleiche passiert auch beim Speichern des Config aus zwei Seiten heraus. Hier überschreibt das letzte Speichern dann das erste.

Machbar wäre es aber in der Art wie du es mittlerweile beim Dashboard machst. Wir könnten intern nochmal eine Seite aufrufen um uns den aktuellen Inhalt des eigenen Clipboards zu holen. Das würde aber bedeuten, dass wir das bei jedem Click zum Clipboard machen müssten.

Eine Variable außerhalb von Tampermonkey sollten wir nicht in Erwägung ziehen.

capoaira commented 4 years ago

Stimmt, daran habe ich nicht gedacht. Bei jedem klick eine Seite laden ist aber auch nicht wirklich das Wahre...

Herr-Ma commented 4 years ago

Die Frage die sich mir dabei stellt: lohnt der Aufwand für eine Funktion, die höchstwahrscheinlich so gut wie gar nicht genutzt wird?

Wenn bei uns in der Firma der Service "schreit", dass die Kunden unbedingt noch die Funktion xy brauchen, dann fragen wir aus der Entwicklungsabteilung immer nach, um wieviel Kunden es sich eigentlich handelt. Meistens kommt dann so etwas wie "drei". Bei mehr als 10000 Anwendern lehnen wir solchen Anfragen dann meistens ab...

Btw.: wie macht das eigentlich GC-Tour? Die aktuelle Tour ist immer auf jeder Seite in jedem Tab aktuell. Wenn ich zwei Tabs offen habe und in Tab A einen Cache hinzufüge, in Tab B wechsele und mir die Tour angucke, ist der Cache aus Tab A drin. Das wird also ständig irgendwie aktualisiert

2Abendsegler commented 4 years ago

Die Frage die sich mir dabei stellt: lohnt der Aufwand für eine Funktion, die höchstwahrscheinlich so gut wie gar nicht genutzt wird? Wenn bei uns in der Firma der Service "schreit", dass die Kunden unbedingt noch die Funktion xy brauchen, dann fragen wir aus der Entwicklungsabteilung immer nach, um wieviel Kunden es sich eigentlich handelt. Meistens kommt dann so etwas wie "drei". Bei mehr als 10000 Anwendern lehnen wir solchen Anfragen dann meistens ab...

Ja, hatten wir auch so gehandhabt. Manchmal war es halt ein besonderer Kunde, dann gabs auch mal ne Ausnahme. Es hat mich nur genervt, dass wir mit so vielem nicht mehr klar kommen wegen dem ganzen asynchronen Mist und anderen Dingen. Ich wollts halt mit der Brechstange.

Btw.: wie macht das eigentlich GC-Tour? Die aktuelle Tour ist immer auf jeder Seite in jedem Tab aktuell. Wenn ich zwei Tabs offen habe und in Tab A einen Cache hinzufüge, in Tab B wechsele und mir die Tour angucke, ist der Cache aus Tab A drin. Das wird also ständig irgendwie aktualisiert

Boah eh, du hast ja recht. Der Entwickler von GC Tour ist ja auch kein Laie wie ich. Ich werde mal nachfragen ...

2Abendsegler commented 4 years ago

Moin @DieBatzen, kannst du uns einen Tipp geben wie du es in GC Tour bewerkstelligst, dass beispielsweise die Caches in einer Tour in allen Browser Tabs aktuell sind? Wenn man also in dem einen Browser Tab einen Cache zur Tour hinzufügt und in den anderen Browser Tab wechselt, dann sieht man auch dort den neuen Cache in der Tour. Wenn du in etwa weißt wo das im Script gemacht wird dann wäre das natürlich auch super. Danke schon mal. 😄

DieBatzen commented 4 years ago

Hallo Frank,

der Trigger ist ein Focus-Event: $(window).on('focus', function() { updateTour(); }); Bei jedem Tabwechsel wird das Event ausgelöst und die Tour aktualisiert. Die aktuellen Tourdaten kommen aus dem Tampermonkey-Speicher, dadurch sind sie in jedem Tab stets aktuell.

Das müsste hier ebenfalls klappen, sollte sogar ohne Fokus-Event möglich sein:

function copydata_copy(thisObject) {
...

let sep = ','; // separator for clipboard entries
let clip = GM_getValue('clipBoard',''); // get GCLH clipboard
if (clip !== '') el.value = clip + sep + el.value; // append value to GCLH clipboard
GM_setValue('clipBoard',el.value); // save updated GCLH clipboard

...
}

Ich habe das mal prototypisch in den aktuellen Collector eingebaut: https://github.com/DieBatzen/GClh/blob/%231365-Addition-of-data-to-clipboard/gc_little_helper_II.user.js Sieht recht vielversprechend aus ...

Da der Tampermonkey-Speicher über Browsersessions hinweg erhalten bleibt, bräuchte es noch einen "Clear (GCLH) Clipboard" Knopf.

Ich hoffe, das hilft euch weiter.

Gruß, Thomas

2Abendsegler commented 4 years ago

Hey Thomas,

das ist super, vielen Dank!

Ich war davon überzeugt der Tampermonkey Speicher wäre tababhängig, wie auch immer ich darauf komme und hinterfragt hab ichs auch nicht ... tse 🙄

Klar, hilft das. 😃 LG Frank

2Abendsegler commented 4 years ago

Nur zur Info:

Es ist tatsächlich so, dass wir zu Beginn des Scripts die Konfiguration in CONFIG laden. Danach beziehen wir uns ausschließlich auf diese Werte. Änderungen aus einem anderen Browser Tab finden hier also keine Berücksichtigung mehr. Damit werden auch gegebenenfalls Änderungen an der Konfiguration aus einem anderen Browser Tab mit Speichern des aktuellen Browser Tabs überschrieben. Das Ganze sieht von außerhalb dann so aus, als ob der Tampermonkey Speicher tababhängig wäre.

Diese Verfahrensweise macht für eine Konfiguration auch Sinn, weil sich die Konfiguration nicht während den Interaktionen auf einer Seite ändern darf. Entsprechend darf man auch nur die verwendete Konfiguration beim Aufruf des Config anzeigen und nicht die, die gegebenenfalls durch einen anderen Browser Tab bereits im Tampermonkey Speicher geändert wurde.

Das Überschreiben der Konfiguration ist nicht optimal, hier aber notwendig. Das lassen wir also unverändert.

Unsere Clipboard Daten dürfen nicht zu Beginn des Scripts geladen werden, sondern immer dann, wenn sich etwas am Inhalt des Clipboards ändern soll.

Fazit: Die Konfiguration wird tababhängig verarbeitet. Das Clipboard nicht.

(Mir waren diese Auswirkungen in letzter Konsequenz nicht bewusst. Womöglich geht es anderen genauso, deshalb die Info.)

2Abendsegler commented 4 years ago

Die Anpassungen stehen nun zur Verfügung. Wenn ihr noch mal bei Gelegenheit testen wollt ... . 😬

Ein Icon zum Clearen des Clipboards gibt es nicht. Das bisherige Copy kam ja auch ohne ein Clearen aus, weil beim Copy ja ein Clearen vorausgeht. Möchte man also mit einer Sammlung beginnen, macht man zuerst ein Copy und anschließend die Adds.

Hier geht es zur Version mit den Änderungen. Hier geht es zum Parameter 'Show edit links for your own logs' im Config, der aktiviert sein muss. Hier geht es zurück zur aktuellen Version.

Noch mal danke lieber Thomas.

Herr-Ma commented 4 years ago

Komme leider erst am Montag zum Testen... :-(

Herr-Ma commented 4 years ago

So....

Funktioniert im Grunde genommen genau so, wie man es sich vorstellt. Das switchen zwischen Tabs macht auch keinen Unterschied - perfekt!

Das Einzige, was eventuell stören könnte (falls es überhaupt jemanden auffällt, der diese Funktion nutzt) ist eben, dass beim Start nicht das Original-Clipboard, sondern das eigene genutzt wird. D.h. wenn jemand sich z.B. aus einem Text-Editor einen Text in die Zwischenablage kopiert und dann anfängt einzelne Infos via "add" zu sammeln, dann fehlt natürlich der am Anfang manuell kopierte Text. Aber dass das so ist, hast du ja schon geschrieben ("Möchte man also mit einer Sammlung beginnen, macht man zuerst ein Copy und anschließend die Adds.").

Von meiner Seite komplett ok so!

2Abendsegler commented 4 years ago

Danke für die Rückmeldung!

capoaira commented 4 years ago

Auch bei mir klappt es ohne Probleme

2Abendsegler commented 4 years ago

Danke, dann lassen wir es mal auf Alle los. 😃