Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / js / resources_list.js @ 8a217fa2

History | View | Annotate | Download (3.5 kB)

1 143d8a9d Kostas Papadimitriou
// Array Remove - By John Resig (MIT Licensed)
2 143d8a9d Kostas Papadimitriou
Array.prototype.remove = function(from, to) {
3 143d8a9d Kostas Papadimitriou
  var rest = this.slice((to || from) + 1 || this.length);
4 143d8a9d Kostas Papadimitriou
  this.length = from < 0 ? this.length + from : from;
5 143d8a9d Kostas Papadimitriou
  return this.push.apply(this, rest);
6 143d8a9d Kostas Papadimitriou
};
7 143d8a9d Kostas Papadimitriou
8 143d8a9d Kostas Papadimitriou
function ResourcesModule(el, conf) {
9 143d8a9d Kostas Papadimitriou
    
10 143d8a9d Kostas Papadimitriou
    var defaults = {'page_limit': 5};
11 143d8a9d Kostas Papadimitriou
    this.conf = $.extend(defaults, conf);
12 143d8a9d Kostas Papadimitriou
13 143d8a9d Kostas Papadimitriou
    this.el = el;
14 143d8a9d Kostas Papadimitriou
    
15 143d8a9d Kostas Papadimitriou
    this.selected_category = window.location.hash.replace("#","");
16 143d8a9d Kostas Papadimitriou
    if (!this.selected_category) { this.selected_category = undefined };
17 143d8a9d Kostas Papadimitriou
    
18 143d8a9d Kostas Papadimitriou
    this.categories = this.el.find(".categories ul li");
19 143d8a9d Kostas Papadimitriou
    this.orig_categories = this.categories.clone();
20 143d8a9d Kostas Papadimitriou
        
21 143d8a9d Kostas Papadimitriou
    //this.update_page_objects();
22 143d8a9d Kostas Papadimitriou
    
23 143d8a9d Kostas Papadimitriou
    this.grid_height = 251;
24 143d8a9d Kostas Papadimitriou
    this.grid_width = 251;
25 143d8a9d Kostas Papadimitriou
    this.grid_gap = 22;
26 143d8a9d Kostas Papadimitriou
27 143d8a9d Kostas Papadimitriou
    var self = this;
28 143d8a9d Kostas Papadimitriou
    $(window).bind('hashchange', function() {
29 143d8a9d Kostas Papadimitriou
        self.selected_category = window.location.hash.substring(1);
30 143d8a9d Kostas Papadimitriou
        self.update_page_objects();
31 143d8a9d Kostas Papadimitriou
        self.update_selected_category();
32 143d8a9d Kostas Papadimitriou
    })
33 143d8a9d Kostas Papadimitriou
34 143d8a9d Kostas Papadimitriou
    self.update_page_objects();
35 143d8a9d Kostas Papadimitriou
    self.update_selected_category();
36 143d8a9d Kostas Papadimitriou
}
37 143d8a9d Kostas Papadimitriou
38 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.switch = function(hide, show) {
39 143d8a9d Kostas Papadimitriou
    var hide = $(hide), show = $(show);
40 143d8a9d Kostas Papadimitriou
    var toparent = hide.parent();
41 143d8a9d Kostas Papadimitriou
    var newshow = show.clone();
42 143d8a9d Kostas Papadimitriou
    toparent.append(newshow);
43 143d8a9d Kostas Papadimitriou
    hide.animate({top:"-249px"})
44 143d8a9d Kostas Papadimitriou
    newshow.animate({
45 143d8a9d Kostas Papadimitriou
                    top:"-249px"
46 143d8a9d Kostas Papadimitriou
                }, 
47 143d8a9d Kostas Papadimitriou
                {
48 143d8a9d Kostas Papadimitriou
                    complete:function(){
49 143d8a9d Kostas Papadimitriou
                        hide.remove();
50 143d8a9d Kostas Papadimitriou
                        newshow.css({top:0});
51 143d8a9d Kostas Papadimitriou
                }
52 143d8a9d Kostas Papadimitriou
    })
53 143d8a9d Kostas Papadimitriou
}
54 143d8a9d Kostas Papadimitriou
55 143d8a9d Kostas Papadimitriou
56 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.resources = function() {
57 143d8a9d Kostas Papadimitriou
    this._resources  = this.el.find(".resource-wrapper");
58 143d8a9d Kostas Papadimitriou
    return this._resources;
59 143d8a9d Kostas Papadimitriou
}
60 143d8a9d Kostas Papadimitriou
61 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.hide = function(q) {
62 143d8a9d Kostas Papadimitriou
    q.fadeOut(300);
63 143d8a9d Kostas Papadimitriou
}
64 143d8a9d Kostas Papadimitriou
65 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.animate_els = function(els) {
66 143d8a9d Kostas Papadimitriou
    $(el).css({ position:'absolute' });
67 143d8a9d Kostas Papadimitriou
    var left = i % 3 == 0 ? 0 : (i % 3) * (self.grid_width) + ((i % 3)-1) * self.grid_gap;
68 143d8a9d Kostas Papadimitriou
69 143d8a9d Kostas Papadimitriou
    var row = Math.floor(i/3);
70 143d8a9d Kostas Papadimitriou
    var top = row * (self.grid_gap + self.grid_height);
71 143d8a9d Kostas Papadimitriou
72 143d8a9d Kostas Papadimitriou
    $(el).animate({left: left}, { complete: function(){
73 143d8a9d Kostas Papadimitriou
        $(el).animate({top: top}, {complete: function(){
74 143d8a9d Kostas Papadimitriou
        
75 143d8a9d Kostas Papadimitriou
            self.el.height((self.grid_height + self.grid_gap) * (Math.floor(to_show.length/3) + 1));
76 143d8a9d Kostas Papadimitriou
        
77 143d8a9d Kostas Papadimitriou
        }});
78 143d8a9d Kostas Papadimitriou
    }});
79 143d8a9d Kostas Papadimitriou
     
80 143d8a9d Kostas Papadimitriou
    $(el).removeClass("hidden");
81 143d8a9d Kostas Papadimitriou
    $(el).show('slow');
82 143d8a9d Kostas Papadimitriou
}
83 143d8a9d Kostas Papadimitriou
84 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.update_selected_category = function() {
85 143d8a9d Kostas Papadimitriou
    if (!this.selected_category) {
86 143d8a9d Kostas Papadimitriou
        this.categories.removeClass("inactive").removeClass("active");
87 143d8a9d Kostas Papadimitriou
        this.categories.show();
88 143d8a9d Kostas Papadimitriou
        this.el.find(".categories a.clear").hide();
89 143d8a9d Kostas Papadimitriou
        return;
90 143d8a9d Kostas Papadimitriou
    }
91 143d8a9d Kostas Papadimitriou
92 143d8a9d Kostas Papadimitriou
    var to_hide = this.categories.filter("[data-id="+this.selected_category+"]");
93 143d8a9d Kostas Papadimitriou
    var to_show = this.categories.filter("[data-id!="+this.selected_category+"]");
94 143d8a9d Kostas Papadimitriou
95 143d8a9d Kostas Papadimitriou
    to_show.removeClass("active").addClass("inactive");
96 143d8a9d Kostas Papadimitriou
    to_hide.removeClass("inactive").addClass("active");
97 143d8a9d Kostas Papadimitriou
    this.el.find(".categories a.clear").show();
98 143d8a9d Kostas Papadimitriou
}
99 143d8a9d Kostas Papadimitriou
100 143d8a9d Kostas Papadimitriou
ResourcesModule.prototype.update_page_objects = function() {
101 143d8a9d Kostas Papadimitriou
    var to_show = this.resources().filter("[data-category="+this.selected_category+"]");
102 143d8a9d Kostas Papadimitriou
    var to_hide = this.resources().filter("[data-category!="+this.selected_category+"]");
103 143d8a9d Kostas Papadimitriou
        
104 143d8a9d Kostas Papadimitriou
    if (!this.selected_category) { to_show = this.resources(); }
105 143d8a9d Kostas Papadimitriou
    _.each(to_hide, function(el){
106 143d8a9d Kostas Papadimitriou
        $(el).hide('slow');
107 143d8a9d Kostas Papadimitriou
    });
108 143d8a9d Kostas Papadimitriou
109 143d8a9d Kostas Papadimitriou
    _.each(to_show, function(el, i){
110 143d8a9d Kostas Papadimitriou
         
111 143d8a9d Kostas Papadimitriou
        $(el).fadeIn(40);
112 143d8a9d Kostas Papadimitriou
    });
113 143d8a9d Kostas Papadimitriou
}
114 143d8a9d Kostas Papadimitriou
115 143d8a9d Kostas Papadimitriou
$(document).ready(function(){
116 143d8a9d Kostas Papadimitriou
    var rm = new ResourcesModule($("#resources-list"), {}, []);
117 143d8a9d Kostas Papadimitriou
    window.rm = rm;
118 143d8a9d Kostas Papadimitriou
})
119 143d8a9d Kostas Papadimitriou