Passed
Pull Request — master (#331)
by
unknown
02:08
created

  B

Complexity

Conditions 5
Paths 4

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 5
c 1
b 0
f 1
nc 4
nop 1
dl 0
loc 18
rs 8.8571
1
/** global: gymName */
2
3
$(function () {
4
	$.getJSON("core/json/variables.json", function(variables) {
5
		var pokeimg_suffix = variables['system']['pokeimg_suffix'];
6
7
		$('.gymLoader').hide();
8
9
		var page = 0;
10
		var teamSelector = ''; //''=all; 0=neutral; 1=Blue; 2=Red; 3=Yellow
11
		var rankingFilter = 0; //0=Level & Gyms; 1=Level; 2=Gyms
12
13
		$('input#name').filter(':visible').val(gymName);
14
15
		$('#loadMoreButton').click(function () {
16
			loadGyms(page, $('input#name').filter(':visible').val(), teamSelector, rankingFilter, pokeimg_suffix, true);
17
			page++;
18
		}).trigger('click');
19
20
		$('#searchGyms').submit(function ( event ) {
21
			page = 0;
22
			$('#gymsContainer').empty();
23
			$('#loadMoreButton').trigger('click');
24
			event.preventDefault();
25
		});
26
27
		$('.teamSelectorItems').click(function ( event ) {
28
			switch ($(this).attr('id')) {
29
				case 'NeutralTeamsFilter':
30
					teamSelector=0;
31
					break;
32
				case 'BlueTeamFilter':
33
					teamSelector=1;
34
					break;
35
				case 'RedTeamFilter':
36
					teamSelector=2;
37
					break;
38
				case 'YellowFilter':
39
					teamSelector=3;
40
					break;
41
				default:
42
					teamSelector='';
43
			}
44
			$('#teamSelectorText').html($(this).html());
45
			event.preventDefault();
46
			$('#searchGyms').submit();
47
48
		});
49
		$('.rankingOrderItems').click(function ( event ) {
50
			switch ($(this).attr('id')) {
51
				case 'changedFirst':
52
					rankingFilter=0;
53
					break;
54
				case 'nameFirst':
55
					rankingFilter=1;
56
					break;
57
				case 'totalcpFirst':
58
					rankingFilter=2;
59
					break;
60
				default:
61
					rankingFilter=0;
62
			}
63
			$('#rankingOrderText').html($(this).html());
64
			event.preventDefault();
65
			$('#searchGyms').submit();
66
		});
67
		window.onpopstate = function() {
68
			if (window.history.state && 'gymhistory' === window.history.state.page) {
69
				$('input#name').filter(':visible').val(window.history.state.name);
70
				page = 0;
71
				$('#gymsContainer').empty();
72
				loadGyms(page, $('input#name').filter(':visible').val(), teamSelector, rankingFilter, pokeimg_suffix, false);
73
				page++;
74
			} else {
75
				window.history.back();
76
			}
77
		};
78
	});
79
});
80
81
function loadGyms(page, name, teamSelector, rankingFilter, pokeimg_suffix, stayOnPage) {
82
	$('.gymLoader').show();
83
	if (stayOnPage) {
84
		// build a state for this name
85
		var state = {name: name, page: 'gymhistory'};
86
		window.history.pushState(state, 'gymhistory', 'gymhistory?name=' + name);
87
	}
88
	$.ajax({
89
		'async': true,
90
		'type': 'GET',
91
		'global': false,
92
		'dataType': 'json',
93
		'url': 'core/process/aru.php',
94
		'data': {
95
			'type' : 'gyms',
96
			'page' : page,
97
			'name' : name,
98
			'team' : teamSelector,
99
			'ranking' :rankingFilter
100
		}
101
	}).done(function (data) {
102
		var internalIndex = 0;
103
		$.each(data.gyms, function (idx, gym) {
104
			internalIndex++
105
			printGym(gym, pokeimg_suffix, data.locale);
106
		});
107
		if (internalIndex < 10) {
108
			$('#loadMoreButton').hide();
109
		} else {
110
			$('#loadMoreButton').removeClass('hidden').show();
111
		}
112
		$('.gymLoader').hide();
113
	});
114
}
115
116
function loadGymHistory(page, gym_id, pokeimg_suffix) {
117
	$('#gymHistory_'+gym_id).addClass('active').show();
118
	$('#gymHistory_'+gym_id).find('.gymHistoryLoader').show();
119
	$.ajax({
120
		'async': true,
121
		'type': 'GET',
122
		'global': false,
123
		'dataType': 'json',
124
		'url': 'core/process/aru.php',
125
		'data': {
126
			'type' : 'gymhistory',
127
			'page' : page,
128
			'gym_id' : gym_id
129
		}
130
	}).done(function (data) {
131
		var internalIndex = 0;
132
		$.each(data.entries, function(idx, entry) {
133
			internalIndex++
134
			printGymHistory(gym_id, entry, pokeimg_suffix, data.locale);
135
		});
136
		if (internalIndex < 10) {
137
			$('#gymHistory_'+gym_id).find('.loadMoreButtonHistory').hide();
138
		} else {
139
			$('#gymHistory_'+gym_id).find('.loadMoreButtonHistory').removeClass('hidden').data('page', page+1).show();
140
		}
141
		$('#gymHistory_'+gym_id).find('.gymHistoryLoader').hide();
142
	});
143
}
144
145
function printPokemonList(pokemons, pokeimg_suffix, hide_unchanged) {
146
	var gymPokemon = $('<ul>',{class: 'list-inline'});
147
	$.each(pokemons, function(idx, pokemon) {
148
		if (!hide_unchanged || pokemon.class) {
149
			var list = $('<li>', {class: pokemon.class});
150
			list.append($('<a>', { class: 'no-link', href : 'pokemon/'+pokemon.pokemon_id }).append($('<img />', { src: 'core/pokemons/'+pokemon.pokemon_id+pokeimg_suffix }).css('height', '2em')));
151
			list.append($('<br><span class="small">'+pokemon.cp+' CP</span>'));
152
			list.append($('<br><span style="font-size:70%"><a href="trainer?name='+pokemon.trainer_name+'" class="no-link">'+pokemon.trainer_name+'</a></span>'));
153
			gymPokemon.append(list);
154
		}
155
	});
156
	return gymPokemon;
157
}
158
159
function printGymHistory(gym_id, entry, pokeimg_suffix, locale) {
0 ignored issues
show
Unused Code introduced by
The parameter locale is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
160
	var gymHistory = $('<tr>').css('border-bottom', '2px solid '+(entry.team_id=='3'?'#ffbe08':entry.team_id=='2'?'#ff7676':entry.team_id=='1'?'#00aaff':'#ddd'));
161
	gymHistory.append($('<td>',{text: entry.last_modified}));
162
	gymHistory.append($('<td>',{text: entry.pokemon_count, class: 'level'}).prepend($('<img />', {src:'core/img/map_'+(entry.team_id=='1'?'blue':entry.team_id=='2'?'red':entry.team_id=='3'?'yellow':'white')+'.png'})));
163
	gymHistory.append($('<td>',{text: parseInt(entry.total_cp).toLocaleString('de-DE'), class: entry.class}).append(
164
		entry.total_cp_diff !== 0 ? $('<span class="small"> ('+(entry.total_cp_diff > 0 ? '+' : '')+entry.total_cp_diff+')</span>') : null
165
	));
166
	var gymPokemon = printPokemonList(entry.pokemon, pokeimg_suffix, false);
167
	gymHistory.append($('<td>').append(gymPokemon));
168
	$('#gymHistory_'+gym_id).find('tbody').append(gymHistory);
169
}
170
171
function hideGymHistoryTables(gymHistoryTables) {
172
	gymHistoryTables.removeClass('active').hide();
173
	gymHistoryTables.find('tbody tr').remove();
174
	gymHistoryTables.find('.loadMoreButtonHistory').hide();
175
	gymHistoryTables.find('.gymHistoryLoader').hide();
176
}
177
178
function printGym(gym, pokeimg_suffix, locale) {
0 ignored issues
show
Unused Code introduced by
The parameter locale is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
179
	var gymsInfos = $('<tr>',{id: 'gymInfos_'+gym.gym_id}).css('cursor', 'pointer').css('border-bottom', '2px solid '+(gym.team_id=='3'?'#ffbe08':gym.team_id=='2'?'#ff7676':gym.team_id=='1'?'#00aaff':'#ddd')).click(function() {
180
		if (!$('#gymHistory_'+gym.gym_id).hasClass('active')) {
181
			hideGymHistoryTables($('#gymsContainer').find('.gymhistory'));
182
			loadGymHistory(0, gym.gym_id, pokeimg_suffix);
183
		} else {
184
			hideGymHistoryTables($('#gymHistory_'+gym.gym_id));
185
		}
186
	});
187
	gymsInfos.append($('<td>',{text: gym.last_modified}));
188
	if (gym.name.length > 50) { gym.name = gym.name.substr(0, 50) + '…'; }
189
	gymsInfos.append($('<td>',{text: gym.name}));
190
	gymsInfos.append($('<td>',{text: gym.pokemon_count, class: 'level'}).prepend($('<img />', {src:'core/img/map_'+(gym.team_id=='1'?'blue':gym.team_id=='2'?'red':gym.team_id=='3'?'yellow':'white')+'.png'})));
191
	gymsInfos.append($('<td>',{text: parseInt(gym.total_cp).toLocaleString('de-DE')}));
192
	var gymPokemon = printPokemonList(gym.pokemon, pokeimg_suffix, false);
193
	gymsInfos.append($('<td>').append(gymPokemon));
194
	$('#gymsContainer').append(gymsInfos);
195
	var historyTable = $('<table>',{class: 'table'});
196
	historyTable.append('<thead><tr><th style="min-width:7em">Time</th><th>Level</th><th>Total CP</th><th>Pokémon</th></tr></thead>');
197
	historyTable.append('<tbody></tbody>');
198
	historyTable.append('<tfoot><tr class="loadMore text-center"><td colspan="4"><button class="loadMoreButtonHistory btn btn-default btn-sm hidden">Load more</button></td></tr><tr class="gymHistoryLoader"><td colspan="4"><div class="loader"></div></td></tr></tfoot>');
199
	historyTable.find('.loadMoreButtonHistory').data('page', 0).click(function() {
200
		loadGymHistory($(this).data('page'), gym.gym_id, pokeimg_suffix);
201
	});
202
	var row = $('<td>',{colspan: 6});
203
	row.append(historyTable);
204
	$('#gymsContainer').append($('<tr>', {id: 'gymHistory_'+gym.gym_id, class: 'gymhistory'}).hide().append(row));
205
}
206