newbie 1723 09/08/18 08:27 угуvar timer = $('#elTimer'); var timerTime = timer.html(); var counter = timerTime; setInterval(function() { if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000);<span id="elTimer">10</span> Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/08/18 09:58 Разве так правильно? $(document).ready(function() { var gamenames = document.querySelectorAll('.copy'); var table = document.querySelector('#gamelistTable'); var names = new Clipboard(gamenames); var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { var updateUrl = table.getAttribute('data-update-url'); var val = document.querySelector('input[name="only_lobby"]').checked; updateUrl += '&only_lobby=' + val; var botid_list = ''; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); /*console.log(botid_list);*/ updateUrl += '&botid_list=' + botid_list; console.log(updateUrl); ips.getAjax()(updateUrl).done(function (data) { table.querySelector('tbody').innerHTML = data; gamenames = document.querySelectorAll('.copy'); names.destroy(); names = new Clipboard(gamenames); }); }, 5000); }); $('#only_lobby').change(function() { if(this.checked) { var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { if(this.checked) { var botid_list = ''; var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); ips.utils.cookie.set('RunningGames_botid', botid_list += $(this).val() + ',', date.toUTCString()); } }); Поделиться сообщением Ссылка на сообщение
newbie 1723 09/08/18 11:06 var val = document.querySelector('input[name="only_lobby"]').checked; updateUrl += '&only_lobby=' + val; var botid_list = ''; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); /*console.log(botid_list);*/ updateUrl += '&botid_list=' + botid_list;Это Вам зачем, если Вы не используете параметры в php? if(this.checked) { var botid_list = ''; var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); ips.utils.cookie.set('RunningGames_botid', botid_list += $(this).val() + ',', date.toUTCString()); }Здесь Вы проверяете только одно состояние чекбокса $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/08/18 11:23 Спасибо. Ваш вопрос про PHP не понял. Поделиться сообщением Ссылка на сообщение
newbie 1723 09/08/18 11:54 Ваш вопрос про PHP не понял. Зачем Вы передаете параметры index.php?app=sharedstats&module=stats&controller=RunningGames&do=ajax&only_lobby=true&botid_list=18,17,16,15,14,13,11,10,4,3,если проверяете не их, а куки?ajax меняете\IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 200 );на\IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => 5, 'players' => 10));+добавить id'шники для Total Games и Total Players<div class="ipsType_minorHeading">Total Games: <span id="elTotalGames">10</span></div> <div class="ipsType_minorHeading">Total Players: <span id="elTotalPlayers">28</span></div>+ js$(document).ready(function() { var table = $('#gamelistTable'); var tableBody = table.find('tbody'); var names = new Clipboard('.copy'); var updateUrl = table.attr('data-update-url'); var elTotalGames = $('#elTotalGames'); var elTotalPlayers = $('#elTotalPlayers'); var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); }, 5000); $('#only_lobby').change(function() { if(this.checked) { ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); }); Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/08/18 19:56 Спасибо большое за помощь, я вам памятник при жизни поставлю. Дело в том, что я не знаю программирования, только HTML и CSS. Со всем этим делом вожусь порядка 10 лет, начинал еще с юкоз. Выучить программирования так и не было времени, пилил свои проекты, как-то зарабатывал на жизнь... Чтением кода владею, но с написанием проблемы, вот пытаюсь что-то освоить, внимательно изучаю всю вашу информацию, я вам сильно надоел? Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/08/18 20:13 (изменено) Не работает ((( С куками всё супер, с обновлением на AJAX что-то. Тамймер на секунду опаздывает почему-то. $(document).ready(function() { var table = $('#gamelistTable'); var tableBody = table.find('tbody'); var names = new Clipboard('.copy'); var updateUrl = table.attr('data-update-url'); var elTotalGames = $('#elTotalGames'); var elTotalPlayers = $('#elTotalPlayers'); var date = new Date(); var timer = $('#elTimer'); var timerTime = timer.html(); var counter = timerTime; date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); }, 5000); setInterval(function() { if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); $('#only_lobby').change(function() { if(this.checked) { ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); }); Изменено 8 сентября 2018 пользователем TemKa_SD Поделиться сообщением Ссылка на сообщение
newbie 1723 09/09/18 06:20 Используйте один setInterval с 1000. Если значение счетчика равно 0, делайте ajax-запрос Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/09/18 06:40 Как правильней? setInterval(function() { if (counter == 0) { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); } if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); setInterval(function() { if (counter <= 0) { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); Поделиться сообщением Ссылка на сообщение
newbie 1723 09/09/18 07:11 var ajaxObj = null; setInterval(function() { if (counter === 0) { if (ajaxObj != null) { return; } timer.html('Loading...'); ajaxObj = ips.getAjax()(updateUrl) .done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); counter = timerTime; ajaxObj = null; }) .fail(function() { window.location.reload(); }); } else { timer.html(counter); counter -= 1; } }, 1000); Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/09/18 07:17 Спасибо, всё супер. У меня сломалась выборка по фильтру после обновления на AJAX. Поделиться сообщением Ссылка на сообщение
newbie 1723 09/09/18 07:22 У меня сломалась выборка по фильтру после обновления на AJAX. Значит, где-то что-то не так. Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/09/18 08:41 Я сделал такой вывод: \IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => $games, 'players' => $totalGames)); оно работает, но я не пойму почему. Если вставить любую другую переменную, например: \IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => $gamesss, 'players' => $totalGamesss)); оно тоже работает. Поделиться сообщением Ссылка на сообщение
newbie 1723 09/09/18 08:53 'games' => $games, 'players' => $totalGamesА тут вообще что?Судя по runningGamesList($games), $games - это массив со списком игр.Так зачем Вы его передаете в 'games' => $games'games' => $games должно быть кол-во игр'players' => $totalGames должно быть кол-во игроков Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 09/09/18 09:01 Я просто для теста указал. Почему вариант который вы скинули с цифрами 5 и 10 - не работает, а мой с непонятными переменными работает? Поделиться сообщением Ссылка на сообщение