Συναρτήσεις συμβολοσειρών

Το rtSurvey υποστηρίζει διάφορες συναρτήσεις, συμπεριλαμβανομένων:

  1. string(field): Μετατρέπει ένα πεδίο σε συμβολοσειρά.

    • Παράδειγμα: string(34.8) θα μετατραπεί σε '34.8'.
  2. string-length(field): Επιστρέφει το μήκος ενός πεδίου συμβολοσειράς.

    • Παράδειγμα: string-length(.) > 3 and string-length(.) < 10 μπορεί να χρησιμοποιηθεί για διασφάλιση ότι το τρέχον πεδίο έχει μεταξύ 3 και 10 χαρακτήρων.
  3. substr(fieldorstring, startindex, endindex): Επιστρέφει υποσυμβολοσειρά που ξεκινά στο startindex και τελειώνει ακριβώς πριν από το endindex. Οι δείκτες ξεκινούν από 0 για τον πρώτο χαρακτήρα.

    • Παράδειγμα: substr(${phone}, 0, 3) θα επιστρέψει τα πρώτα τρία ψηφία τηλεφώνου.
  4. concat(a, b, c, ...): Συνενώνει πεδία (ή/και συμβολοσειρές) μαζί.

    • Παράδειγμα: concat(${firstname}, ' ', ${lastname}) θα επιστρέψει πλήρες όνομα.
  5. linebreak(): Επιστρέφει χαρακτήρα αλλαγής γραμμής.

    • Παράδειγμα: concat(${field1}, linebreak(), ${field2}, linebreak(), ${field3}) θα επιστρέψει λίστα τριών τιμών πεδίων με αλλαγές γραμμής.
  6. lower(): Μετατρέπει συμβολοσειρά σε πεζά γράμματα.

    • Παράδειγμα: lower('Street Name') θα επιστρέψει “street name”.
  7. upper(): Μετατρέπει συμβολοσειρά σε κεφαλαία γράμματα.

    • Παράδειγμα: upper('Street Name') θα επιστρέψει “STREET NAME”.

Συναρτήσεις select_one και select_multiple

  1. count-selected(field): Επιστρέφει τον αριθμό των επιλεγμένων στοιχείων σε πεδίο select_multiple.

    • Παράδειγμα: count-selected(.) = 3 μπορεί να χρησιμοποιηθεί ως έκφραση περιορισμού για διασφάλιση ακριβώς τριών επιλογών.
  2. selected(field, value): Επιστρέφει αληθής ή ψευδής ανάλογα με το εάν η καθορισμένη τιμή επιλέχθηκε στο πεδίο select_one ή select_multiple.

    • Παράδειγμα: selected(${color}, 'Blue') μπορεί να χρησιμοποιηθεί ως έκφραση συνάφειας για εμφάνιση ομάδας ή πεδίου μόνο εάν ο ερωτώμενος επέλεξε “Blue”.
    • Σημείωση: Η δεύτερη παράμετρος πρέπει πάντα να καθορίζει την τιμή επιλογής, όχι την ετικέτα επιλογής.
  3. selected-at(field, number): Επιστρέφει το επιλεγμένο στοιχείο στη συγκεκριμένη θέση σε πεδίο select_multiple. Όταν ο αριθμός που περνιέται είναι 0, επιστρέφει το πρώτο επιλεγμένο στοιχείο.

    • Παράδειγμα: selected-at(${fruits}, 0) = 'Apple' μπορεί να χρησιμοποιηθεί ως έκφραση συνάφειας για εμφάνιση εάν η πρώτη επιλεγμένη επιλογή είναι “Apple”.
  4. choice-label(field, value): Επιστρέφει την ετικέτα για μια επιλογή πεδίου select_one ή select_multiple.

    • Παράδειγμα 1: choice-label(${country}, ${country}) θα επιστρέψει την ετικέτα επιλογής για την τρέχουσα επιλεγμένη επιλογή στο πεδίο country.
    • Παράδειγμα 2: choice-label(${languages}, selected-at(${languages}, 0)) θα επιστρέψει την ετικέτα για την πρώτη επιλεγμένη επιλογή.

Συναρτήσεις επαναλαμβανόμενων πεδίων

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

  1. join(string, repeatedfield): Για πεδίο μέσα σε ομάδα επανάληψης, δημιουργεί λίστα τιμών διαχωρισμένη με συμβολοσειρά. Η πρώτη παράμετρος καθορίζει τον διαχωριστή.

    • Παράδειγμα: join(', ', ${member_name}) θα δημιουργήσει ενιαία λίστα διαχωρισμένη με κόμμα από όλα τα εισαχθέντα ονόματα.
  2. join-if(string, repeatedfield, expression): Λειτουργεί ακριβώς όπως η join(), εκτός ότι ελέγχει κάθε παρουσία στην ομάδα επανάληψης χρησιμοποιώντας την παρεχόμενη έκφραση.

    • Παράδειγμα: join-if(', ', ${member_name}, ${age} >= 18) θα δημιουργήσει λίστα ονομάτων μόνο ενήλικων μελών.
  3. count(repeatgroup): Επιστρέφει τον τρέχοντα αριθμό φορών που έχει επαναληφθεί μια ομάδα επανάληψης.

    • Παράδειγμα: count(${groupname}) θα επιστρέψει τον αριθμό παρουσιών της ομάδας.
  4. count-if(repeatgroup, expression): Λειτουργεί ακριβώς όπως η count(), εκτός ότι ελέγχει κάθε παρουσία χρησιμοποιώντας την παρεχόμενη έκφραση.

    • Παράδειγμα: count-if(${members}, ${age} >= 18) θα επιστρέψει τον αριθμό ενήλικων μελών.
  5. sum(repeatedfield): Για πεδίο μέσα σε ομάδα επανάληψης, υπολογίζει το άθροισμα όλων των τιμών.

    • Παράδειγμα: sum(${loan_amount}) θα επιστρέψει τη συνολική τιμή όλων των δανείων.
  6. sum-if(repeatedfield, expression): Λειτουργεί όπως η sum(), εκτός ότι ελέγχει κάθε παρουσία χρησιμοποιώντας την παρεχόμενη έκφραση.

    • Παράδειγμα: sum-if(${loan_amount}, ${loan_amount} > 500) θα επιστρέψει τη συνολική τιμή όλων των δανείων άνω των 500.
  7. min(repeatedfield): Για πεδίο μέσα σε ομάδα επανάληψης, υπολογίζει τον ελάχιστο όλων των τιμών.

    • Παράδειγμα: min(${member_age}) θα επιστρέψει την ηλικία του νεότερου μέλους.
  8. min-if(repeatedfield, expression): Λειτουργεί όπως η min(), εκτός ότι ελέγχει κάθε παρουσία.

    • Παράδειγμα: min-if(${member_age}, ${member_age} >= 18) θα επιστρέψει την ηλικία του νεότερου ενήλικα.
  9. max(repeatedfield): Για πεδίο μέσα σε ομάδα επανάληψης, υπολογίζει τον μέγιστο όλων των τιμών.

    • Παράδειγμα: max(${member_age}) θα επιστρέψει την ηλικία του μεγαλύτερου μέλους.
  10. max-if(repeatedfield, expression): Λειτουργεί όπως η max(), εκτός ότι ελέγχει κάθε παρουσία.

    • Παράδειγμα: max-if(${member_age}, ${member_age} >= 18) θα επιστρέψει την ηλικία του μεγαλύτερου ενήλικα.
  11. index(): Καλούμενο μέσα σε ομάδα επανάληψης, επιστρέφει τον αριθμό δείκτη για την τρέχουσα ομάδα ή παρουσία.

    • Παράδειγμα: index() όταν χρησιμοποιείται μέσα σε ομάδα επανάληψης θα επιστρέψει 1 για την πρώτη παρουσία, 2 για τη δεύτερη, κ.ο.κ.
  12. indexed-repeat(repeatedfield, repeatgroup, index): Αναφέρεται σε πεδίο ή ομάδα που βρίσκεται μέσα σε ομάδα επανάληψης εκτός αυτής.

    • Παράδειγμα 1: indexed-repeat(${name}, ${names}, 1) θα επιστρέψει το πρώτο διαθέσιμο όνομα.
    • Παράδειγμα 2: indexed-repeat(${name}, ${names}, index()) θα τραβήξει το όνομα που αντιστοιχεί στον αριθμό παρουσίας της τρέχουσας ομάδας επανάληψης.
  13. rank-index(index, repeatedfield): Αυτή η συνάρτηση υπολογίζει την τακτική κατάταξη της καθορισμένης παρουσίας ενός επαναλαμβανόμενου πεδίου για χρήση εκτός ομάδας επανάληψης. Η κατάταξη 1 αποδίδεται στην παρουσία με τη μεγαλύτερη τιμή.

    • Παράδειγμα: rank-index(1, ${random_draw}) υπολογίζει την κατάταξη της πρώτης παρουσίας βάσει της τιμής του πεδίου random_draw της σε σύγκριση με άλλες παρουσίες.
  14. rank-index-if(index, repeatedfield, expression): Αυτή η συνάρτηση λειτουργεί παρόμοια με rank-index(), αλλά ελέγχει κάθε παρουσία στην ομάδα επανάληψης του επαναλαμβανόμενου πεδίου χρησιμοποιώντας την παρεχόμενη έκφραση.

    • Παράδειγμα: rank-index-if(1, ${age}, ${age} >= 18) υπολογίζει την κατάταξη ηλικίας εντός του συνόλου ενηλίκων.

Αριθμητικές συναρτήσεις

ΤελεστήςΠράξηΠαράδειγμαΠαράδειγμα αποτέλεσμα
+Πρόσθεση1 + 12
-Αφαίρεση3 - 21
*Πολλαπλασιασμός3 * 26
divΔιαίρεση10 div 25
modΥπόλοιπο9 mod 21

Το rtSurvey υποστηρίζει αριθμητικές συναρτήσεις, συμπεριλαμβανομένων:

  • number(field): Μετατρέπει την τιμή πεδίου σε αριθμό.

    • Παράδειγμα: number('34.8') = 34.8
  • int(field): Μετατρέπει την τιμή πεδίου σε integer.

    • Παράδειγμα: int('39.2') = 39
  • min(field1, ..., fieldx): Επιστρέφει την ελάχιστη τιμή μεταξύ των περασμένων πεδίων.

    • Παράδειγμα: min(${father_age}, ${mother_age}) θα επιστρέψει την ηλικία πατέρα ή μητέρας, όποια είναι μικρότερη.
  • max(field1, ..., fieldx): Επιστρέφει τη μέγιστη τιμή μεταξύ των περασμένων πεδίων.

    • Παράδειγμα: max(${father_age}, ${mother_age}) θα επιστρέψει την ηλικία πατέρα ή μητέρας, όποια είναι μεγαλύτερη.
  • format-number(field): Μορφοποιεί την τιμή ενός integer ή decimal πεδίου σύμφωνα με τις ρυθμίσεις locale του χρήστη.

  • round(field, digits): Στρογγυλοποιεί την αριθμητική τιμή πεδίου στον καθορισμένο αριθμό ψηφίων μετά την υποδιαστολή.

  • abs(number): Επιστρέφει την απόλυτη τιμή ενός αριθμού.

  • pow(base, exponent): Επιστρέφει την τιμή της πρώτης παραμέτρου υψωμένης στη δύναμη της δεύτερης παραμέτρου.

  • log10(fieldorvalue): Επιστρέφει τον δεκαδικό λογάριθμο του πεδίου ή τιμής.

  • sin(fieldorvalue): Επιστρέφει το ημίτονο του πεδίου ή τιμής, σε ακτίνια.

  • cos(fieldorvalue): Επιστρέφει το συνημίτονο του πεδίου ή τιμής, σε ακτίνια.

  • tan(fieldorvalue): Επιστρέφει την εφαπτομένη του πεδίου ή τιμής, σε ακτίνια.

  • asin(fieldorvalue): Επιστρέφει το τόξο ημιτόνου σε ακτίνια.

  • acos(fieldorvalue): Επιστρέφει το τόξο συνημιτόνου σε ακτίνια.

  • atan(fieldorvalue): Επιστρέφει το τόξο εφαπτομένης σε ακτίνια.

  • atan2(x, y): Επιστρέφει τη γωνία σε ακτίνια μεταξύ του θετικού άξονα x και του σημείου (x, y).

  • sqrt(fieldorvalue): Επιστρέφει τη μη αρνητική τετραγωνική ρίζα.

  • exp(x): Επιστρέφει την τιμή e^x.

  • pi(): Επιστρέφει την τιμή του π.

Συναρτήσεις ημερομηνίας και ώρας

  1. today(): Επιστρέφει τη σημερινή ημερομηνία ως συμβολοσειρά σε μορφή YYYY-MM-DD. Αξιολογείται μία φορά κατά το άνοιγμα της φόρμας.

    • Παράδειγμα: today()'2024-03-15'
  2. now(): Επιστρέφει την τρέχουσα ημερομηνία και ώρα ως συμβολοσειρά ISO 8601. Αξιολογείται κάθε φορά που υπολογίζεται η έκφραση.

    • Παράδειγμα: now()'2024-03-15T14:32:00.000+03:00'
  3. date(value): Μετατρέπει μια τιμή (συμβολοσειρά ή αριθμό) σε συμβολοσειρά ημερομηνίας.

    • Παράδειγμα: date('2024-03-15')'2024-03-15'
  4. date-time(value): Μετατρέπει μια τιμή σε συμβολοσειρά datetime.

  5. decimal-date-time(value): Μετατρέπει ημερομηνία ή datetime σε δεκαδικό αριθμό. Χρησιμοποιήστε για αριθμητική σε ημερομηνίες.

    • Παράδειγμα: Διάρκεια σε ημέρες μεταξύ δύο ημερομηνιών: decimal-date-time(${end_date}) - decimal-date-time(${start_date})
    • Παράδειγμα: Διάρκεια σε λεπτά μεταξύ δύο datetimes: (decimal-date-time(${end_time}) - decimal-date-time(${start_time})) * 1440
  6. format-date(date, format): Μορφοποιεί μια τιμή ημερομηνίας χρησιμοποιώντας μοτίβο συμβολοσειράς.

    • Tokens μορφής: %Y (4-ψήφιο έτος), %y (2-ψήφιο έτος), %m (μήνας 01–12), %d (ημέρα 01–31), %a (συντ. ημέρα εβδομάδας), %b (συντ. όνομα μήνα)
    • Παράδειγμα: format-date(today(), '%d/%m/%Y')'15/03/2024'
  7. format-date-time(datetime, format): Μορφοποιεί μια τιμή datetime χρησιμοποιώντας μοτίβο συμβολοσειράς. Αποδέχεται όλα τα tokens format-date συν:

    • %H (ώρες 00–23), %h (ώρες 01–12), %M (λεπτά 00–59), %S (δευτερόλεπτα 00–59), %3 (χιλιοστά), %P (ΠΜ/ΜΜ)
    • Παράδειγμα: format-date-time(now(), '%d/%m/%Y %H:%M')'15/03/2024 14:32'

Συναρτήσεις boolean

  1. boolean(value): Μετατρέπει οποιαδήποτε τιμή σε boolean. Επιστρέφει true για μη κενές συμβολοσειρές, μη μηδενικούς αριθμούς και true.

  2. boolean-from-string(string): Επιστρέφει true εάν η συμβολοσειρά είναι '1' ή 'true' (χωρίς διάκριση πεζών/κεφαλαίων).

  3. true(): Επιστρέφει την boolean τιμή true.

  4. false(): Επιστρέφει την boolean τιμή false.

  5. not(expression): Επιστρέφει τη λογική άρνηση της έκφρασης.

    • Παράδειγμα: not(${consent} = 'yes') — εμφάνιση προειδοποίησης όταν ΔΕΝ δόθηκε συναίνεση.

Επιπλέον συναρτήσεις συμβολοσειρών

  1. starts-with(string, prefix): Επιστρέφει true εάν η string ξεκινά με prefix.

    • Παράδειγμα: starts-with(${phone}, '+254') ελέγχει εάν ο αριθμός τηλεφώνου ξεκινά με τον κωδικό χώρας.
  2. contains(string, substring): Επιστρέφει true εάν η string περιέχει την substring.

    • Παράδειγμα: contains(${email}, '@') ελέγχει ότι μια διεύθυνση email έχει σύμβολο @.
  3. substring-before(string, needle): Επιστρέφει το μέρος της string που εμφανίζεται πριν από την πρώτη εμφάνιση της needle.

  4. substring-after(string, needle): Επιστρέφει το μέρος της string που εμφανίζεται μετά την πρώτη εμφάνιση της needle.

  5. normalize-space(string): Αφαιρεί κενά αρχής και τέλους και συμπιέζει εσωτερικές ακολουθίες κενών σε ένα κενό.

  6. translate(string, search_chars, replace_chars): Αντικαθιστά χαρακτήρες στη string που εμφανίζονται στο search_chars με τους αντίστοιχους χαρακτήρες στο replace_chars.


Επιπλέον μαθηματικές συναρτήσεις

  1. floor(number): Επιστρέφει τον μεγαλύτερο integer μικρότερο ή ίσο από number.

    • Παράδειγμα: floor(4.9) = 4
  2. ceiling(number): Επιστρέφει τον μικρότερο integer μεγαλύτερο ή ίσο από number.

    • Παράδειγμα: ceiling(4.1) = 5
  3. random(): Επιστρέφει έναν τυχαίο δεκαδικό αριθμό μεταξύ 0.0 (συμπεριλαμβανόμενου) και 1.0 (μη συμπεριλαμβανόμενου).

    • Παράδειγμα: int(random() * 6) + 1 → τυχαίος αριθμός 1–6 (ζάρι)
  4. coalesce(a, b): Επιστρέφει a εάν a δεν είναι κενό· διαφορετικά επιστρέφει b.

    • Παράδειγμα: coalesce(${preferred_name}, ${full_name}) — χρήση προτιμώμενου ονόματος εάν έχει οριστεί.
  5. once(value): Αξιολογεί value και το αποθηκεύει, αλλά μόνο εάν το τρέχον πεδίο είναι κενό. Αποτρέπει τον επανυπολογισμό να αντικαταστήσει τη χρήστη-εισαγόμενη τιμή.

    • Παράδειγμα: once(today()) στη στήλη default ορίζει τη σημερινή ημερομηνία μία φορά.
    • Παράδειγμα: once(uuid()) δημιουργεί UUID μία φορά και το διατηρεί σταθερό.

Γεωγραφικές συναρτήσεις

  1. area(geoshape_value): Υπολογίζει την επιφάνεια σε τετραγωνικά μέτρα που περικλείεται από μια τιμή geoshape (πολύγωνο).

    • Παράδειγμα: area(${field_boundary}) — υπολογισμός επιφάνειας χωραφιού σε m².
    • Παράδειγμα: round(area(${field_boundary}) div 10000, 2) — μετατροπή σε εκτάρια.
  2. distance(coordinates): Υπολογίζει το συνολικό μήκος μονοπατιού σε μέτρα ενός geotrace, ή την απόσταση μεταξύ δύο geopoints.

    • Για geotrace: distance(${route}) επιστρέφει το συνολικό μήκος μονοπατιού.
    • Παράδειγμα: round(distance(${road_trace}) div 1000, 3) — μήκος δρόμου σε χιλιόμετρα.

Συναρτήσεις επικύρωσης

  1. regex(value, pattern): Επιστρέφει true εάν η value ταιριάζει με την κανονική έκφραση pattern. Χρησιμοποιείτε στη στήλη constraint για επικύρωση βάσει μοτίβου.

    • Παράδειγμα: regex(., '^[0-9]{10}$') — επικύρωση 10-ψήφιου αριθμού.
    • Παράδειγμα: regex(., '^[A-Z]{2}[0-9]{6}$') — επικύρωση μορφής αριθμού διαβατηρίου.
    • Παράδειγμα: regex(., '^[^@]+@[^@]+\.[^@]{2,}$') — βασικός έλεγχος μορφής email.
  2. checklist(min, max, v1, v2, ...): Αξιολογεί λίστα boolean εκφράσεων και επιστρέφει true εάν ο αριθμός των true τιμών είναι μεταξύ min και max.

    • Παράδειγμα: checklist(2, 3, ${q1} = 'yes', ${q2} = 'yes', ${q3} = 'yes') — περνά εάν ακριβώς 2 ή 3 συνθήκες είναι αληθείς.
  3. weighted-checklist(min, max, v1, w1, v2, w2, ...): Όπως η checklist(), αλλά κάθε τιμή έχει βάρος. Το άθροισμα βαρών για true τιμές πρέπει να είναι μεταξύ min και max.


Βοηθητικές συναρτήσεις

  1. uuid(): Δημιουργεί τυχαίο UUID (μορφή RFC 4122 v4) ως συμβολοσειρά.

    • Τυπικά χρησιμοποιείται με once() για δημιουργία σταθερού μοναδικού αναγνωριστικού: once(uuid())
  2. version(): Επιστρέφει την τιμή του χαρακτηριστικού version της φόρμας όπως έχει οριστεί στο φύλλο εργασίας settings.

  3. position(): Όταν καλείται μέσα σε ομάδα επανάληψης, επιστρέφει τον δείκτη 1-based της τρέχουσας παρουσίας επανάληψης.

  4. thousandsep(length, separator, value): Μορφοποιεί έναν αριθμό με διαχωριστή χιλιάδων.

    • Παράδειγμα: thousandsep(0, ',', 1234567)'1,234,567'
  5. substr-jsonpath(value, jsonpath): Εξάγει υποσυμβολοσειρά από JSON χρησιμοποιώντας έκφραση JSONPath.

    • Παράδειγμα: substr-jsonpath(${api_response}, '$.data.name') — εξαγωγή πεδίου name από JSON.
    • Τυπικά χρησιμοποιείται μαζί με callapi() για εξαγωγή συγκεκριμένων τιμών από αποκρίσεις API.
Ήταν χρήσιμη αυτή η σελίδα;