Τεκμηρίωση
Εκμάθηση
Ροές εργασίας
Ενέργειες kebab
Καθημερινή Εργασία
Πίνακας & Εκθέσεις
Ποιοτικός Έλεγχος
ISO 17025
Αντιδραστήρια & Αποθήκευση
Αρχεία Καταγραφής
Επαφές
Τιμολόγηση
Ρύθμιση Αναλύσεων
Ρυθμίσεις
Αρχική Εγκατάσταση
Βοήθεια & Αναφορά
Αποφάσεις αρχιτεκτονικής
Ενέργειες kebab
0:000:00

Εξαγωγή λίστας δειγμάτων σε CSV

Ο οδηγός αυτός περιγράφει πώς εξάγετε τα δείγματα της λίστας σε αρχείο CSV, ώστε να το επεξεργαστείτε σε υπολογιστικό φύλλο για ομαδική ανάλυση, εκθέσεις πελατών ή υποβολή σε διαπίστευση.


Στόχος

Να παράγετε ένα αρχείο CSV που περιέχει τα δείγματα που ταιριάζουν στον όρο ελεύθερης αναζήτησης, με την τρέχουσα ταξινόμηση της λίστας — για περαιτέρω επεξεργασία εκτός του LIMS. Τα φίλτρα του πίνακα φίλτρων (κατάσταση, πελάτης κ.λπ.) περιορίζουν μόνο ό,τι βλέπετε στην οθόνη· δείτε τη σημείωση παρακάτω.


Προϋποθέσεις

  • Είστε συνδεδεμένος/η χρήστης με δικαίωμα ανάγνωσης δειγμάτων (οποιοσδήποτε ρόλος με πρόσβαση στη σελίδα /samples).
  • Διαθέτετε εφαρμογή που ανοίγει αρχεία .csv (Excel, LibreOffice Calc, Google Sheets κ.λπ.).

Βήματα

  1. Μεταβείτε στη σελίδα Δείγματα (/samples) από την πλαϊνή πλοήγηση.
  2. Προαιρετικά, ανοίξτε τον πίνακα φίλτρων με το εικονίδιο φίλτρου στη γραμμή τίτλου και εφαρμόστε τα κριτήρια που θέλετε ώστε να περιορίσετε την οθόνηαυτά τα κριτήρια δεν περνούν στο αρχείο CSV (βλ. σημείωση παρακάτω):
  • Εύρος ημερομηνιών (receivedDate — αφορά μόνο την ημερομηνία παραλαβής, όχι τη λήξη).
  • Κατάσταση δείγματος (π.χ. Παραλήφθηκε, Σε Ανάλυση, Αναλύθηκε, Σε Υπεργολαβία).
  • Πελάτης (επαφή — απλό σύννεφο επιλογής με αναζήτηση).
  • Εργαστηριακή μέθοδος, όργανο.
  • Κατάσταση SLA (Πλησιάζει / Παραβίαση / Εντός SLA) και ο διακόπτης Εμφάνιση ακυρωμένων.
  1. Χρησιμοποιήστε το πεδίο αναζήτησης ή ταξινομήστε σε μία στήλη για να περιορίσετε ή να αναδιατάξετε το αποτέλεσμα — αυτά τα δύο είναι τα μόνα κριτήρια που μεταφέρονται αυτούσια στο αρχείο CSV.
  2. Πατήστε το εικονίδιο κατεβάσματος CSV στη γραμμή τίτλου (πριν τα εικονίδια προσανατολισμού και εκτύπωσης).
  3. Ο φυλλομετρητής κατεβάζει αυτόματα ένα αρχείο με όνομα της μορφής samples-YYYYMMDD-HHmmss.csv. Ανοίξτε το με την εφαρμογή της επιλογής σας.
Οι στήλες που εξάγονται είναι αυτές που έχετε ορίσει ως ορατές μέσω της ρύθμισης στηλών — οι κρυμμένες στήλες και η στήλη ενεργειών παραλείπονται. Αν χρειάζεστε επιπλέον πεδία στην εξαγωγή, εμφανίστε τις αντίστοιχες στήλες πρώτα μέσω του διαλόγου διαμόρφωσης στηλών.

Σημαντικό: στο αρχείο CSV περνούν μόνο ο όρος ελεύθερης αναζήτησης και η τρέχουσα ταξινόμηση. Τα κριτήρια του πίνακα φίλτρων (κατάσταση, πελάτης, μέθοδος, όργανο, εύρος ημερομηνιών, SLA, εμφάνιση ακυρωμένων) περιορίζουν μόνο ό,τι βλέπετε στην οθόνη — δεν εφαρμόζονται στην εξαγωγή CSV. Αν χρειάζεστε στενότερο υποσύνολο στο αρχείο, χρησιμοποιήστε το πεδίο αναζήτησης.


Τι συμβαίνει στο παρασκήνιο

Το κουμπί CSV καλεί τη συνάρτηση fetchAndExportCsv (libs/utils/src/lib/csv-export.ts:102), η οποία στέλνει ξανά το ερώτημα GraphQL findAllSamples με take = 0 και skip = 0 — δηλαδή ζητά όλες τις γραμμές που ταιριάζουν στον όρο ελεύθερης αναζήτησης και την τρέχουσα ταξινόμηση, χωρίς σελιδοποίηση. Η συγκεκριμένη σύνδεση γίνεται στο apps/agrometrisis/src/app/samples/sample.ts:2634 (onExportCsv()), όπου περνιούνται ως είσοδοι μόνο το gridState() (filter, sortColumn, sortOrder) και ο πίνακας στηλών allColumns. Τα κριτήρια του πίνακα φίλτρων (κατάσταση, πελάτης, μέθοδος, όργανο, ημερομηνίες, SLA, εμφάνιση ακυρωμένων) ζουν σε ξεχωριστό filterValues() σήμα και δεν περνιούνται σε αυτή την κλήση — γι' αυτό δεν επηρεάζουν το αρχείο CSV, παρότι φιλτράρουν κανονικά την οθόνη (μέσω #buildFilterExtras(), που χρησιμοποιείται από τη σελιδοποιημένη λίστα και την εκτύπωση PDF, αλλά όχι από την εξαγωγή CSV).

Το αποτέλεσμα σειριοποιείται σε CSV απευθείας στον φυλλομετρητή: επιλέγονται οι ορατές στήλες, οι τιμές πεδίων ξεφεύγουν (" διπλασιάζονται), τα ένθετα GraphQL αντικείμενα (π.χ. contact, labMethod) αναλύονται σε αναγνώσιμη μορφή, και οι ISO ημερομηνίες συντομεύονται σε YYYY-MM-DD. Το αρχείο προθέτει  (UTF-8 BOM) ώστε το Excel να διαβάζει σωστά τους ελληνικούς χαρακτήρες. Καμία αποθήκευση στον διακομιστή δεν εμπλέκεται — το αρχείο δημιουργείται και κατεβαίνει εξ ολοκλήρου μέσω Blob + URL.createObjectURL.


Συμβουλές & παρατηρήσεις

  • Το ερώτημα τρέχει στο σύνολο των γραμμών που ταιριάζουν στον όρο αναζήτησης — δεν περιορίζεται στην τρέχουσα σελίδα του πίνακα (ούτε στα υπόλοιπα φίλτρα, βλ. παραπάνω). Μη φοβάστε να κατεβάσετε εκατοντάδες ή χιλιάδες γραμμές με μία κίνηση.
  • Για πολύ μεγάλα σύνολα (π.χ. >20.000 γραμμές) προτιμήστε έναν στενότερο όρο αναζήτησης για ταχύτερη απόκριση — τα φίλτρα του πίνακα φίλτρων δεν βοηθούν εδώ, αφού δεν εφαρμόζονται στην εξαγωγή CSV.
  • Αν δείτε αλαμπουρνέζικους ελληνικούς χαρακτήρες όταν ανοίξετε το CSV στο Excel, βεβαιωθείτε ότι ανοίγετε το αρχείο μέσω File → Open (όχι διπλό κλικ σε παλαιότερες εκδόσεις) ώστε να διαβαστεί το UTF-8 BOM.
  • Οι στήλες ημερομηνιών εξάγονται σε ISO μορφή (YYYY-MM-DD). Το Excel τις αναγνωρίζει ως πραγματικές ημερομηνίες και επιτρέπει άμεση ταξινόμηση ή χρήση σε pivot.
  • Η εξαγωγή κρατά τον όρο αναζήτησης και την ταξινόμηση τη στιγμή που πατάτε το εικονίδιο. Αν τα αλλάξετε στο μεταξύ, απλώς ξαναπατήστε για νέο αρχείο.
  • Τα ονόματα αρχείων φέρουν χρονοσφραγίδα με ακρίβεια δευτερολέπτου, οπότε διαδοχικές εξαγωγές δεν αντικαθιστούν η μία την άλλη στον φάκελο λήψεων.

Σχετικές πτυχές

Το ίδιο εικονίδιο CSV στη γραμμή τίτλου και ο ίδιος πίνακας φίλτρων εμφανίζονται σε κάθε λίστα της εφαρμογής — Επαφές, Αναλύσεις, Τιμολόγια, Όργανα, Δείγματα ελέγχου, Αποκλίσεις, CAPA, Εκπαιδεύσεις κ.λπ. Η ακριβής υλοποίηση όμως διαφέρει ανά σελίδα: δεν εφαρμόζουν όλες τα ίδια κριτήρια φίλτρου στο ίδιο το αρχείο CSV. Δείτε π.χ. το apps/agrometrisis/src/app/contacts/contact.ts:690 (onExportCsv()) για τις Επαφές — εκεί η εξαγωγή περνάει επιπλέον τα δικά της κριτήρια φίλτρου (contactTypeId, letterFrom, letterTo) στο ερώτημα και εφαρμόζει το όριο Μέγ. εγγραφές, κάτι που η εξαγωγή Δειγμάτων δεν κάνει σήμερα (βλ. παραπάνω). Πριν υποθέσετε ότι μια άλλη σελίδα φιλτράρει το CSV της όπως περιμένετε, ελέγξτε τη δική της onExportCsv().