Blame view

js/crep.js 3.53 KB
e6ec151e   Geoffrey PREUD'HOMME   Ensure only corre...
1
  function removeAfter(string, pattern) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
2
3
    var n = string.indexOf(pattern);
    return string.substring(0, n != -1 ? n : string.length);
e6ec151e   Geoffrey PREUD'HOMME   Ensure only corre...
4
5
6
  }
  
  function pageName(href) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
7
8
9
10
11
12
    if (href.indexOf(window.location.host) >= 0) {
      href = removeAfter(removeAfter(href, '?'), '#');
      hrefE = href.split('/');
      return hrefE[hrefE.length - 1];
    }
    return false;
e6ec151e   Geoffrey PREUD'HOMME   Ensure only corre...
13
14
  }
  
71b34f50   Geoffrey PREUD'HOMME   Navigation preser...
15
  function updateScrollData() {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
16
17
    history.state.scrollTop = $(document.body).scrollTop();
    history.replaceState(history.state);
71b34f50   Geoffrey PREUD'HOMME   Navigation preser...
18
19
  }
  
dcc55bea   Geoffrey PREUD'HOMME   Minor cleanup nav...
20
  function pageSpecific(location) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
21
22
23
24
    if (pageName(location) == 'contact') {
      initializeMap();
    }
    $(document).scroll(updateScrollData);
dcc55bea   Geoffrey PREUD'HOMME   Minor cleanup nav...
25
26
  }
  
71b34f50   Geoffrey PREUD'HOMME   Navigation preser...
27
28
  
  
dcc55bea   Geoffrey PREUD'HOMME   Minor cleanup nav...
29
  function actLink(ev) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
30
31
32
33
34
35
36
37
38
39
    var location = ev.currentTarget.href;
    var page = pageName(location);
    if (page && page != pageName(window.location.href)) {
      loadDoc(location, function() {
        history.pushState({
          loc: location
        }, document.title, location);
      });
      return false;
    }
7ab7e900   Jean Wasilewski   file function added
40
41
  }
  
8485d451   Geoffrey PREUD'HOMME   New dynamic JS nav
42
  function dynamiseLinks(el) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
43
    $("a", el).click(actLink);
8485d451   Geoffrey PREUD'HOMME   New dynamic JS nav
44
45
  }
  
be816fc8   Geoffrey PREUD'HOMME   Removed extra par...
46
  function loadDoc(location, callback) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
47
48
49
50
51
52
53
54
55
    if (!callback) {
      callback = function() {
        return undefined;
      };
    }
    var eventsLeft = 2;
    var html = '';
    var mainContainer = $("#mainContainer");
    var oldHeight = mainContainer.height();
0b2adb5b   Geoffrey PREUD'HOMME   Better animation
56
  
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    function events() {
        eventsLeft += -1;
        if (eventsLeft <= 0) {
          // In
          //  Calculations
          mainContainer.html(html);
          mainContainer.height('auto');
          newHeight = mainContainer.height();
          mainContainer.height(oldHeight);
          //  Transition
          mainContainer.animate({
            height: newHeight,
            opacity: 1,
          }, 'fast', function() {
            mainContainer.height('auto');
            dynamiseLinks(mainContainer);
            pageSpecific(location);
            callback();
          });
        }
ae5ad01d   Geoffrey PREUD'HOMME   Animations !
77
      }
0b2adb5b   Geoffrey PREUD'HOMME   Better animation
78
      // Out
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
79
80
81
82
83
84
85
86
87
88
89
90
    $(document).off('scroll', updateScrollData);
    $(document.body).animate({
      scrollTop: $('.navbar-lower').height()
    }, 'fast');
    $.get(location + '?c', function(data) {
      html = data;
      events();
    });
    mainContainer.height(oldHeight);
    mainContainer.animate({
      opacity: 0
    }, 'fast', events);
b8d34eaa   Geoffrey PREUD'HOMME   Moved map initial...
91
92
  }
  
d71b5167   Geoffrey PREUD'HOMME   Almost functionni...
93
  function historyChange(ev) {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
94
95
96
97
98
99
100
    loadDoc(ev.state.loc, function() {
      if (ev.state.scrollTop > $('.navbar-lower').height()) {
        $(document.body).animate({
          scrollTop: ev.state.scrollTop
        }, 'fast');
      }
    });
d71b5167   Geoffrey PREUD'HOMME   Almost functionni...
101
102
  }
  
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  $(document).ready(function() {
    dynamiseLinks(document.body);
    var current = window.location.href;
    pageSpecific(current);
    history.replaceState({
      loc: current
    }, document.title, current);
    window.onpopstate = historyChange;
    $('.navbar-fixed-top .navbar-toggle').click(function() {
      $(document.body).animate({
        scrollTop: 0
      });
    });
  });
b8d34eaa   Geoffrey PREUD'HOMME   Moved map initial...
117
118
  
  function initializeMap() {
8cea2eb9   Geoffrey PREUD'HOMME   Beautifier passe
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
    var mapCanvas = document.getElementById('map-canvas');
    mapCanvas.innerHTML = '';
    var polytechPos = new google.maps.LatLng(50.6074998, 3.1373338);
    var mapOptions = {
      center: polytechPos,
      zoom: 16,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(mapCanvas, mapOptions);
    var marker = new google.maps.Marker({
      place: {
        location: polytechPos,
        query: "Polytech Lille"
      },
      attribution: {
        source: "Coupe de Robotique des Écoles Primaires",
        webUrl: window.location.host
      },
      map: map,
      title: "Polytech Lille"
    });
    var infowindow = new google.maps.InfoWindow({
      content: "<strong>Polytech Lille</strong><br/>Lieux des évènements de la Coupe de Robotique des Écoles Primaires"
    });
    marker.addListener('click', function() {
      infowindow.open(map, this);
    });
  }