-
Notifications
You must be signed in to change notification settings - Fork 0
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
Implements Organizations Administrator Views #2
Conversation
Απ'ότι φαίνεται τα draft pull requests δεν είναι διαθέσιμα σε private repos ακόμα και με GitHub Pro. Θέλει Organization τύπο. Μην ξεγελαστείτε και κάνετε review, δεν είναι ακόμα 100% έτοιμο, αύριο θα σας ενημερώσω για το πότε να αρχίσετε να το βλέπετε. |
@j-christou @viviangourgioti Το PR είναι πλέον έτοιμο προς review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Πολυ καλος, απλως να εξηγησουμε καποιες λειτουργιες
Button backButton = UIUtils.createButton("Back", VaadinIcon.ARROW_LEFT, ButtonVariant.LUMO_PRIMARY); | ||
backButton.getStyle().set("position","absolute"); | ||
backButton.getStyle().set("bottom","10px"); | ||
backButton.getStyle().set("left","10px"); //I waited for the buttons not to be aligned but somehow they are with this style | ||
|
||
backButton.addClickListener(listener -> UI.getCurrent().navigate("organizations")); | ||
backButton.addClickListener(listener -> UI.getCurrent().navigate(RouteConstants.PAGE_ORGS_ADMIN)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Παρολο που το χρησιμοποιησα και γω, δεν θυμαμαι τι κανει η navigate to entity..βασικα ποιος ειναι ο σκοπος της
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μια εξηγηση σε αυτη την κλαση την ηθελα κι εγω γιατι θα με βοηθησει και στο δικο μου issue
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ουσιαστικά θέλουμε να ενημερώνουμε το URL server-side. Δες λίγο τη συμπεριφορά της μπάρας του URL στον browser σου όταν πας να κάνεις edit τον χρήστη. Δεν αλλάζει το URL;
Στις SPAs (Single-Page-Applications - δες εδώ ορισμό SPA - ουσιαστικά τόσο καιρό μια τέτοια λύση δουλεύουμε), το URL δεν αλλάζει αυτόματα συνήθως και οι σελίδες δεν έχουν μοναδικό URL. Μέσω τον Routers ή άλλων μηχανισμών το framework που χρησιμοποιείτε καταλαβαίνει που θέλει ο χρήστης να πάει ή τι θέλει να δει.
Υπάρχουν κάποια μεικονεκτήματα σε αυτό, ένα από αυτά είναι ότι πχ:
Αν ο χρήστης θέλει να κάνει save έναν σύνδεσμο της εφαρμογής μας στον οποίο θέλει αν τον πατάει να κάνει edit έναν συγκεκριμένο χρήστη, τότε εξαιτίας του φαινομένου που περιέγραψα πιο πάνω, δεν θα μπορεί να το κάνει.
Οπότε είναι δικιά μας δουλεία να παράγουμε τέτοια URL και να δίνουμε στο Vaadin να καταλαβαίνει (μέσω του interface HasUrlParameter<E>
και της μεθόδου setParameter()
) τι πρέπει να κάνει αν κάποιος/α χειροκίνητα (ή server-side όπως κάνω με τη μετάβαση από οργανισμούς σε supervisors του οργανισμού που επέλεξε ο χρήστης) δώσει τέτοιο link.
Δες και docs για το UI.navigate()
@@ -172,13 +187,17 @@ public void setParameter(BeforeEvent event, @WildcardParameter String path) | |||
if(paths.size() == 2 || paths.size() > 4 ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Για ποιο λογο να πουμε αν ειναι 2 η πανω απο 4? εφοσον και σενα 2 τιμες εχει το url, max 3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expected contents are ["organizations","supervisors",{organization},{userId}]
Άρα υποχρεωτικά η λίστα θα έχει τα 2 πρώτα Strings (αλλιώς δεν θα ήμασταν σε αυτό το view). Αυτό το view δεν δουλεύει αν δοθεί το όνομα του οργανισμού ως 3η παράμετρος. Αρά αν η λίστα είναι μεγέθους 2 δεν μας κάνει. Το λέω optional το organization γιατί αν δεν το φροντίσει το view των οργανισμών ή ο χρήστης χειροκίνητα τότε δεν θα είναι στα paths.
Με άλλα λόγια είναι υποχρεωτικό το organization για να δουλέψει αλλά μπορεί να συμβεί και το ενδεχόμενο να μη δοθεί. Αν δεν δοθεί το name του οργανισμού βαρά 404.
Το 4ο που είναι το id του χρήστη είναι εντελώς προαιρετικό. Αν το δώσει, τότε πήγαινε τον χρήστη κατευθείαν στην edit φόρμα.
Δεν αναμένουμε παραπάνω από 4 paths οπότε βαρά 404 αν γίνει κάτι τέτοιο.
setSizeFull(); | ||
|
||
} | ||
|
||
//Setup internationalization (Only English for us) | ||
public CrudI18n setupI18n() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
παρομοιως και αυτη η μεθοδος δεν καταλαβαινω τη χρησιμοτητα της
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ρυθμίζει το κείμενο που εμφανίζεται στα διάφορα κουμπιά/ταμπέλες του CRUD Component. Πχ new button, edit button κτλ.
} | ||
|
||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Εδώ ενώ στο περίπου καταλαβαίνω τι κάνεις.Γιατί εγώ χρησιμοποίησα διαφορετικό τρόπο?έχει σχεση με το keycloak?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ναι το έχω ξαναπεί. Άλλιώς επικοινωνούμε με τον σέρβερ του keycloak και αλλιώς με το δικό μας backend.
Το keycloak ως εμπορικό προϊόν έχει και δικό του admin client για το API του. Αυτόν τον client τον τροποποίησα για να υποστηρίζει και το Organzations Endpoint που περιγράφω στο NickDelta/hermes-keycloak-image#4.
Το back-end μας δεν έχει τέτοιο client υλοποιημένο. Εσύ χρησιμοποιείς το KeycloakRestTemplate
για την επικοινωνία.
Ίδιος σκοπός στην τελική, διαφορετικά εργαλεία για την επίτευξή τους. That's how software works.
if(VaadinSecurity.check().hasRole("ROLE_ORGS_ADMIN")){ | ||
menu.addNaviItem(VaadinIcon.BUILDING,"Organizations", OrganizationsView.class); | ||
} | ||
|
||
return menu; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Αυτά μου φαίνονται λίγο περίεργα αλλα τα βασικα τα καταλαβα
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Δεν νομίζω ότι είναι τόσο παράξενα χαχαχα. Ουσιαστικά εδώ λες ανάλογα με τον ρόλο που έχεις εμφάνισε και τα κατάλληλα Tabs στο μενού πλάι.
This issue closes #1