Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
TemKa_SD

Помогите пофиксить баги

Recommended Posts

угу

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>

Share this post


Link to post
Share on other sites

Разве так правильно?

 

$(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());
   }
});

Share this post


Link to post
Share on other sites

        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());
});

Share this post


Link to post
Share on other sites

Спасибо. Ваш вопрос про PHP не понял.

Share this post


Link to post
Share on other sites

Ваш вопрос про 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());
});
});

Share this post


Link to post
Share on other sites

Спасибо большое за помощь, я вам памятник при жизни поставлю. Дело в том, что я не знаю программирования, только HTML и CSS. Со всем этим делом вожусь порядка 10 лет, начинал еще с юкоз. Выучить программирования так и не было времени, пилил свои проекты, как-то зарабатывал на жизнь... Чтением кода владею, но с написанием проблемы, вот пытаюсь что-то освоить, внимательно изучаю всю вашу информацию, я вам сильно надоел?

Share this post


Link to post
Share on other sites

Не работает ((( С куками всё супер, с обновлением на 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());
   });
});

Edited by TemKa_SD

Share this post


Link to post
Share on other sites

Используйте один setInterval с 1000. Если значение счетчика равно 0, делайте ajax-запрос

Share this post


Link to post
Share on other sites

Как правильней?

 

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);

Share this post


Link to post
Share on other sites
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);

Share this post


Link to post
Share on other sites

Спасибо, всё супер. У меня сломалась выборка по фильтру после обновления на AJAX.

Share this post


Link to post
Share on other sites

У меня сломалась выборка по фильтру после обновления на AJAX.

Значит, где-то что-то не так.

Share this post


Link to post
Share on other sites

Я сделал такой вывод:

 

\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));

 

оно тоже работает.

Share this post


Link to post
Share on other sites

'games' => $games, 'players' => $totalGames

А тут вообще что?

Судя по runningGamesList($games), $games - это массив со списком игр.

Так зачем Вы его передаете в 'games' => $games

'games' => $games должно быть кол-во игр

'players' => $totalGames должно быть кол-во игроков

Share this post


Link to post
Share on other sites

Я просто для теста указал. Почему вариант который вы скинули с цифрами 5 и 10 - не работает, а мой с непонятными переменными работает?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...