diff --git a/htrace-htraced/src/web/app/models/server_info.js b/htrace-htraced/src/web/app/models/server_info.js
new file mode 100644
index 0000000..0be554f
--- /dev/null
+++ b/htrace-htraced/src/web/app/models/server_info.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Span model
+app.ServerInfo = Backbone.Model.extend({
+ url: "/server/info"
+})
diff --git a/htrace-htraced/src/web/app/setup.js b/htrace-htraced/src/web/app/setup.js
index beb06db..ef11a25 100644
--- a/htrace-htraced/src/web/app/setup.js
+++ b/htrace-htraced/src/web/app/setup.js
@@ -28,6 +28,7 @@ var BaseView = Backbone.Marionette.LayoutView.extend({
var Router = Backbone.Marionette.AppRouter.extend({
"routes": {
"": "init",
+ "!/about": "about",
"!/search(?:query)": "search",
"!/spans/:id": "span",
"!/swimlane/:id": "swimlane",
@@ -37,12 +38,22 @@ var Router = Backbone.Marionette.AppRouter.extend({
"initialize": function() {
// Collection
this.spansCollection = new app.Spans();
+ this.serverInfo = new app.ServerInfo();
},
"init": function() {
Backbone.history.navigate("!/search", {"trigger": true});
},
+ "about": function() {
+ var serverInfo = this.serverInfo;
+ this.serverInfo.fetch({"success": function() {
+ app.root.app.show(new app.AboutView({
+ "model" : serverInfo
+ }));
+ }})
+ },
+
"search": function(query) {
app.root.app.show(new app.SearchView());
diff --git a/htrace-htraced/src/web/app/views/about/about.js b/htrace-htraced/src/web/app/views/about/about.js
new file mode 100644
index 0000000..49ac7c3
--- /dev/null
+++ b/htrace-htraced/src/web/app/views/about/about.js
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+app.AboutView = Backbone.Marionette.ItemView.extend({
+ "template": "#about-layout-template",
+});
diff --git a/htrace-htraced/src/web/index.html b/htrace-htraced/src/web/index.html
index d403860..33f2f46 100644
--- a/htrace-htraced/src/web/index.html
+++ b/htrace-htraced/src/web/index.html
@@ -40,6 +40,13 @@
@@ -48,6 +55,12 @@
+
+
+
+