Kartu
Halaman ini diterjemahkan dari bahasa Inggris. Jika keduanya berbeda, halaman bahasa Inggris yang benar. Baca halaman bahasa Inggris
Kartu adalah daftar pendek elemen yang digambar Lingara dengan gayanya sendiri. Tidak ada input, gambar, skrip, atau markup. Aplikasi tidak dapat menaruh kodenya sendiri atau tampilannya sendiri di layar pelajar, sehingga setiap kartu terlihat seperti bagian Lingara lainnya. Balasan Anda berupa JSON: sebuah card yang memuat elements-nya, dan secara opsional sebuah tutor_note (lihat Catatan untuk tutor).
Elemen
Setiap elemen memiliki type, yaitu salah satu dari delapan berikut:
| Elemen | Field | Yang ditampilkan |
|---|---|---|
heading | text, level | Judul. level bernilai 1 atau 2, dan nilai lain menjadi 2. Teksnya paling banyak 80 karakter. |
text | text, lang | Paragraf paling banyak 600 karakter. Ini satu-satunya tempat jeda baris dipertahankan. |
term | word, reading, gloss, lang | Kata untuk dipelajari. Hanya word yang wajib. Kata paling banyak 60 karakter, bacaan 120, dan glosa 160. |
list | items | Hingga 20 item. Setiap item adalah text atau term, dengan field yang sama seperti elemen bernama itu. |
progress | value, label | Bilah progres. value berkisar dari 0 sampai 1, dan labelnya paling banyak 60 karakter. |
divider | Garis di antara bagian-bagian kartu. | |
button | label, action, style | Tombol yang mengirimkan action-nya ke server Anda. style bernilai primary atau secondary, dan labelnya paling banyak 32 karakter. |
link | label, url | Tautan yang dibuka pelajar di browser mereka, setelah Lingara bertanya kepada mereka. Labelnya paling banyak 60 karakter. |
lang adalah tag bahasa seperti ja, agar Lingara menggambar aksara yang benar. Nilai yang bukan tag bahasa akan dihapus.
Batasan
- Sebuah kartu memuat paling banyak 24 elemen. Elemen setelah yang ke-24 dibuang.
- Sebuah daftar memuat paling banyak 20 item. Item setelah yang ke-20 dibuang, dan daftar kosong juga dibuang.
- Sebuah kartu memuat paling banyak 4 tombol. Tombol setelah yang ke-4 dibuang.
- Teks yang lebih panjang dari batasnya dipotong agar muat dan diakhiri dengan
…. Karakter dihitung sebagai Unicode scalar value. - Karakter kontrol dan karakter penimpa arah (direction override) dihapus dari setiap string.
- Tautan yang alamatnya bukan HTTPS, memuat nama pengguna, atau menunjuk ke alamat IP akan dibuang.
- Tombol yang
action-nya lebih panjang dari 64 karakter, atau menggunakan apa pun selain huruf, angka,_,.,:, dan-, akan dibuang. - Elemen yang tidak menyisakan teks setelah aturan ini diterapkan akan dibuang.
Aturan ini bersifat toleran: Lingara memotong atau membuang yang tidak muat dan menggambar sisanya. Kit menerapkan aturan yang sama sebelum Anda membalas, sehingga Anda dapat melihat apa yang akan berubah.
Parsing ketat
Kosakatanya tertutup. Tipe elemen yang tidak dikenal, field yang tidak dimiliki elemen, nilai dengan tipe JSON yang salah, atau balasan yang sama sekali bukan JSON akan mengubah seluruh balasan menjadi kartu pengganti. Lingara tidak pernah menggambar sebagian kartu yang tidak dapat dibacanya.
Ukuran dan waktu
Balasan paling besar 32 KiB. Lingara memberi server Anda waktu 3 detik untuk menjawab render dan 5 detik untuk menjawab aksi, dan tidak mencoba ulang keduanya. Balasan harus berstatus 200 dan bertipe konten JSON. Pengalihan (redirect) tidak diikuti.
Tombol dan aksi
Saat pelajar menekan tombol, Lingara mengirimkan permintaan aksi ke server Anda yang membawa action tombol itu. Server Anda menjawab dengan kartu baru, yang menggantikan kartu lama. Tekanan yang sama bisa tiba dua kali, jadi pastikan setiap aksi aman untuk diulang.
Saat kartu gagal
Saat Lingara tidak bisa mendapatkan kartu yang dapat digambarnya, pelajar melihat kartu “Aplikasi ini tidak menjawab” milik Lingara sendiri dalam bahasa mereka, atau kartu baik terakhir Anda yang ditandai “Tidak terbaru”. Pelajar tidak pernah diberi tahu alasannya. Hanya Anda, sebagai pemilik aplikasi, yang melihat alasannya:
- Balasan Anda:
invalid(bukan kartu yang dapat dibaca Lingara),empty(tidak ada yang tersisa untuk ditampilkan setelah batasan diterapkan) atautoo_large(lebih dari 32 KiB). - Menjangkau server Anda:
timeout,http_error(status apa pun selain 200),transport(kegagalan koneksi atau TLS, seperti sertifikat kedaluwarsa) ataublocked(render_urlyang mengarah ke alamat privat atau alamat IP literal). - Sisi Lingara:
unavailable(Lingara tidak dapat menandatangani permintaan) ataubusy(terlalu banyak permintaan yang sedang diproses).