bito SDK
Vidjet bitta global obyekt oladi: window.bito. U to'g'ri yozilgan vidjet avtorizatsiya, tarjima va host interfeysini o'zi qayta ixtiro qilmasligi uchun mavjud.
WARNING
bito — bu qulaylik qatlami, xavfsizlik chegarasi emas. Kodingiz admin panelning o'z origini va seansida ishlaydi: u fetchni to'g'ridan-to'g'ri chaqira oladi, ERP'ning DOM'ini o'qiy oladi va uning xotirasiga yeta oladi. bito.* ichidagi hech narsa undan foydalanmaslikka qaror qilgan vidjetni to'sib qololmaydi. Nazorat — bu shu obyekt emas, kompaniyaning rozilik ekrani.
Unga qanday yetish
window.bito vidjet ulanganda o'rnatiladi va uzilganda avvalgi qiymatiga qaytariladi. Agar sizniki ishlab turganda ikkinchi vidjet ulansa, window.bito yangisiga ishora qiladi — toki u uzilmaguncha.
Havolani bir marta, erta olib qo'ying va o'z nusxangiz bilan ishlang:
define(['jquery'], function ($) {
return function CustomWidget() {
var api = null
this.callbacks = {
render: function (container) {
api = window.bito // olib qo'ying, keyin qayta o'qimang
container.innerHTML = '<div class="acme-root"></div>'
return true
},
}
}
})bito.ajax
bito.ajax(url: string, data?: object): Promise<unknown>Tizimga kirgan foydalanuvchi nomidan admin API'ga POST yuboradi va ochilgan mazmunni qaytaradi — javob konvertining o'zini emas, uning data qismini. Admin prefiksi bilan boshlanmagan urlga prefiks avtomatik qo'shiladi, shuning uchun 'customer/get-by-id' va /back-api/admin/customer/get-by-id — bir xil chaqiruv.
bito.ajax('customer/get-by-id', { _id: bito.context.entity_id })
.then(function (customer) { console.log(customer.name) })Nosozlikda: promise rad etiladi. So'rov admin panelning umumiy HTTP klienti orqali ketadi, shuning uchun ilovaning qolgan qismi bilan bir xil avtorizatsiya, idempotentlik va 401 ishlovini oladi — muddati o'tgan seans bilan ilova shug'ullanadi, siz emas.
INFO
Uchinchi opts argumenti yo'q. Har bir chaqiruv — POST; bu metoddan boshqa HTTP metodini so'rashning iloji yo'q.
bito.i18n
bito.i18n(key: string, vars?: Record<string, string | number>): stringKalitni Bito ulanish paytida tanlagan yagona lug'atdan qidiradi (til lug'atlari) va ikki jingalak qavsdagi o'rinlarni to'ldiradi.
bito.i18n('greeting', { name: 'Aziz' })Nosozlikda: hech qachon xato tashlamaydi. Topilmagan kalit kalitning o'zini qaytaradi, mos o'zgaruvchisi yo'q o'rin esa satrda o'z holicha qoladi. Foydalanuvchi interfeysda "xom" kalitni ko'rsa, demak o'sha tilning lug'atida shu kalit yo'q.
bito.settings.get
bito.settings.get(): Record<string, unknown>Shu kompaniya uchun o'rnatish sozlamalarini, vidjetga ulanish paytida berilgan holida qaytaradi. Sinxron, so'rovsiz. Sirlar javob brauzerga yetib kelishidan oldin serverda olib tashlanadi.
Nosozlikda: yo'q — bu suratga olingan holat. Saqlashdan keyin qayta o'qilmaydi, shuning uchun shu ulanish davomida kerak bo'lsa, endigina yozgan narsangizning o'z nusxasini saqlab turing.
bito.settings.save
bito.settings.save(obj: Record<string, unknown>): Promise<unknown>objni ilovangizning shu kompaniyadagi o'rnatilishi uchun saqlaydi.
bito.settings.save({ api_token: 'xxx', region: 'tashkent' })Nosozlikda: promise rad etiladi. Rozilik har bir chaqiruvda mount kabi qayta tekshiriladi: kompaniya uni bekor qilgan bo'lsa yoki yangi reliz tasdiqlanib, unga hali rozilik berilmagan bo'lsa, saqlash rad etiladi. Obyekt o'rnatishingiz sozlamalariga so'zma-so'z yoziladi va boshqa hech qayerga — u integratsiyangizning rolini, ruxsat doiralarini yoki maydonlarini hech qachon kengaytira olmaydi.
bito.render
bito.render(tplName: string, data?: Record<string, unknown>): stringtemplates/ ichidagi yozuvni prefikssiz nomi bo'yicha renderlaydi (templates/card.twig → 'card.twig'), ikki jingalak qavsdagi o'rinlarni to'ldirib. Satr qaytaradi, DOM'ga tegmaydi.
Nosozlikda: noma'lum shablon nomi indamay bo'sh satr qaytaradi. Vidjet bo'sh chiqsa — nomni arxivda haqiqatan yotgan fayl bilan solishtiring.
bito.modal
bito.modal(opts: { title?: string, content: string | Node }): { close(): void }Host modal oynasini ochadi. Satr shaklidagi content HTML sifatida joylanadi; Node borligicha qo'shiladi. Qaytgan obyekt oynani yopadi.
var m = bito.modal({ title: bito.i18n('title'), content: '<p>Salom</p>' })
setTimeout(function () { m.close() }, 3000)Nosozlikda: hech narsa rad etilmaydi. Satr sifatida uzatilgan mazmun razmetka bo'lib joylanadi — undagi hamma narsa sahifa huquqlari bilan bajariladi, shuning uchun uni hech qachon o'zingiz tozalamagan ma'lumotdan yig'mang.
bito.notify
bito.notify(opts: { message: string, severity?: 'success' | 'error' | 'info' | 'warning' } | string): voidHost bildirishnomasini ko'rsatadi. Oddiy satr { message } deb qabul qilinadi.
Nosozlikda: yo'q, lekin darajalanishga e'tibor bering: xato sifatida faqat severity: 'error' chiziladi. success, info, warning va ko'rsatilmagan qiymat — barchasi muvaffaqiyat bildirishnomasi bo'lib chiqadi.
bito.confirm
bito.confirm(opts: { title?: string, message: string } | string): Promise<boolean>Host tasdiqlash oynasini ochadi va true yoki false qaytaradi.
bito.confirm(bito.i18n('really_delete')).then(function (yes) {
if (yes) { /* ... */ }
})Nosozlikda: hech qachon rad etilmaydi. Promise faqat foydalanuvchi javob berganda bajariladi — uni o'z taymautingiz bilan poygaga qo'yib, sukut bo'yicha qiymatni faraz qilmang.
bito.context
bito.context: {
account_id?: string
user_id?: string
subdomain?: string
surface: string
entity_id?: string
selection?: { ids: Array<string | number>, isAll: boolean, page_name: string }
phone?: string
lang: string
menu?: { location: string, item_code: string, subitem_code: string | null }
}| Maydon | Qachon to'ldiriladi |
|---|---|
account_id | Kompaniyaning Bito akkaunti, mount javobidan |
user_id | Tizimga kirgan foydalanuvchi |
subdomain | Kompaniyaning Bito subdomeni |
surface | Hamisha — siz ishlayotgan joylashuv nuqtasi |
entity_id | Profil va kartochka nuqtalari: ekran ko'rsatayotgan yozuv |
selection | Faqat list:<page_name> nuqtalari: foydalanuvchi tanlagan qatorlar |
phone | Faqat card_phone: bosilgan raqam |
lang | Hamisha — foydalanuvchi tili |
menu | Faqat widget_page: ochiq chap menyu sahifasi — location (widget_page yoki modul kaliti), item_code (vidjet kodingiz, kod bo'lmasa client_id), subitem_code (submenyu bandi yoki bo'limning o'z sahifasi uchun null). Har bir initMenuPage chaqiruvidan oldin yangilanadi |
Nosozlikda: o'qing, faraz qilmang. surface va langdan boshqa hammasi ixtiyoriy, qaysi maydon to'lgani esa butunlay joylashuv nuqtasiga bog'liq.
bito.widget
bito.widget: { client_id: string, code?: string, version?: string }Ilovaning o'zini tanitadi. client_id va version hamisha to'ldirilgan: version — siz aslida ulangan relizning semveri, u manifestdan emas (u yerda versiya maydoni yo'q), reliz yozuvidan olinadi.
INFO
code — ilovangizning vidjet kodi: Mening ilovalarimda band qilingan system_id, chap menyu URL'laridagi {widget_code} bilan bir xil qiymat. U har bir joylashuv nuqtasida to'ldiriladi va faqat ilovada vidjet kodi bo'lmasa yo'q bo'ladi.