• Categories
  • Recent
  • Popular
  • Users
  • Search
  • FingerprintSwitcher
  • CustomServers
  • AutomationPlugins
Skins
  • Light
  • Default
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Quartz
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Slate
  • Solar
  • Superhero
  • Vapor
Collapse

Bablosoft

Исходник мануала веб интерфейса

Scheduled Pinned Locked Moved Bablosoft News
12 Posts 3 Posters 1498 Views
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • FoxF Offline
    FoxF Offline
    Fox Bablosoft Team
    wrote on last edited by
    #1

    По веб интерфейсу BAS есть мануал: https://wiki.bablosoft.com/web-interface/#/

    Но в текущем виде он имеет ряд проблем:

    • Поиск не находит некоторые методы

    • Некоторые примеры имеют опечатки

    • Пример готового интерфейса вызывает ошибку https://wiki.bablosoft.com/web-interface/#/examples

    • Отсутствует целый блок описания api планироващика

    • Можно добавить описание функций сгенерированного веб интерфейса
    • Можно добавить перевод текста

    К сожалению ни у кого из команды bablosoft на исправление\дополнение мануала нет времени, мне выдали исходник мануала только под предлогом, что я не буду тратить на него своё время.

    По этому выкладываю исходник мануала веб интерфейса здесь: web-interface.zip

    Если кто-то из пользователей полноценно дополнит или исправит мануал, я передам исправленный вариант разработчику

    sergerdnS 1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    replied to Fox on last edited by sergerdn
    #2

    @Fox

    spoiler

    🚀 Available for hire 40 hrs/week. 🚀

    FoxF 1 Reply Last reply
    0
  • FoxF Offline
    FoxF Offline
    Fox Bablosoft Team
    replied to sergerdn on last edited by
    #3

    @sergerdn said in Исходник мануала веб интерфейса:

    Вероятно, оффтопик, но может, не надо уже использовать jQuery? На календаре 2023 год.

    Не используйте

    1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    wrote on last edited by sergerdn
    #4

    Очень не хватает мануала, как подключать готовое Vue.js приложение к кастомному интерфейсу BAS.
    Весь код, который я видел - это портянка кода Vue.js прямо в интерфейсе, включая и html. Делать так, конечно можно, но как это тестировать хотя бы отдельно приложение Vue.js - вообще не понятно.

    Подразумевается, что приложение Vue.js уже есть и оно лежит готовое в папке dist. Необходимо подготовить static хостинг, например https://surge.sh/

    Что надо сделать:

    • отредактировать vite.config.ts
    import { defineConfig, UserConfigExport } from 'vite'
    import vue from '@vitejs/plugin-vue'
    import { fileURLToPath } from 'url'
    
    import dotenv from 'dotenv'
    
    dotenv.config()
    
    // create .env file with  HOSTING_URL=https://yourdomain.com/
    const baseUrl = process.env.HOSTING_URL || '/'
    
    // Production build configuration
    const productionConfig: Partial<UserConfigExport> = {
      plugins: [vue()],
      // Base public path when served in development or production. Valid values include:
      // Absolute URL pathname, e.g. /foo/
      // Full URL, e.g. https://foo.com/
      // Empty string or ./ (for embedded deployment)
      base: baseUrl,
    
      resolve: {
        alias: {
          '@': fileURLToPath(new URL('./src', import.meta.url))
        }
      },
      build: {
        target: 'chrome78', // Set the target to 'chrome78' since the BAS embedded browser is based on Chromium 78
        minify: 'terser', // Enable minification using the 'terser' plugin
        terserOptions: {
          //compress: { drop_console: true },
          //parse: { html5_comments: false }
        },
    
        rollupOptions: {
          output: {
            // Set the output file names for entry, chunk, and assets using a specific format
            // https://rollupjs.org/configuration-options/#output-entryfilenames
            // Disable hashing of output file names for better performance
            entryFileNames: `assets/[name].js`,
            chunkFileNames: `assets/[name].js`,
            assetFileNames: `assets/[name].[ext]`,
            // Inline dynamic imports for better performance
            // https://rollupjs.org/configuration-options/#output-inlinedynamicimports
            inlineDynamicImports: true
          }
        }
    
      }
    }
    
    // Development build configuration
    const developmentConfig: Partial<UserConfigExport> = {
      plugins: [vue()],
      resolve: {
        alias: {
          '@': fileURLToPath(new URL('./src', import.meta.url))
        }
      }
    }
    
    export default defineConfig({
      // Use the productionConfig if NODE_ENV is 'production', otherwise use the developmentConfig
      ...(process.env.NODE_ENV === 'production' ? productionConfig : developmentConfig)
    })
    
    
    • изменить тип роутинга на createWebHashHistory:
    import { createRouter, createWebHashHistory } from 'vue-router'
    import HomeView from '../views/HomeView.vue'
    
    const router = createRouter({
      history: createWebHashHistory(import.meta.env.BASE_URL), // <<== CHANGE THIS
      routes: [
        {
          path: '/',
          name: 'home',
          component: HomeView
        },
        {
          path: '/about',
          name: 'about',
          // route level code-splitting
          // this generates a separate chunk (About.[hash].js) for this route
          // which is lazy-loaded when the route is visited.
          component: () => import('../views/AboutView.vue')
        }
      ]
    })
    
    export default router
    
    • загрузить приложение Vue.js на хостинг
    • в админке (https://bablosoft.com/bas/editmaininterface/тут_id_приложения_bas) отредактировать код. Данные нужно взять из dist/index.html Vue.js .
    // eslint-disable-next-line no-undef
    if (window.Api === undefined) {
      throw new Error('BAS Api is not defined')
    }
    
    class BasSettingsClass {
      constructor() {
        this.baseUrl = 'https://your_domain.surge.sh'
        this.username = localStorage.getItem('Username')
        this.password = localStorage.getItem('Password')
        // Editing file in https://bablosoft.com/bas/editmaininterface/ ?
        if (!this.password) {
          console.error('Password in localStorage not found')
        }
        if (!this.username) {
          console.error('Username in localStorage not found')
        }
      }
    
      logCredentials() {
        console.log('[auth] ' + this.username + ';' + this.password)
      }
    }
    
    
    function setupBAS() {
      window.BasSettings = new BasSettingsClass()
      window.BasSettings.logCredentials()
      // eslint-disable-next-line no-undef
      window.BasApi = Api
    }
    
    
    function loadMainInterface() {
      console.log('loadMainInterface')
    
      // Create the script element
      var script = document.createElement('script')
      script.type = 'module'
      script.crossOrigin = 'anonymous'
      script.src = window.BasSettings.baseUrl + '/assets/index.js'
    
      // Create the link element
      var link = document.createElement('link')
      link.rel = 'stylesheet'
      link.href = window.BasSettings.baseUrl + '/assets/index.css'
    
      // Append the script and link elements to the head
      document.head.appendChild(script)
      document.head.appendChild(link)
    
    }
    
    
    document.addEventListener('DOMContentLoaded', function() {
      setupBAS()
    
      /////Api event handler
      // eslint-disable-next-line no-unused-vars,no-undef
      Api.SetEventHandler(function(EventType, EventData) {
    
        /////Script started
        if (EventType === 'start') {
          console.log('Script started')
        }
    
        /////Script stopped
        if (EventType === 'stop') {
          console.log('Script stopped')
        }
    
        /////More events: https://wiki.bablosoft.com/web-interface/#/managingscriptlifetime
    
      })
      loadMainInterface()
    
      /////Automatically start script https://wiki.bablosoft.com/web-interface/#/managingscriptlifetime?id=method-acceptresources
      // eslint-disable-next-line no-undef
      Api.AcceptResources(true)
    
      /////Events
    
    })
    
    /////Resource values are obtained through this function when hitting run button, you can change it.
    /////For example, you can edit value entered by user, make custom validation, or replace resource system completely
    /////More info: https://wiki.bablosoft.com/web-interface/#/managingscriptlifetime?id=method-acceptresources
    // eslint-disable-next-line no-unused-vars
    function GetResourceValue(ResourceName) {
      if (ResourceName === 'USERNAME') {
        return window.BasSettings.username
      }
      if (ResourceName === 'PASSWORD') {
        return window.BasSettings.password
      }
      //Unknown resource name
      return ''
    }
    
    
    //Interface editor has no connection to BAS and therefore can't execute BAS functions.
    //If you try to call function from interface editor,
    //you will get a random string as result in a several seconds.
    //This behavior is not acceptable in several cases: if your function return a list,
    //not a string, or string in specific format, if you want to test error handling, etc.
    //In order to circumvent this limitation. you need to define "EmulateFunctionRun"
    //function inside web interface.
    //More info: https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=debugging-bas-function-call
    
    // eslint-disable-next-line no-unused-vars
    function EmulateFunctionRun(FunctionName, FunctionParameters, Resolve, Reject) {
      //Generate random data
      var RandomTime = Math.floor(Math.random() * (5000 - 3000)) + 3000
      var RandomResult = Math.floor(Math.random() * (1000))
    
      //Return result in RandomTime milliseconds
      setTimeout(function() {
        //Generate result string
        Resolve('Test result ' + RandomResult)
      }, RandomTime)
    
    }
    
    
    <!-- VueJs --> 
    <div id="app"></div>
    

    Capture.PNG
    P.S.
    Как интегрировать Vue.js и BAS API и как это тестировать - это отдельная большая история.

    🚀 Available for hire 40 hrs/week. 🚀

    ? 1 Reply Last reply
    0
  • ? Offline
    ? Offline
    A Former User
    replied to sergerdn on last edited by A Former User
    #5

    @sergerdn Ничего специального не требуется, просто webpack-ом собираете все в один js, css и загружаете на сервер. Я даже делал чтобы все это само загружалось на сервер бас

    Как это выглядит тут значения не имеет разрабатываю то я в vscode
    2023-05-27_131153.png

    sergerdnS 1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    replied to Guest on last edited by sergerdn
    #6

    @UserTrue said in Исходник мануала веб интерфейса:

    @sergerdn Ничего специального не требуется, просто webpack-ом собираете все в один js, css и загружаете на сервер. Я даже делал чтобы все это само загружалось на сервер бас

    Да, так можно. Даже плагин есть https://github.com/richardtallent/vite-plugin-singlefile.
    Но где пост твой об этом как ты делал?

    В моем варианте, приложение обновляется при выкладке обновления на сервер с хостингом, разработчику даже не надо давать доступ в админку BAS.

    🚀 Available for hire 40 hrs/week. 🚀

    ? 1 Reply Last reply
    0
  • ? Offline
    ? Offline
    A Former User
    replied to sergerdn on last edited by A Former User
    #7

    @sergerdn said in Исходник мануала веб интерфейса:

    Но где пост твой об этом как ты делал?

    Нет и не будет xD Я только хотел сказать, что ничего особенного в создание интерфейса для БАС

    Конечно можно сделать и через хостинг, сути не меняет, что на сервер БАС идет билд а не рабочий код

    sergerdnS 1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    replied to Guest on last edited by
    #8

    @UserTrue said in Исходник мануала веб интерфейса:

    @sergerdn said in Исходник мануала веб интерфейса:

    Но где пост твой об этом как ты делал?

    Нет и не будет xD Я только хотел сказать, что ничего особенного в создание интерфейса для БАС

    Если знаешь и умеешь никогда и ни с чем нет сложностей.

    Судя по коду который я видел, народ фигачит портянки кода Vue.js прямо в интерфейсе редактирования https://bablosoft.com/bas/editmaininterface/. Как писал выше - так делать можно, но не нужно. Так как в случае с полноценным приложением в классическом варианте, можно хоть как-то минимально протестировать его.

    Вопрос тестирования связки Vue.js с BAS это отдельный вопрос, но можно протестовать хотя бы часть приложения, а вопрос интеграции BAS можно и mock, что не самый плохой вариант.

    🚀 Available for hire 40 hrs/week. 🚀

    ? 1 Reply Last reply
    0
  • ? Offline
    ? Offline
    A Former User
    replied to sergerdn on last edited by
    #9

    @sergerdn said in Исходник мануала веб интерфейса:

    Вопрос тестирования связки Vue.js с BAS это отдельный вопрос, но можно протестовать хотя бы часть приложения, а вопрос интеграции BAS можно и mock, что не самый плохой вариант.

    БАС позволяет мокать свои функции.

    А что касается народа, то тут проблема в не знание веб разработки в целом. Пускай идут изучают кому нужно. Но думаю большинству это просто не надо.

    sergerdnS 1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    replied to Guest on last edited by
    #10

    @UserTrue said in Исходник мануала веб интерфейса:

    БАС позволяет мокать свои функции.

    Мокать можно всё и вся, это же javascript.

    А что касается народа, то тут проблема в не знание веб разработки в целом.

    Да. Но все когда-то были новичками, и ты и я. Может быть, иногда и надо делиться своим опытом и, может быть, относиться к новичкам с пониманием.

    А не как некоторые делают, не буду тыкать пальцем 😄

    🚀 Available for hire 40 hrs/week. 🚀

    ? 1 Reply Last reply
    0
  • ? Offline
    ? Offline
    A Former User
    replied to sergerdn on last edited by
    #11

    @sergerdn said in Исходник мануала веб интерфейса:

    Да. Но все когда-то были новичками, и ты и я. Может быть, иногда и надо делиться своим опытом и, может быть, относиться к новичкам с пониманием.

    Я просто не вижу смысла, потому что эти вопросы касаются веб разработки, а не БАС. Курсов по vue, webpack и тд хватает в сети, кому это нужно изучит.

    sergerdnS 1 Reply Last reply
    0
  • sergerdnS Offline
    sergerdnS Offline
    sergerdn GURU BAS
    replied to Guest on last edited by
    #12

    @UserTrue said in Исходник мануала веб интерфейса:

    @sergerdn said in Исходник мануала веб интерфейса:

    Да. Но все когда-то были новичками, и ты и я. Может быть, иногда и надо делиться своим опытом и, может быть, относиться к новичкам с пониманием.

    Я просто не вижу смысла, потому что эти вопросы касаются веб разработки, а не БАС. Курсов по vue, webpack и тд хватает в сети, кому это нужно изучит.

    Нет, я про то, что иногда некоторые пишут "я вот это делал и это", но я не скажу как. Жадины, наверное, такие люди 😄

    P.S.
    оффтоп прекратил, цель поста была моего - чтобы можно было найти по информацию по поиску, так как на форуме и в доках информации считай нет вообще.

    🚀 Available for hire 40 hrs/week. 🚀

    1 Reply Last reply
    0

  • supportS

    BrowserAutomationStudio 29.7.0 has been released

    Scheduled Pinned Locked Moved Bablosoft News
    6 Votes
    1 Posts
    925 Views
    No one has replied
  • supportS

    BrowserAutomationStudio 29.6.0 has been released

    Scheduled Pinned Locked Moved Bablosoft News
    5 Votes
    1 Posts
    901 Views
    No one has replied
  • supportS

    BrowserAutomationStudio 29.5.0 has been released

    Scheduled Pinned Locked Moved Bablosoft News
    7 Votes
    1 Posts
    1276 Views
    No one has replied
  • supportS

    BrowserAutomationStudio 29.4.0 has been released

    Scheduled Pinned Locked Moved Bablosoft News
    7 Votes
    1 Posts
    1259 Views
    No one has replied
  • supportS

    BrowserAutomationStudio 29.3.0 has been released

    Scheduled Pinned Locked Moved Bablosoft News
    6 Votes
    2 Posts
    2407 Views
    No one has replied
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Popular
  • Users
  • Search
  • FingerprintSwitcher
  • CustomServers
  • AutomationPlugins
  • Login

  • Don't have an account? Register

  • Login or register to search.