123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*
- * This file contains the javascript code for our gallery
- */
- // variables for all of the templates so we only have to compile
- // them once on page load and can then use the same compiled
- // templates many times
- var albums_template, photos_template, photo_template, slideshow_template;
- // variables to store the current displayed album and photo
- var current_album = gallery.albums[0];
- var current_photo = current_album.photos[0];
- // a helper function that instantiates a template
- // and displays the results in the content div
- function showTemplate(template, data) {
- var html = template(data);
- $("#content").html(html);
- }
- // document read gets called when the whole document
- // is loaded, so we put most of the code that needs to run
- // in here
- $(document).ready(function () {
- //
- // compile all of our templates ready for use
- //
- var source = $("#albums-template").html();
- albums_template = Handlebars.compile(source);
- source = $("#photos-template").html();
- photos_template = Handlebars.compile(source);
- source = $("#photo-template").html();
- photo_template = Handlebars.compile(source);
- source = $("#slideshow-template").html();
- slideshow_template = Handlebars.compile(source);
- //
- // clicking on the albums tab shows the
- // thumbnails of all the albums
- //
- $("#albums-tab").click(function () {
- // displays the albums template
- showTemplate(albums_template, gallery);
- // make the albums tab the active one
- // first make the currently active tab inactive
- $(".nav-tabs .active").removeClass("active");
- // then make albums tab active
- $("#albums-tab").addClass("active");
- // add a click callback to each album
- // thumbnail which displays the photos
- // template on that album
- // (I have written out the code for this
- // function for clarity but it is actually
- // pretty much the same as the photos tab
- // function so we could acutally just
- // call $(".photo-thumbnail").click() )
- $(".album-thumbnail").click(function () {
- // get the index (position in the array)
- // of the album we clicked on
- // "this" is the element that was clicked on
- // data("id") gets the attribute data-id
- // (which we set to the index of the album in
- // the array - @index)
- var index = $(this).data("id");
- // set the current album to this album
- current_album = gallery.albums[index];
- // displays the photos template
- showTemplate(photos_template, current_album);
- // add an on click al all the photo thumbnails
- // which displays the photo in a modal popup
- $(".photo-thumbnail").click(function () {
- // get the index (position in the array)
- // of the photo we clicked on
- // "this" is the element that was clicked on
- // data("id") gets the attribute data-id
- // (which we set to the index of the photo in
- // the array - @index)
- var index = $(this).data("id");
- // set the current photo to this photo
- current_photo = current_album.photos[index];
- // displays the single photo template
- showTemplate(photo_template, current_photo);
- });
- });
- });
- //
- // clicking on the photos tab shows all of the
- // photos in the current album
- //
- $("#photos-tab").click(function () {
- // displays the photos template
- showTemplate(photos_template, current_album);
- // make the photos tab the active one
- // first make the currently active tab inactive
- $(".nav-tabs .active").removeClass("active");
- // then make photos tab active
- $("#photos-tab").addClass("active");
- // add an on click al all the photo thumbnails
- // which displays the photo in a modal popup
- $(".photo-thumbnail").click(function () {
- // get the index (position in the array)
- // of the photo we clicked on
- // "this" is the element that was clicked on
- // data("id") gets the attribute data-id
- // (which we set to the index of the photo in
- // the array - @index)
- var index = $(this).data("id");
- // set the current photo to this photo
- current_photo = current_album.photos[index];
- // displays the single photo template
- showTemplate(photo_template, current_photo);
- });
- });
- //
- // clicking on the slideshow tab displays the
- // current album as a slide show
- //
- $("#slideshow-tab").click(function () {
- // display the slideshow template using the
- // current album
- showTemplate(slideshow_template, current_album);
- // make the slideshow tab the active one
- // first make the currently active tab inactive
- $(".nav-tabs .active").removeClass("active");
- // then make slideshow tab active
- $("#slideshow-tab").addClass("active");
- });
- // start the page by showing the albums view
- // we do this by virtually clicking on the
- // albums tab
- $("#albums-tab").click();
- });
|