myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2475] branches/discovery: added separate simple


From: noreply
Subject: [myexperiment-hackers] [2475] branches/discovery: added separate simple and advanced modes based on feedback
Date: Fri, 16 Jul 2010 07:33:01 -0400 (EDT)

Revision
2475
Author
dgc
Date
2010-07-16 07:33:01 -0400 (Fri, 16 Jul 2010)

Log Message

added separate simple and advanced modes based on feedback

Modified Paths

Diff

Modified: branches/discovery/app/controllers/application.rb (2474 => 2475)


--- branches/discovery/app/controllers/application.rb	2010-07-15 15:59:22 UTC (rev 2474)
+++ branches/discovery/app/controllers/application.rb	2010-07-16 11:33:01 UTC (rev 2475)
@@ -512,7 +512,7 @@
     }
   end
 
-  def contributions_list(klass = nil, params = nil, user = nil)
+  def contributions_list(klass = nil, params = nil, user = nil, opts = {})
 
     def escape_sql(str)
       str.gsub(/\\/, '\&\&').gsub(/'/, "''")
@@ -529,7 +529,7 @@
       end
     end
 
-    def calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, ids, opts = {})
+    def calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, advanced_params, opts = {})
 
       # apply all the joins and conditions except for the current filter
 
@@ -554,10 +554,10 @@
 
       current = params[filter[:query_option]] ? params[filter[:query_option]].split(',') : []
 
-      if ids.nil?
+      if opts[:ids].nil?
         limit = 10
       else
-        conditions << "(#{filter[:id_column]} IN ('#{ids.map do |id| escape_sql(id) end.join("','")}'))"
+        conditions << "(#{filter[:id_column]} IN ('#{opts[:ids].map do |id| escape_sql(id) end.join("','")}'))"
         limit = nil
       end
 
@@ -583,7 +583,7 @@
 
             new_selection = nil if new_selection.empty?
 
-            target_uri = content_path(filter_params.merge(order_params).merge(filter_query_params).merge(filter[:query_option] => new_selection, "page" => nil))
+            target_uri = content_path(filter_params.merge(order_params).merge(filter_query_params).merge(advanced_params).merge(filter[:query_option] => new_selection, "page" => nil))
 
             label = object.filter_label
             label = visible_name(label) if filter[:visible_name]
@@ -639,6 +639,7 @@
     filter_params       = {}
     filter_query_params = {}
     order_params        = {}
+    advanced_params     = {}
 
     pivot_options[:filters].each do |filter|
       if params[filter[:query_option]]
@@ -647,6 +648,8 @@
     end
 
     order_params[:order] = params[:order] if params[:order]
+
+    advanced_params[:advanced] = params[:advanced] if params[:advanced]
     
     filter_query_params[:filter_query] = params[:filter_query] if params[:filter_query]
 
@@ -657,14 +660,14 @@
     reset_filters_url = nil
 
     if filter_params.length > 0
-      reset_filters_url = order_params
+      reset_filters_url = order_params.merge(advanced_params)
     end
 
     filters.each do |filter|
 
       # calculate the top n items of the list
 
-      filter[:current], filter[:objects] = calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, nil)
+      filter[:current], filter[:objects] = calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, advanced_params)
 
       # calculate which active filters are missing (because they weren't in the
       # top part of the list or have a count of zero)
@@ -672,7 +675,7 @@
       missing_filter_ids = filter[:current] - filter[:objects].map do |ob| ob[:value] end
 
       if missing_filter_ids.length > 0
-        filter[:objects] += calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, missing_filter_ids)[1]
+        filter[:objects] += calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, advanced_params, :ids => missing_filter_ids)[1]
       end
 
       # calculate which active filters are still missing (because they have a
@@ -681,7 +684,7 @@
       missing_filter_ids = filter[:current] - filter[:objects].map do |ob| ob[:value] end
       
       if missing_filter_ids.length > 0
-        zero_list = calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, missing_filter_ids, :inhibit_other_conditions => true)[1]
+        zero_list = calculate_filter(params, filter, user, filter_params, order_params, filter_query_params, advanced_params, :ids => missing_filter_ids, :inhibit_other_conditions => true)[1]
 
         zero_list.each do |x| x[:count] = 0 end
 
@@ -701,16 +704,25 @@
 
       if selected.length > 0
         if params[filter[:query_option]]
+
+          selected_labels = selected.map do |x| x[:label] end
+
+          if selected_labels.length > 1
+            sentence = selected_labels[0..-2].join(", ") + " or " + selected_labels[-1]
+          else
+            sentence = selected_labels[0]
+          end
+
           summary << '<span class="filter-in-use"><a href="" +
-          url_for(filter_params.merge(filter_query_params).merge(order_params).merge( { filter[:query_option] => nil } )) +
-          '">' + filter[:title].capitalize + ": " + selected.map do |x| x[:label] end.join(", ") +
+          url_for(filter_params.merge(filter_query_params).merge(order_params).merge(advanced_params).merge( { filter[:query_option] => nil } )) +
+          '"><b>' + filter[:title].capitalize + "</b>: " + sentence +
           " <img src='' /></a></span> "
         end
       end
     end
 
     if params[:filter_query]
-      cancel_filter_query_url = request.query_parameters.merge( { "filter_query" => nil } )
+      cancel_filter_query_url = request.query_parameters.merge(advanced_params).merge( { "filter_query" => nil } )
     end
 
     # remove filters that do not help in narrowing down the result set
@@ -720,6 +732,8 @@
         false
 #     elsif filter[:objects].length == 1 && filter[:objects][0][:selected] == false
 #       false
+      elsif params[:advanced].nil? && (params[filter[:query_option]] || filter[:objects].length < 2)
+        false
       else
         true
       end

Modified: branches/discovery/app/views/content/_index.rhtml (2474 => 2475)


--- branches/discovery/app/views/content/_index.rhtml	2010-07-15 15:59:22 UTC (rev 2474)
+++ branches/discovery/app/views/content/_index.rhtml	2010-07-16 11:33:01 UTC (rev 2475)
@@ -4,7 +4,17 @@
       <div class="reset_filters"><%= link_to("Reset filters", @pivot[:reset_filters_url]) -%></div>
     <% end %>
     <div class="search_filters">
+      <% if params[:advanced] %>
+        <div>
+          <%= link_to("Simple mode", request.query_parameters.merge( { "advanced" => nil } )) -%>
+        </div>
+      <% else %>
+        <div>
+          <%= link_to("Advanced mode", request.query_parameters.merge( { "advanced" => 1 } )) -%>
+        </div>
+      <% end %>
       <form action="" url_for(request.query_parameters) -%>" method="GET">
+        <div>Search filters:</div>
         <input name="filter_query" value="<%= params[:filter_query] -%>" style="width: 100px" />
         <% @pivot[:filter_query_url].each do |key, value| %>
           <input name="<%= key -%>" type="hidden" value="<%= value.sub('"', '\\"') -%>" />

Modified: branches/discovery/public/stylesheets/styles.css (2474 => 2475)


--- branches/discovery/public/stylesheets/styles.css	2010-07-15 15:59:22 UTC (rev 2474)
+++ branches/discovery/public/stylesheets/styles.css	2010-07-16 11:33:01 UTC (rev 2475)
@@ -2130,23 +2130,24 @@
 }
 
 .pivot .filter-in-use {
-  background: #e0e0e0;
-  border: 1px solid #d0d0d0;
+  background: #d8d8d8;
   padding: 2px;
-	line-height: 180%;
+	line-height: 200%;
 }
 
 .pivot .filter-in-use A {
+  padding-left: 4px;
+  padding-right: 4px;
   text-decoration: none; /* no underline */
 }
 
 .pivot .filter-in-use A IMG {
   vertical-align: middle;
+  position: relative;
+  top: -2px;
 }
 
 .pivot .filter-in-use:hover {
-  border: 1px solid #d0a0a0;
-  padding: 2px;
   background: #f0d0d0;
 }
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]