diff --git a/htrace-core/src/web/app/setup.js b/htrace-core/src/web/app/setup.js index 90915e3..f7f14c1 100644 --- a/htrace-core/src/web/app/setup.js +++ b/htrace-core/src/web/app/setup.js @@ -28,7 +28,7 @@ var BaseView = Backbone.Marionette.LayoutView.extend({ var Router = Backbone.Marionette.AppRouter.extend({ "routes": { "": "init", - "!/search(/:query)": "search", + "!/search(?:query)": "search", "!/spans/:id": "span", "!/swimlane/:id": "swimlane", "!/swimlane/:id:?:lim": "swimlane" @@ -48,9 +48,25 @@ var Router = Backbone.Marionette.AppRouter.extend({ var top = new app.SearchView(); app.root.app.show(top); + if (query) { + var predicates = _(query.split(";")) + .map(function(predicate) { + return _(predicate.split('&')) + .reduce(function(mem, op) { + var op = op.split('='); + mem[op[0]] = op[1]; + return mem; + }, {}); + }); + this.spansCollection.fullCollection.reset(); + this.spansCollection.setPredicates(predicates); + this.spansCollection.fetch(); + } + top.controls.show(new app.SearchControlsView({ "collection": this.spansCollection })); + top.main.show(new Backgrid.Grid({ "collection": this.spansCollection, "columns": [{ diff --git a/htrace-core/src/web/app/views/search/search.js b/htrace-core/src/web/app/views/search/search.js index 3b74b01..8b4037e 100644 --- a/htrace-core/src/web/app/views/search/search.js +++ b/htrace-core/src/web/app/views/search/search.js @@ -70,10 +70,13 @@ app.SearchControlsView = Backbone.Marionette.View.extend({ "search": function(e) { this.predicates = _(this.searchFields).map(function(field) { return field.getPredicate(); - }).filter(function(predicate) { - return predicate.val; }); + this.searchParams = _(this.predicates).map(function(predicate) { + return $.param(predicate); + }).join(';'); + app.routes.navigate('!/search?' + this.searchParams); + this.collection.switchMode("infinite", { fetch: false, resetState: true