script.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. function gestionarray() {
  2. // dyn_data.split();
  3. console.log(dyn_data.mappoints[1].id);
  4. $("#page").addClass(dyn_data.mappoints[1].id);
  5. }
  6. function map() {
  7. var mymap = L.map('mapid').setView([48.9367935,2.3569287], 17);
  8. setTimeout(mymap.invalidateSize.bind(map));
  9. L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
  10. maxZoom: 18,
  11. id: 'mapbox.streets'
  12. }).addTo(mymap);
  13. var LeafIcon = L.Icon.extend({
  14. options: {
  15. iconSize: [50, 50],
  16. iconAnchor: [25, 25],
  17. }
  18. });
  19. var markers = {};
  20. var greenIcon = new LeafIcon({iconUrl: 'user/themes/r2c/images/handler.svg'})
  21. for (var i = 0; i < dyn_data.mappoints.length; i++) {
  22. var id = dyn_data.mappoints[i].id;
  23. markers[id] = L.marker([dyn_data.mappoints[i].lat, dyn_data.mappoints[i].long], {icon: greenIcon}).bindPopup(dyn_data.mappoints[i].title).addTo(mymap);
  24. // console.log("dyn_datad2", dyn_data.mappoints[i].title);
  25. markers[id]._icon.id = id;
  26. }
  27. };
  28. function scrollbar(){
  29. $(window).on("load",function(){
  30. $("#start > div > div").mCustomScrollbar({
  31. axis:"y",
  32. setTop: 0,
  33. });
  34. });
  35. }
  36. function clickhand(){
  37. $(".handler").on("mousedown", function (e) {
  38. e.preventDefault();
  39. $(this).addClass("mouseDown");
  40. }).on("mouseup", function () {
  41. $(this).removeClass("mouseDown");
  42. });
  43. };
  44. function drag() {
  45. var $hand = $( ".handler" );
  46. var $hand1 = $( ".hand1" );
  47. var $hand2 = $( ".hand2" );
  48. var p = 100;
  49. //marge
  50. var mrg = 1;
  51. // Blocs
  52. // find
  53. var $recits = $hand.parents('#page').find('#recits');
  54. var $itw = $hand.parents('#page').find("#interviews");
  55. var $img = $hand.parents('#page').find("#images");
  56. var $stmp = $hand.parents('#page').find("#streetmap");
  57. var $rs = $hand.parents('#page').find("#reseaux-sociaux");
  58. var $links = $hand.parents('#page').find("#links");
  59. // handler
  60. // dimension
  61. var $Whand = parseFloat($hand.outerWidth(true));
  62. var $Hhand = parseFloat($hand.outerHeight(true));
  63. $hand1.draggable({
  64. containment: "#start",
  65. scroll: false,
  66. drag: function(event, ui){
  67. var oW = parseFloat($("#start").outerWidth(true));
  68. var oH = parseFloat($("#start").outerHeight(true));
  69. var ajustH = (100 * ( 25/ oH )) + "%";
  70. var stophand = (0.8 * oW) - 130;
  71. ui.position.left = Math.max( 200, ui.position.left );
  72. ui.position.left = Math.min( stophand, ui.position.left );
  73. // handler
  74. // position
  75. var pos = $hand1.position();
  76. var pos1 = $hand2.position();
  77. var pos11 = parseFloat(pos1.left) + 25;
  78. // center handler
  79. var ajustW = $Whand / 2;
  80. var ajustH = $Hhand / 2;
  81. // position XY
  82. var xPos = ( p * parseFloat( ((ui.position.left)) / oW) ) + "%" ;
  83. var yPos = ( p * parseFloat( ((ui.position.top)) / oH ) ) + "%" ;
  84. var xPos2 = ( p * parseFloat( ((ui.position.left ) ) / oW) ) + "%";
  85. var yPos2 = ( p * parseFloat( ((ui.position.top ) ) / oH) ) + "%" ;
  86. var xPos3 = ( p * parseFloat( (pos1.left + ajustW) / oW) ) + "%";
  87. var yPos3 = ( p * parseFloat( (ui.position.top ) / oH) ) + "%" ;
  88. //handler2
  89. var $handler2 = $(this).parent().find('.hand2');
  90. var PosHand = ( parseFloat(p * parseFloat((pos11 - 25) / oW)) - parseFloat(p * parseFloat( (ui.position.left) / oW)) ) + "%";
  91. // application dimension
  92. $hand2.css({
  93. 'top': yPos3,
  94. })
  95. $recits.css({
  96. "width": xPos,
  97. "height": yPos,
  98. "left": "-2px",
  99. })
  100. $itw.css({
  101. "left":xPos2,
  102. "width": PosHand,
  103. "height": yPos,
  104. "min-width": "200px"
  105. })
  106. $img.css({
  107. "height": yPos,
  108. "min-width": "200px",
  109. })
  110. $stmp.css({
  111. "width":xPos,
  112. "top": yPos2,
  113. "bottom":"1px",
  114. "height": 'auto',
  115. })
  116. $links.css({
  117. "top": yPos2,
  118. "left":xPos2,
  119. "width":PosHand,
  120. "bottom":"1px",
  121. "height": 'auto',
  122. })
  123. $rs.css({
  124. "top": yPos2,
  125. "bottom":0,
  126. "height": 'auto',
  127. })
  128. // if itw < 200
  129. var testPourcent = parseFloat( p * parseFloat(ui.position.left + 238) / oW ) + "%";
  130. var img200 = parseFloat( p * parseFloat( (oW - (pos11 - 25 )) / oW) ) + "%" ;
  131. if ( $itw.width() < 200) {
  132. $img.css({
  133. "width": img200,
  134. })
  135. $rs.css({
  136. "width": img200,
  137. })
  138. $hand2.css({
  139. 'left':testPourcent,
  140. })
  141. } else {}
  142. },
  143. stop: function( event, ui ) {
  144. var parent = $(this).parents('#start');
  145. $(this).css({
  146. left:parseInt($(this).css('left'))/parent.width()*100+"%",
  147. top: parseInt($(this).css('top'))/parent.height()*100+"%",
  148. });
  149. },
  150. });
  151. $hand2.draggable({
  152. containment: "#start",
  153. scroll: false,
  154. drag: function(event, ui){
  155. var oW = parseFloat($("#start").outerWidth(true));
  156. var oH = parseFloat($("#start").outerHeight(true));
  157. var stophand = (oW - 200) - 50;
  158. console.log(stophand)
  159. ui.position.left = Math.max( 400, ui.position.left );
  160. ui.position.left = Math.min( stophand, ui.position.left );
  161. // handler
  162. // position
  163. var pos = $hand1.position();
  164. var pos1 = $hand2.position();
  165. var pos11 = parseFloat(pos.left) + 25;
  166. // center
  167. var ajustW = $Whand / 2 - 1;
  168. var ajustH = $Hhand / 2 + 1;
  169. var ajustW200 = $Whand / 2 + 6;
  170. var ajustW2 = $Whand / 2 + 1;
  171. var ajustH2 = $Hhand / 2 + 1;
  172. var ajustW3 = $Whand / 2 + 3;
  173. var ajustH3 = $Hhand / 2 + 1;
  174. // position XY
  175. var xPos = ( p * parseFloat( ( oW - (ui.position.left) ) / oW) + "%" );
  176. var yPos = ( p * parseFloat( (ui.position.top ) / oH ) ) + "%" ;
  177. var xPos2 = ( p * parseFloat( ( oW - (ui.position.left) ) / oW ) ) + "%";
  178. var yPos2 = ( p * parseFloat( (ui.position.top ) / oH ) ) + "%" ;
  179. // var xPos3 = ( p * parseFloat( (oW - (pos.left)) / oW ) ) + "%";
  180. var xPos3 = ( p * parseFloat( (pos1.left + ajustW) / oW) ) + "%";
  181. var yPos3 = ( p * parseFloat( (ui.position.top ) / oH ) ) + "%" ;
  182. //handler2
  183. var $handler2 = $(this).parent().find('.hand2');
  184. var PosHand = (parseFloat(xPos3) - parseFloat(xPos)) + "%";
  185. var PosHand1 = ( parseFloat(p * parseFloat( (ui.position.left) / oW)) - parseFloat(p * parseFloat((pos11 - 25) / oW))) + "%";
  186. // application dimension
  187. $hand1.css({
  188. 'top': yPos3,
  189. })
  190. $recits.css({
  191. "height": yPos,
  192. })
  193. $itw.css({
  194. "width": PosHand1,
  195. "height": yPos,
  196. })
  197. $img.css({
  198. "width": xPos,
  199. "height": yPos,
  200. })
  201. $stmp.css({
  202. "top": yPos2,
  203. "bottom":"1px",
  204. "height": 'auto',
  205. })
  206. $rs.css({
  207. "width":xPos,
  208. "top": yPos2,
  209. "bottom":0,
  210. "height": 'auto',
  211. })
  212. $links.css({
  213. "top": yPos2,
  214. "width":PosHand1,
  215. "bottom":"1px",
  216. "height": 'auto',
  217. })
  218. // if itw < 200
  219. var test = ui.position.left - 225;
  220. var testPourcent = ( p * parseFloat(test) / oW ) + "%";
  221. var img200 = ( p * parseFloat( ((pos.left) ) / oW) + "%" );
  222. if ( $itw.width() < 200) {
  223. $recits.css({
  224. "width": img200,
  225. })
  226. $stmp.css({
  227. "width": img200,
  228. })
  229. $itw.css({
  230. "left": img200,
  231. })
  232. $links.css({
  233. "left": img200,
  234. })
  235. $hand1.css({
  236. 'left':test,
  237. })
  238. }else {
  239. }
  240. },
  241. stop: function( event, ui ) {
  242. var parent = $(this).parents("#start");
  243. $(this).css({
  244. left:parseInt($(this).css('left'))/parent.width()*100+"%",
  245. top: parseInt($(this).css('top'))/parent.height()*100+"%",
  246. });
  247. },
  248. });
  249. };
  250. function dragcanvas() {
  251. var $reseau = $('#reseaux-sociaux canvas');
  252. var $links = $('#links svg')
  253. $links.draggable({
  254. scroll: false
  255. });
  256. $reseau.draggable({
  257. scroll: false
  258. });
  259. }
  260. function mCustomScrollbar() {
  261. $('.blocs').mCustomScrollbar({
  262. scrollInertia: 100,
  263. });
  264. $('.blocs').mCustomScrollbar("update");
  265. $(document).on("click","a[href^='#']",function(e){
  266. e.preventDefault();
  267. // var id = [];
  268. // var href = $(this).attr("href");
  269. // var letter = $.inArray('#', href);
  270. // console.log('L',letter);
  271. // var target = $(href).parents(".mCustomScrollbar");
  272. //
  273. // if(target.length){
  274. // e.preventDefault();
  275. // target.mCustomScrollbar("scrollTo",href,{
  276. // scrollInertia:1000,
  277. // // offset: 0
  278. // });
  279. // }
  280. // console.log('target', target);
  281. // console.log('href', href);
  282. var hrefs = $(this).attr("href").split(',');
  283. console.log('hrefs', hrefs);
  284. var h, h_parts;
  285. for (var i = 0; i < hrefs.length; i++) {
  286. h = hrefs[i];
  287. h_parts = h.match(/^#(([^_]+)_(.+)$)/);
  288. console.log('h_parts', h_parts);
  289. // a partir de là tu peux synchro chacun des blocks en focntion de
  290. // h_parts[2] est la première partie qui te dit de quel block il s'agit
  291. // h_parts[3] est l'ancre
  292. // etc
  293. function scrollTo() {
  294. var href = target.find(h_parts[0]);
  295. e.preventDefault();
  296. target.mCustomScrollbar("scrollTo",href,{
  297. scrollInertia:1000,
  298. // offset: 0
  299. });
  300. }
  301. switch (h_parts[2]) {
  302. case 'rct':
  303. var target = $('#recits.mCustomScrollbar');
  304. scrollTo();
  305. break;
  306. case 'int':
  307. var target = $('#interviews.mCustomScrollbar');
  308. scrollTo();
  309. break;
  310. case 'img':
  311. var target = $('#images.mCustomScrollbar');
  312. scrollTo();
  313. break;
  314. case 'mp':
  315. var target = $('#streetmap.mCustomScrollbar');
  316. scrollTo();
  317. break;
  318. case 'lk':
  319. var target = $('#links.mCustomScrollbar');
  320. scrollTo();
  321. break;
  322. // case 'rs':
  323. // var target = $('#reseaux-sociaux.mCustomScrollbar');
  324. // scrollTo();
  325. // break;
  326. // case '':
  327. // etc
  328. // break;
  329. default:
  330. }
  331. }
  332. });
  333. }
  334. function paperjs() {
  335. window.onload = function() {
  336. // Get a reference to the canvas object
  337. var canvas = document.getElementById('canvas');
  338. // Create an empty project and a view for the canvas:
  339. paper.setup(canvas);
  340. // Create a Paper.js Path to draw a line into it:
  341. for (var a = 0; a < dyn_data.reseauxsociaux.length; a++) {
  342. var path = new paper.Path();
  343. // Give the stroke a color
  344. path.strokeColor = 'black';
  345. path.fillColor = 'grey';
  346. path.fullySelected = true;
  347. var x = Math.floor((Math.random() * (100 + 200)));
  348. var y= Math.floor((Math.random() * (100 + 500)));
  349. var start = new paper.Point(x, y);
  350. // Move to start and draw a line from there
  351. path.moveTo(start);
  352. for (var b = 0; b < 2; b++) {
  353. // origine
  354. var x1 = Math.floor((Math.random() * (200 + 300)));
  355. var y1= Math.floor((Math.random() * (200 + 300)) );
  356. path.lineTo(start.add([ x1, y1 ]));
  357. path.smooth();
  358. path.closed = true;
  359. }
  360. // Draw the view now:
  361. paper.view.draw();
  362. }
  363. // var pulse = 0.7;
  364. // var sinus = Math.sin(event.time * pulse + i);
  365. // var cos = Math.cos(event.time * pulse + i);
  366. // var destination = paper.Point.random(x, y) * paper.view.size;
  367. }
  368. }
  369. $(document).ready(function() {
  370. // gestionarray();
  371. mCustomScrollbar();
  372. clickhand();
  373. drag();
  374. dragcanvas();
  375. map();
  376. paperjs();
  377. // D3js();
  378. // scrollbar();
  379. });