Skip to content
This repository was archived by the owner on Apr 9, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ source 'http://gemcutter.org'

gem 'rails', '3.0.3'
gem 'omniauth'
gem 'jquery-rails'
gem 'json'

group :development, :test do
gem 'sqlite3-ruby'
Expand Down
6 changes: 6 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ GEM
multipart-post (~> 1.0.1)
rack (>= 1.1.0, < 2)
i18n (0.5.0)
jquery-rails (0.2.6)
rails (~> 3.0)
thor (~> 0.14.4)
json (1.4.6)
mail (2.2.14)
activesupport (>= 2.3.6)
i18n (>= 0.4.0)
Expand Down Expand Up @@ -131,6 +135,8 @@ PLATFORMS
ruby

DEPENDENCIES
jquery-rails
json
omniauth
rails (= 3.0.3)
rspec
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/presentations_controller.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
class PresentationsController < ApplicationController
def index
@presentations = Presentation.all
@presentations = Presentation.find(:all, :order => "name")
end

def new
Expand Down
2 changes: 1 addition & 1 deletion app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<title>Precomp2011</title>
<%= stylesheet_link_tag :all %>
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag :all %>
<%= csrf_meta_tag %>
</head>
<body>
Expand Down
38 changes: 21 additions & 17 deletions app/views/presentations/index.html.erb
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
<%= link_to "all presentations", presentations_path %>

<div>
<table>
<tr>
<td>View</td>
<td>Name</td>
<td>When</td>
<td>Speaker</td>
</tr>

Filter: <input type="text" id='FilterPresentationTextbox' /> &nbsp; &nbsp;
Sort: <select id="PresentationSort">
<option value="data-title">Title</option>
<option value="data-start">Start Date</option>
<option value="data-presenter">Presenter</option>
</select>
</div>

<div class='presentation_list'>
<ul>
<% @presentations.each do |presentation| %>
<tr>
<td><%= link_to "view", presentation %></td>
<td><%= presentation.name %></td>
<td><%= presentation.starts_at.to_s(:long) %></td>
<td><%= presentation.speaker_name %></td>
</tr>
<li data-title='<%= presentation.name %>'
data-start='<%= presentation.starts_at.to_s(:long) %>'
data-presenter='<%= presentation.speaker_name%>'>
<div class='presentation'>
<%= link_to presentation.name, presentation %><br/>
Start: <%= presentation.starts_at.to_s(:long) %><br/>
Presenter: <%= presentation.speaker_name %>
</div>
</li>
<% end %>

</table>
</ul>
</div>

43 changes: 43 additions & 0 deletions lib/tasks/data.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
require 'json'
require 'net/http'

desc "delete all data"

task :delete_data => :environment do |task|
Presentation.delete_all
end

desc "import existing codemash sessions"

task :import_codemash_data => :environment do |task|
url_location_of_data = 'http://www.codemash.org/rest/sessions.json'

puts "getting raw json from '#{url_location_of_data}'"
response = Net::HTTP.get_response(URI.parse(url_location_of_data))
raw_data = response.body

puts "parse json"
json_data = JSON.parse(raw_data)

json_data.each do |data|
puts "- processing row"

presentation = Presentation.new

presentation.name = data["Title"]
presentation.description = data["Abstract"]
presentation.room = data["Room"]
presentation.speaker_name = data["SpeakerName"]

raw_time = data["Start"].scan(/[0-9]+/)[0].to_i
converted_time = Time.at(raw_time)
puts converted_time
presentation.starts_at = converted_time

if (presentation.save)
puts "Save successful"
else
puts "FAIL!<br>#{presentation.errors.full_messages.join(",")}"
end
end
end
36 changes: 36 additions & 0 deletions public/javascripts/application.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,38 @@
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
$(document).ready(function() {
$('select#PresentationSort').change(function(){
sortUl($(this).val());
});

$('input#FilterPresentationTextbox').bind('change keyup', function() {
var searchValue = $(this).val().trim();

if (searchValue == '')
{
$('li').show();
return;
}

$('li').not(":contains('" + searchValue + "')'").hide('slow');
$('li:contains("' + searchValue + '")').show('slow');
});

sortUl('data-title');
});

function sortUl(sortColumn){
var mylist = $("ul");

var listItems = mylist.children('li').get();

listItems.sort(function(a, b){

var compA = $(a).attr(sortColumn).toUpperCase();
var compB = $(b).attr(sortColumn).toUpperCase();

return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
});

$.each(listItems, function(idx, itm){ mylist.append(itm); });
}
Loading