Skip to content

Joylashuv nuqtalari ​

Joylashuv nuqtasi — bu admin panelda vidjetingiz paydo bo'lishi mumkin bo'lgan joy. Keraklilarini bito.locations.surfacesda e'lon qilasiz; kod haqiqatan ishlayotgan nuqta esa bito.context.surfaceda turadi.

json
{
    "bito": {
        "locations": {
            "surfaces": ["customer_profile", "card_phone", "list:customers", "global"],
            "persistent": true
        }
    }
}

Har bir band quyidagi nomlangan nuqtalardan biri, list:<page_name> satri yoki global bo'lishi kerak. Boshqasi ham, takrori ham yuklashda tekshiruvdan o'tmaydi.

Beshta profil bo'limi ​

NuqtaEkran
customer_profileMijoz profili
supplier_profileYetkazib beruvchi profili
employee_profileXodim profili
natural_person_profileJismoniy shaxs profili
legal_person_profileYuridik shaxs profili

Bular to'g'ridan-to'g'ri, profilning o'z bo'limlar lentasida bo'lim bo'lib ulanadi — foydalanuvchi avval sizni tanlaydigan menyu yo'q. Bo'limning o'rni kompaniya saqlagan profil bo'limlari tartibidan olinadi, uni ham boshqa bo'limlar kabi sudrab ko'chirish mumkin. bito.context.entity_idda ko'rilayotgan profilning identifikatori turadi.

widget_page ​

Chap menyu sahifalarining joylashuv nuqtasi. Uni bito.locations.surfacesga yozmaysiz va action menyusiga o'zingiz qo'shmaysiz: sahifalarni bito.left_menu e'loni yaratadi. Ularning URL'lari — /widget/{widget_code}[/{subitem}] va {modul prefiksi}/widget/{widget_code}/{subitem}; ular ilovangizning vidjet kodidan, kod bo'lmasa client_iddan tuziladi.

Bito vidjetni bito.context.surface qiymati widget_page bo'lgan va bito.context.menuda ochiq sahifa — { location, item_code, subitem_code } — turgan holda ulaydi. bind_actionsdan keyin u shu obyekt bilan initMenuPageni chaqiradi, foydalanuvchi shu blokning boshqa subbandiga o'tganda esa vidjetni qayta ulamasdan uni yana chaqiradi.

Sahifa faqat o'rnatilgan va rozilik berilgan reliz uchun ochiladi, manifestida left_menu bo'lmagan reliz uchun esa ulanish rad etiladi. Menyu sarlavhalari yuklash paytida arxiv i18n bundle'laridan olinadi, shuning uchun navigatsiya matni ko'rib chiqilgan paketdan chetga chiqmaydi.

sale_order_card ​

Kanban doskasidagi buyurtma kartochkasining bo'limlar lentasi. Ulanish shartnomasi profil bo'limi bilan bir xil, faqat bito.context.entity_idda buyurtma turadi. Kartochka bo'limlarini chizishdan oldin bu nuqtani qaysi vidjetlar e'lon qilganini so'raydi, shuning uchun sizniki ichki bo'limlar yonida paydo bo'ladi.

Kompaniya bu bo'limlarni xohlagan tartibda sudrab ko'chira oladi, bitta istisno bilan: kartochkaning birinchi bo'limi mahkamlangan, chunki u buyurtmaning o'z maydonlarini olib yuradi. Lenta uni sudrashga ham, uning ustiga biror narsa tashlashga ham yo'l qo'ymaydi — demak sizning bo'limingiz ikkinchi o'rindan boshlab istalgan joyga tusha oladi.

card_phone ​

Bu bo'lim emas. card_phoneni e'lon qilgan vidjet kartochkadagi telefon raqamiga bosilganda ochiladigan menyuda "Nusxalash" va "Qo'ng'iroq qilish" yonida band sifatida taklif qilinadi. Foydalanuvchi bandni tanlamaguncha hech narsa ulanmaydi; tanlangach vidjet modal oynada ulanadi, bosilgan raqam bito.context.phoneda, kartochka yozuvi esa bito.context.entity_idda bo'ladi.

Bu — telefoniya va messenjerlar uchun nuqta: click-to-dial integratsiyasiga alohida bo'lim kerak emas.

Bu biror narsani chetlab o'tish yo'li emas. Ulanish boshqa har qanday nuqta kabi o'sha mount endpointi va o'sha relizga rozilik darvozasi orqali ketadi — faqat kechroq, foydalanuvchining o'zi so'raganda.

list: nuqtalari ​

list: nuqtasi vidjetingizni ro'yxat sahifasining amallar menyusiga qo'yadi. page_name — admin panelning o'sha jadval uchun o'z nomi; satr list:, keyin kichik harf, keyin kichik harflar, raqamlar yoki pastki chiziqlardan iborat bo'lishi kerak: list:customers, list:sale_order.

Foydalanuvchi qatorlarni belgilaydi, menyuni ochadi va sizning bandingizni tanlaydi. entity_idni bu yerda olmaysiz — ro'yxat amalida bitta yozuv yo'q. Uning o'rniga bito.context.selection keladi:

js
var sel = bito.context.selection
// { ids: ["6712...", "6713..."], isAll: false, page_name: "customers" }

isAll — foydalanuvchi joriy filtrga tushadigan hamma narsani tanlagan degani, faqat ids ichidagilarni emas.

global ​

Doimiy, hamisha ulangan slot. U routerdan tashqarida yashaydi, shuning uchun sahifalar almashuvidan omon chiqadi va brauzer varag'iga bir marta ulanadi, interfeys obvyazkasi yo'q ekranlarda — kirish, chop etish, embed va onboarding — esa o'tkazib yuboriladi.

Ikki muhim nuqta:

TIP

Ikkala shaklning istalgani yoqadi. persistent: true ham, surfaces ichida globalni ko'rsatish ham doimiy slotga rozilik deb o'qiladi — buni bitta umumiy predikat hal qiladi, undan global vidjetlar ro'yxati ham, quyidagi cheklov ham foydalanadi, shuning uchun ikkovi bir-biriga zid chiqa olmaydi. persistent: trueni afzal ko'ring: bu aniq, hujjatlashtirilgan shakl va u o'zi nimani anglatsa, shuni aytadi.

Global vidjet obvyazkasiz ishlaydi: na kartochka, na spinner, na xato xabari, na sozlamalar ikonkasi. Nosozliklarni ushlab qolish baribir ishlaydi — ikki marta xato tashlagan vidjet baribir o'chiriladi — shunchaki u har bir ekranga xato kartochkasini chiqarmay, indamay yiqiladi. Ko'rinishni istasangiz, o'z interfeysingizni chizing.

Kompaniyada bir vaqtda eng ko'pi bilan beshta doimiy vidjet yoqilgan bo'lishi mumkin. Cheklov serverda, rozilik qabul qilingan — ya'ni vidjet ishlay boshlagan — paytda qo'llanadi. Oltinchisi indamay tashlab yuborilmaydi, alohida xato qaytaradi.

Ulanishdan oldin nima rost bo'lishi kerak ​

Quyidagilarning barchasi bajarilmasa, ulanish rad etiladi:

  • ilova o'sha kompaniyada o'rnatilgan;
  • reliz approved holatida (yoki siz — o'z qoralamangizni ko'rayotgan, unga egalik qiluvchi faol ishlab chiquvchi);
  • uning fayllari ochib qo'yilgan;
  • kompaniya aynan shu relizga rozilik bergan.

Rozilik berilmaguncha mount javobida skript manzili umuman bo'lmaydi, shuning uchun roziliksiz vidjet bajarila olmaydi — u faqat rozilik so'rovini chiza oladi.

Tasdiqdan oldin ko'rib chiqish ​

Faol ishlab chiquvchi o'zining qoralama relizini o'z kompaniyasida ulay oladi — buning uchun reliz identifikatorini aniq qabul qiladigan alohida oldindan ko'rish endpointi bor. Jangovar ulanish yo'li reliz identifikatorini umuman qabul qila olmaydi, shuning uchun u orqali tasodifan ko'rib chiqishning iloji yo'q. Oldindan ko'rishda o'rnatish sozlamalari bo'lmaydi — bito.settings.get() bo'sh.

Bito 2.0 Integration API