Select from file
Το select_one_from_file και select_multiple_from_file φορτώνουν επιλογές δυναμικά από εξωτερικό αρχείο CSV ή XML που επισυνάπτεται στη φόρμα.
Τα select_one_from_file και select_multiple_from_file λειτουργούν όπως τα select_one και select_multiple, αλλά αντί να ορίζουν επιλογές στο φύλλο εργασίας choices, οι επιλογές φορτώνονται από ένα εξωτερικό αρχείο CSV ή XML που επισυνάπτεται στη φόρμα. Αυτό είναι χρήσιμο όταν η λίστα επιλογών σας είναι πολύ μεγάλη, αλλάζει συχνά ή χρειάζεται ενημέρωση χωρίς αναδημιουργία ολόκληρης της φόρμας.
Βασική προδιαγραφή XLSForm
| type | name | label |
|---|---|---|
| select_one_from_file health_facilities.csv | facility | Επιλέξτε την υγειονομική εγκατάσταση |
| select_multiple_from_file crops.csv | crops | Ποιες καλλιέργειες κάνει το νοικοκυριό; |
Το όνομα αρχείου μετά το όνομα τύπου πρέπει να ταιριάζει με το όνομα του αρχείου που επισυνάπτετε κατά τη φόρτωση της φόρμας.
Μορφή αρχείου CSV
Το αρχείο CSV πρέπει να έχει τουλάχιστον δύο στήλες: name (η αποθηκευμένη τιμή) και label (το εμφανιζόμενο κείμενο). Μπορείτε να προσθέσετε οποιοδήποτε αριθμό επιπλέον στηλών για φιλτράρισμα.
health_facilities.csv:
name,label,district,type
HF001,Nairobi Central Clinic,Nairobi,clinic
HF002,Westlands Health Centre,Nairobi,health_centre
HF003,Kisumu District Hospital,Kisumu,hospital
Φιλτράρισμα επιλογών
Χρησιμοποιήστε τη στήλη choice_filter για εμφάνιση μόνο των επιλογών που ταιριάζουν με το τρέχον πλαίσιο. Αναφερθείτε στις στήλες CSV απευθείας με το όνομά τους (χωρίς ${}):
| type | name | label | choice_filter |
|---|---|---|---|
| select_one districts.csv | district | Επιλέξτε περιφέρεια | |
| select_one_from_file health_facilities.csv | facility | Επιλέξτε εγκατάσταση | district = ${district} |
Σε αυτό το παράδειγμα, εμφανίζονται μόνο οι εγκαταστάσεις στην επιλεγμένη περιφέρεια. Η district στο choice_filter αναφέρεται στη στήλη district του αρχείου CSV· το ${district} αναφέρεται στο πεδίο φόρμας με όνομα district.
Χρήσεις
Οι ερωτήσεις select-from-file χρησιμοποιούνται συνήθως για:
- Μεγάλες λίστες επιλογών — υγειονομικές εγκαταστάσεις, σχολεία, χωριά, λίστες ειδών (εκατοντάδες ή χιλιάδες στοιχεία)
- Συχνά ενημερωμένες λίστες — όταν η κύρια λίστα αλλάζει μεταξύ γύρων έρευνας, ενημερώστε μόνο το CSV χωρίς αναδημιουργία της φόρμας
- Κοινά δεδομένα αναφοράς — ένα αρχείο CSV χρησιμοποιούμενο σε πολλές φόρμες
- Φιλτραρισμένες ιεραρχικές επιλογές — φορτώστε όλες τις περιοχές/επαρχίες/χωριά σε ένα αρχείο, μετά φιλτράρετε ανά γονική επιλογή
Επισύναψη αρχείου
Κατά τη φόρτωση της φόρμας σας στο rtSurvey, επισυνάψτε το αρχείο CSV ως συνημμένο πολυμέσων. Το όνομα αρχείου στον ορισμό φόρμας πρέπει να ταιριάζει ακριβώς με το όνομα αρχείου του συνημμένου.
Τα ονόματα αρχείων είναι διακριτικά ως προς πεζά/κεφαλαία. Τα Health_Facilities.csv και health_facilities.csv αντιμετωπίζονται ως διαφορετικά αρχεία.
Χρήση choice-label() με from-file
Για εμφάνιση της ετικέτας μιας επιλεγμένης επιλογής σε πεδίο note ή calculate:
| type | name | label | calculation |
|---|---|---|---|
| select_one_from_file health_facilities.csv | facility | Επιλέξτε εγκατάσταση | |
| calculate | facility_label | choice-label(${facility}, ${facility}) | |
| note | summary | Επιλεγμένη εγκατάσταση: ${facility_label} |
Βέλτιστες πρακτικές
- Κρατήστε τα αρχεία CSV κάτω από 5.000 γραμμές για καλή απόδοση σε κινητές συσκευές.
- Πάντα συμπεριλαμβάνετε στήλες
nameκαιlabel— επιπλέον στήλες είναι προαιρετικές. - Για ιεραρχικές επιλογές, χρησιμοποιήστε ένα CSV με στήλη γονικού και φιλτράρετε με
choice_filter. - Δώστε έκδοση στα ονόματα αρχείων CSV (π.χ.
facilities_v3.csv) κατά την πραγματοποίηση ριζικών αλλαγών στη δομή στηλών. - Δοκιμάστε εκφράσεις φιλτραρίσματος προσεκτικά — ένα τυπογραφικό λάθος στο
choice_filterθα εμφανίζει σιωπηλά καμία επιλογή.
Περιορισμοί
- Πολύ μεγάλα αρχεία CSV (10.000+ γραμμές) μπορεί να επιβραδύνουν τη φόρτωση φόρμας, ειδικά σε χαμηλής κατηγορίας συσκευές.
- Τα αρχεία CSV πρέπει να φορτωθούν μαζί με τη φόρμα — δεν μπορούν να ανακτηθούν από URL κατά την εκτέλεση (χρησιμοποιήστε
search()ήpulldata()για δυναμικές αναζητήσεις). - Το
select_multiple_from_fileυποστηρίζεται λιγότερο συχνά στους clients — ελέγξτε τη συμβατότητα πριν τη χρήση.
Σύγκριση με search()
select_one_from_file | εμφάνιση search() | |
|---|---|---|
| Πηγή επιλογών | Επισυναπτόμενο αρχείο CSV/XML | Ερώτημα βάσης δεδομένων από server |
| Λειτουργεί εκτός σύνδεσης | Ναι (αρχείο είναι ενσωματωμένο) | Απαιτεί σύνδεση |
| Αριθμός επιλογών | Περιορίζεται από μνήμη συσκευής | Απεριόριστος (σελιδοποίηση) |
| Δεδομένα σε πραγματικό χρόνο | Όχι | Ναι |
Για μεγάλα, συχνά μεταβαλλόμενα ή δεδομένα από server, δείτε Δυναμική αναζήτηση.