aboutsummaryrefslogtreecommitdiffstats
path: root/docs/assets/scripts/app.js
blob: 514dc2c9b805f0c888f39404896bf681393b8c61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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
147
148
149
150
151
152
153
154
function replace_str(base, replacement) {
  return base + replacement; // FIXME TODO should replace %s
}

$(function(){

  $('.reveal-on-click dd').hide();
  $('.reveal-on-click dt').on('click', function(){
    // $(this).find('+ dd').toggle();
    var $dd = $(this).find('+ dd');
    if ($dd.is(':visible')) {
      $(this).removeClass('revealed');
      $dd.slideUp();
    } else {
      $(this).addClass('revealed');
      $dd.slideDown();
    }
  });

  var reveal_all_text = {'reveal': 'Show all ', 'hide': 'Collapse all '}; // TODO add %s

  $('dl.reveal-on-click').each(function(){
    $(this).before("<div class='reveal-all revealed'>&nbsp;</div>");
  });
  $('.reveal-all').on('click', function(){
    console.log("reveal all clicked");
    var $dl = $(this).find('+ dl.reveal-on-click');
    var noun = $dl.data('reveal-noun');
    if ($(this).hasClass('revealed')) {
      console.log("hiding all");
      $dl.find('dt').removeClass('revealed');
      $dl.find('dd').slideUp();
      $(this).removeClass('revealed');
      $(this).text(replace_str(reveal_all_text['reveal'], noun));
    } else {
      console.log("showing all");
      $dl.find('dt').addClass('revealed');
      $dl.find('dd').slideDown();
      $(this).addClass('revealed');
      $(this).text(replace_str(reveal_all_text['hide'], noun));
    }
  });
  $('.reveal-all').trigger('click');

  // hide the attention-box breakouts within mock-documents so 
  // the use can copy-and-paste the templates
  // this is used in: running/example_press_releases
  $('.toggle-button').on('click', function(){
      var target = $(this).data("target");
      $('#' + target +'.mock-document .attention-box').slideToggle();
  });
  $('.toggle-button').show(); // reveal the show/hide buttons

  /**
   * Owl Slider
   */
  $("#owl-slide").owlCarousel({
    items : 1,
    singleItem : true,
    navigation : true
  });


  /**
   * training slideshow for /training pages
   **/
  $('a.play-as-slideshow').html('&raquo; View as slideshow').attr('href', '#');

  var current_slide_number;
  var slides;
  $(".play-as-slideshow").on("click", function(){
      var $slide;
      if (current_slide_number === undefined) {
          slides = [];
          current_slide_number = 0;
          $slide = $(
            '<div id="full-screen-slide" class="modal-slide">'
            + '<div>'
              + '<div class="slide-contents"></div>'
              + '<a href="#close" title="Close" class="modal-slide-close">&times;</a>'
            + '</div>'
          + '</div>');
          $('body').prepend($slide);
          $(".modal-slide-close").on("click", function(){
              end_training_slides();
          });
          var slides_title = $('.main-content h1').text();
          var $slide_0 = $('<div class="slide-contents">'
             + '<h2>' + slides_title + '</h2>'
             + '<p>press &rarr; to advance</p>'
             + '<p>press esc to exit</p>'
          + '</div>');
          slides.push($slide_0);
          var last_heading = "";
          $("main.main-content").find("h2,h3").each(function($i){
              last_heading = $(this).html();
              var $contents = $(this).nextUntil("h2,h3");
              var $slide_div = $('<div class="slide-contents"></div>');
              $slide_div.append($("<h2/>").html(last_heading));
              $slide_div.append($contents.clone(false));
              slides.push($slide_div.clone(false));
          });
          $(document).keydown( function(e) { key_down_training(e.which);} );
      }
      display_training_slide(0);
  });  

  
  // which_slide: "next", "prev", or a number
  function display_training_slide(which_slide){
      if (which_slide == 'next' && current_slide_number + 1 < slides.length) {
          current_slide_number++;
      } else if (which_slide == 'prev' && current_slide_number > 0 ) {
          current_slide_number--;
      } else {
          var slide_number = parseInt(which_slide);
          if (slide_number >= 0 && slide_number < slides.length) {
              current_slide_number = slide_number;
          }
      }
      $("#full-screen-slide .slide-contents")
        .html(slides[current_slide_number].html());
      $("#full-screen-slide").show();
  }

  function end_training_slides(){
      $("#full-screen-slide").hide();
      current_slide_number = 0;
  }

  var key_code_arrow_left = 37;
  var key_code_arrow_right = 39;
  var key_code_ENTER = 13;
  var key_code_ESC = 27;
  var key_code_SPACE = 32;
  var key_code_0 = 48;
  var key_code_9 = 57;
  var key_code_B = 66;
  
  function key_down_training(key_code){
    if (key_code == key_code_arrow_right || key_code == key_code_ENTER) {
        display_training_slide('next')
    } else if (key_code == key_code_arrow_left || key_code == key_code_B ) {
        display_training_slide('prev')
    } else if (key_code >= key_code_0 && key_code <= key_code_9) {
        display_training_slide(key_code - key_code_0);
    } if (key_code == key_code_ESC || key_code == key_code_SPACE) {
        end_training_slides();
    }
  }


 
});