Passed
Pull Request — master (#283)
by
unknown
03:02
created

gymhistory.content.js ➔ hideGymHistoryTables   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 6
rs 9.4285
1
/** global: gymName */
2
3
var gymRanks = [
4
	{ level : 1,  prestigeMax : 2000,  prestigeMin : 0 },
5
	{ level : 2,  prestigeMax : 4000,  prestigeMin : 2000 },
6
	{ level : 3,  prestigeMax : 8000,  prestigeMin : 4000 },
7
	{ level : 4,  prestigeMax : 12000, prestigeMin : 8000 },
8
	{ level : 5,  prestigeMax : 16000, prestigeMin : 12000 },
9
	{ level : 6,  prestigeMax : 20000, prestigeMin : 16000 },
10
	{ level : 7,  prestigeMax : 30000, prestigeMin : 20000 },
11
	{ level : 8,  prestigeMax : 40000, prestigeMin : 30000 },
12
	{ level : 9,  prestigeMax : 50000, prestigeMin : 40000 },
13
	{ level : 10, prestigeMax : 52000, prestigeMin : 50000 }
14
];
15
16
$(function () {
17
	$.getJSON("core/json/variables.json", function(variables) {
18
		var pokeimg_suffix = variables['system']['pokeimg_suffix'];
19
20
		$('.gymLoader').hide();
21
22
		var page = 0;
23
		var teamSelector = ''; //''=all; 0=neutral; 1=Blue; 2=Red; 3=Yellow
24
		var rankingFilter = 0; //0=Level & Gyms; 1=Level; 2=Gyms
25
26
		$('input#name').filter(':visible').val(gymName);
27
28
		$('#loadMoreButton').click(function () {
29
			loadGyms(page, $('input#name').filter(':visible').val(), teamSelector, rankingFilter, pokeimg_suffix, true);
30
			page++;
31
		}).trigger('click');
32
33
		$('#searchGyms').submit(function ( event ) {
34
			page = 0;
35
			$('#gymsContainer').empty();
36
			$('#loadMoreButton').trigger('click');
37
			event.preventDefault();
38
		});
39
40
		$('.teamSelectorItems').click(function ( event ) {
41
			switch ($(this).attr('id')) {
42
				case 'NeutralTeamsFilter':
43
					teamSelector=0;
44
					break;
45
				case 'BlueTeamFilter':
46
					teamSelector=1;
47
					break;
48
				case 'RedTeamFilter':
49
					teamSelector=2;
50
					break;
51
				case 'YellowFilter':
52
					teamSelector=3;
53
					break;
54
				default:
55
					teamSelector='';
56
			}
57
			$('#teamSelectorText').html($(this).html());
58
			event.preventDefault();
59
			$('#searchGyms').submit();
60
61
		});
62
		$('.rankingOrderItems').click(function ( event ) {
63
			switch ($(this).attr('id')) {
64
				case 'changedFirst':
65
					rankingFilter=0;
66
					break;
67
				case 'nameFirst':
68
					rankingFilter=1;
69
					break;
70
				case 'prestigeFirst':
71
					rankingFilter=2;
72
					break;
73
				default:
74
					rankingFilter=0;
75
			}
76
			$('#rankingOrderText').html($(this).html());
77
			event.preventDefault();
78
			$('#searchGyms').submit();
79
		});
80
		window.onpopstate = function() {
81
			if (window.history.state && 'gymhistory' === window.history.state.page) {
82
				$('input#name').filter(':visible').val(window.history.state.name);
83
				page = 0;
84
				$('#gymsContainer').empty();
85
				loadGyms(page, $('input#name').filter(':visible').val(), teamSelector, rankingFilter, pokeimg_suffix, false);
86
				page++;
87
			} else {
88
				window.history.back();
89
			}
90
		};
91
	});
92
});
93
94
function loadGyms(page, name, teamSelector, rankingFilter, pokeimg_suffix, stayOnPage) {
95
	$('.gymLoader').show();
96
	if (stayOnPage) {
97
		// build a state for this name
98
		var state = {name: name, page: 'gymhistory'};
99
		window.history.pushState(state, 'gymhistory', 'gymhistory?name=' + name);
100
	}
101
	$.ajax({
102
		'async': true,
103
		'type': 'GET',
104
		'global': false,
105
		'dataType': 'json',
106
		'url': 'core/process/aru.php',
107
		'data': {
108
			'type' : 'gyms',
109
			'page' : page,
110
			'name' : name,
111
			'team' : teamSelector,
112
			'ranking' :rankingFilter
113
		}
114
	}).done(function (data) {
115
		var internalIndex = 0;
116
		$.each(data.gyms, function (idx, gym) {
117
			internalIndex++
118
			printGym(gym, pokeimg_suffix, data.locale);
119
		});
120
		if (internalIndex < 10) {
121
			$('#loadMoreButton').hide();
122
		} else {
123
			$('#loadMoreButton').removeClass('hidden').show();
124
		}
125
		$('.gymLoader').hide();
126
	});
127
}
128
129
function loadGymHistory(page, gym_id, pokeimg_suffix) {
130
	$('#gymHistory_'+gym_id).addClass('active').show();
131
	$('#gymHistory_'+gym_id).find('.gymHistoryLoader').show();
132
	$.ajax({
133
		'async': true,
134
		'type': 'GET',
135
		'global': false,
136
		'dataType': 'json',
137
		'url': 'core/process/aru.php',
138
		'data': {
139
			'type' : 'gymhistory',
140
			'page' : page,
141
			'gym_id' : gym_id
142
		}
143
	}).done(function (data) {
144
		var internalIndex = 0;
145
		$.each(data.entries, function(idx, entry) {
146
			internalIndex++
147
			printGymHistory(gym_id, entry, pokeimg_suffix, data.locale);
148
		});
149
		if (internalIndex < 10) {
150
			$('#gymHistory_'+gym_id).find('.loadMoreButtonHistory').hide();
151
		} else {
152
			$('#gymHistory_'+gym_id).find('.loadMoreButtonHistory').removeClass('hidden').data('page', page+1).show();
153
		}
154
		$('#gymHistory_'+gym_id).find('.gymHistoryLoader').hide();
155
	});
156
}
157
158
function printPokemonList(pokemons, pokeimg_suffix, hide_unchanged) {
159
	var gymPokemon = $('<ul>',{class: 'list-inline'});
160
	$.each(pokemons, function(idx, pokemon) {
161
		if (!hide_unchanged || pokemon.class) {
162
			var list = $('<li>', {class: pokemon.class});
163
			list.append($('<a>', { class: 'no-link', href : 'pokemon/'+pokemon.pokemon_id }).append($('<img />', { src: 'core/pokemons/'+pokemon.pokemon_id+pokeimg_suffix }).css('height', '2em')));
164
			list.append($('<br><span class="small">'+pokemon.cp+' CP</span>'));
165
			list.append($('<br><span style="font-size:70%"><a href="trainer?name='+pokemon.trainer_name+'" class="no-link">'+pokemon.trainer_name+'</a></span>'));
166
			gymPokemon.append(list);
167
		}
168
	});
169
	return gymPokemon;
170
}
171
172
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...
173
	var gymLevel = gymRanks.find(r => r.prestigeMin <= entry.gym_points && r.prestigeMax > entry.gym_points) || { level : 10 };
174
	var gymHistory = $('<tr>').css('border-bottom', '2px solid '+(entry.team_id=='3'?'#ffbe08':entry.team_id=='2'?'#ff7676':entry.team_id=='1'?'#00aaff':'#ddd'));
175
	gymHistory.append($('<td>',{text: entry.last_modified}));
176
	gymHistory.append($('<td>',{text: gymLevel.level, 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'})));
177
	gymHistory.append($('<td>',{text: parseInt(entry.gym_points).toLocaleString('de-DE'), class: entry.class}).append(
178
		entry.gym_points_diff !== 0 ? $('<span class="small"> ('+(entry.gym_points_diff > 0 ? '+' : '')+entry.gym_points_diff+')</span>') : null
179
	));
180
	var gymPokemon = printPokemonList(entry.pokemon, pokeimg_suffix, false);
181
	gymHistory.append($('<td>').append(gymPokemon));
182
	$('#gymHistory_'+gym_id).find('tbody').append(gymHistory);
183
}
184
185
function hideGymHistoryTables(gymHistoryTables) {
186
	gymHistoryTables.removeClass('active').hide();
187
	gymHistoryTables.find('tbody tr').remove();
188
	gymHistoryTables.find('.loadMoreButtonHistory').hide();
189
	gymHistoryTables.find('.gymHistoryLoader').hide();
190
}
191
192
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...
193
	var gymLevel = gymRanks.find(r => r.prestigeMin <= gym.gym_points && r.prestigeMax > gym.gym_points) || { level : 10 };
194
	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() {
195
		if (!$('#gymHistory_'+gym.gym_id).hasClass('active')) {
196
			hideGymHistoryTables($('#gymsContainer').find('.gymhistory'));
197
			loadGymHistory(0, gym.gym_id, pokeimg_suffix);
198
		} else {
199
			hideGymHistoryTables($('#gymHistory_'+gym.gym_id));
200
		}
201
	});
202
	gymsInfos.append($('<td>',{text: gym.last_modified}));
203
	if (gym.name.length > 50) { gym.name = gym.name.substr(0, 50) + '…'; }
204
	gymsInfos.append($('<td>',{text: gym.name}));
205
	gymsInfos.append($('<td>',{text: gymLevel.level, 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'})));
206
	gymsInfos.append($('<td>',{text: parseInt(gym.gym_points).toLocaleString('de-DE')}));
207
	var gymPokemon = printPokemonList(gym.pokemon, pokeimg_suffix, false);
208
	gymsInfos.append($('<td>').append(gymPokemon));
209
	$('#gymsContainer').append(gymsInfos);
210
	var historyTable = $('<table>',{class: 'table'});
211
	historyTable.append('<thead><tr><th style="min-width:7em">Time</th><th>Level</th><th>Prestige</th><th>Pokémon</th></tr></thead>');
212
	historyTable.append('<tbody></tbody>');
213
	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>');
214
	historyTable.find('.loadMoreButtonHistory').data('page', 0).click(function() {
215
		loadGymHistory($(this).data('page'), gym.gym_id, pokeimg_suffix);
216
	});
217
	var row = $('<td>',{colspan: 6});
218
	row.append(historyTable);
219
	$('#gymsContainer').append($('<tr>', {id: 'gymHistory_'+gym.gym_id, class: 'gymhistory'}).hide().append(row));
220
}
221