whoops 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,19 @@ class EventsController < ApplicationController
3
3
 
4
4
  def index
5
5
  @event_group = Whoops::EventGroup.find(params[:whoops_event_group_id])
6
- @events = @event_group.events.desc(:event_time).paginate(
6
+
7
+ events_base = @event_group.events
8
+ unless params[:query].blank?
9
+ conditions = Whoops::SearchParser.new(params[:query]).mongoid_conditions
10
+ events_base = events_base.where(conditions)
11
+ end
12
+
13
+ @events = events_base.desc(:event_time).paginate(
7
14
  :page => params[:page],
8
15
  :per_page => 20
9
16
  )
17
+
18
+ puts 'test'
10
19
  end
11
20
 
12
21
  def show
@@ -18,15 +18,15 @@ class Whoops::Event
18
18
  event_group_params[:last_recorded_at] = params[:event_time]
19
19
 
20
20
  event_group = Whoops::EventGroup.first(:conditions => event_group_params.slice(*Whoops::EventGroup.identifying_fields))
21
- if event_group
22
- event_group.attributes = event_group_params
23
- event_group.save
24
- else
25
- event_group = Whoops::EventGroup.create(event_group_params)
26
- end
21
+ event_group ||= Whoops::EventGroup.create(event_group_params)
27
22
 
28
23
  event_params = params.slice(*Whoops::Event.field_names)
29
24
  event_group.events.create(event_params)
30
25
  end
31
26
 
27
+ def self.search(query)
28
+ conditions = Whoops::SearchParser.new(query).mongoid_conditions
29
+ where(conditions)
30
+ end
31
+
32
32
  end
@@ -0,0 +1,40 @@
1
+ class Whoops::SearchParser
2
+ attr_accessor :query
3
+ def initialize(query)
4
+ self.query = query
5
+ end
6
+
7
+ def mongoid_conditions
8
+ self.query.split("\n").inject({}) do |conditions, line|
9
+ line.strip!
10
+ next(conditions) if line.empty?
11
+
12
+ parsed = parse_line(line)
13
+ key = parsed[:method] ? parsed[:key].send(parsed[:method]) : parsed[:key]
14
+
15
+ conditions[key] = parsed[:value]
16
+ conditions
17
+ end
18
+ end
19
+
20
+ def parse_line(line)
21
+ key, method, value = line.match(/([^\s]*?)(#[^\s]*)? ([^#]*)/)[1..3]
22
+
23
+ key = key.sub(/:$/, '').to_sym
24
+ method = method.gsub(/(^#|:$)/, '').to_sym if method
25
+ value = parse_value(value)
26
+ {
27
+ :key => key,
28
+ :method => method,
29
+ :value => value
30
+ }
31
+ end
32
+
33
+ # Allows user to enter hashes or array
34
+ def parse_value(value)
35
+ value = value.strip
36
+ # value = "!ruby/regexp \"#{value}\"" if value =~ /^\/.*\/$/
37
+ value.gsub!(/\/.*?\//, %Q{!ruby/regexp "\\0"})
38
+ return YAML.load(value)
39
+ end
40
+ end
@@ -7,7 +7,6 @@
7
7
  %li= f.select field_name, options_from_collection_for_select(options, :first, :last, event_group_filter.send(field_name))
8
8
  %li
9
9
  %button#reset reset
10
-
11
10
  %article.module.width_full
12
11
  %header
13
12
  %h3 Events
@@ -2,11 +2,20 @@
2
2
  = breadcrumbs(["Event Details", whoops_event_group_path(@event_group)])
3
3
 
4
4
  - content_for :sidebar do
5
- %h3 Instances
6
- = will_paginate @event, :previous_label => "", :next_label => ""
7
- %ul#instances
8
- - @events.each_with_index do |event, index|
9
- %li{:class => ("selected" if index == 0)}= link_to event.event_time.to_s(:whoops_default), event
5
+ .space
6
+ %h3 Instances
7
+ = will_paginate @event, :previous_label => "", :next_label => ""
8
+ %ul#instances
9
+ - @events.each_with_index do |event, index|
10
+ %li{:class => ("selected" if index == 0)}= link_to event.event_time.to_s(:whoops_default), event
11
+ .space
12
+ %h3 Search
13
+ %form
14
+ %ul
15
+ %li= text_area_tag :query, params[:query]
16
+ %li
17
+ %button search
18
+ %button reset
10
19
 
11
20
  %article.module.width_full
12
21
  %header
@@ -21,5 +30,8 @@
21
30
  %header
22
31
  %h3 Details
23
32
  #event-details
24
- = render :partial => "events/details", :object => @events.first, :as => :event
33
+ - if @events.empty?
34
+ %p Your search returned no results.
35
+ - else
36
+ = render :partial => "events/details", :object => @events.first, :as => :event
25
37
 
@@ -6,7 +6,7 @@
6
6
  /[if IE]
7
7
  = stylesheet_link_tag 'ie.css', :media => 'screen, projection'
8
8
 
9
- = javascript_include_tag 'jquery-1.5.2.min', 'jquery.equalHeight', 'jquery.tablesorter.min', 'application.js'
9
+ = javascript_include_tag 'jquery-1.5.2.min', 'jquery.equalHeight', 'jquery.tablesorter.min', 'whoops.js'
10
10
  = yield :extra_javascripts
11
11
  = csrf_meta_tag
12
12
  %body
@@ -21,7 +21,7 @@
21
21
  .user
22
22
  .breadcrumbs_container
23
23
  %article.breadcrumbs
24
- = link_to "All Events", whoops_event_groups_path, :class => ("current" if controller_name == 'event_groups')
24
+ = link_to "Event List", whoops_event_groups_path, :class => ("current" if controller_name == 'event_groups')
25
25
  = yield :breadcrumbs
26
26
  / end of secondary bar
27
27
  %aside#sidebar.column
@@ -4,7 +4,7 @@ Whoops = {
4
4
  $("#new_whoops_filter").submit()
5
5
  })
6
6
  $("#reset").click(function(){
7
- window.location = "/?whoops_filter[service]"
7
+ window.location = "/event_groups?whoops_filter[service]"
8
8
  return false
9
9
  })
10
10
  },
@@ -169,23 +169,25 @@ height: 24px;
169
169
  line-height: 23px;
170
170
  }
171
171
 
172
- .breadcrumbs a.current, .breadcrumbs a.current:hover {
173
- color: #9E9E9E;
174
- font-weight: bold;
175
- text-shadow: 0 1px 0 #fff;
176
- text-decoration: none;
177
- }
178
-
179
172
  .breadcrumbs a:link, .breadcrumbs a:visited {
180
- color: #44474F;
181
- text-decoration: none;
182
- text-shadow: 0 1px 0 #fff;
183
- font-weight: bold;}
173
+ color: #44474F;
174
+ text-decoration: none;
175
+ text-shadow: 0 1px 0 #fff;
176
+ font-weight: bold;
177
+ }
184
178
 
185
179
  .breadcrumbs a:hover {
186
- color: #222222;
180
+ color: #222222;
187
181
  }
188
182
 
183
+ .breadcrumbs a.current, .breadcrumbs a:link.current, .breadcrumbs a.current:hover {
184
+ color: #9E9E9E;
185
+ font-weight: bold;
186
+ text-shadow: 0 1px 0 #fff;
187
+ text-decoration: none;
188
+ }
189
+
190
+
189
191
  .breadcrumb_divider {
190
192
  display: inline-block;
191
193
  width: 12px;
@@ -311,9 +313,16 @@ text-decoration: none;
311
313
  }
312
314
  }
313
315
 
314
- form li {
315
- list-style:none;
316
- padding:0;
316
+ form {
317
+ li {
318
+ list-style:none;
319
+ padding:0 15px 0 0;
320
+ }
321
+
322
+ textarea {
323
+ height:100px;
324
+ width:100%;
325
+ }
317
326
  }
318
327
  }
319
328
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whoops
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Higginbotham
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-15 00:00:00 -04:00
18
+ date: 2011-07-03 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -254,6 +254,7 @@ files:
254
254
  - app/models/whoops/event.rb
255
255
  - app/models/whoops/event_group.rb
256
256
  - app/models/whoops/filter.rb
257
+ - app/models/whoops/search_parser.rb
257
258
  - app/views/event_groups/_list.html.haml
258
259
  - app/views/event_groups/index.html.haml
259
260
  - app/views/events/_detail.html.haml
@@ -298,13 +299,13 @@ files:
298
299
  - lib/generators/whoops/templates/assets/images/_ui/sidebar_divider.png
299
300
  - lib/generators/whoops/templates/assets/images/_ui/sidebar_shadow.png
300
301
  - lib/generators/whoops/templates/assets/images/_ui/table_sorter_header.png
301
- - lib/generators/whoops/templates/assets/javascripts/application.js
302
302
  - lib/generators/whoops/templates/assets/javascripts/hideshow.js
303
303
  - lib/generators/whoops/templates/assets/javascripts/jquery-1.5.2.min.js
304
304
  - lib/generators/whoops/templates/assets/javascripts/jquery.equalHeight.js
305
305
  - lib/generators/whoops/templates/assets/javascripts/jquery.form.js
306
306
  - lib/generators/whoops/templates/assets/javascripts/jquery.tablesorter.min.js
307
307
  - lib/generators/whoops/templates/assets/javascripts/ui.js
308
+ - lib/generators/whoops/templates/assets/javascripts/whoops.js
308
309
  - lib/generators/whoops/templates/assets/stylesheets/ie.css
309
310
  - lib/generators/whoops/templates/assets/stylesheets/sass/_base.scss
310
311
  - lib/generators/whoops/templates/assets/stylesheets/sass/ie.scss