Advertisement
TheTintin

Untitled

May 30th, 2017
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.72 KB | None | 0 0
  1. function httpGetAsync(theUrl, callback) {
  2. var xhr = new XMLHttpRequest();
  3. var argsToCallback = Array.prototype.slice.call(arguments, 2);
  4.  
  5. xhr.onreadystatechange = function() {
  6. if (xhr.readyState === 4 && xhr.status === 200) {
  7. var args = [JSON.parse(xhr.responseText)];
  8. args = args.concat(argsToCallback);
  9. callback.apply(this, args);
  10. } else {
  11. console.log("Status de la r�ponse:" + this.status, this.statusText);
  12. }
  13. }
  14. xhr.open("GET", theUrl, true);
  15. xhr.send(null);
  16. };
  17.  
  18. document.addEventListener("DOMContentLoaded", function(event) {
  19. console.log("DOM totalement charg�");
  20.  
  21. var map = {
  22. arrayStation: [],
  23. map: null,
  24. UrlGetAll: "https://api.jcdecaux.com/vls/v1/stations?contract=Paris&apiKey=ec961bfa3da07a83f9e495a167f9a34b79f2fa5a",
  25. init: function() {
  26. this.map = new google.maps.Map(document.getElementById('map'), {
  27. zoom: 15,
  28. center: {lat: 48.8566, lng: 2.3522}
  29. });
  30.  
  31. httpGetAsync(this.UrlGetAll, this.marqueurs, this.map);
  32. },
  33.  
  34. nomDesStations: function(resultat) {
  35. var nomCompletStation = donneesJson[i].name;
  36. var resultat = nomCompletStation.split('-')[1].trim();
  37. },
  38.  
  39. marqueurs: function(donneesJson, map) {
  40. var markers = [];
  41.  
  42. function infosBulleMarker(i) {
  43. document.getElementById("nomStation").textContent = donneesJson[i].name;
  44. document.getElementById("adresse").textContent = donneesJson[i].address;
  45. document.getElementById("statut").textContent = donneesJson[i].status;
  46. document.getElementById("place_dispo").textContent = donneesJson[i].available_bike_stands;
  47. document.getElementById("velo_dispo").textContent = donneesJson[i].available_bikes;
  48. map.panTo(donneesJson[i].position);
  49. };
  50.  
  51. for (var i = 0; i < donneesJson.length; i++) {
  52. var myLatLng = donneesJson[i].position;
  53. var marker = new google.maps.Marker({
  54. numero: i,
  55. position: myLatLng,
  56. title: donneesJson[i].name
  57. });
  58.  
  59. marker.addListener('click', function() {
  60. infosBulleMarker(this.numero);
  61. });
  62.  
  63. markers.push(marker);
  64. };
  65.  
  66. var markerCluster = new MarkerClusterer(map, markers, {
  67. imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
  68. });
  69. },
  70. };
  71.  
  72. map.init();
  73. });
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84. // Objet de la signature
  85. var signature = {
  86. canvas: document.getElementById('canvas'), // Cr�ation d'un canvas
  87. ctx: canvas.getContext('2d'), // Context du canvas (2 dimensions)
  88. pos: { x: 0, y: 0 }, // Derni�re position connue
  89. rect: canvas.getBoundingClientRect(), // Renvoie les dimensions du canvas et sa position dans le viewport
  90. nom: document.getElementById("nom"), // Valeur entr� pour le nom
  91. prenom: document.getElementById("prenom"), // Valeur entr� pour le pr�nom
  92. station: document.getElementById("nomStation"), // Nom de la station s�lectionn�
  93. // Initialise
  94. init: function() {
  95. var canvas = this.canvas;
  96. var pos = this.pos;
  97. var ctx = this.ctx;
  98. // Nouvelle position de l'�v�nement souris
  99. function setPosition(e) {
  100. // Renvoie les dimensions du canvas et sa position dans le viewport
  101. var rect = canvas.getBoundingClientRect();
  102.  
  103. pos.x = (e.clientX - rect.left) * (canvas.width / rect.width);
  104. pos.y = (e.clientY - rect.top) * (canvas.height / rect.height);
  105. };
  106. // Permet de dessiner
  107. function draw(e) {
  108. // Le bouton gauche de la souris doit �tre press�
  109. if (e.buttons !== 1) return;
  110. ctx.beginPath(); // commencer
  111. ctx.lineWidth = 4;
  112. ctx.lineCap = 'round';
  113. ctx.strokeStyle = 'black';
  114. ctx.moveTo(pos.x, pos.y); // de
  115. setPosition(e);
  116. ctx.lineTo(pos.x, pos.y); // �
  117. ctx.stroke(); // dessin
  118. };
  119. // Cr�ation d'un espace pour dessiner la signature (rattach� � l'�v�nement)
  120. this.canvas.addEventListener('mousemove', draw);
  121. this.canvas.addEventListener('mousedown', setPosition);
  122. this.canvas.addEventListener('mouseenter', setPosition);
  123. },
  124.  
  125. // Efface la signature
  126. erase: function() {
  127. // Nettoie enti�rement le canvas
  128. signature.ctx.clearRect(0, 0, canvas.width, canvas.height);
  129. },
  130. // Sauvegarde la signature
  131. save: function() {
  132. /*if ( === ); {
  133. alert("Veuillez signer avant de confirmer votre r�servation."); }*/
  134. if ((this.nom.value === "") && (this.prenom.value === "")) {
  135. alert("Veuillez renseigner votre Nom et Pr�nom.");
  136. return;
  137. }
  138. document.getElementById("canvasimg").src = this.canvas.toDataURL();
  139. document.getElementById("canvasimg").style.display = "inline";
  140.  
  141.  
  142. // Nettoie enti�rement le canvas une fois sauvegard�
  143. this.ctx.clearRect(0, 0, canvas.width, canvas.height);
  144. },
  145. // Gestion de la r�servation
  146. stockage: function() {
  147. // Stockage des valeurs
  148. sessionStorage.setItem("nom", this.nom.value);
  149. sessionStorage.setItem("prenom", this.prenom.value);
  150. sessionStorage.setItem("nomStation", this.station.textContent);
  151. // D�tection
  152. if (typeof(sessionStorage) !== "undefined") {
  153. sessionStorage.setItem(this.nom.value, this.prenom.value, this.station.textContent)
  154. // Affichage dans la page
  155. document.getElementById('message').innerHTML = this.nom.value.toUpperCase() + " " + this.prenom.value.toUpperCase() + ", votre v�lo est r�serv� � la station " + this.station.textContent + " pour ";
  156. } else {
  157. console.log("sessionStorage n'est pas support�");
  158. }
  159. }
  160. };
  161. signature.init();
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174. // Objet du compte � rebours
  175. var timer = {
  176. count: 60 * 20, // 20 minutes
  177. display: document.getElementById('time'),
  178. intervalID: null,
  179.  
  180. // G�n�re le compte � rebours
  181. update: function() {
  182. var minutes, seconds;
  183. // Calcule les unit�s, en nombre entier
  184. minutes = parseInt(this.count / 60);
  185. seconds = parseInt(this.count % 60);
  186. // D�termine si il y a besoin d'un 0
  187. // Condition If True : False
  188. minutes = minutes < 10 ? "0" + minutes : minutes;
  189. seconds = seconds < 10 ? "0" + seconds : seconds;
  190. // Affichage de mise � jour
  191. this.display.textContent = minutes + " min " + seconds + " sec";
  192. },
  193.  
  194. // Lance le compte � rebours
  195. start: function() {
  196. this.intervalID = setInterval(function(self) {
  197. self.update();
  198. // Affichage quand la r�servation � expir�
  199. if (--self.count < 0) {
  200. // Effacer le compte � rebours une fois fini
  201. clearInterval(self.intervalID);
  202. document.getElementById('message').innerHTML ="Votre r�servation � expir� ";
  203. }
  204. }, 1000, this);
  205. },
  206. // Fais recommencer le compte � rebours
  207. reset: function() {
  208. this.count = 60 * 20;
  209. },
  210.  
  211. // Arr�te le compte � rebours
  212. stop: function() {
  213. clearInterval(this.intervalID);
  214. },
  215. // Remet � jour le compte � rebours � chaque nouvelle r�servation
  216. countdown: function() {
  217. minutes = this.count / 60;
  218. seconds = this.count % 60;
  219. if ((minutes > 0) && (seconds > 0)) {
  220. this.reset();
  221. } else {
  222. this.start();
  223. }
  224. }
  225. };
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232. // Mise en place du onclick sur le bouton Confirmer
  233. function saveStockageCountdown() {
  234. signature.save();
  235. signature.stockage();
  236. timer.countdown();
  237. };
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248. // Fen�tre modale en JS
  249.  
  250. // Affichage correct du nom de la station split + trim
  251.  
  252. // Rendre obligatoire de selectionner une station pour reserver m�me quand page refraichit
  253. // Mise a jour nbre velo quand clique sur un marqueur refaire appel a l'API cibl�
  254. // Supprimer lancement timer quand pas de nom / prenom
  255. // Bloquer reservation si pas de signature
  256.  
  257. // Creer objet pour la carte
  258. // Creer objet pour la fen�tre modale
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement