GRUD_DEV-1121/feat/add preview center#497
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new generic preview center feature that allows users to preview row data in a dedicated view with side-by-side panels showing row data and detailed column information.
- Adds a complete preview view system with resizable left/right panels
- Implements various cell type renderers for displaying different column types (boolean, currency, text, links, attachments)
- Integrates Swiper.js dependency for image slider functionality in attachment previews
Reviewed Changes
Copilot reviewed 42 out of 45 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
src/scss/variables.scss |
Adds orange color variable for UI styling |
src/scss/svgIcon.scss |
Adds color classes for success and red SVG icons |
src/scss/preview/*.scss |
New stylesheet files for preview components styling |
src/scss/main.scss |
Imports preview stylesheets and chip component |
src/locales/*/preview.json |
Adds German and English localization strings |
src/app/types/grud.ts |
Extends type definitions for preview functionality |
src/app/redux/ |
Adds preview reducer, actions, and state management |
src/app/components/preview/ |
Implements all preview view components and helpers |
src/app/components/Router.jsx |
Adds routing for preview URLs |
package.json |
Adds Swiper.js dependency |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Ich habe mir jetzt mal nur den Code angeschaut. Ist nicht so schlimm wie es aussieht (also, mein Review ist nicht so schlimm wie die Anzahl der Anmerkungen vermuten lässt, Code selber ist ziemlich sauber und gut strukturiert) - an vielen Stellen kann man einfach nur existierende Helper nutzen bzw. die neuen URLs in das File apiHelper.js aufnehmen, so dass die wiederverwendet werden können und man auch sicher ist, immer die korrekte URL zu tippen.
An ein/zwei Stellen habe ich Fragen, die sind auch als Fragen gemeint.
Mir ist nicht ganz klar, wie row.values im Zusammenhang mit den Displaywerten hier verwendet werden…
So als allgemeiner Kommentar ist mir noch aufgefallen, dass du häufig Array.at benutzt; wie sicher bist du dass das safe ist und nicht gelegentlich die ganze UI crasht? Uh, zumindest in Node20 wirft das nicht mehr, again what learned.
Wir nutzen in der GRUD nirgends das function-Keyword, sondern eigentlich immer Arrow-Functions; es wäre gut, wenn du das zumindest in den Closures noch änderst, in den export default-Fällen ist es egal.
smnhgn
left a comment
There was a problem hiding this comment.
Ich habe ien Review der UI gemacht und mir sind dabei ein paar Punkte aufgefallen:
- Im entsperren-Button ist nur die Schrift klickbar. Außerhalb davon (aber innerhalb des Buttons) passiert nichts:
- wählt man auf der linken Seite eine Linkspalte ohne Einträge wird rechts der Text "No linked entries available" angezeigt. Egal welche Sprache ausgewählt ist. (Übersetzung fehlt?)
- In den Auswahlmöglichkeiten auf der rechten Seite sind nur die Checkboxen klickbar. Erwartung wäre Checkbox + Label klickbar.
- Aktuell können sowohl Currency als auch Boolean-Spalten als Titel gewählt werden.
mMn. machen diese Spaltentypen im Titel keinen Sinn und sollten gefiltert/ausgeblendet werden.
(Preise im Titel machen UI kaputt und Boolean "Ja" oder "Nein" hat keinen Mehrwert ohne Kontext)
- Titel wrapped nicht und wird bei zu vielen Spalten im Titel abgeschnitten.
-
Hover über Titel sollte mMn. beim Hovern die zugehörige Spalte zeigen (analog zu Hover über Spalten-Werte).
-
Beim Hovern über Werte einer verlinkten Taxonomy-Tabelle wird der Spaltenname nicht angezeigt:
|
Habe alle Punkte außer Punkt 6. aus deinen Anmerkungen umgesetzt. Bzgl. dem Title rede ich dann erstmal noch mit Max wegen dem Identifier als default title und ob dann auch noch gleich wegen dem hover |
abd4024 to
9990ead
Compare
Für Boolean könnte man auch die allseits beliebte |
1af01fa to
293a032
Compare
smnhgn
left a comment
There was a problem hiding this comment.
- Bei der Auswahl einer LinkColumn werden die verlinkten Rows doppelt geladen. (siehe Network-Tab):
bug-previewcenter-rows-duplicate-load.mp4
- In der Auflistung der Spalten werden GroupColumn und die darin enthaltenen Columns separat gelistet. (Die Links der DetailColumns gehen ins Leere, weil in den Tabellen standardmäßig nur die GroupColumn angezeigt wird):
- Bei zu wenig Platz auf der linken Seite ist kein horizontales scrollen möglich.
|
@smnhgn die Angemerkten Punkte von dir sind umgesetzt. Lediglich Punkt 3 nicht (Bei zu wenig Platz auf der linken Seite ist kein horizontales scrollen möglich), da das vom Verhalten her so passt meint Julia. Wenn man den abgeschnitten Text sehen möchte kann man ja den Resizer dafür verwenden anstatt noch eine extra Scrollbar anzuzeigen |
Link-AnsichtWenn ich eine Linkspalte auswähle und Refreshe bzw. direkt einem Deeplink zu einer Linkspalte mit vorhandenen Werten folge, dann ist die rechte Hälfte leer mit "Es sind keine verknüpften Einträge vorhanden.". Wenn ich woanders hin- und wieder zurückklicke werden die verlinkten Rows korrekt angezeigt. Der "alle auswählen"-Checkmark ist buggy. Wenn ich auf das Checkmark klicke werden korrekt alle (de-) selektiert, die Funktionalität passt also. Wenn ich allerdings entweder manuell Einträge abwähle oder per Klick auf den restlichen Button (also z.B. auf den Text), dann ignoriert der Checkmark das. Vermutlich hat der Checkmark entweder internen State oder wird als uncontrolled-input genutzt. Attachment-AnsichtAlle Attachments werden als Bilder gewertet und im Karussell als kaputte Vorschau angezeigt, falls sie keine Bilder sind (getestet mit .md, .wav, .html, .pdf). |
|
@hermann-p der Reload-Bug ist gefixt. Das "alle auswählen"-Checkmark Verhalten habe ich angepasst. Aber beibehalten dass man mit einem Klick auf das Checkmark alle an- bzw. abwählen kann. Das ist praktisch wenn man bei mehreren Links nur zwei miteinander verglichen möchte. Dann muss man nicht erst alle bis auf die zwei deselektieren. Bzgl. Attachment-Ansicht bei "Nicht-Bildern" haben wir noch nicht definiert was wir in dem Fall anzeigen (sollten wir vll mal tun ;P) |
0aa75b8 to
25796d2
Compare
hermann-p
left a comment
There was a problem hiding this comment.
Soweit ich das erkennen kann schauts ganz gut aus so.
25796d2 to
3f04d40
Compare
|
@hermann-p @smnhgn gerne nochmal kurz anschauen und Bescheid geben wenn ich mergen soll |
a252dab to
5fd3652
Compare
smnhgn
left a comment
There was a problem hiding this comment.
Bis auf die Sachen die ich angemerkt habe läuft alles rund 👍
smnhgn
left a comment
There was a problem hiding this comment.
Hab mich nochmal durchgeklickt und für mich passts jetzt.
|
@TimoGebendorfer |
|
Welche Konflikt @zingmane? Der branch setzt auf dem aktuellsten Stand von master auf |
|
Hm, komisch. Vorhin hat mir github den merge wegen Konflikten verwehrt... |

Submit a pull request
Please make sure the following is true:
Other information/comments (e.g. reasons why points are not checked from above)
mMn. wurde kein neuer Code hinzugefügt welcher tests benötigt.
New dependency
Dieser PR beinhaltet einen neue dependency namens
swipper(https://swiperjs.com/). Sie fungiert als Slider und ist im Projekt als solcher in einer simplen Form im Einsatz.Reason for this PR
Introduces the new generic preview center of task: https://campudus.myjetbrains.com/youtrack/agiles/112-23/current?issue=GRUD_DEV-1121