• Как интегрировать готовый тг-бот с RetailCrm?

    febday
    @febday
    Тэг Aiogram тут скорее не подходит, но я попробую вам помочь

    Посмотрел библиотеку, которую используете и нашёл там метод, который вам нужен.
    Попробуйте так:client.integration_module_edit(config_bot)

    Вот ссылка на метод в коде: *клик*
    Ответ написан
    Комментировать
  • Почему activity долго закрывается?

    @402d
    начинал с бейсика на УКНЦ в 1988
    На подобные вопросы ответить можете только Вы как автор программы.
    А помочь с поиском проблемных мест может стрикт моде у приложения
    if (BuildConfig.DEBUG) {
                StrictMode.enableDefaults();
                StrictMode.allowThreadDiskReads(); // 1
                StrictMode.allowThreadDiskWrites(); // 2
            }

    1 и 2 очень много сообщений без них. Тут начнет ругаться на сохранение и востановление стейта у активитей, чтение шаред преференс.

    Посмотрите в логах на что будет ругаться. Может вы чего на UI треде делаете при деструктизации
    Ответ написан
    Комментировать
  • Как исправить ошибки в консоли от javascript?

    @kttotto
    пофиг на чем писать
    У Вас бесконечный цикл, нет условия проверки значения i, индекс выходит за пределы размера массива aboutSliderItem и там соответственно нет тех свойств, которые Вы хотите прочитать. Подозреваю, что нужно
    for (let i = 0; i < aboutSliderItem.length; i++)
    Ответ написан
    1 комментарий
  • Можете прокритиковать код?

    WblCHA
    @WblCHA
    Эх, жаль никто не ответил. Впрочем, я понимаю почему...
    spoiler

    let select = document.querySelector(".select-css");
    let vval = document.querySelector(".forfor");
    let pagiArea = document.querySelector('.pagination');

    const?

    function getSelectInfo(){
        let sql = '';
        if (select.value == "dateNew") {
            sql = 'SELECT * FROM "modScheme"."mod" ORDER BY "date_time" DESC';
        } 
    
        if (select.value == "dateOld") {
            sql = 'SELECT * FROM "modScheme"."mod" ORDER BY "date_time"';
        } 
        if (select.value == "size") {
            sql = 'SELECT * FROM "modScheme"."mod" ORDER BY "modSize" DESC';
        }
        return sql;
    }

    switch?
    Зачем тут переменная?
    Почему 3 ифа без элсов?

    pagi = pagi + '<a class="firstPagiHref"...'

    +=?

    Код
    function showPagination(pages, currentPage) {
        let pagi = '<a href="javascript://" onclick="duol(1)" class="firstPagiHref"><div id="pagiFirst">1</div></a><a class="firstPagiHref2"><div id="pagiTypical">..</div></a>';
        if (Number(currentPage) == 1) {
             pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol(1)"><div id="pagiTypical" class="currentPagiPage">1</div></a>';
             if (pages >= Number(currentPage) + 1) {
                
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol(2)"><div id="pagiTypical">2</div></a>';
             }
             if (pages >= Number(currentPage) + 2) {
                alert(pages);
                alert(Number(currentPage) + 2);
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol(3)"><div id="pagiTypical">3</div></a>';
             }
             if (pages >= Number(currentPage) + 3) {
                pagi = pagi + '<a class="firstPagiHref" hhref="javascript://" onclick="duol(4)"><div id="pagiTypical">4</div></a>';
             }
             if (pages >= Number(currentPage) + 4) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol(5)"><div id="pagiTypical">5</div></a>';
             }
             
        } else if (Number(currentPage) == 2) {
             pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) - 1)+')"><div id="pagiTypical">' + (Number(currentPage) - 1) + '</div></a>';
             pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+Number(currentPage)+')"><div id="pagiTypical" class="currentPagiPage">'+Number(currentPage)+'</div></a>';
             if (pages >= Number(currentPage) + 1) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) + 1)+')"><div id="pagiTypical">'+(Number(currentPage) + 1)+'</div></a>';
             }
             if (pages >= Number(currentPage) + 2) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) + 2)+')"><div id="pagiTypical">'+(Number(currentPage) + 2)+'</div></a>';
             }
             if (pages >= Number(currentPage) + 3) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) + 3)+')"><div id="pagiTypical">'+(Number(currentPage) + 3)+'</div></a>';
             }
        } else {
            if (pages >= Number(currentPage) -2) pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) - 2)+')"><div id="pagiTypical">'+(Number(currentPage) - 2)+'</div></a>';
             if (pages >= Number(currentPage) -1) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) - 1)+')"><div id="pagiTypical">'+(Number(currentPage) - 1)+'</div></a>';
             }
             
             pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+Number(currentPage)+')"><div id="pagiTypical" class="currentPagiPage">'+Number(currentPage)+'</div></a>';
             
             if (pages >= Number(currentPage) + 1) {
                pagi = pagi + '<a class="firstPagiHref"href="javascript://" onclick="duol('+(Number(currentPage) + 2)+')"><div id="pagiTypical" >'+(Number(currentPage) + 2)+'</div></a>';
             }
             if (pages >= Number(currentPage) + 2) {
                pagi = pagi + '<a class="firstPagiHref" href="javascript://" onclick="duol('+(Number(currentPage) + 3)+')"><div id="pagiTypical" >'+(Number(currentPage) + 3)+'</div></a>';
             }
        }
    
        pagi = pagi + '<a class="firstPagiHref2"><div id="pagiTypical">..</div></a>'+'<a href="javascript://" onclick="duol('+pages+')" class="firstPagiHref"><div id="pagiEnd">'+pages+'</div></a>';
    
        pagiArea.innerHTML = pagi;
        return (currentPage * 7) - 7;
    
        document.querySelector('#ya1').scrollIntoView({
          behavior: 'smooth',
          block: 'start'
        })
    }

    DRY?
    switch?
    Number(currentPage) всего-лишь 20 раз написал, вместо того, чтобы загнать в переменную. Да и почему не +currentPage?

    function getPagiInfo() {
        return new Promise(function (resolve, reject) {
            var request = new XMLHttpRequest();
        // Настройка запроса
        request.open('GET','/pagi/',true);
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        //Подписка на событие onreadystatechange и обработка его с помощью анонимной функции
        request.addEventListener('readystatechange', function() {
          // если состояния запроса 4 и статус запроса 200 (OK)
          if ((request.readyState==4) && (request.status==200)) {
           let objects = request.responseText;
           objects = Math.ceil(objects);
           let currentPage = document.querySelector('.currentPagiPage').innerHTML;
           let result = showPagination(objects, currentPage);
           resolve(result);
          }
        }); 
        // Отправка запроса на сервер
        request.send();
    });
     }

    DRY? Этот код почти 1 в 1 ещё пару раз повторяется ниже.

    function show(obj) {
        // расшифровываем json
        vval.innerHTML = "";
        let obj1 = JSON.parse(obj);
        
        for (let i=0; i<obj1.length; i++) {
            vval.innerHTML= vval.innerHTML + '<a href="#" class="hrefCar">'+'<div class="blockTypicalCar">'+'<div class="blockTitle">МОД '+obj1[i]['title']+' ДЛЯ BEAMNG.DRIVE</div>'+'<img src="/asset/other/images/beam.jpg" id="imageCarTipical">'+'<div class="otherContentCar">'+'<div class="someText">'+obj1[i]['textAbout']+'</div>'+'<hr>'+'<div class="infoIcons">'+'<div class="viewsCar"><img src="/asset/other/images/svg/preview.svg"> '+obj1[i]['watches']+'</div>'+'<div class="commentsCar"><img src="/asset/other/images/svg/comment.svg"> '+obj1[i]['comments']+'</div>'+'<div class="downloadsCar"><img src="/asset/other/images/svg/download.svg"> '+obj1[i]['downloads']+'</div>'+'</div>'+'<hr>'+'<a href="#" id="downloadHref" download><div class="donateHeaderButt secondButt"><button>Скачать</button></div></a>'+'</div>'+'</div>'+'</a>';
        }
    }

    forEach?
    Почему у тебя массив называется объектом?
    Что это за бесконечные конкатенации по всему коду разбросаны? Хотя бы темплейт строки для приличия использовал бы. И удобства.

    select.onchange = function () {  
        let sql = getSelectInfo();
        let a = getPagiInfo();
        let promiseResult = a.then(result => {b = result}).then(() => getObjects(sql, 7, b));   
    }

    У тебя что, лимит на более-менее адекватные названия для переменных закончился? Что за а? Что за б?

    function duol(aaa) {
        let sql = getSelectInfo();
    
        if (aaa != 1) {
            aaa = (aaa * 7) - 7; 
        } else {
            aaa = 0;
        }
    
        getObjects(sql, 7, aaa);
    
        if (aaa == 0) {
            aaa = 1;
        } else {
            aaa = (aaa / 7) + 1;
           
        }

    А это что за ааа? Даже не смешно.
    И что это за кривая имплементация остатка от деления? aaa = (aaa + 1) % 7;


    Прошёлся чисто по верхушкам, мне не хватило сил углубиться в это.
    Ответ написан
    4 комментария
  • Как сделать аудио плеер?

    cannibal_corpse
    @cannibal_corpse
    Верстальщик руками
    6 комментариев