elasticsearch 插件开发 (三)

原创
2014/09/23 15:50
阅读数 390

        现在我们用 bootstrap+angularJs 来写一个简单的页面,一个site插件,它通过我们前面开发的translogRest插件访问操作日志,并且展示。


<!doctype html>
<html ng-app='app' ng-controller="translogCtrl">
    <head>
        <script src="lib/angular.js"></script>
        <link rel="stylesheet" type="text/css" href="lib/Pretty-JSON/pretty_json.css">
        <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap.min.css">
				<link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap-theme.min.css">
				<script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
				<script src="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
				<script src="lib/Pretty-JSON/pretty_json.js" type="text/javascript"></script>
				<script src="translog.js"></script>        
    </head>
    <body>
    	 <nav class="navbar navbar navbar-inverse" role="navigation">
			  <div class="container-fluid">
			    <div class="navbar-header">
			      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
			        <span class="sr-only">Toggle navigation</span>
			        <span class="icon-bar"></span>
			        <span class="icon-bar"></span>
			        <span class="icon-bar"></span>
			      </button>
			      <a class="navbar-brand" href="#">操作日志</a>
			    </div>
			    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
			      <ul class="nav navbar-nav">
			        <li class="active"><a href="#">创建</a></li>
			        <li><a href="#">保存</a></li>
			        <li><a href="#">删除</a></li>
			      </ul>
			      <form class="navbar-form navbar-left" role="search">
			        <div class="form-group">
			          <input type="text" ng-model="file" style="width:600px;" class="form-control" placeholder="日志路径">
			          <button type="button" class="btn btn-primary " ng-click="getData()">查看</button>
			        </div>
			      </form>
			    </div>
			  </div>
			</nav>
       <table class="table table-hover">
        <thead>
          <tr>
            <th>操作类型</th>
            <th>版本</th>
            <th>类型</th>
            <th>路由</th>
            <th>父类</th>
            <th>TTL</th>
            <th>时间</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody>
          <tr ng-repeat="item in itemList">
            <td><span class="label label-primary">{{item.opType}}</span></td>
            <td><span class="badge">{{item.version}}</span></td>
            <td>{{item.type}}</td>
            <td>{{item.routing}}</td>
            <td>{{item.parent}}</td>
            <td>{{item.ttl}}</td>
            <td>{{item.timestamp | date:'yyyy-MM-dd HH:mm'}}</td>
            <td>
            	<button type="button" class="btn btn-success" ng-click="view($index)">查看</button>
            </td>
          </tr>
        </tbody>
      </table>
      <div class="modal fade" id="editPanel">
			  <div class="modal-dialog">
			    <div class="modal-content">
			      <div class="modal-header">
			        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
			        <h4 class="modal-title">ID:{{editItem.id}}</h4>
			      </div>
			      <div class="modal-body">
			        <div id="prettyJson"></div>
			      </div>
			      <div class="modal-footer">
			        <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
			      </div>
			    </div>
			  </div>
			</div>
    </body>
</html>

var module = angular.module('app', []);
function translogCtrl($scope, $http) {
	$scope.getData = function() {
		var file = $scope.file;
		$http.get('http://localhost:9200/_translog', {
			params : {
				file : file,
				size : 12
			}
		}).success(function(data, status, headers, config) {
			$scope.itemList = data;
			$scope.view = function(id) {
				var item = $scope.itemList[id];
				$scope.editItem = item;

				try {
					$('#prettyJson').html( pretty.parse (eval("(" + item.source + ")")));
				}
				catch (error) {
					$('#prettyJson').html(pretty.error (error));
				}

				$('#editPanel').modal('show');

			}
		}).error(function(data, status, headers, config) {
			console.info(data);
		});
	}
}

然后我们复制应用到 plugins\translogView\_site 下面就可以了。我们也可以补充插件描述文件_site\es-plugin.properties

description=view translog

浏览器里输入 

http://localhost:9200/_nodes?all=true

可以看到我们的插件已经安装成功,描述信息也有了。

最后 http://localhost:9200/_plugin/translogView/ 来访问就可以了。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部