Skip to content

Commit 3416d03

Browse files
unknownunknown
unknown
authored and
unknown
committed
Imlemented searches, switched to webfonts
1 parent 47665ff commit 3416d03

30 files changed

+852
-155
lines changed
14.8 KB
Binary file not shown.

app/assets/fonts/AftaSansThin-Italic-webfont.svg

+144
Loading
24.5 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

app/assets/fonts/AftaSansThin-Regular-webfont.svg

+144
Loading
Binary file not shown.
Binary file not shown.

app/assets/fonts/Bentham-webfont.eot

32 KB
Binary file not shown.

app/assets/fonts/Bentham-webfont.svg

+143
Loading

app/assets/fonts/Bentham-webfont.ttf

31.8 KB
Binary file not shown.

app/assets/fonts/Bentham-webfont.woff

22.1 KB
Binary file not shown.

app/assets/javascripts/home.js.coffee

+59
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,62 @@
33
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
44
jQuery ->
55
$("input[type=submit], button").button()
6+
if $("body").data("controller") in ["search", "home"]
7+
$.widget( "custom.catcomplete", $.ui.autocomplete,
8+
_renderMenu: ( ul, items ) ->
9+
that = this
10+
currentCategory = ""
11+
$.each( items, ( index, item ) ->
12+
if item.category != currentCategory
13+
ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" )
14+
currentCategory = item.category;
15+
16+
that._renderItemData( ul, item );
17+
)
18+
19+
)
20+
datamovies = $.parseJSON($.ajax(
21+
dataType: "json",
22+
url: "/movies.json",
23+
async: false
24+
).responseText)
25+
dataactors = $.parseJSON($.ajax(
26+
dataType: "json",
27+
url: "/actors.json",
28+
async: false
29+
).responseText)
30+
datagenres = $.parseJSON($.ajax(
31+
dataType: "json",
32+
url: "/genres.json",
33+
async: false
34+
).responseText)
35+
console.log(datamovies)
36+
data = []
37+
for movie in datamovies
38+
data.push(
39+
label: movie.title
40+
value: "movies/" + movie.id
41+
category: "Movies"
42+
)
43+
for actor in dataactors
44+
data.push(
45+
label: actor.firstname + " " + actor.lastname
46+
value: "actors/" + actor.id
47+
category: "Actor"
48+
)
49+
for genre in datagenres
50+
data.push(
51+
label: genre.name
52+
value: "genres/" + genre.id
53+
category: "Genre"
54+
)
55+
console.log(datamovies)
56+
$("#searchbar").catcomplete(
57+
source: data
58+
select: (event, ui) ->
59+
if ui.item
60+
event.preventDefault()
61+
$(this).catcomplete("close")
62+
$(this).val(ui.item.label)
63+
location.pathname = ui.item.value
64+
)

app/assets/javascripts/movies.js.coffee

+138-119
Original file line numberDiff line numberDiff line change
@@ -3,127 +3,146 @@
33
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
44

55
jQuery ->
6-
$(".date").datepicker({dateFormat: "yy-mm-dd", defaultValue: $(this).val()})
7-
logActor = (name, val) ->
8-
#console.log(name)
9-
$("#actor-list").append($("<li>").text(name).attr("data-id", val).append($("<p class=\"delete-actor\">").button(
10-
icons:
11-
primary: "ui-icon\-closethick"
12-
text: false
13-
).click( ->
14-
$(this).parent().remove()
15-
$("option.actor[value="+val+"]").remove())))
16-
$("#movie_actors").append("<option class=\"actor\" selected=\"true\" value=\"" + val + "\">" + name + "</option>")
17-
$(".delete-actor").button(
18-
icons:
19-
primary: "ui-icon\-closethick"
20-
text: false
21-
).click( ->
22-
id = $(this).parent().attr("data-id")
23-
$(this).parent().remove()
24-
$("option.actor[value="+id+"]").remove())
25-
$(".actor-picker").autocomplete(
26-
source: (request, response) ->
27-
$.getJSON("/actors.json", (rawdata) ->
28-
matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i")
29-
data = []
30-
for obj in rawdata
31-
data.push({"label": obj.firstname + " " + obj.lastname, "value": obj.id})
32-
response($.grep(data, (el, index) ->
33-
return matcher.test(el.label)
34-
))
6+
if $("body").data("controller") in ["movies", "genres", "actors"]
7+
$("#searchbar").autocomplete(
8+
source: (request, response) ->
9+
$.getJSON(location.pathname + ".json", (rawdata) ->
10+
matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i")
11+
data = []
12+
for obj in rawdata
13+
label = obj.title || obj.name || obj.firstname + " " + obj.lastname
14+
data.push({"label": label, "value": obj.id})
15+
response($.grep(data, (el, index) ->
16+
return matcher.test(el.label)
17+
))
18+
)
19+
select: (event, ui)->
20+
if ui.item
21+
event.preventDefault()
22+
$(this).autocomplete("close")
23+
$(this).val(ui.item.label)
24+
location.href += "/"+ui.item.value
25+
)
26+
$(".date").datepicker({dateFormat: "yy-mm-dd", defaultValue: $(this).val()})
27+
logActor = (name, val) ->
28+
#console.log(name)
29+
$("#actor-list").append($("<li>").text(name).attr("data-id", val).append($("<p class=\"delete-actor\">").button(
30+
icons:
31+
primary: "ui-icon\-closethick"
32+
text: false
33+
).click( ->
34+
$(this).parent().remove()
35+
$("option.actor[value="+val+"]").remove())))
36+
$("#movie_actors").append("<option class=\"actor\" selected=\"true\" value=\"" + val + "\">" + name + "</option>")
37+
$(".delete-actor").button(
38+
icons:
39+
primary: "ui-icon\-closethick"
40+
text: false
41+
).click( ->
42+
id = $(this).parent().attr("data-id")
43+
$(this).parent().remove()
44+
$("option.actor[value="+id+"]").remove())
45+
$(".actor-picker").autocomplete(
46+
source: (request, response) ->
47+
$.getJSON("/actors.json", (rawdata) ->
48+
matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i")
49+
data = []
50+
for obj in rawdata
51+
data.push({"label": obj.firstname + " " + obj.lastname, "value": obj.id})
52+
response($.grep(data, (el, index) ->
53+
return matcher.test(el.label)
54+
))
55+
)
56+
select: (event, ui)->
57+
if ui.item && ($("option.actor[value=" + ui.item.value + "]").length == 0)
58+
logActor(ui.item.label, ui.item.value)
59+
event.preventDefault()
60+
$(this).autocomplete("close")
61+
$(this).val("")
62+
response: (event, ui) ->
63+
if ui.content.length == 0
64+
strg = this.value
65+
length = strg.length
66+
idex = strg.lastIndexOf " "
67+
fname = strg.substr(0, idex)
68+
lname = strg.substr(idex+1, length - idex - 1)
69+
$("#create-new-actor").show().text("Create " + this.value).attr("data-firstname", fname).attr("data-lastname", lname)
70+
else
71+
$("#create-new-actor").hide()
72+
)
73+
$("#create-new-actor").click( ->
74+
firstname = $(this).attr("data-firstname")
75+
lastname = $(this).attr("data-lastname")
76+
$.ajax(
77+
url: "/actors.json",
78+
type: "POST",
79+
data:
80+
"actor[firstname]": firstname,
81+
"actor[lastname]": lastname,
82+
success: (a,b,c,d) ->
83+
logActor(firstname + " " + lastname, a.id)
84+
$("#create-new-actor").hide()
85+
failure: (a,b,c,d) ->
86+
alert "Failure"
87+
console.log(a, b, c, d)
3588
)
36-
minLength: 2,
37-
select: (event, ui)->
38-
if ui.item && ($("option.actor[value=" + ui.item.value + "]").length == 0)
39-
logActor(ui.item.label, ui.item.value)
40-
event.preventDefault()
41-
$(this).autocomplete("close")
42-
$(this).val("")
43-
response: (event, ui) ->
44-
if ui.content.length == 0
45-
strg = this.value
46-
length = strg.length
47-
idex = strg.lastIndexOf " "
48-
fname = strg.substr(0, idex)
49-
lname = strg.substr(idex+1, length - idex - 1)
50-
$("#create-new-actor").show().text("Create " + this.value).attr("data-firstname", fname).attr("data-lastname", lname)
51-
else
52-
$("#create-new-actor").hide()
53-
)
54-
$("#create-new-actor").click( ->
55-
firstname = $(this).attr("data-firstname")
56-
lastname = $(this).attr("data-lastname")
57-
$.ajax(
58-
url: "/actors.json",
59-
type: "POST",
60-
data:
61-
"actor[firstname]": firstname,
62-
"actor[lastname]": lastname,
63-
success: (a,b,c,d) ->
64-
logActor(firstname + " " + lastname, a.id)
65-
$("#create-new-actor").hide()
66-
failure: (a,b,c,d) ->
67-
alert "Failure"
68-
console.log(a, b, c, d)
6989
)
90+
91+
logGenre = (name, val) ->
92+
#console.log(name)
93+
$("#genre-list").append($("<li>").text(name).attr("data-id", val).append($("<p class=\"delete-genre\">").button(
94+
icons:
95+
primary: "ui-icon\-closethick"
96+
text: false
97+
).click( ->
98+
$(this).parent().remove()
99+
$("option.genre[value="+val+"]").remove())))
100+
$("#movie_genres").append("<option class=\"genre\" selected=\"true\" value=\"" + val + "\">" + name + "</option>")
101+
$(".delete-genre").button(
102+
icons:
103+
primary: "ui-icon\-closethick"
104+
text: false
105+
).click( ->
106+
id = $(this).parent().attr("data-id")
107+
$(this).parent().remove()
108+
$("option.genre[value="+id+"]").remove())
109+
$(".genre-picker").autocomplete(
110+
source: (request, response) ->
111+
$.getJSON("/genres.json", (rawdata) ->
112+
matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i")
113+
data = []
114+
for obj in rawdata
115+
data.push({"label": obj.name, "value": obj.id})
116+
response($.grep(data, (el, index) ->
117+
return matcher.test(el.label)
118+
))
119+
)
120+
minLength: 2,
121+
select: (event, ui)->
122+
if ui.item && ($("option.genre[value=" + ui.item.value + "]").length == 0)
123+
logGenre(ui.item.label, ui.item.value)
124+
event.preventDefault()
125+
$(this).autocomplete("close")
126+
$(this).val("")
127+
response: (event, ui) ->
128+
if ui.content.length == 0
129+
name = this.value
130+
$("#create-new-genre").show().text("Create genre " + this.value).attr("data-name", name)
131+
else
132+
$("#create-new-genre").hide()
70133
)
71-
72-
logGenre = (name, val) ->
73-
#console.log(name)
74-
$("#genre-list").append($("<li>").text(name).attr("data-id", val).append($("<p class=\"delete-genre\">").button(
75-
icons:
76-
primary: "ui-icon\-closethick"
77-
text: false
78-
).click( ->
79-
$(this).parent().remove()
80-
$("option.genre[value="+val+"]").remove())))
81-
$("#movie_genres").append("<option class=\"genre\" selected=\"true\" value=\"" + val + "\">" + name + "</option>")
82-
$(".delete-genre").button(
83-
icons:
84-
primary: "ui-icon\-closethick"
85-
text: false
86-
).click( ->
87-
id = $(this).parent().attr("data-id")
88-
$(this).parent().remove()
89-
$("option.genre[value="+id+"]").remove())
90-
$(".genre-picker").autocomplete(
91-
source: (request, response) ->
92-
$.getJSON("/genres.json", (rawdata) ->
93-
matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i")
94-
data = []
95-
for obj in rawdata
96-
data.push({"label": obj.name, "value": obj.id})
97-
response($.grep(data, (el, index) ->
98-
return matcher.test(el.label)
99-
))
134+
$("#create-new-genre").click( ->
135+
name = $(this).attr("data-name")
136+
$.ajax(
137+
url: "/genres.json",
138+
type: "POST",
139+
data:
140+
"genre[name]": name,
141+
success: (a,b,c,d) ->
142+
logGenre(name, a.id)
143+
$("#create-new-genre").hide()
144+
failure: (a,b,c,d) ->
145+
alert "Failure"
146+
console.log(a, b, c, d)
100147
)
101-
minLength: 2,
102-
select: (event, ui)->
103-
if ui.item && ($("option.genre[value=" + ui.item.value + "]").length == 0)
104-
logGenre(ui.item.label, ui.item.value)
105-
event.preventDefault()
106-
$(this).autocomplete("close")
107-
$(this).val("")
108-
response: (event, ui) ->
109-
if ui.content.length == 0
110-
name = this.value
111-
$("#create-new-genre").show().text("Create genre " + this.value).attr("data-name", name)
112-
else
113-
$("#create-new-genre").hide()
114-
)
115-
$("#create-new-genre").click( ->
116-
name = $(this).attr("data-name")
117-
$.ajax(
118-
url: "/genres.json",
119-
type: "POST",
120-
data:
121-
"genre[name]": name,
122-
success: (a,b,c,d) ->
123-
logGenre(name, a.id)
124-
$("#create-new-genre").hide()
125-
failure: (a,b,c,d) ->
126-
alert "Failure"
127-
console.log(a, b, c, d)
128148
)
129-
)

0 commit comments

Comments
 (0)