Skip to content

Commit

Permalink
Refactor lite console codes.
Browse files Browse the repository at this point in the history
  • Loading branch information
haocao committed Apr 6, 2017
1 parent 11f5f14 commit 5f490be
Show file tree
Hide file tree
Showing 21 changed files with 175 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ public class JobOperationRestfulApi {

private JobAPIService jobAPIService = new JobAPIServiceImpl();

@GET
@Path("/count")
public int getJobsTotalCount() {
return jobAPIService.getJobStatisticsAPI().getJobsTotalCount();
}

@GET
@Produces(MediaType.APPLICATION_JSON)
public Collection<JobBriefInfo> getAllJobsBriefInfo() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ public class ServerOperationRestfulApi {

private JobAPIService jobAPIService = new JobAPIServiceImpl();

@GET
@Path("/count")
public int getServersTotalCount() {
return jobAPIService.getServerStatisticsAPI().getServersTotalCount();
}

@GET
@Produces(MediaType.APPLICATION_JSON)
public Collection<ServerBriefInfo> getAllServersBriefInfo() {
Expand Down Expand Up @@ -91,4 +97,10 @@ public void enableServerJob(@PathParam("serverIp") final String serverIp, @PathP
public void shutdownServerJob(@PathParam("serverIp") final String serverIp, @PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().shutdown(Optional.of(jobName), Optional.of(serverIp));
}

@DELETE
@Path("/{serverIp}/jobs/{jobName}")
public void removeServerJob(@PathParam("serverIp") final String serverIp, @PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().remove(Optional.of(jobName), Optional.of(serverIp));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.dangdang.ddframe.job.lite.console.service.JobAPIService;
import com.dangdang.ddframe.job.lite.console.service.impl.JobAPIServiceImpl;
import com.dangdang.ddframe.job.lite.lifecycle.domain.JobSettings;
import com.google.common.base.Optional;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
Expand Down Expand Up @@ -53,6 +52,5 @@ public void updateJobSettings(final JobSettings jobSettings) {
@Path("/{jobName}")
public void removeJob(@PathParam("jobName") final String jobName) {
jobAPIService.getJobSettingsAPI().removeJobSettings(jobName);
jobAPIService.getJobOperatorAPI().remove(Optional.of(jobName), Optional.<String>absent());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ <h4>服务器IP地址:<label id="server-ip"></label></h4>
</ol>
</section>
<section class="content">
<table id="server-jobs" data-search="true" data-show-refresh="true" data-show-toggle="true" data-show-columns="true" data-striped="true"></table>
<table id="server-jobs-tbl" data-search="true" data-show-refresh="true" data-show-toggle="true" data-show-columns="true" data-striped="true"></table>
<span id="chosen-job-name" class="hide"></span>
</section>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@
<li class="treeview" id="server">
<a href="#">
<i class="fa fa-tasks">&nbsp;&nbsp;作业操作</i><i class="pull-right fa fa-angle-left "></i>
<span id="job-nav-tag" class="label label-primary pull-right"></span>
<div class="pull-right">
<span id="job-nav-tag" class="label label-primary"></span>
<span id="server-nav-tag" class="label label-primary"></span>
</div>
</a>
<ul class="treeview-menu">
<li><a href="#" id="job-status" class="sub-menu"><i class="fa fa-circle-o"></i>作业维度</a></li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ function bindConnectButtons() {
$("#reg-centers").bootstrapTable("refresh");
renderRegCenterForDashboardNav();
refreshJobNavTag();
refreshServerNavTag();
showSuccessDialog();
} else {
showFailureDialog("switch-reg-center-failure-dialog");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ function shardingStatusFormatter(value, row) {
case "COMPLETED":
return "<span class='label label-success'>已完成</span>";
break;
case "SHARDING_ERROR":
return "<span class='label label-warning'>分片调整中</span>";
break;
case "DISABLED":
return "<span class='label label-warning'>禁用中</span>";
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function statusFormatter(value, row) {
return "<span class='label label-warning'>已禁用</span>";
break;
case "SHARDING_ERROR":
return "<span class='label label-warning'>分片错误</span>";
return "<span class='label label-warning'>分片调整中</span>";
break;
case "CRASHED":
return "<span class='label label-default'>已下线</span>";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ $(function() {

function renderJobs() {
var ip = $("#server-ip").text();
$("#server-jobs").bootstrapTable({
$("#server-jobs-tbl").bootstrapTable({
url: "/api/servers/" + ip + "/jobs",
cache: false,
columns:
Expand All @@ -31,8 +31,11 @@ function renderJobs() {
});
}

function statusFormatter(value) {
switch(value) {
function statusFormatter(val, row) {
if (0 === row.instanceCount ) {
return "<span class='label label-default'>已下线</span>";
}
switch(val) {
case "OK":
return "<span class='label label-success'>已启用</span>";
break;
Expand All @@ -43,6 +46,10 @@ function statusFormatter(value) {
}

function generateOperationButtons(val, row) {
if (0 === row.instanceCount ) {
//return "<button operation='remove' class='btn-xs btn-danger' job-name='" + row.jobName + "'>删除</button>";
return "-";
}
var disableButton = "<button operation='disable' class='btn-xs btn-warning' ip='" + row.ip + "' job-name='" + row.jobName + "'>禁用</button>";
var enableButton = "<button operation='enable' class='btn-xs btn-success' ip='" + row.ip + "' job-name='" + row.jobName + "'>启用</button>";
var shutdownButton = "<button operation='shutdown' class='btn-xs btn-danger' job-name='" + row.jobName + "'>终止</button>";
Expand All @@ -59,6 +66,7 @@ function bindButtons() {
bindDisableButton();
bindEnableButton();
bindShutdownButton();
bindRemoveButton();
}

function bindDisableButton() {
Expand All @@ -67,7 +75,7 @@ function bindDisableButton() {
url: "/api/servers/" + $("#server-ip").text() + "/jobs/" + $(event.currentTarget).attr("job-name") + "/disable",
type: "POST",
success: function() {
$("#server-jobs").bootstrapTable("refresh");
$("#server-jobs-tbl").bootstrapTable("refresh");
showSuccessDialog();
}
});
Expand All @@ -80,7 +88,7 @@ function bindEnableButton() {
url: "/api/servers/" + $("#server-ip").text() + "/jobs/" + $(event.currentTarget).attr("job-name") + "/disable",
type: "DELETE",
success: function() {
$("#server-jobs").bootstrapTable("refresh");
$("#server-jobs-tbl").bootstrapTable("refresh");
showSuccessDialog();
}
});
Expand All @@ -93,13 +101,36 @@ function bindShutdownButton() {
url: "/api/servers/" + $("#server-ip").text() + "/jobs/" + $(event.currentTarget).attr("job-name") + "/shutdown",
type: "POST",
success: function(){
$("#server-jobs").bootstrapTable("refresh");
$("#server-jobs-tbl").bootstrapTable("refresh");
showSuccessDialog();
}
});
});
}

function bindRemoveButton() {
$(document).on("click", "button[operation='remove']", function(event) {
$("#delete-confirm-dialog").modal({backdrop: 'static', keyboard: true});
var serverIp = $("#server-ip").text();
var jobName = $(event.currentTarget).attr("job-name");
$("#delete-confirm-dialog").modal({backdrop: 'static', keyboard: true});
$(document).off("click", "#delete-confirm-dialog-confirm-btn");
$(document).on("click", "#delete-confirm-dialog-confirm-btn", function() {
$.ajax({
url: "/api/servers/" + serverIp + "/jobs/" + jobName,
type: "DELETE",
success: function () {
$("#delete-confirm-dialog").modal("hide");
$(".modal-backdrop").remove();
$("body").removeClass("modal-open");
refreshServerNavTag();
$("#server-jobs-tbl").bootstrapTable("refresh");
}
});
});
});
}

function renderBreadCrumbMenu() {
$("#breadcrumb-server").click(function() {
$("#content").load("html/status/server/servers_status_overview.html");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ function bindRemoveServerButton() {
$("#delete-confirm-dialog").modal("hide");
$(".modal-backdrop").remove();
$("body").removeClass("modal-open");
refreshServerNavTag();
$("#servers-overview-tbl").bootstrapTable("refresh");
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ function switchRegCenter() {
$("#reg-centers").bootstrapTable("refresh");
renderRegCenterForDashboardNav();
refreshJobNavTag();
refreshServerNavTag();
} else {
link.button("reset");
showFailureDialog("switch-reg-center-failure-dialog");
Expand Down Expand Up @@ -150,16 +151,6 @@ function controlDropdownMenuStyle() {
});
}

function refreshJobNavTag() {
$.ajax({
url: "/api/jobs",
cache: false,
success: function(data) {
$("#job-nav-tag").text(data.length);
}
});
}

function refreshRegCenterNavTag() {
$.ajax({
url: "api/registry-center",
Expand All @@ -170,12 +161,15 @@ function refreshRegCenterNavTag() {
for (var index = 0; index < data.length; index++) {
if (data[index].activated) {
refreshJobNavTag();
refreshServerNavTag();
} else {
$("#job-nav-tag").text("0");
$("#server-nav-tag").text("0");
}
}
} else {
$("#job-nav-tag").text("0");
$("#server-nav-tag").text("0");
}
}
});
Expand All @@ -190,3 +184,23 @@ function refreshEventTraceNavTag() {
}
});
}

function refreshJobNavTag() {
$.ajax({
url: "/api/jobs/count",
cache: false,
success: function(data) {
$("#job-nav-tag").text(data);
}
});
}

function refreshServerNavTag() {
$.ajax({
url: "/api/servers/count",
cache: false,
success: function(data) {
$("#server-nav-tag").text(data);
}
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@
public interface JobStatisticsAPI {

/**
* 获取作业简明信息.
* 获取作业总数.
*
* @param jobName 作业名称
* @return 作业简明信息.
* @return 作业总数.
*/
JobBriefInfo getJobBriefInfo(String jobName);
int getJobsTotalCount();

/**
* 获取所有作业简明信息.
Expand All @@ -43,6 +42,14 @@ public interface JobStatisticsAPI {
*/
Collection<JobBriefInfo> getAllJobsBriefInfo();

/**
* 获取作业简明信息.
*
* @param jobName 作业名称
* @return 作业简明信息.
*/
JobBriefInfo getJobBriefInfo(String jobName);

/**
* 获取该IP下所有作业简明信息.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
*/
public interface ServerStatisticsAPI {

/**
* 获取作业服务器总数.
*
* @return 作业服务器总数
*/
int getServersTotalCount();

/**
* 获取所有作业服务器简明信息.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ public int compareTo(final ShardingInfo o) {
public enum ShardingStatus {

RUNNING,
COMPLETED,
COMPLETED,
SHARDING_ERROR,
PENDING;

/**
Expand All @@ -64,13 +65,16 @@ public enum ShardingStatus {
* @param isCompleted 是否运行完毕
* @return 作业运行时状态
*/
public static ShardingStatus getShardingStatus(final boolean isRunning, final boolean isCompleted) {
public static ShardingStatus getShardingStatus(final boolean isRunning, final boolean isCompleted, final boolean isShardingError) {
if (isRunning) {
return RUNNING;
}
if (isCompleted) {
return COMPLETED;
}
if (isShardingError) {
return SHARDING_ERROR;
}
return PENDING;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,25 @@ public final class JobStatisticsAPIImpl implements JobStatisticsAPI {

private final CoordinatorRegistryCenter regCenter;

@Override
public int getJobsTotalCount() {
return regCenter.getChildrenKeys("/").size();
}

@Override
public Collection<JobBriefInfo> getAllJobsBriefInfo() {
List<String> jobNames = regCenter.getChildrenKeys("/");
List<JobBriefInfo> result = new ArrayList<>(jobNames.size());
for (String each : jobNames) {
JobBriefInfo jobBriefInfo = getJobBriefInfo(each);
if (null != jobBriefInfo) {
result.add(jobBriefInfo);
}
}
Collections.sort(result);
return result;
}

@Override
public JobBriefInfo getJobBriefInfo(final String jobName) {
JobNodePath jobNodePath = new JobNodePath(jobName);
Expand Down Expand Up @@ -90,20 +109,6 @@ private int getJobInstanceCount(final String jobName) {
return regCenter.getChildrenKeys(new JobNodePath(jobName).getInstancesNodePath()).size();
}

@Override
public Collection<JobBriefInfo> getAllJobsBriefInfo() {
List<String> jobNames = regCenter.getChildrenKeys("/");
List<JobBriefInfo> result = new ArrayList<>(jobNames.size());
for (String each : jobNames) {
JobBriefInfo jobBriefInfo = getJobBriefInfo(each);
if (null != jobBriefInfo) {
result.add(jobBriefInfo);
}
}
Collections.sort(result);
return result;
}

@Override
public Collection<JobBriefInfo> getJobsBriefInfo(final String ip) {
List<String> jobNames = regCenter.getChildrenKeys("/");
Expand Down
Loading

0 comments on commit 5f490be

Please sign in to comment.