Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="fr">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>PokemonGO - SELESTAT</title>
- <link href="jquery-ui-1.12.1.custom/jquery-ui.css" rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="/static/css/leaflet.css">
- <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
- <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
- <script>
- $( function() {
- $( "#popup" ).dialog();
- $( "#progressbar" ).progressbar({
- value: 20
- });
- } );
- </script>
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
- <style>
- .map {
- position: absolute;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- z-index: 100;
- }
- .report {
- z-index: 1000;
- position: absolute;
- top: 10px;
- left: 60px;
- padding: 10px;
- box-sizing: border-box;
- background-color: #fff;
- background-size: 24px 24px;
- background-position: 4px 4px;
- background-repeat: no-repeat;
- text-align: center;
- width: 200px;
- height: 38px;
- border-radius: 4px;
- box-shadow: 0 1px 5px rgba(0,0,0,0.65);
- cursor: pointer;
- }
- .meteo {
- z-index: 1000;
- bottom: 75px;
- position: absolute;
- left: 50px;
- text-align: center;
- width: 32px;
- height: 32px;
- cursor: pointer;
- }
- .box {
- z-index: 1000;
- position: absolute;
- bottom: 30px;
- left: 10px;
- padding: 10px;
- box-sizing: border-box;
- background-color: #fff;
- background-size: 24px 24px;
- background-position: 4px 4px;
- background-repeat: no-repeat;
- text-align: center;
- width: 32px;
- height: 32px;
- border-radius: 4px;
- box-shadow: 0 1px 5px rgba(0,0,0,0.65);
- cursor: pointer;
- }
- .twitter {
- background-image: url(/static/img/twitter.png);
- bottom: 70px
- }
- .my-location {
- background-image: url(/static/img/my-location.png);
- bottom: 190px
- }
- .discord {
- background-image: url(/static/img/discord.png);
- bottom: 150px
- }
- .don {
- background-image: url(/static/img/don.png)
- }
- .fb {
- background-image: url(/static/img/fb.png);
- bottom: 110px
- }
- .my-location:hover {
- background-color: #f4f4f4;
- }
- .fort-icon {
- border-radius: 12px;
- padding: 2px;
- background: #fff;
- box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
- }
- .leaflet-control-layers-toggle {
- background-image: url(/static/img/layers.png);
- }
- </style>
- </head>
- <body>
- <h1>PokeSelestat arrive, patientez.</h1>
- <div id="popup" title="PokéSélestat">
- <div class="news">
- <h3>Les nouveautés : </h3>
- <p>Modification des notifications du compte twitter. </p>
- <p>Changement d'adresse du site : http://selestat.livepokemap.fr/ . </p>
- <p>Mise en place d'un discord</p>
- <p>Mise en place d'un lien de don.</p>
- <h4>Barre de progression des dons par rapport au coût mensuel :</h4>
- <div id="progressbar"></div>
- </div>
- </div>
- <div id="main-map" class="map"></div>
- <a class="box twitter" href="https://twitter.com/PokeSelestat" target="_blank"></a>
- <a class="box my-location"></a>
- <a class="box don" href="https://www.paypal.me/mryohann" target="blank"></a>
- <a class="box discord" href="https://discord.gg/MQ79sdR" target="blank"></a>
- <a class="box fb" href="https://www.facebook.com/groups/1601387136827050/" target="blank"></a>
- <a class="report" href="http://selestat.livepokemap.fr/report">RAPPORT DE SPAWN</a>
- <div class="meteo" id="cont_Njc0NjJ8MXw1fDV8MXxGRkZGRkZ8MXwwMDAwMDB8Y3wx"><div id="spa_Njc0NjJ8MXw1fDV8MXxGRkZGRkZ8MXwwMDAwMDB8Y3wx"><a id="a_Njc0NjJ8MXw1fDV8MXxGRkZGRkZ8MXwwMDAwMDB8Y3wx" href="http://www.meteocity.com/france/selestat_v67462/" target="_blank" style="color:#333;text-decoration:none;">Météo Sélestat</a></div><script type="text/javascript" src="http://widget.meteocity.com/js/Njc0NjJ8MXw1fDV8MXxGRkZGRkZ8MXwwMDAwMDB8Y3wx"></script></div>
- <script src="/static/js/jquery-3.1.1.min.js"></script>
- <script src="/static/js/leaflet.js"></script>
- <script>
- var PokemonIcon = L.Icon.extend({
- options: {
- iconSize: [30, 30],
- popupAnchor: [0, -15]
- }
- });
- var FortIcon = L.Icon.extend({
- options: {
- iconSize: [20, 20],
- popupAnchor: [0, -10],
- className: 'fort-icon'
- }
- });
- var WorkerIcon = L.Icon.extend({
- options: {
- iconSize: [20, 20],
- className: 'worker-icon',
- iconUrl: '/static/img/pokeball.png'
- }
- });
- var NotificationIcon = L.Icon.extend({
- options: {
- iconSize: [35, 35],
- className: 'notification-icon',
- iconUrl: '/static/img/masterball.png'
- }
- });
- var PokestopIcon = L.Icon.extend({
- options: {
- iconSize: [20, 20],
- className: 'pokestop-icon',
- iconUrl: '/static/img/pokestop.png'
- }
- });
- function getMarkers () {
- return new Promise(function (resolve, reject) {
- $.get('/data', function (response) {
- resolve(response);
- });
- });
- }
- var markers = {};
- var overlays = {
- Pokemon: L.layerGroup([]),
- Trash: L.layerGroup([]),
- Gyms: L.layerGroup([]),
- Pokestops: L.layerGroup([]),
- Workers: L.layerGroup([]),
- Spawns: L.layerGroup([]),
- ScanArea: L.layerGroup([])
- };
- function getPopupContent (item) {
- var diff = (item.expires_at - new Date().getTime() / 1000);
- var minutes = parseInt(diff / 60);
- var seconds = parseInt(diff - (minutes * 60));
- var expires_at = minutes + 'm ' + seconds + 's';
- return '<b>#' + item.pokemon_id + ' ' + item.name + '</b> ' + expires_at;
- }
- function getOpacity (item) {
- var diff = (item.expires_at - new Date().getTime() / 1000);
- if (diff > 600) {
- return 1;
- }
- return 0.5 + diff / 600;
- }
- function PokemonMarker (raw) {
- var icon = new PokemonIcon({iconUrl: '/static/icons/' + raw.pokemon_id + '.png'});
- var marker = L.marker([raw.lat, raw.lon], {icon: icon, opacity: 1});
- marker.raw = raw;
- markers[raw.id] = marker;
- marker.on('popupopen',function popupopen (event) {
- event.popup.setContent(getPopupContent(event.target.raw));
- event.target.popupInterval = setInterval(function () {
- event.popup.setContent(getPopupContent(event.target.raw));
- }, 1000);
- });
- marker.on('popupclose', function (event) {
- clearInterval(event.target.popupInterval);
- });
- marker.setOpacity(getOpacity(marker.raw));
- marker.opacityInterval = setInterval(function () {
- var diff = marker.raw.expires_at - new Date().getTime() / 1000;
- if (diff > 0) {
- marker.setOpacity(getOpacity(marker.raw));
- } else {
- if (marker.raw.trash) {
- marker.removeFrom(overlays.Trash);
- } else {
- marker.removeFrom(overlays.Pokemons);
- }
- marker.removeFrom(map);
- markers[marker.raw.id] = undefined;
- clearInterval(marker.opacityInterval);
- }
- }, 1000);
- marker.bindPopup();
- return marker;
- }
- function FortMarker (raw) {
- var icon = new FortIcon({iconUrl: '/static/forts/' + raw.team + '.png'});
- var marker = L.marker([raw.lat, raw.lon], {icon: icon, opacity: 1});
- marker.raw = raw;
- markers[raw.id] = marker;
- marker.on('popupopen',function popupopen (event) {
- var pokemonName;
- if (raw.team === 0) {
- event.popup.setContent('An empty Gym!');
- } else {
- event.popup.setContent('Prestige: <b>' + raw.prestige + '</b><br>Guarding Pokemon:<br><b>' + '#' + raw.pokemon_id + ' ' + raw.pokemon_name + '</b>');
- }
- });
- marker.bindPopup();
- return marker;
- }
- function WorkerMarker (raw) {
- if (raw.sent_notification === true) {
- var icon = new NotificationIcon();
- } else {
- var icon = new WorkerIcon();
- }
- var marker = L.marker([raw.lat, raw.lon], {icon: icon});
- marker.raw = raw;
- markers[raw.worker_no] = marker;
- marker.bindPopup('<b>Worker ' + raw.worker_no + '</b><br>time: ' + raw.time + '<br>speed: ' + raw.speed + '<br>total seen: ' + raw.total_seen + '<br>visits: ' + raw.visits + '<br>seen here: ' + raw.seen_here);
- return marker;
- }
- function addMarkersToMap (data, map) {
- // Pokemons
- data.forEach(function (item) {
- var marker = null;
- if (item.type === 'pokemon') {
- // Already placed? No need to do anything, then
- if (item.id in markers) {
- return;
- }
- marker = PokemonMarker(item);
- if (item.trash) {
- marker.addTo(overlays.Trash);
- } else {
- marker.addTo(overlays.Pokemon);
- }
- } else if (item.type === 'fort') {
- // No change since last time? Then don't do anything
- var existing = markers[item.id];
- if (typeof existing !== 'undefined') {
- if (existing.raw.sighting_id === item.sighting_id) {
- return;
- }
- existing.removeFrom(overlays.Gyms);
- markers[item.id] = undefined;
- }
- marker = FortMarker(item);
- marker.addTo(overlays.Gyms);
- } else if (item.type === 'worker') {
- var existing = markers[item.worker_no];
- if (typeof existing !== 'undefined') {
- existing.removeFrom(overlays.Workers);
- markers[item.worker_no + 'c'].removeFrom(overlays.Workers);
- }
- circle = L.circle([item.lat, item.lon], 70, {weight: 2})
- markers[item.worker_no + 'c'] = circle;
- marker = WorkerMarker(item);
- marker.addTo(overlays.Workers);
- circle.addTo(overlays.Workers);
- } else if (item.type === 'pokestop') {
- var icon = new PokestopIcon();
- var marker = L.marker([item.lat, item.lon], {icon: icon});
- marker.raw = item;
- marker.bindPopup('<b>Pokestop ' + item.external_id + '</b>');
- marker.addTo(overlays.Pokestops);
- } else if (item.type === 'spawn') {
- var circle = L.circle([item.lat, item.lon], 5, {weight: 2});
- var popup = '<b>Spawn ' + item.spawn_id + '</b><br/>time: ';
- var time = '??';
- if (item.despawn_time != null) {
- time = item.despawn_time;
- }
- else {
- circle.setStyle({color: '#f03'})
- }
- popup += time + '<br/>duration: ';
- popup += item.duration == null ? '30mn' : item.duration + 'mn';
- circle.bindPopup(popup);
- circle.addTo(overlays.Spawns);
- } else if (item.type === 'scanarea'){
- var polygon = L.polyline(item.coords).addTo(overlays.ScanArea);
- }
- });
- }
- function refresh () {
- getMarkers().then(function (data) {
- addMarkersToMap(data, map);
- });
- }
- function getSpawnPoints() {
- new Promise(function (resolve, reject) {
- $.get('/spawnpoints', function (response) {
- resolve(response);
- });
- }).then(function (data) {
- addMarkersToMap(data, map);
- });
- }
- function getPokestops() {
- new Promise(function (resolve, reject) {
- $.get('/pokestops', function (response) {
- resolve(response);
- });
- }).then(function (data) {
- addMarkersToMap(data, map);
- });
- }
- function getScanAreaCoords() {
- new Promise(function (resolve, reject) {
- $.get('/scan_coords', function (response) {
- resolve(response);
- });
- }).then(function (data) {
- addMarkersToMap(data, map);
- });
- }
- var map = L.map('main-map', {preferCanvas: true}).setView([{{ map_center[0] }}, {{ map_center[1] }}], 13);
- overlays.Pokemon.addTo(map);
- var control = L.control.layers(null, overlays).addTo(map);
- L.tileLayer('{{ map_provider_url }}', {
- opacity: 0.75,
- attribution: '{{ map_provider_attribution|safe }}'
- }).addTo(map);
- map.whenReady(function () {
- $('.my-location').on('click', function () {
- map.locate({ enableHighAccurracy: true, setView: true });
- });
- setInterval(refresh, 30000);
- refresh();
- getSpawnPoints();
- getPokestops();
- getScanAreaCoords();
- });
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement