|
@@ -1,10 +1,9 @@
|
|
|
-
|
|
|
/*
|
|
|
* 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
|
|
|
+// them once on page load and can then use the same compiled
|
|
|
// templates many times
|
|
|
var albums_template, photos_template, photo_template, slideshow_template;
|
|
|
|
|
@@ -14,143 +13,139 @@ 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);
|
|
|
+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();
|
|
|
-
|
|
|
-});
|
|
|
+$(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();
|
|
|
+});
|