Skip to content

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:

js
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 ​

ts
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.

js
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 ​

ts
bito.i18n(key: string, vars?: Record<string, string | number>): string

Kalitni Bito ulanish paytida tanlagan yagona lug'atdan qidiradi (til lug'atlari) va ikki jingalak qavsdagi o'rinlarni to'ldiradi.

js
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 ​

ts
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 ​

ts
bito.settings.save(obj: Record<string, unknown>): Promise<unknown>

objni ilovangizning shu kompaniyadagi o'rnatilishi uchun saqlaydi.

js
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 ​

ts
bito.render(tplName: string, data?: Record<string, unknown>): string

templates/ 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 ​

ts
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.

js
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 ​

ts
bito.notify(opts: { message: string, severity?: 'success' | 'error' | 'info' | 'warning' } | string): void

Host 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 ​

ts
bito.confirm(opts: { title?: string, message: string } | string): Promise<boolean>

Host tasdiqlash oynasini ochadi va true yoki false qaytaradi.

js
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 ​

ts
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 }
}
MaydonQachon to'ldiriladi
account_idKompaniyaning Bito akkaunti, mount javobidan
user_idTizimga kirgan foydalanuvchi
subdomainKompaniyaning Bito subdomeni
surfaceHamisha — siz ishlayotgan joylashuv nuqtasi
entity_idProfil va kartochka nuqtalari: ekran ko'rsatayotgan yozuv
selectionFaqat list:<page_name> nuqtalari: foydalanuvchi tanlagan qatorlar
phoneFaqat card_phone: bosilgan raqam
langHamisha — foydalanuvchi tili
menuFaqat 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 ​

ts
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.

Bito 2.0 Integration API