Ο οδηγός αυτός περιγράφει πώς εξάγετε τα δείγματα της λίστας σε αρχείο CSV, ώστε να το επεξεργαστείτε σε υπολογιστικό φύλλο για ομαδική ανάλυση, εκθέσεις πελατών ή υποβολή σε διαπίστευση.
Να παράγετε ένα αρχείο CSV που περιέχει τα δείγματα που ταιριάζουν στον όρο ελεύθερης αναζήτησης, με την τρέχουσα ταξινόμηση της λίστας — για περαιτέρω επεξεργασία εκτός του LIMS. Τα φίλτρα του πίνακα φίλτρων (κατάσταση, πελάτης κ.λπ.) περιορίζουν μόνο ό,τι βλέπετε στην οθόνη· δείτε τη σημείωση παρακάτω.
/samples)..csv (Excel, LibreOffice Calc, Google Sheets κ.λπ.)./samples) από την πλαϊνή πλοήγηση.receivedDate — αφορά μόνο την ημερομηνία παραλαβής, όχι τη λήξη).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.
YYYY-MM-DD). Το Excel τις αναγνωρίζει ως πραγματικές ημερομηνίες και επιτρέπει άμεση ταξινόμηση ή χρήση σε pivot.Το ίδιο εικονίδιο CSV στη γραμμή τίτλου και ο ίδιος πίνακας φίλτρων εμφανίζονται σε κάθε λίστα της εφαρμογής — Επαφές, Αναλύσεις, Τιμολόγια, Όργανα, Δείγματα ελέγχου, Αποκλίσεις, CAPA, Εκπαιδεύσεις κ.λπ. Η ακριβής υλοποίηση όμως διαφέρει ανά σελίδα: δεν εφαρμόζουν όλες τα ίδια κριτήρια φίλτρου στο ίδιο το αρχείο CSV. Δείτε π.χ. το apps/agrometrisis/src/app/contacts/contact.ts:690 (onExportCsv()) για τις Επαφές — εκεί η εξαγωγή περνάει επιπλέον τα δικά της κριτήρια φίλτρου (contactTypeId, letterFrom, letterTo) στο ερώτημα και εφαρμόζει το όριο Μέγ. εγγραφές, κάτι που η εξαγωγή Δειγμάτων δεν κάνει σήμερα (βλ. παραπάνω). Πριν υποθέσετε ότι μια άλλη σελίδα φιλτράρει το CSV της όπως περιμένετε, ελέγξτε τη δική της onExportCsv().