/
gallery.js
93 lines (83 loc) · 2.54 KB
/
gallery.js
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
var Gallery = {
examples: null,
contents: null,
categories: null,
drawExample: function (key) {
var example = this.examples[key]
var image_div = $('<div>', {
class: 'image'
}).append($('<img>', {
src: "../_static/" + example.thumb
}))
var contents_div = $('<div>', {
class: 'content'
}).append($('<div>', {
class: 'header'
}).text(example.title))
var div = $('<a>', {
class: 'card',
href: example.url
}).append(image_div).append(contents_div)
return div
},
makeExamples: function (examples) {
var cards = $("<div>", {
class: "ui link six stackable cards"
})
for (var j = 0; j < examples.length; j++) {
cards.append(this.drawExample(examples[j]))
}
return cards
},
drawExamples: function () {
var main_div = $("#gallery")
var gallery = this;
var categories = this.getCategories()
var cats = Object.keys(categories)
cats.sort()
cats.map(function (category) {
var div = $("<div>", {
class: "ui vertical segment"
})
div.append($("<h2>", {
class: "ui header"
}).text(category))
div.append(gallery.makeExamples(categories[category]))
main_div.append(div)
})
},
getCategories: function () {
var categories = {};
var gallery = this;
var uniqueCategories = Array.from(new Set(Object.values(this.contents)))
for (var i in uniqueCategories) {
categories[uniqueCategories[i]] = []
}
categories["Other"] = []
Object.keys(this.examples).forEach(function (key) {
if (key in gallery.contents) {
categories[gallery.contents[key]].push(key)
}
else {
categories["Other"].push(key)
}
})
if(categories["Other"].length === 0){
delete categories["Other"]
}
return categories
},
loadScript: function (url, eltId) {
var self = this;
$.ajax({
type: "GET", url: url, data: null,
dataType: "script", cache: true,
complete: function (jqxhr, textstatus) {
if (textstatus != "success") {
document.getElementById(eltId).src = url;
}
self.drawExamples();
}
});
}
}