Sfoglia il codice sorgente

[search] Add schema and properties tabs to core configuration

Romain Rigaux 12 anni fa
parent
commit
bee4b29

+ 13 - 2
apps/search/src/search/templates/admin_core_properties.mako

@@ -74,11 +74,11 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
       </div>
 
       <div class="tab-pane" id="schema">
-        todo?
+        ${_('Loading...')} <img src="/static/art/login-spinner.gif">
       </div>
 
       <div class="tab-pane" id="properties">
-        todo?
+        ${_('Loading...')} <img src="/static/art/login-spinner.gif">
       </div>
     </div>
   </form>
@@ -86,4 +86,15 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 
 </%layout:skeleton>
 
+<script type="text/javascript" charset="utf-8">
+  $(document).ready(function(){
+    $.get("${ url('search:admin_core_schema', core=hue_core.name) }", function(data) {
+        $("#schema").html(data.content); // Need to scroll to refresh
+    });
+    $.get("${ url('search:admin_core_solr_properties', core=hue_core.name) }", function(data) {
+        $("#properties").html(data.content);
+    });
+ });
+</script>
+
 ${ commonfooter(messages) | n,unicode }

+ 6 - 16
apps/search/src/search/templates/admin_core_solr_properties.mako → apps/search/src/search/templates/admin_core_properties_solr_properties.mako

@@ -15,20 +15,19 @@
 ## limitations under the License.
 
 <%!
-  from desktop.views import commonheader, commonfooter
   from django.utils.translation import ugettext as _
 %>
 
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="macros" file="macros.mako" />
 
-${ commonheader(_('Search'), "search", user) | n,unicode }
 
 <%def name="indexProperty(key)">
   %if key in solr_core["status"][hue_core.name]["index"]:
       ${ solr_core["status"][hue_core.name]["index"][key] }
     %endif
 </%def>
+
 <%def name="coreProperty(key)">
   %if key in solr_core["status"][hue_core.name]:
       ${ solr_core["status"][hue_core.name][key] }
@@ -36,22 +35,17 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 </%def>
 
 <%layout:skeleton>
-
   <%def name="title()">
-    <h1>${_('Search Admin - ')}${hue_core.label}</h1>
-  </%def>
-
-  <%def name="navigation()">
-    ${ layout.sidebar(hue_core.name, 'index') }
   </%def>
 
   <%def name="content()">
     <ul class="nav nav-tabs">
-      <li class="active"><a href="#index" data-toggle="tab">${_('Index properties')}</a></li>
-      <li><a href="#core" data-toggle="tab">${_('Core properties')}</a></li>
+      <li class="active"><a href="#index_properties" data-toggle="tab">${_('Index properties')}</a></li>
+      <li><a href="#core_properties" data-toggle="tab">${_('Core properties')}</a></li>
     </ul>
+
     <div class="tab-content">
-      <div class="tab-pane active" id="index">
+      <div class="tab-pane active" id="index_properties">
         <table class="table">
           <thead>
           <tr>
@@ -103,7 +97,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
           </tbody>
         </table>
       </div>
-      <div class="tab-pane" id="core">
+      <div class="tab-pane" id="core_properties">
         <table class="table">
           <thead>
           <tr>
@@ -151,7 +145,3 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 
   </%def>
 </%layout:skeleton>
-
-${ commonfooter(messages) | n,unicode }
-
-

+ 4 - 15
apps/search/src/search/templates/admin_core_schema.mako → apps/search/src/search/templates/admin_core_properties_solr_schema.mako

@@ -15,27 +15,19 @@
 ## limitations under the License.
 
 <%!
-  from desktop.views import commonheader, commonfooter
   from django.utils.translation import ugettext as _
 %>
 
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="macros" file="macros.mako" />
 
-${ commonheader(_('Search'), "search", user) | n,unicode }
-
 <%layout:skeleton>
 
   <%def name="title()">
-    <h1>${_('Search Admin - ')}${hue_core.label}</h1>
-  </%def>
-
-  <%def name="navigation()">
-    ${ layout.sidebar(hue_core.name, 'schema') }
   </%def>
 
   <%def name="content()">
-    <textarea id="schema">
+    <textarea id="schema_field">
       ${ solr_schema.decode('utf-8') }
     </textarea>
   </%def>
@@ -50,9 +42,9 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 
 <script type="text/javascript">
   $(document).ready(function () {
-    var schemaViewer = $("#schema")[0];
+    var schemaViewer = $("#schema_field")[0];
 
-    var codeMirror = CodeMirror(function (elt) {
+    window.codeMirror = CodeMirror(function (elt) {
       schemaViewer.parentNode.replaceChild(elt, schemaViewer);
     }, {
       value: schemaViewer.value,
@@ -60,9 +52,6 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
       lineNumbers: true
     });
 
-    codeMirror.setSize("100%", $(document).height() - 150 - $(".form-actions").outerHeight());
-
+    window.codeMirror.setSize("100%", $(document).height() - 150 - $(".form-actions").outerHeight());
   });
 </script>
-
-${ commonfooter(messages) | n,unicode }

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

@@ -22,17 +22,17 @@ urlpatterns = patterns('search.views',
   url(r'^query$', 'index', name='query'),
   url(r'^admin$', 'admin', name='admin'),
 
-  url(r'^suggest/(?P<core>\w+)/(?P<query>\w+)?$', 'query_suggest', name='query_suggest'),
-
   url(r'^admin/cores$', 'admin', name='admin_cores'),
 
   url(r'^admin/core/(?P<core>\w+)$', 'admin_core_template', name='admin_core'),
   url(r'^admin/core/(?P<core>\w+)/properties$', 'admin_core_properties', name='admin_core_properties'),
-  url(r'^admin/core/(?P<core>\w+)/schema$', 'admin_core_schema', name='admin_core_schema'),
   url(r'^admin/core/(?P<core>\w+)/template$', 'admin_core_template', name='admin_core_template'),
   url(r'^admin/core/(?P<core>\w+)/facets$', 'admin_core_facets', name='admin_core_facets'),
   url(r'^admin/core/(?P<core>\w+)/highlighting$', 'admin_core_highlighting', name='admin_core_highlighting'),
   url(r'^admin/core/(?P<core>\w+)/sorting$', 'admin_core_sorting', name='admin_core_sorting'),
-  url(r'^admin/core/(?P<core>\w+)/solr_properties$', 'admin_core_solr_properties', name='admin_core_solr_properties'),
 
+  # Ajax
+  url(r'^suggest/(?P<core>\w+)/(?P<query>\w+)?$', 'query_suggest', name='query_suggest'),
+  url(r'^admin/core/(?P<core>\w+)/schema$', 'admin_core_schema', name='admin_core_schema'),
+  url(r'^admin/core/(?P<core>\w+)/solr_properties$', 'admin_core_solr_properties', name='admin_core_solr_properties'),
 )

+ 33 - 26
apps/search/src/search/views.py

@@ -116,32 +116,6 @@ def admin_core_properties(request, core):
   })
 
 
-@allow_admin_only
-def admin_core_solr_properties(request, core):
-  solr_core = SolrApi(SOLR_URL.get()).core(core)
-  hue_core = Core.objects.get(name=core)
-  hue_cores = Core.objects.all()
-
-  return render('admin_core_solr_properties.mako', request, {
-    'solr_core': solr_core,
-    'hue_core': hue_core,
-    'hue_cores': hue_cores,
-  })
-
-
-@allow_admin_only
-def admin_core_schema(request, core):
-  solr_schema = SolrApi(SOLR_URL.get()).schema(core)
-  hue_core = Core.objects.get(name=core)
-  hue_cores = Core.objects.all()
-
-  return render('admin_core_schema.mako', request, {
-    'solr_schema': solr_schema,
-    'hue_core': hue_core,
-    'hue_cores': hue_cores,
-  })
-
-
 @allow_admin_only
 def admin_core_template(request, core):
   solr_core = SolrApi(SOLR_URL.get()).core(core)
@@ -224,6 +198,39 @@ def admin_core_highlighting(request, core):
     'hue_cores': hue_cores,
   })
 
+
+# Ajax below
+
+@allow_admin_only
+def admin_core_solr_properties(request, core):
+  solr_core = SolrApi(SOLR_URL.get()).core(core)
+  hue_core = Core.objects.get(name=core)
+  hue_cores = Core.objects.all()
+
+  content = render('admin_core_properties_solr_properties.mako', request, {
+    'solr_core': solr_core,
+    'hue_core': hue_core,
+    'hue_cores': hue_cores,
+  }, force_template=True).content
+
+  return HttpResponse(json.dumps({'content': content}), mimetype="application/json")
+
+
+@allow_admin_only
+def admin_core_schema(request, core):
+  solr_schema = SolrApi(SOLR_URL.get()).schema(core)
+  hue_core = Core.objects.get(name=core)
+  hue_cores = Core.objects.all()
+
+  content = render('admin_core_properties_solr_schema', request, {
+    'solr_schema': solr_schema,
+    'hue_core': hue_core,
+    'hue_cores': hue_cores,
+  }, force_template=True).content
+
+  return HttpResponse(json.dumps({'content': content}), mimetype="application/json")
+
+
 # TODO security
 def query_suggest(request, core, query=""):
   hue_core = Core.objects.get(name=core)

+ 1 - 1
apps/search/static/css/search.css

@@ -18,7 +18,7 @@
   padding: 10px;
   padding-left: 20px;
   padding-right: 20px;
-  text-align: center;
+  text-align: left;
 }
 
 .search-bar input {