...

Эх как же хочется слайдера.

Тема в разделе "Примеры сценариев", создана пользователем sabir, 14 май 2023.

  1. sabir

    sabir Участник

    Использование слайдера для просмотра документов предпочтительнее, чем открывать каждый документ по отдельности, поскольку:​
    • Удобство навигации: Можно быстро переключаться между документами без необходимости закрывать и открывать их отдельно.​
    • Эффективность: Слайдер позволяет сравнивать и анализировать несколько документов одновременно, что полезно при изучении связанных материалов.​
    • Повышение производительности: Можно быстро просмотреть содержание каждого документа и сосредоточиться на наиболее важных аспектах.​
    • Улучшенный пользовательский опыт: Слайдер создает более плавный и удобный поток просмотра документов.​
    Для реализации слайдера воспользуемся библиотекой bxslider.
    Необходимые ссылки:
    Сайт библиотеки - https://bxslider.com/
    Git - https://github.com/stevenwanderski/bxslider-4

    Первое, что мы сделаем это добавим в контекст нашего приложения следующие поле:
    Картинки тип - изображение (множественное), имя свойства - imgs.

    upload_2023-5-14_6-24-38.png
    Далее переходим в форму просмотра если ее нет создаем.
    Выносим на форму виджеты код и кнопка и по желанию наши картинки.

    upload_2023-5-14_6-29-21.png
    Заполняем виджет код.

    Код:
    
    <!DOCTYPE html>
    <
    html>
    <
    head>
      <
    link rel="stylesheet" href="https://cdn.jsdelivr.net/bxslider/4.2.12/jquery.bxslider.css">
    </
    head>
    <
    body>
      <
    div class="slider">
      </
    div>
      <
    script src="<%= UI.widget.filePath %>/bxslider.min.js"></script>
    <script>

      function initSlider(json) {

        var images = JSON.parse(json);

        var slidesMarkup = createSliderSlides(images);
        $('.slider').html(slidesMarkup);


        setTimeout(function() {
          $('.slider').bxSlider({
            auto: false,
            controls: true,
            slideWidth: 500,
            maxSlides: 1,
            slideMargin: 0
          });
        }, 1000);

      }

      function createSliderSlides(images) {
        var slides = '';
        for (var i = 0; i < images.length; i++) {
          slides += '<div><img src="' + images[i] + '" alt="Slide ' + (i + 1) + '"></div>';
        }
        return slides;
      }
    </script>

    </body>
    </html>
    Переходим в кнопку и задаем там следующие настройки.


    upload_2023-5-14_6-31-19.png

    Закончив с кнопкой идем в сценарии и добавляем следующий код.


    Код:
    
    declare const consoleany;
    declare const 
    windowany;

    declare const 
    initSliderany;

    async function go_img(): Promise<void> {
     
        
    let imgs Context.data.imgs// Получаем изображения из контекста

        
    let arr_base64string[] = []; // Массив для хранения base64-кодированных изображений

        
    if (imgs) {

            for (
    let img of imgs) { // Перебираем полученные изображения

                
    let url await img.getDownloadUrl(); // Получаем URL для скачивания изображения

                
    const res await fetch(url); // Загружаем изображение по URL

                
    let base64_img arrayBufferToBase64(await res.arrayBuffer()); // Преобразуем полученные бинарные данные в base64-кодировку

                
    arr_base64.push(base64_img); // Добавляем полученное base64-изображение в массив
            
    }
         
            
    ViewContext.data.bool false;

            
    initSlider(JSON.stringify(arr_base64)); // Инициализируем слайдер, передавая ему строку с сериализованным массивом base64-изображений

        
    }
    }

    function 
    arrayBufferToBase64(arrayBufany) {
        
    // Преобразование бинарных данных в base64-кодировку

        
    let binary '';
        
    let bytes = new Uint8Array(arrayBuf);
        
    let len bytes.byteLength;

        for (
    let i 0leni++) {
            
    binary += String.fromCharCode(bytes[i]);
        }

        
    let base64 window.btoa(binary);
        return(
    "data:image/jpeg;base64," base64); // Возвращаем строку с полным форматом base64-изображения (в данном случае, формат JPEG)
    }


    На этом с основной частью все, осталось проверить работоспособность.​



    Вложения:

    Последнее редактирование: 14 май 2023