Selaa lähdekoodia

[search] Adding first version of template

Enrico Berti 13 vuotta sitten
vanhempi
commit
9fe0e2e058

+ 1 - 1
apps/search/src/search/forms.py

@@ -20,4 +20,4 @@ from django import forms
 
 
 class QueryForm(forms.Form):
-  query = forms.CharField(label="", max_length=256, required=False, widget=forms.TextInput(attrs={'class': 'input-xlarge'}))
+  query = forms.CharField(label="", max_length=256, required=False, widget=forms.TextInput(attrs={'class': 'input-xxlarge search-query', 'placeholder': 'e.g. solr or video'}))

+ 74 - 38
apps/search/src/search/templates/index.mako

@@ -16,9 +16,19 @@
 <%!
 from desktop.views import commonheader, commonfooter
 from django.utils.translation import ugettext as _
+from itertools import izip
 %>
 
-${ commonheader(_('Search'), "search", "100px") }
+
+
+<%
+def pairwise(iterable):
+    "s -> (s0,s1), (s2,s3), (s4, s5), ..."
+    a = iter(iterable)
+    return izip(a, a)
+%>
+
+${ commonheader(_('Search'), "search", user) }
 
 
 ##<div class="subnav subnav-fixed">
@@ -30,46 +40,72 @@ ${ commonheader(_('Search'), "search", "100px") }
 ##</div>
 
 <div class="container-fluid">
-  <h1>Search</h1>
-  <div class="row-fluid">    
-    <div class="span2"></div>
-    <div class="span8">
-      <form class="form-search">
-         ${ search_form }
-       <button class="btn" type="submit">Search</button>
-      </form>
-    </div>
-    <div class="span2">(query example: solr)</div>
-  </div>
-</div>
+    <div class="row-fluid">
+        <div class="span3">
+            <div class="well" style="padding: 8px 0;">
+            <ul class="nav nav-list">
+                % if response and response['facet_counts']:
+                    % if response['facet_counts']['facet_fields']:
+                        <h4>Field Facets</h4>
+                        % for cat in response['facet_counts']['facet_fields']:
+                            % if response['facet_counts']['facet_fields'][cat]:
+                            <li class="nav-header">${cat}</li>
+                            % for subcat, count in pairwise(response['facet_counts']['facet_fields'][cat]):
+                                <li><a href="#">${subcat} (${count})</a></li>
+                            % endfor
+                            % endif
+                        % endfor
+                    %endif
+                    % if response['facet_counts']['facet_queries']:
+                        <h4>Query Facets</h4>
+                        % for cat in response['facet_counts']['facet_queries']:
+                            % if response['facet_counts']['facet_queries'][cat]:
+                                <li><a href="#">${cat} (${response['facet_counts']['facet_queries'][cat]})</a></li>
+                            % endif
+                        % endfor
+                    %endif
+                %endif
+            </ul>
+            </div>
+        </div>
+        <div class="span9">
+            <form class="form-search well">
+                ${ search_form }
+                <button class="btn" type="submit">Search</button>
+            </form>
 
-% if response:
-<div class="container-fluid">
-  <div class="row-fluid">
-    <div class="span2"></div>
-    <div class="span8">
-      % for result in response['response']['docs']:
-        <div class="row-fluid">
-          <div class="span2">${ result.get('id', '') }</div>
-          <div class="span6">${ result.get('name', '') }</div>
+            % if response:
+                <table class="table table-striped table-hover" style="table-layout: fixed;">
+                <tbody>
+                % for result in response['response']['docs']:
+                <tr>
+                    <td style="word-wrap: break-word;">
+                        <a rel="nofollow" href="#"><b>${ result.get('name', '') }</b></a>
+                        <p>Price: ${ result.get('price_c', '') }</p>
+                        <p>
+                        % if result.get('features'):
+                            <ul>
+                            % for feature in result.get('features', ''):
+                                <li>${ feature }</li>
+                            % endfor
+                            </ul>
+                        % endif
+                        </p>
+                        <div style="color: #46a546;">
+                            Id: ${ result.get('id', '') }
+                        </div>
+                    </td>
+                </tr>
+                % endfor
+                </tbody>
+                </table>
+                <div class="row-fluid">
+                    Result founds: ${ response['response']['numFound'] }
+                </div>
+            % endif
         </div>
-      % endfor
     </div>
-    <div class="span2"></div>
-  </div>
-  
-  <div class="row-fluid">
-    <div class="span2"></div>
-    <div class="span8">  
-      Result founds: ${ response['response']['numFound'] }
-     </div>
-    <div class="span2"></div>
-  </div> 
-  
-  <div class="row-fluid"> 
-      ${ response }
-  </div>  
+
 </div>
-% endif
 
 ${ commonfooter(messages) }

+ 1 - 1
apps/search/src/search/urls.py

@@ -19,5 +19,5 @@ from django.conf.urls.defaults import patterns, url
 
 urlpatterns = patterns('search.views',
   url(r'^$', 'index', name='index'),
-  url(r'^query$', 'index', name='query')
+  url(r'^query$', 'index', name='query'),
 )

+ 5 - 5
apps/search/src/search/views.py

@@ -27,6 +27,8 @@ from search.forms import QueryForm
 from desktop.lib.rest.http_client import HttpClient
 from desktop.lib.rest.resource import Resource
 
+from django.http import HttpResponse
+
 
 # http://lucene.apache.org/solr/api-4_0_0-BETA/doc-files/tutorial.html#Getting+Started
 SOLR_URL = 'http://localhost:8983/solr/'
@@ -42,11 +44,9 @@ def index(request):
     response = SolrApi(SOLR_URL).query(search_form.cleaned_data['query'])
     response = json.loads(response)
 
-  return render('index.mako', request, {'search_form': search_form, 'response': response})
-
-
+  return render('index.mako', request, {'search_form': search_form, 'response': response, 'rr': json.dumps(response)})
 
-# Simple API for now 
+# Simple API for now
 class SolrApi(object):
   def __init__(self, solr_url):
     self._url = solr_url
@@ -54,4 +54,4 @@ class SolrApi(object):
     self._root = Resource(self._client)
 
   def query(self, query):    
-    return self._root.get('collection1/select', {'q': query, 'wt': 'json'})
+    return self._root.get('collection1/browse', {'q': query, 'wt': 'json'})