Conversation
Add index to String.format-Parameter
|
Hi Michael, wow, da hast du uns aber überrascht! Reife Leistung! Ohne da jetzt schon tief in den Code einzusteigen haben wir das mal kurz im Team besprochen. Erste Gedanken:
Viele Grüße |
|
Hallo Raphael,
Ich werde in den nächsten Tage versuchen die Vorschläge umzusetzen. |
There was a problem hiding this comment.
Hi Michael,
ob Zweigstellen in der Historie relevant sind, ist Geschmackssache. Da die Inhalte des HistoryItem aus dem LentItem gepflegt werden, hatte ich alle Felder von dort einfach übernommen. Man hätte ev. das HistoryItem aus dem LentItem ableiten können, aber aus irgendeinem Grund, den ich vergessen habe, habe ich das nicht gemacht
Das gilt hier nicht nur für die Zweigstellen, sondern auch für das Feld status eines AccountItem. Das macht bei einem HistoryItem nicht wirklich Sinn, denn der Status ist nicht mehr korrekt, oder zumindest nicht mehr relevant, wenn man das Buch zurückgegeben hat. Darum würde ich es in der Detailansicht eines HistoryItems nicht anzeigen.
Bei den Zweigstellen würde ich auch sagen, die zu speichern (bzw. anzuzeigen) macht nur Sinn, solange man jedes Buch nur einmal ausgeliehen hat. Sobald man etwas mehrfach ausleicht, was ja durchaus passieren kann, wird nur noch der letzte Wert gespeichert, oder? Selbst wenn man immer in der gleichen Zweigstelle ausleiht, kann es ja sein, dass das Buch von einer anderen Zweigstelle bestellt wurde (lendingBranch unterscheidet sich dann). Wenn man für jeden Entleihvorgang des selben Buchs die Zweigstellen speichert, wird die Datenstruktur wieder komplizierter - vielleicht ist es dann besser, sie wegzulassen...
Ich habe außerdem mal ein bisschen weiter getestet und noch folgende Hinweise:
- Die Strings "Beginndatum" und "Endedatum" (bzw. "Start date" und "Last date") sind nicht mehr so sinnvoll, wenn man das gleiche Medium mehrfach ausgeliehen hat. Ich habe Alternativvorschläge jeweils dran geschrieben.
- Auch die Anzeige der Leihdauer ("for ... days"), die aus Start- und Enddatum berechnet wird, stimmt wahrscheinlich nicht mehr, wenn man etwas mehrfach ausgeliehen hat (das kann ja mit einem langen Zeitabstand passieren). Hast du eine Idee, wie man das ohne viel Komplexität verbessern kann? Ansonsten sollten wir vielleicht einfach die beiden Daten anzeigen statt Startdatum und Anzahl Tage.
- Du hast die Aktualisierung der Historie momentan nur im AccountFragment implementiert. Es würde aber Sinn machen, die auch bei der Synchronisierung der Kontodaten im Hintergrund mit zu aktualisieren, das passiert in
de.geeksfactory.opacclient.reminder.SyncAccountJob. DerSyncAccountJobmuss dann auch prüfen, ob die Historiefunktion aktiviert ist, um dann zu entscheiden, ob die Kontodaten synchronisiert werden müssen oder nicht (so, wie es das jetzt schon für die Benachrichtigungs-Funktion macht). - Wenn die Merkliste ein Medium enthält und ich dann von der Merkliste zur Historie wechsle, stürzt die App bei mir ab:
java.lang.IllegalArgumentException: Invalid format: "Heilbronn"
at org.joda.time.format.DateTimeFormatter.parseLocalDateTime(DateTimeFormatter.java:900)
at org.joda.time.format.DateTimeFormatter.parseLocalDate(DateTimeFormatter.java:844)
at org.joda.time.LocalDate.parse(LocalDate.java:179)
at org.joda.time.LocalDate.parse(LocalDate.java:168)
at de.geeksfactory.opacclient.storage.HistoryDataSource.cursorToItem(HistoryDataSource.java:255)
at de.geeksfactory.opacclient.frontend.HistoryFragment$ItemListAdapter.bindView(HistoryFragment.java:612)
at androidx.cursoradapter.widget.CursorAdapter.getView(CursorAdapter.java:274)
Werden da irgendwie Datenbanktabellen verwechselt?
- Ist es vielleicht möglich, bei der Sortierfunktion noch eine Anzeige einzubauen, wonach momentan sortiert wird? Einfach zu dem jeweiligen Menüpunkt ein Symbol hinzufügen, das die Sortierrichtung anzeigt?
- Im Gegensatz zu Suchergebnissen (die in der Merkliste gespeichert werden) haben wir für entliehene Medien in sehr viel weniger Bibliothekssystemen die Möglichkeit, Medientyp und/oder Cover herauszufinden. Kannst du vielleicht in dem Fall, dass kein Element der Historie ein Cover oder einen Medientyp hat, die beiden Felder ausblenden und damit mehr Platz für den Titel und Autor schaffen?
- Toll wäre später noch eine Suchfunktion, die Historie kann ja sehr lang werden. Aber das muss nicht in diesem PR passieren.
- Bitte die Funktion "Reformat Code" von Android Studio benutzen, um den Code einheitlich zu formatieren. Zum Beispiel fehlen manchmal Leerzeichen links und rechts von
=.
| <string name="star_wait">Please wait for the details to load.</string> | ||
| <string name="star_unsupported">We could not obtain enough information about this item to add it to your list.</string> | ||
| <string name="starred_welcome">This is your favorites list. You can add items by clicking the star on a detail page. The list is saved separately for every library you use.</string> | ||
| <string name="history_welcome">This is your history list. You can The list is saved separately for every library you use.</string> |
There was a problem hiding this comment.
The unnecessary "You can" should probably be removed.
Maybe it makes sense to add some more explanation, e.g.: "This is lending history. It keeps a list of all items you have lent in the past. The list is saved separately for every library you use."
There was a problem hiding this comment.
Ups, das "your" aus "This is is your lending history" kann bleiben. Sorry!
| <string name="nav_history">Chronik</string> | ||
| <string name="share_history">Teilen</string> | ||
| <string name="export_history_to_storage">Exportieren</string> | ||
| <string name="history_welcome">Dies ist deine Leih-Chronik. Die Liste wird für jede Bibliothek, die du benutzt, separat geführt.</string> |
There was a problem hiding this comment.
see below, maybe add something like "Hier werden alle Medien gespeichert, die du in der Vergangenheit entliehen hast."
There was a problem hiding this comment.
"Dies ist deine Leih-Chronik" kann davor auch bleiben
opacclient/opacapp/src/main/java/de/geeksfactory/opacclient/storage/HistoryDataSource.java
Outdated
Show resolved
Hide resolved
opacclient/libopac/src/main/java/de/geeksfactory/opacclient/objects/HistoryItem.java
Outdated
Show resolved
Hide resolved
opacclient/opacapp/src/main/java/de/geeksfactory/opacclient/frontend/HistoryFragment.java
Outdated
Show resolved
Hide resolved
Macht so eine Teilen-Funktion der gesamten Historie überhaupt Sinn? Bei ausgiebiger Bibliotheksnutzung können da ja irgendwann hunderte Bücher drin stehen, die will man wahrscheinlich nicht mal so eben als endlos lange Textnachricht per Messenger versenden... 😉 Wenn, dann würde ich die eher als PDF versenden oder ausdrucken. |
|
Eine Klarstellung was meine Idee der History betrifft. Auf Grund euerer Fragen habe ich gemerkt das ihr das anders verstanden habt.
Ich denke das ist sinnvoll und vermeidet einige Probleme die ihr mir eueren Fragen angesprochen habt. |
HistoryFragment: initLoader mit id=1 (!=0 wie bei StarFragment) wg. Datenbankverwechslung bei Wechsel Favorits --> History
|
Folgende Punkte habe ich mit den heute gepushten Commits umgesetzt:
Offen ist zumindest noch
|
Update History auch aus SyncAccountJob
Ah, okay, das macht Sinn. Ich hatte zuerst intuitiv gedacht, dass es um eine Liste aller jemals ausgeliehenen Medien (d.h. ohne Dopplung bei mehrfacher Ausleihe) geht - unter anderem, weil so eine Funktion häufiger bei uns angefragt wurde. Aber die Liste aller Ausleihungen ist auch okay, häufig ist die ja identisch bzw. die Liste der ausgeliehenen Medien lässt sich leicht daraus ableiten. Dann machen natürlich einige meiner Kommentare zu den Strings oben keinen Sinn mehr, ich passe das mal an.
Das geht wohl mit drawer.getMenu().findItem(R.id.nav_history).setVisible(false) // bzw.
drawer.getMenu().findItem(R.id.nav_history).setEnabled(false)Ich weiß gerade nicht, welche der beiden Optionen mir lieber ist - zumindest müsste man aber im Fall, dass es nur deaktiviert ist, irgendwie erkennen können, wie es aktiviert werden kann.
Bin ich mir gerade auch unsicher. @raphaelm, was meinst du? PDF könnte man über die Druckfunktion von Android lösen (so wie man schon ein Suchergebnis drucken kann, siehe |
History Liste: Save/Restore Sortierung aus InstanceState Details: bei History status nicht anzeigen; prolongCount ergänzt
NPE bei UpdateHeader ohne Context vermeiden
|
Hallo Johan,
|
Hallo Raphael, hallo Johan,
für Leute (wie mich) die gerne wissen was sie im Laufe der Zeit wann ausgeliehen haben, hier ein Feature-Vorschlag um in Web Opac App eine Chronik aller jemals ausgeliehenen Medien zu führen. Die Implementierung basiert auf dem Code zur Merkliste. Die Inhalte der Database werden automatisch (d. h. ohne Benutzeraktion) durch Abgleich beim Update des Kontos gepflegt. Man kann in der Chronik
(Noch) nicht umgesetzt sind folgende Ideen
Schaut euch meinen Vorschlag mal an, ob er von allgemeinem Interesse ist. Bei Bedarf kann ich noch ein paar Screenshots liefern.
Mit Neujahrs-Grüßen - Michael