|
23 | 23 | <script src="js/mustache.js" ></script>
|
24 | 24 | <script>
|
25 | 25 |
|
26 |
| - var statsTemplate = "Found {{numhits}} docs in {{time}}ms"; |
| 26 | + var statsTemplate = "<span style='font-weight:bold'>Found {{numhits}} docs in {{time}}ms</spa>"; |
27 | 27 | var facetTemplate = " {{value}} ({{count}})";
|
28 |
| - var valueTemplate = " <span style='padding-right:50px;width:100px;margin-right:30px;background-color:#efefef;font-weight:bold;font-size:14px'>{{name}}:</span>{{value}}"; |
29 |
| - |
| 28 | + // var valueTemplate = " <span style='padding-right:50px;width:100px;margin-right:30px;background-color:#efefef;font-weight:bold;font-size:14px'>{{name}}:</span>{{value}}"; |
| 29 | + var valueTemplate = "<td style='background-color:#efefef'>{{name}}</td><td>{{value}}</td>"; |
30 | 30 | function doClick() {
|
31 | 31 | var ql = $('#query').val();
|
32 | 32 | var reqJson = $.toJSON({'bql':ql});
|
33 | 33 | $.getJSON('http://localhost:18888/parse?info='+encodeURIComponent(reqJson),function(res) {
|
34 | 34 | var result = res["result"];
|
35 |
| - |
36 |
| - var searchstats={'numhits':result.numhits,'time':result.time} |
| 35 | + var searchStats; |
| 36 | + if (result){ |
| 37 | + searchstats={'numhits':result.numhits,'time':result.time} |
| 38 | + } |
| 39 | + else{ |
| 40 | + searchstats={'numhits':0,'time':0} |
| 41 | + } |
37 | 42 | var statsNode = $('#searchStats');
|
38 | 43 | statsNode.empty();
|
39 | 44 | statsNode.append($.mustache(statsTemplate, searchstats));
|
40 | 45 |
|
41 | 46 | // facets
|
42 |
| - var facets = result["facets"]; |
| 47 | + var facets = []; |
| 48 | + if (result){ |
| 49 | + facets = result["facets"]; |
| 50 | + } |
43 | 51 | var facetDiv= $('#facets');
|
44 | 52 | facetDiv.empty();
|
45 | 53 | for (var f in facets){
|
46 | 54 | var facetArray = facets[f];
|
47 |
| - facetDiv.append("<div>"); |
48 |
| - facetDiv.append("<span style='background-color:#efefef;font-weight:bold;font-size:14px'>"+f+"</span><br/>"); |
| 55 | + var someDiv = $('<div style="margin-top:15px;margin-bottom:15px"/>'); |
| 56 | + facetDiv.append(someDiv); |
| 57 | + someDiv.append("<div style='text-align:center;margin-bottom:10px;background-color:#efefef;font-weight:bold;font-size:18px'>"+f+"</div>"); |
49 | 58 | for (var i=0;i<facetArray.length;++i){
|
50 | 59 | var facetVal = facetArray[i];
|
51 |
| - facetDiv.append($.mustache(facetTemplate,facetVal)); |
52 |
| - facetDiv.append("<br/>") |
| 60 | + var selectedDiv = $('<strong style="background-color:#efefef"/>'); |
| 61 | + if (facetVal["selected"]){ |
| 62 | + someDiv.append(selectedDiv); |
| 63 | + } |
| 64 | + else{ |
| 65 | + selectedDiv = someDiv; |
| 66 | + } |
| 67 | + selectedDiv.append($.mustache(facetTemplate,facetVal)); |
| 68 | + someDiv.append("<br/>"); |
53 | 69 | }
|
54 |
| - facetDiv.append("</div>") |
55 | 70 | facetDiv.append("<hr/>");
|
56 | 71 | }
|
57 | 72 |
|
58 | 73 | //hits
|
59 | 74 |
|
60 |
| - var hits = result.hits; |
| 75 | + |
| 76 | + var hits = []; |
| 77 | + if (result){ |
| 78 | + hits = result.hits; |
| 79 | + } |
61 | 80 | $('#result').val($.toJSON(hits));
|
62 | 81 | var hitsDiv = $('#hits');
|
63 | 82 | hitsDiv.empty();
|
64 | 83 | for (var i=0;i<hits.length;++i){
|
65 | 84 | hitsDiv.append("<div/>");
|
66 | 85 | var hit = hits[i];
|
| 86 | + var tableElem = $('<table class="zebra-striped" style="border-width:5px"/>'); |
| 87 | + hitsDiv.append(tableElem); |
| 88 | + tableElem.append("<thead><tr><th>field</th><th>value(s)</th></tr></thead>"); |
| 89 | + |
| 90 | + var tbodyElem = $('<tbody/>'); |
| 91 | + |
| 92 | + tableElem.append(tbodyElem); |
67 | 93 | for (var f in hit){
|
68 | 94 | var field = hit[f];
|
69 | 95 | console.log('name:'+f);
|
70 | 96 | console.log('val:'+field);
|
71 | 97 | var val ={'name':f,'value':field};
|
72 | 98 |
|
73 | 99 | console.log('not array: '+val.name);
|
74 |
| - hitsDiv.append($.mustache(valueTemplate,val)); |
75 |
| - hitsDiv.append("<br/>") |
| 100 | + tbodyElem.append("<tr>"+$.mustache(valueTemplate,val)+"</tr>"); |
76 | 101 | }
|
77 | 102 | hitsDiv.append("<hr/>");
|
78 | 103 | }
|
79 | 104 | });
|
80 | 105 | };
|
| 106 | + |
81 | 107 | </script>
|
82 | 108 | </head>
|
83 | 109 |
|
84 | 110 | <body>
|
85 | 111 | <div class="container">
|
| 112 | + <img width="100" height="100" src="http://javasoze.github.com/sensei/images/sensei_black.jpg"/> |
86 | 113 | <h1 style="text-align:center">Sensei Query Console</h1>
|
87 |
| - <h3>Enter query: </h3><textarea style="width:850px;font-size:20px" id="query" cols="200" rows="3">select * from cars browse by (color:(true,1,5,hits),category:(true,1,5,hits))</textarea> |
| 114 | + <h3>Enter query: </h3><textarea style="width:100%;font-size:20px" id="query" cols="200" rows="3">select * from cars browse by (color:(true,1,5,hits),category:(true,1,5,hits))</textarea> |
| 115 | +<!-- |
88 | 116 | <input id="execute" onclick="doClick()" type="button" class="btn primary" value="execute" />
|
| 117 | +--> |
89 | 118 | <br/>
|
90 |
| - <div style="text-align:right" id="searchStats"></div> |
| 119 | + <div style="text-align:right;margin-top:5px;margin-bottom:3px" id="searchStats"></div> |
91 | 120 | <hr/>
|
92 | 121 | <div class="container-fluid">
|
93 | 122 | <div class="sidebar">
|
94 |
| - <h3>Facets</h3> |
| 123 | + <h2>Facets</h2> |
| 124 | + <hr/> |
95 | 125 | <div id="facets">
|
96 | 126 | </div>
|
97 | 127 | </div>
|
98 | 128 | <div class="content">
|
99 |
| - <h3>Results</h3> |
| 129 | + <h2>Results</h2> |
| 130 | + <hr/> |
100 | 131 | <div id="hits">
|
101 | 132 | </div>
|
102 | 133 | </div>
|
|
0 commit comments