mirror of
https://github.com/apache/rocketmq-dashboard.git
synced 2026-03-02 03:34:33 +08:00
Remove the 'ng' suffix of sub projects.
This commit is contained in:
4
src/main/resources/static/view/layout/_footer.html
Normal file
4
src/main/resources/static/view/layout/_footer.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<!--<footer class="container foot-wrap col-lg-12">-->
|
||||
<!--<p class="text-center">XXXXXXX网络科技有限公司</p>-->
|
||||
<!--<p class="text-center">Copyright ©2016-2018 All Right Reserved 粤ICP备1234567890号</p>-->
|
||||
<!--</footer>-->
|
||||
33
src/main/resources/static/view/layout/_header.html
Normal file
33
src/main/resources/static/view/layout/_header.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<div class="navbar">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-warning-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" ng-href="#/">{{'TITLE' | translate }}</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse navbar-warning-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li ng-class="path =='ops' ? 'active':''"><a ng-href="#/ops">{{'OPS' | translate}}</a></li>
|
||||
<li ng-class="path =='dashboard' || path ==''? 'active':''"><a ng-href="#/">{{'DASHBOARD' | translate}}</a></li>
|
||||
<li ng-class="path =='cluster' ? 'active':''"><a ng-href="#/cluster">{{'CLUSTER' | translate}}</a></li>
|
||||
<li ng-class="path =='topic' ? 'active':''"><a ng-href="#/topic">{{'TOPIC' | translate}}</a></li>
|
||||
<li ng-class="path =='consumer' ? 'active':''"><a ng-href="#/consumer">{{'CONSUMER' | translate}}</a></li>
|
||||
<li ng-class="path =='producer' ? 'active':''"><a ng-href="#/producer">{{'PRODUCER' | translate}}</a></li>
|
||||
<li ng-class="path =='message' ? 'active':''"><a ng-href="#/message">{{'MESSAGE' | translate}}</a></li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="bootstrap-elements.html" data-target="#" class="dropdown-toggle" data-toggle="dropdown">{{'CHANGE_LANG' | translate}}
|
||||
<b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:void(0)" ng-click="changeTranslate('en')">English</a></li>
|
||||
<li><a href="javascript:void(0)" ng-click="changeTranslate('zh')">Simplified Chinese</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
16
src/main/resources/static/view/pages/404.html
Normal file
16
src/main/resources/static/view/pages/404.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
16
src/main/resources/static/view/pages/50x.html
Normal file
16
src/main/resources/static/view/pages/50x.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
128
src/main/resources/static/view/pages/cluster.html
Normal file
128
src/main/resources/static/view/pages/cluster.html
Normal file
@@ -0,0 +1,128 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList">
|
||||
<div class="page-content">
|
||||
<div class="pull-left">
|
||||
<label>{{'CLUSTER' | translate}} :</label>
|
||||
</div>
|
||||
<div class="pull-left" style="width: 300px;margin-left: 20px;margin-bottom: 20px;">
|
||||
<select name="selectCluster" chosen
|
||||
ng-model="selectedCluster"
|
||||
ng-options="item for item in clusterNames"
|
||||
required >
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
<table
|
||||
class="table table-bordered text-middle">
|
||||
<tr>
|
||||
<th class="text-center">{{ 'SPLIT' | translate }}</th>
|
||||
<th class="text-center">{{ 'NO' | translate }}</th>
|
||||
<th class="text-center">{{ 'ADDRESS' | translate}}</th>
|
||||
<th class="text-center">{{ 'VERSION' | translate}}</th>
|
||||
<th class="text-center">{{ 'PRO_MSG_TPS' | translate}}</th>
|
||||
<th class="text-center">{{ 'CUS_MSG_TPS' | translate}}</th>
|
||||
<th class="text-center">{{ 'YESTERDAY_PRO_COUNT' | translate}}</th>
|
||||
<th class="text-center">{{ 'YESTERDAY_CUS_COUNT' | translate}}</th>
|
||||
<th class="text-center">{{ 'TODAY_PRO_COUNT' | translate}}</th>
|
||||
<th class="text-center">{{ 'TODAY_CUS_COUNT' | translate}}</th>
|
||||
<th class="text-center">{{ 'OPERATION' | translate}}</th>
|
||||
</tr>
|
||||
<!--$scope.brokerDetail={};//{brokerName,id:detail}-->
|
||||
<tr ng-repeat="(index, instance) in instances">
|
||||
<td ng-bind="instance.split"></td>
|
||||
<td class="text-center">{{instance.index}}{{instance.index==0?'(master)':'(slave)'}}</td>
|
||||
<td class="text-center">{{instance.address}}</td>
|
||||
<td class="text-center">{{instance.brokerVersionDesc}}</td>
|
||||
<td class="text-center">{{instance.putTps.split(' ')[0]| number:2}}</td>
|
||||
<td class="text-center">{{instance.getTransferedTps.split(' ')[0]| number:2}}</td>
|
||||
<td class="text-center">{{instance.msgPutTotalTodayMorning -
|
||||
instance.msgPutTotalYesterdayMorning}}
|
||||
</td>
|
||||
<td class="text-center">{{instance.msgGetTotalTodayMorning -
|
||||
instance.msgGetTotalYesterdayMorning}}
|
||||
</td>
|
||||
<td class="text-center">{{instance.msgPutTotalTodayNow -
|
||||
instance.msgPutTotalTodayMorning}}
|
||||
</td>
|
||||
<td class="text-center">{{instance.msgGetTotalTodayNow -
|
||||
instance.msgGetTotalTodayMorning}}
|
||||
</td>
|
||||
<td class="text-center row">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="showDetail(instance.brokerName,instance.index)">{{'STATUS' |translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="showConfig(instance.address,instance.brokerName,instance.index)">{{'CONFIG' |translate}}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal brokerModal fade" role="dialog" tabindex="-1" aria-hidden="true" aria-labelledby="broker-modal-label">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content" >
|
||||
<div class="modal-header">
|
||||
<button class="close" type="button" data-dismiss="modal">×</button>
|
||||
<h4 id="broker-modal-label" class="modal-title">
|
||||
[{{brokerName}}][{{index}}]
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body limit_height">
|
||||
<table class="table table-bordered">
|
||||
<tr ng-repeat="(key, value) in detail">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-md-12 text-center">
|
||||
<button type="button" class="btn btn-raised" data-dismiss="modal">{{ 'CLOSE' | translate }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal configModal fade" role="dialog" tabindex="-1" aria-hidden="true" aria-labelledby="config-modal-label">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content" >
|
||||
<div class="modal-header">
|
||||
<button class="close" type="button" data-dismiss="modal">×</button>
|
||||
<h4 id="config-modal-label" class="modal-title">
|
||||
[{{brokerName}}][{{index}}]
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body limit_height">
|
||||
<table class="table table-bordered">
|
||||
<tr ng-repeat="(key, value) in brokerConfig">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-md-12 text-center">
|
||||
<button type="button" class="btn btn-raised" data-dismiss="modal">{{ 'CLOSE' | translate }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
438
src/main/resources/static/view/pages/consumer.html
Normal file
438
src/main/resources/static/view/pages/consumer.html
Normal file
@@ -0,0 +1,438 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList">
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<form class="form-inline pull-left col-sm-10">
|
||||
<div class="form-group form-group-sm">
|
||||
<label>{{ 'SUBSCRIPTION_GROUP' | translate}}:</label>
|
||||
<input type="text" class="form-control" ng-model="filterStr">
|
||||
</div>
|
||||
<div class="form-group form-group-sm">
|
||||
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="openAddDialog()">{{'ADD' |
|
||||
translate}}/ {{'UPDATE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-group form-group-sm">
|
||||
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="refreshConsumerData()">
|
||||
{{'REFRESH' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-group form-group-sm">
|
||||
<md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="intervalProcessSwitch">
|
||||
{{'AUTO_REFRESH' | translate}}
|
||||
</md-switch>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<div id="deployList" class="row">
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center"><a ng-click="sortByKey('group')">{{ 'SUBSCRIPTION_GROUP' |
|
||||
translate}}</a></th>
|
||||
<th class="text-center"><a ng-click="sortByKey('count')">{{ 'QUANTITY' | translate}}</a></th>
|
||||
<th class="text-center">{{ 'VERSION' | translate}}</th>
|
||||
<th class="text-center">{{ 'TYPE' | translate}}</th>
|
||||
<th class="text-center">{{ 'MODE' | translate}}</th>
|
||||
<th class="text-center"><a ng-click="sortByKey('consumeTps')">TPS</a></th>
|
||||
<th class="text-center"><a ng-click="sortByKey('diffTotal')">{{ 'DELAY' | translate}}</a></th>
|
||||
<th class="text-center">{{ 'OPERATION' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="consumerGroup in consumerGroupShowList">
|
||||
<td class="text-center">{{consumerGroup.group}}</td>
|
||||
<td class="text-center">{{consumerGroup.count}}</td>
|
||||
<td class="text-center">{{consumerGroup.version}}</td>
|
||||
<td class="text-center">{{consumerGroup.consumeType}}</td>
|
||||
<td class="text-center">{{consumerGroup.messageModel}}</td>
|
||||
<td class="text-center">{{consumerGroup.consumeTps}}</td>
|
||||
<td class="text-center">{{consumerGroup.diffTotal}}</td>
|
||||
<td class="text-center">
|
||||
<button name="client" ng-click="client(consumerGroup.group)"
|
||||
class="btn btn-raised btn-sm btn-primary"
|
||||
type="button">{{'CLIENT' | translate}}
|
||||
</button>
|
||||
<button name="client" ng-click="detail(consumerGroup.group)"
|
||||
class="btn btn-raised btn-sm btn-primary"
|
||||
type="button">{{'CONSUME_DETAIL' | translate}}
|
||||
</button>
|
||||
<button name="client" ng-click="updateConfigDialog(consumerGroup.group)"
|
||||
class="btn btn-raised btn-sm btn-primary" type="button">{{'CONFIG' | translate}}
|
||||
</button>
|
||||
<!--<button name="client" ng-click="monitor(consumerGroup.group)"-->
|
||||
<!--class="btn btn-sm btn-primary" type="button">Monitor Config-->
|
||||
<!--</button>-->
|
||||
<button name="client" ng-click="delete(consumerGroup.group)"
|
||||
class="btn btn-raised btn-sm btn-danger"
|
||||
type="button">{{'DELETE' | translate}}
|
||||
</button>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<tm-pagination conf="paginationConf"></tm-pagination>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal consumerClientModal fade" role="dialog" tabindex="-1" aria-hidden="true"
|
||||
aria-labelledby="config-modal-label">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button class="close" type="button" data-dismiss="modal">×</button>
|
||||
<h4 id="config-modal-label" class="modal-title">
|
||||
consumerClientInfo
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body limit_height">
|
||||
<table class="table table-bordered">
|
||||
<tr ng-repeat="(key, value) in consumerClientInfo.properties">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-md-12 text-center">
|
||||
<button type="button" class="btn btn-raised" data-dismiss="modal">{{ 'CLOSE' | translate }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/ng-template" id="consumerClientDialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ngDialogData.clientId}}</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<table class="table table-bordered" style="table-layout: fixed">
|
||||
<tr ng-repeat="(key, value) in ngDialogData.consumerClientInfo.properties">
|
||||
<td style="word-wrap: break-word">{{key}}</td>
|
||||
<td style="word-wrap: break-word">{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table table-bordered " style="table-layout: fixed">
|
||||
<tr ng-repeat="(key, value) in ngDialogData.consumerClientInfo.statusTable">
|
||||
<td style="word-wrap: break-word">{{key}}</td>
|
||||
<td style="word-wrap: break-word">{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<!--消费(订阅)者详情-->
|
||||
<script type="text/ng-template" id="clientInfoDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">[{{ngDialogData.consumerGroupName}}]{{'CLIENT'|translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form class="form-horizontal" novalidate>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">ClientId</th>
|
||||
<th class="text-center">ClientAddr</th>
|
||||
<th class="text-center">Language</th>
|
||||
<th class="text-center">Version</th>
|
||||
</tr>
|
||||
<tr ng-repeat="conn in ngDialogData.data.connectionSet">
|
||||
<td class="text-center">{{conn.clientId}}</td>
|
||||
<td class="text-center">{{conn.clientAddr}}</td>
|
||||
<td class="text-center">{{conn.language}}</td>
|
||||
<td class="text-center">{{conn.versionDesc}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>Below is subscription:</p>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">Topic</th>
|
||||
<th class="text-center">SubExpression</th>
|
||||
</tr>
|
||||
<tr ng-repeat="(topic,topicDetail) in ngDialogData.data.subscriptionTable">
|
||||
<td class="text-center">{{topic}}</td>
|
||||
<td class="text-center">{{topicDetail.subString}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>ConsumeType: {{ngDialogData.data.consumeType}}</p>
|
||||
<p>MessageModel: {{ngDialogData.data.messageModel}}</p>
|
||||
<p>ConsumeFromWhere: {{ngDialogData.data.consumeFromWhere}}</p>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!--变更 消费(订阅)者配置-->
|
||||
<script type="text/ng-template" id="consumerModifyDialog">
|
||||
<div>
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{'SUBSCRIPTION_CHANGE'|translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body " ng-repeat="item in ngDialogData.consumerRequestList">
|
||||
<form id="addAppForm" name="addAppForm" class="form-horizontal" novalidate>
|
||||
<div class="form-group" ng-hide="ngDialogData.bIsUpdate">
|
||||
<label class="control-label col-sm-4">clusterName:</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="mySelectClusterNameList" multiple chosen
|
||||
ng-model="item.clusterNameList"
|
||||
ng-options="clusterNameItem for clusterNameItem in ngDialogData.allClusterNameList">
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">brokerName:</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="mySelectBrokerNameList" multiple chosen
|
||||
ng-disabled="ngDialogData.bIsUpdate"
|
||||
ng-model="item.brokerNameList"
|
||||
ng-options="brokerNameItem for brokerNameItem in ngDialogData.allBrokerNameList">
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">groupName:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" ng-model="item.subscriptionGroupConfig.groupName" type="text"
|
||||
ng-disabled="ngDialogData.bIsUpdate" required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">consumeEnable:</label>
|
||||
<div class="col-sm-8">
|
||||
<md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="item.subscriptionGroupConfig.consumeEnable">
|
||||
</md-switch>
|
||||
<!--<input class="form-control" ng-model="item.subscriptionGroupConfig.consumeEnable"-->
|
||||
<!--type="text"-->
|
||||
<!--required/>-->
|
||||
<!--<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>-->
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="form-group">-->
|
||||
<!--<label class="control-label col-sm-4">consumeFromMinEnable:</label>-->
|
||||
<!--<div class="col-sm-8">-->
|
||||
<!--<md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="item.subscriptionGroupConfig.consumeFromMinEnable">-->
|
||||
<!--</md-switch>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">consumeBroadcastEnable:</label>
|
||||
<div class="col-sm-8">
|
||||
<md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="item.subscriptionGroupConfig.consumeBroadcastEnable">
|
||||
</md-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">retryQueueNums:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" ng-model="item.subscriptionGroupConfig.retryQueueNums"
|
||||
type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="form-group">-->
|
||||
<!--<label class="control-label col-sm-4">retryMaxTimes:</label>-->
|
||||
<!--<div class="col-sm-8">-->
|
||||
<!--<input class="form-control" ng-model="item.subscriptionGroupConfig.retryMaxTimes"-->
|
||||
<!--type="text"-->
|
||||
<!--required/>-->
|
||||
<!--<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">brokerId:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" ng-model="item.subscriptionGroupConfig.brokerId" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">whichBrokerWhenConsumeSlowly:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control"
|
||||
ng-model="item.subscriptionGroupConfig.whichBrokerWhenConsumeSlowly" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-raised btn-primary" ng-disabled="addAppForm.$invalid"
|
||||
ng-click="postConsumerRequest(item)">{{ 'COMMIT' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!--consumer monitor config-->
|
||||
<script type="text/ng-template" id="consumerMonitorDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">[{{ngDialogData.consumerGroupName}}]Monitor</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form id="addConsumerConfigForm" name="addAppForm" class="form-horizontal" novalidate>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">minCount:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" ng-model="ngDialogData.data.minCount" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">maxDiffTotal:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" ng-model="ngDialogData.data.maxDiffTotal" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="btn btn-primary"
|
||||
ng-click="createOrUpdateConsumerMonitor()">更新
|
||||
</button>
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">关闭
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!--删除 消费(订阅)者-->
|
||||
<script type="text/ng-template" id="deleteConsumerDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">[{{ngDialogData.consumerGroupName}}]Delete</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<div class="row">
|
||||
<md-card-content class="active">
|
||||
<label>broker:</label>
|
||||
<select name="mySelect" multiple chosen
|
||||
ng-model="selectedBrokerNameList"
|
||||
ng-options="item for item in ngDialogData.allBrokerNameList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</md-card-content>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-primary"
|
||||
ng-click="delete()">{{ 'DELETE' | translate }}
|
||||
</button>
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<!--删除 消费(订阅)者-->
|
||||
<script type="text/ng-template" id="consumerTopicViewDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">[{{ngDialogData.consumerGroupName}}]Detail</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<table class="table table-bordered table-hover" ng-repeat="consumeDetail in ngDialogData.data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td><label>{{ 'TOPIC' | translate }}</label></td>
|
||||
<td>{{consumeDetail.topic}}</td>
|
||||
<td><label>{{ 'DELAY' | translate }}</label></td>
|
||||
<td>{{consumeDetail.diffTotal}}</td>
|
||||
<td><label>{{ 'LAST_CONSUME_TIME' | translate }}</label></td>
|
||||
<td>{{consumeDetail.lastTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">broker</th>
|
||||
<th class="text-center">queue</th>
|
||||
<th class="text-center">consumerClient</th>
|
||||
<th class="text-center">brokerOffset</th>
|
||||
<th class="text-center">consumerOffset</th>
|
||||
<th class="text-center">diffTotal</th>
|
||||
<th class="text-center">lastTimestamp</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in consumeDetail.queueStatInfoList">
|
||||
<td class="text-center">{{item.brokerName}}</td>
|
||||
<td class="text-center">{{item.queueId}}</td>
|
||||
<td class="text-center"><a
|
||||
ng-click="consumerRunningInfo(ngDialogData.consumerGroupName,item.clientInfo,false)">
|
||||
{{item.clientInfo}}</a></td>
|
||||
<td class="text-center">{{item.brokerOffset}}</td>
|
||||
<td class="text-center">{{item.consumerOffset}}</td>
|
||||
<td class="text-center">{{item.brokerOffset-item.consumerOffset}}</td>
|
||||
<td class="text-center">{{item.lastTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
58
src/main/resources/static/view/pages/index.html
Normal file
58
src/main/resources/static/view/pages/index.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-6"></div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group ">
|
||||
<label class="pull-left col-md-2" style="margin-top: 15px;">{{'DATE' | translate}} :</label>
|
||||
<div class="input-group pull-left col-md-4" style="margin-left: 20px;margin-bottom: 20px;">
|
||||
<input class="form-control date" datetimepicker ng-model="date" options="timepickerOptions"/>
|
||||
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" >
|
||||
<div id="main" class="col-md-6" style="height: 350px;"></div>
|
||||
<div id="line" class="col-md-6" style="height: 350px;"></div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6"></div>
|
||||
<div class="col-md-6">
|
||||
<div class="pull-left col-md-2">
|
||||
<label>{{'TOPIC' | translate}} :</label>
|
||||
</div>
|
||||
<div class="pull-left col-md-9" style="margin-left: 20px;margin-bottom: 20px;">
|
||||
<select name="selectTopic" chosen
|
||||
ng-model="selectedTopic"
|
||||
ng-options="item for item in topicNames"
|
||||
required >
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" >
|
||||
<div id="topicBar" class="col-md-6" style="height: 350px;"></div>
|
||||
<div id="topicLine" class="col-md-6" style="height: 350px;"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
273
src/main/resources/static/view/pages/message.html
Normal file
273
src/main/resources/static/view/pages/message.html
Normal file
@@ -0,0 +1,273 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList">
|
||||
<div class="modal-body">
|
||||
<div ng-cloak="" class="tabsdemoDynamicHeight">
|
||||
<md-content>
|
||||
<md-tabs md-dynamic-height="" md-border-bottom="">
|
||||
<md-tab label="Topic">
|
||||
<md-content class="md-padding" style="min-height:600px">
|
||||
<h5 class="md-display-5">Only Return 2000 Messages</h5>
|
||||
<div class="row">
|
||||
<form class="form-inline pull-left col-sm-12">
|
||||
<div class="form-group">
|
||||
<label>{{'TOPIC' | translate}}:</label>
|
||||
</div>
|
||||
<div class="form-group ">
|
||||
<div style="width: 300px">
|
||||
<select name="mySelectTopic" chosen
|
||||
ng-model="selectedTopic"
|
||||
ng-options="item for item in allTopicList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group ">
|
||||
<label>{{'BEGIN' | translate}}:</label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" datetimepicker ng-model="timepickerBegin"
|
||||
options="timepickerOptions"/>
|
||||
<span class="input-group-addon"><span
|
||||
class="glyphicon glyphicon-calendar"></span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{'END' | translate}}:</label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" datetimepicker ng-model="timepickerEnd"
|
||||
options="timepickerOptions"/>
|
||||
<span class="input-group-addon"><span
|
||||
class="glyphicon glyphicon-calendar"></span></span>
|
||||
</div>
|
||||
</div>
|
||||
<button id="searchAppsButton" type="button"
|
||||
class="btn btn-raised btn-sm btn-primary"
|
||||
data-toggle="modal"
|
||||
ng-click="queryMessageByTopic()">
|
||||
<span class="glyphicon glyphicon-search"></span>{{ 'SEARCH' | translate}}
|
||||
</button>
|
||||
</form>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">Message ID</th>
|
||||
<th class="text-center">Tag</th>
|
||||
<th class="text-center">Key</th>
|
||||
<th class="text-center">StoreTime</th>
|
||||
<th class="text-center">Operation</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in messageShowList">
|
||||
<td class="text-center">{{item.msgId}}</td>
|
||||
<td class="text-center">{{item.properties.TAGS}}</td>
|
||||
<td class="text-center">{{item.properties.KEYS}}</td>
|
||||
<td class="text-center">{{item.storeTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="queryMessageByMessageId(item.msgId,item.topic)">Message
|
||||
Detail
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tm-pagination conf="paginationConf"></tm-pagination>
|
||||
</div>
|
||||
</md-content>
|
||||
</md-tab>
|
||||
<md-tab label="Message Key">
|
||||
<md-content class="md-padding" style="min-height:600px">
|
||||
<h5 class="md-display-5">Only Return 64 Messages</h5>
|
||||
|
||||
<form class="form-inline pull-left col-sm-12">
|
||||
<div class="form-group">
|
||||
<label>Topic:</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div style="width: 300px">
|
||||
<select name="mySelectTopic" chosen
|
||||
ng-model="selectedTopic"
|
||||
ng-options="item for item in allTopicList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Key:</label>
|
||||
<input class="form-control" style="width: 450px" type="text" ng-model="key"
|
||||
required/>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-raised btn-sm btn-primary" data-toggle="modal"
|
||||
ng-click="queryMessageByTopicAndKey()">
|
||||
<span class="glyphicon glyphicon-search"></span>{{ 'SEARCH' | translate}}
|
||||
</button>
|
||||
</form>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">Message ID</th>
|
||||
<th class="text-center">Tag</th>
|
||||
<th class="text-center">Key</th>
|
||||
<th class="text-center">StoreTime</th>
|
||||
<th class="text-center">Operation</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in queryMessageByTopicAndKeyResult">
|
||||
<td class="text-center">{{item.msgId}}</td>
|
||||
<td class="text-center">{{item.properties.TAGS}}</td>
|
||||
<td class="text-center">{{item.properties.KEYS}}</td>
|
||||
<td class="text-center">{{item.storeTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="queryMessageByMessageId(item.msgId,item.topic)">Message Detail
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</md-content>
|
||||
</md-tab>
|
||||
<md-tab label="Message ID">
|
||||
<h5 class="md-display-5">topic can't be empty if you producer client version>=v3.5.8</h5>
|
||||
<md-content class="md-padding" style="min-height:600px">
|
||||
<form class="form-inline pull-left col-sm-12">
|
||||
<div class="form-group">
|
||||
<label>Topic:</label>
|
||||
</div>
|
||||
<div class="form-group ">
|
||||
<div style="width: 300px">
|
||||
<select name="mySelectTopic" chosen
|
||||
ng-model="selectedTopic"
|
||||
ng-options="item for item in allTopicList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>MessageId:</label>
|
||||
<input class="form-control" style="width: 450px" type="text" ng-model="messageId"
|
||||
required/>
|
||||
</div>
|
||||
<button type="button" class="btn btn-raised btn-sm btn-primary" data-toggle="modal"
|
||||
ng-click="queryMessageByMessageId(messageId,selectedTopic)">
|
||||
<span class="glyphicon glyphicon-search"></span>{{ 'SEARCH' | translate}}
|
||||
</button>
|
||||
</form>
|
||||
</md-content>
|
||||
</md-tab>
|
||||
</md-tabs>
|
||||
</md-content>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/ng-template" id="messageDetailViewDialog">
|
||||
<md-content class="md-padding">
|
||||
<div>
|
||||
<form id="addAppForm" name="addAppForm" class="form-horizontal" novalidate>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Message ID:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="form-control">{{ngDialogData.messageView.msgId}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Topic:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="form-control">{{ngDialogData.messageView.topic}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Tag:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="form-control">{{ngDialogData.messageView.properties.TAGS}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Key:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="form-control">{{ngDialogData.messageView.properties.KEYS}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Storetime:</label>
|
||||
<div class="col-sm-10">
|
||||
<label class="form-control">{{ngDialogData.messageView.storeTimestamp | date:'yyyy-MM-dd
|
||||
HH:mm:ss'}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Message body:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control"
|
||||
ng-model="ngDialogData.messageView.messageBody"
|
||||
style="min-height:200px; resize: none"
|
||||
readonly></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<label>messageTrackList:</label>
|
||||
<table class="table-bordered md-padding">
|
||||
<tr>
|
||||
<th class="text-center">consumerGroup</th>
|
||||
<th class="text-center">trackType</th>
|
||||
<!--<th class="text-center">exceptionDesc</th>-->
|
||||
<th class="text-center">Operation</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in ngDialogData.messageTrackList">
|
||||
<td class="text-center">{{item.consumerGroup}}</td>
|
||||
<td class="text-center">{{item.trackType}}</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="resendMessage(ngDialogData.messageView.msgId,ngDialogData.messageView.topic,item.consumerGroup)">
|
||||
Resend Message
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="showExceptionDesc(item.exceptionDesc)">
|
||||
View Exception
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</md-content>
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="operationResultDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Result</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form class="form-horizontal" novalidate>
|
||||
{{ngDialogData.result}}
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
39
src/main/resources/static/view/pages/ops.html
Normal file
39
src/main/resources/static/view/pages/ops.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList">
|
||||
<div class="page-content">
|
||||
<h2 class="md-title">NameSvrAddrList</h2>
|
||||
<div class="pull-left">
|
||||
<md-chips ng-model="namesvrAddrList" readonly="ctrl.readonly" md-removable="ctrl.removable" md-enable-chip-edit="true"></md-chips>
|
||||
</div>
|
||||
<div class="pull-left">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="updateNameSvrAddr()">{{'UPDATE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<h2 class="md-title">IsUseVIPChannel</h2>
|
||||
<div class="pull-left">
|
||||
<md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="useVIPChannel">
|
||||
</md-switch>
|
||||
</div>
|
||||
<div class="pull-left">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="updateIsVIPChannel()">{{'UPDATE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
58
src/main/resources/static/view/pages/producer.html
Normal file
58
src/main/resources/static/view/pages/producer.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList" role="main">
|
||||
<form class="form-inline pull-left col-sm-12">
|
||||
<div class="form-group col-sm-1">
|
||||
<label>{{'TOPIC' | translate}}:</label>
|
||||
</div>
|
||||
<div class="form-group col-sm-3">
|
||||
<div style="width: 300px">
|
||||
<select name="mySelectTopic" chosen
|
||||
ng-model="selectedTopic"
|
||||
ng-options="item for item in allTopicList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="producerGroup">{{'PRODUCER_GROUP' | translate}}:</label>
|
||||
<input id="ProducerGroup" class="form-control" style="width: 300px" type="text" ng-model="producerGroup" required/>
|
||||
</div>
|
||||
<button type="button" class="btn btn-raised btn-sm btn-primary" data-toggle="modal"
|
||||
ng-click="queryClientByTopicAndGroup()">
|
||||
<span class="glyphicon glyphicon-search"></span>{{ 'SEARCH' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">clientId</th>
|
||||
<th class="text-center">clientAddr</th>
|
||||
<th class="text-center">language</th>
|
||||
<th class="text-center">version</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in connectionList">
|
||||
<td class="text-center">{{item.clientId}}</td>
|
||||
<td class="text-center">{{item.clientAddr}}</td>
|
||||
<td class="text-center">{{item.language}}</td>
|
||||
<td class="text-center">{{item.versionDesc}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
499
src/main/resources/static/view/pages/topic.html
Normal file
499
src/main/resources/static/view/pages/topic.html
Normal file
@@ -0,0 +1,499 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList" role="main">
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<form class="form-inline pull-left col-sm-12">
|
||||
<div class="form-group form-group-sm">
|
||||
<label>{{'TOPIC' | translate}}:</label>
|
||||
<input type="text" class="form-control" ng-model="filterStr">
|
||||
</div>
|
||||
<md-checkbox aria-label="Checkbox" ng-model="filterNormal" class="md-primary">{{'NORMAL' | translate}}
|
||||
</md-checkbox>
|
||||
<md-checkbox aria-label="Checkbox" ng-model="filterRetry" class="md-primary">{{'RETRY' | translate}}
|
||||
</md-checkbox>
|
||||
<md-checkbox aria-label="Checkbox" ng-model="filterDLQ" class="md-primary">{{'DLQ' | translate}}
|
||||
</md-checkbox>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="openAddDialog()">{{'ADD' |
|
||||
translate}}/ {{'UPDATE' | translate}}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<div class="row">
|
||||
<table class="table table-bordered text-middle">
|
||||
<tr>
|
||||
<th class="text-center">{{'TOPIC' | translate}}</th>
|
||||
<th class="text-center">{{ 'OPERATION' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="topic in topicShowList">
|
||||
<td class="text-center">{{topic}}</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="statsView(topic)">{{'STATUS' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="routerView(topic)">{{'ROUTER' | translate}}
|
||||
</button>
|
||||
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="consumerView(topic)">consumer {{'MANAGE' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="openUpdateDialog(topic)">topic {{'CONFIG' |translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="openSendTopicMessageDialog(topic)">{{'SEND_MSG' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-danger" type="button"
|
||||
ng-click="openConsumerResetOffsetDialog(topic)">{{'RESET_CUS_OFFSET' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-raised btn-sm btn-danger" type="button"
|
||||
ng-confirm-click="Are you sure to delete?"
|
||||
confirmed-click="deleteTopic(topic)">{{'DELETE' | translate}}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<tm-pagination conf="paginationConf"></tm-pagination>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/ng-template" id="resetOffsetResultDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">ResetResult</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<table class="table table-bordered table-hover" ng-repeat="(key, value) in ngDialogData.result" novalidate>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table table-bordered table-hover">
|
||||
<tr>
|
||||
<td>GroupName:{{key}}</td>
|
||||
<td>State:{{value.status}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div ng-show="value.rollbackStatsList == null">
|
||||
You Should Check It Yourself
|
||||
</div>
|
||||
<table class="table table-bordered table-hover">
|
||||
<tr ng-repeat="item in value.rollbackStatsList">
|
||||
<td>{{item}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/ng-template" id="sendResultDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">SendResult</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form class="form-horizontal" novalidate>
|
||||
<table class="table table-bordered">
|
||||
<tr ng-repeat="(key, value) in ngDialogData.result">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/ng-template" id="topicModifyDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{'TOPIC_CHANGE'| translate }}</h4>
|
||||
</div>
|
||||
<div class="modal-body " ng-repeat="item in ngDialogData.topicRequestList">
|
||||
<form id="addAppForm" name="addAppForm" class="form-horizontal" novalidate>
|
||||
<div class="form-group" ng-hide="ngDialogData.bIsUpdate">
|
||||
<label class="control-label col-sm-2">{{'CLUSTER_NAME'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="mySelectClusterNameList" multiple chosen
|
||||
ng-model="item.clusterNameList"
|
||||
ng-options="clusterNameItem for clusterNameItem in ngDialogData.allClusterNameList"
|
||||
>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'BROKER_NAME'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="mySelectBrokerNameList" multiple chosen ng-disabled="ngDialogData.bIsUpdate"
|
||||
ng-model="item.brokerNameList"
|
||||
ng-options="brokerNameItem for brokerNameItem in ngDialogData.allBrokerNameList"
|
||||
>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'TOPIC_NAME'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" ng-model="item.topicName" type="text"
|
||||
ng-disabled="ngDialogData.bIsUpdate" required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'WRITE_QUEUE_NUMS'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" ng-model="item.writeQueueNums" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'READ_QUEUE_NUMS'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" ng-model="item.readQueueNums" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'PERM'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" ng-model="item.perm" type="text"
|
||||
required/>
|
||||
<span class="text-danger" ng-show="addAppForm.name.$error.required">编号不能为空.</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-primary"
|
||||
ng-click="postTopicRequest(item)">{{ 'COMMIT' | translate }}
|
||||
</button>
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
<script type="text/ng-template" id="consumerViewDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ngDialogData.topic}}{{ 'SUBSCRIPTION_GROUP' | translate }}</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form name="addAppForm" class="form-horizontal" novalidate>
|
||||
<div ng-show="ngDialogData.consumerGroupCount == 0">
|
||||
Don't have {{ 'SUBSCRIPTION_GROUP' | translate }}
|
||||
</div>
|
||||
|
||||
|
||||
<table class="table table-bordered table-hover"
|
||||
ng-repeat="(consumerGroup, consumeDetail) in ngDialogData.consumerData">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td><label>{{ 'SUBSCRIPTION_GROUP' | translate }}</label></td>
|
||||
<td>{{consumerGroup}}</td>
|
||||
<td><label>{{ 'DELAY' | translate }}</label></td>
|
||||
<td>{{consumeDetail.diffTotal}}</td>
|
||||
<td><label>{{ 'LAST_CONSUME_TIME' | translate }}</label></td>
|
||||
<td>{{consumeDetail.lastTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">{{'BROKER'|translate}}</th>
|
||||
<th class="text-center">{{'QUEUE'|translate}}</th>
|
||||
<th class="text-center">{{'CONSUMER_CLIENT'|translate}}</th>
|
||||
<th class="text-center">{{'BROKER_OFFSET'|translate}}</th>
|
||||
<th class="text-center">{{'CONSUMER_OFFSET'|translate}}</th>
|
||||
<th class="text-center">{{'DIFF_TOTAL'|translate}}</th>
|
||||
<th class="text-center">{{'LAST_TIME_STAMP'|translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="item in consumeDetail.queueStatInfoList">
|
||||
<td class="text-center">{{item.brokerName}}</td>
|
||||
<td class="text-center">{{item.queueId}}</td>
|
||||
<td class="text-center">{{item.clientInfo}}</td>
|
||||
<td class="text-center">{{item.brokerOffset}}</td>
|
||||
<td class="text-center">{{item.consumerOffset}}</td>
|
||||
<td class="text-center">{{item.brokerOffset-item.consumerOffset}}</td>
|
||||
<td class="text-center">{{item.lastTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}
|
||||
</td>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/ng-template" id="consumerResetOffsetDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{topic}} {{'RESET_OFFSET'|translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" novalidate>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2"> {{ 'SUBSCRIPTION_GROUP' | translate }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="mySelect" multiple chosen
|
||||
ng-model="ngDialogData.selectedConsumerGroup"
|
||||
ng-options="item for item in ngDialogData.allConsumerGroupList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{ 'TIME' | translate }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group">
|
||||
<input class="form-control" datetimepicker ng-model="timepicker.date"
|
||||
options="timepicker.options"/>
|
||||
<span class="input-group-addon"><span
|
||||
class="glyphicon glyphicon-calendar"></span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-primary"
|
||||
ng-click="resetOffset()">{{ 'RESET' | translate }}
|
||||
</button>
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="statsViewDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"> [{{ngDialogData.topic}}]{{'STATUS' | translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body limit_height">
|
||||
<table class="table table-bordered text-middle">
|
||||
<tr>
|
||||
<th class="text-center">{{'QUEUE'|translate}}</th>
|
||||
<th class="text-center">{{'MIN_OFFSET'|translate}}</th>
|
||||
<th class="text-center">{{'MAX_OFFSET'|translate}}</th>
|
||||
<th class="text-center">{{'LAST_UPDATE_TIME_STAMP'|translate}}</th>
|
||||
|
||||
</tr>
|
||||
<tr ng-repeat="(queue,info) in ngDialogData.statsData.offsetTable">
|
||||
<td class="text-center">{{queue}}</td>
|
||||
<td class="text-center">{{info.minOffset}}</td>
|
||||
<td class="text-center">{{info.maxOffset}}</td>
|
||||
<td class="text-center">{{info.lastUpdateTimestamp | date:'yyyy-MM-dd HH:mm:ss'}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<!--路由查看窗口-->
|
||||
<script type="text/ng-template" id="routerViewDialog">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"> {{ngDialogData.topic}}{{'ROUTER' | translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body limit_height">
|
||||
|
||||
<table class="table table-bordered table-hover">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>brokerDatas:</td>
|
||||
<td>
|
||||
<table class="table table-bordered table-hover"
|
||||
ng-repeat="item in ngDialogData.routeData.brokerDatas">
|
||||
<tr>
|
||||
<td>broker:</td>
|
||||
<td>
|
||||
{{item.brokerName}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>brokerAddrs:</td>
|
||||
<td>
|
||||
<table class="table table-bordered table-hover">
|
||||
<tr ng-repeat="(index,address) in item.brokerAddrs">
|
||||
<td>{{index}}</td>
|
||||
<td>{{address}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'QUEUE_DATAS'|translate}}</td>
|
||||
<td>
|
||||
<table class="table table-bordered table-hover"
|
||||
ng-repeat="item in ngDialogData.routeData.queueDatas">
|
||||
<tr>
|
||||
<td>{{'BROKER_NAME'|translate}}</td>
|
||||
<td>{{item.brokerName}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'READ_QUEUE_NUMS'|translate}}</td>
|
||||
<td>{{item.readQueueNums}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'WRITE_QUEUE_NUMS'|translate}}</td>
|
||||
<td>{{item.writeQueueNums}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'PERM'|translate}}</td>
|
||||
<td>{{item.perm}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
|
||||
<!--删除主题窗口-->
|
||||
<script type="text/ng-template" id="deleteTopicDialog">
|
||||
<div>
|
||||
<div>
|
||||
<md-toolbar md-scroll-shrink="">
|
||||
<div class="md-toolbar-tools">
|
||||
{{ngDialogData.topic}} {{ 'DELETE' | translate }}
|
||||
</div>
|
||||
</md-toolbar>
|
||||
<md-content>
|
||||
<md-card>
|
||||
|
||||
</md-card>
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</md-content>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!--发送自定义消息窗口-->
|
||||
<script type="text/ng-template" id="sendTopicMessageDialog">
|
||||
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{'SEND'|translate}}[{{ngDialogData.topic}}]{{'MESSAGE'| translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body ">
|
||||
<form class="form-horizontal" novalidate>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'TOPIC'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" name="name" ng-model="sendTopicMessage.topic" type="text"
|
||||
disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'TAG'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" name="name" ng-model="sendTopicMessage.tag" type="text"
|
||||
ng-disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'KEY'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" name="name" ng-model="sendTopicMessage.key" type="text"
|
||||
ng-disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'MESSAGE_BODY'|translate}}:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" name="name"
|
||||
ng-model="sendTopicMessage.messageBody"
|
||||
style="max-height:200px;min-height:200px; resize: none"
|
||||
ng-disabled></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-primary"
|
||||
ng-click="send()">{{ 'COMMIT' | translate }}
|
||||
</button>
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
47
src/main/resources/static/view/pages/un_support_browser.html
Normal file
47
src/main/resources/static/view/pages/un_support_browser.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" ng-app="app">
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>RocketMq-console-ng</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name='description' content=''>
|
||||
<meta name='keywords' content=''>
|
||||
<link rel="stylesheet" href="/vendor/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="/vendor/bootstrap-material-design/css/bootstrap-material-design.css">
|
||||
<link rel="stylesheet" href="/vendor/bootstrap-material-design/css/ripples.css">
|
||||
<link rel="stylesheet" href="/vendor/font-awesome-4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="/vendor/font-awesome-4.7.0/fonts/fontawesome-webfont.svg">
|
||||
<link rel="stylesheet" href="/style/animate.css">
|
||||
</head>
|
||||
<body>
|
||||
<!--[if lte IE 9]>
|
||||
<script type="text/javascript">
|
||||
var unsupport = true;
|
||||
</script>
|
||||
<![endif]-->
|
||||
|
||||
<script type="text/javascript">
|
||||
if (typeof unsupport == "undefined") {
|
||||
location.href = "/";
|
||||
}
|
||||
</script>
|
||||
<p class="browsehappy">你正在使用 <strong>过时</strong> 的浏览器,本站暂不支持。请 <a href="http://browsehappy.com/"
|
||||
target="_blank">升级浏览器</a> 以获得更好的体验</p>
|
||||
</body>
|
||||
Reference in New Issue
Block a user