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
|
var App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter.extend();
App.Router.map(function() { // put your routes here
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.findAll('movie');
}
});
App.Movie = DS.Model.extend({
title: DS.attr('string'),
path: DS.attr('string'),
poster: DS.attr('string'),
tagline: DS.attr('string'),
plot: DS.attr('string'),
website: DS.attr('string'),
release: DS.attr('string'),
movieFiles: DS.attr(),
imdbRating: DS.attr('int'),
imdbVotes: DS.attr('int'),
omdbTomatoConsensus: DS.attr('string'),
omdbTomato: DS.attr('int'),
omdbUserTomato: DS.attr('int'),
omdbTomatoRating: DS.attr(),
omdbTomatoUserRating: DS.attr(),
tmdbId: DS.attr('int'),
linkTmdb: function() {
return "http://www.themoviedb.org/movie/" + this.get('tmdbId');
}.property('tmdbId'),
linkImdb: function() {
return "http://www.imdb.com/title/" + this.get('id');
}.property('id'),
linkLetterboxd: function() {
return "http://letterboxd.com/tmdb/" + this.get('tmdbId');
}.property('tmdbId'),
linkOfdb: function() {
return "http://www.ofdb.de/view.php?page=suchergebnis&Kat=IMDb&SText=" + this.get('id');
}.property('id'),
linkRotten: function() {
return "http://www.rottentomatoes.com/search/?search=" + encodeURIComponent(this.get('title'));
}.property('title')
});
App.IndexController = Ember.ArrayController.extend({
page: 1,
perPage: "10",
sortProperties: ["title"],
visiblePerPage: ["10", "20", "25", "50", "100", "250", "500"],
pages: function() {
var list = [];
var prev = null;
var sortProperty = this.get("sortProperties")[0];
for (var i = 1; i <= this.get("pagesCount"); i++) {
var pageContent = this._getPaginatedContent(i);
var p1 = pageContent[0].get(sortProperty);
var runningLabel = "";
if (sortProperty == "title") {
p1 = p1[0];
} else if (sortProperty == "imdbRating") {
p1 = Math.round(p1);
} else if (sortProperty == "imdbVotes") {
p1 = Math.floor(p1 / 1000) + "k";
} else if (sortProperty == "release") {
p1 = parseInt(p1.slice(0,4));
p1 = Math.floor(p1 / 10) * 10;
} else {
prev = p1;
}
if (p1 != prev) {
runningLabel = "" + p1;
prev = p1;
}
list.push({number: i, runningLabel: runningLabel});
}
return list;
}.property('page','perPage','sortProperties'),
paginatedContent: function() {
var page = this.get('page');
return this._getPaginatedContent(page);
}.property('arrangedContent.[]', 'page', 'perPage'),
pagesCount: function() {
return Math.ceil(this.get("content.length") / parseInt(this.get("perPage")))
}.property('content.[]', 'perPage'),
_getPaginatedContent: function(page) {
var perPage = parseInt(this.get('perPage'));
var start = (page - 1 ) * perPage;
var end = page * perPage;
return this.get('arrangedContent').slice(start, end)
},
actions: {
sortBy: function(property) {
this.set('sortProperties', [property]);
this.set('sortAscending', !this.get('sortAscending'));
},
setPage: function(property) {
this.set('page', property)
}
}
});
Ember.Handlebars.helper('filelink', function(value, options) {
var escaped = encodeURI(value);
return new Ember.Handlebars.SafeString('<a href="' + escaped + '">' + value + '</span>');
});
function dataCb(data) {
App.Movie.FIXTURES = data;
}
window['dataCb'] = dataCb;
|