API명별 요약 통계

This commit is contained in:
daekuk1
2026-01-28 16:59:42 +09:00
parent f352b38d7f
commit d4739e2bc1
18 changed files with 1431 additions and 56 deletions
@@ -391,18 +391,28 @@
postData.searchEndDateTime = searchEndDate;
}
var summaryPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
if (searchStartDate) {
summaryPostData.searchStartDateTime = searchStartDate;
}
if (searchEndDate) {
summaryPostData.searchEndDateTime = searchEndDate;
}
$("#gridSummary").setGridParam({ url: url, postData: summaryPostData, page: 1 }).trigger("reloadGrid");
$("#grid").setGridParam({ url: url, postData: postData, page: 1 }).trigger("reloadGrid");
fetchChartData();
}
function exportToExcel() {
console.log('[Excel Export] Starting...');
function exportToExcel(isSummary) {
var cmdType = isSummary ? 'EXCEL_EXPORT_SUMMARY' : 'EXCEL_EXPORT';
console.log('[Excel Export] Starting... (type: ' + cmdType + ')');
var searchStartDate = $("input[name=searchStartDateTime]").val().replace(/-/g, "");
var searchEndDate = $("input[name=searchEndDateTime]").val().replace(/-/g, "");
var postData = {
cmd: 'EXCEL_EXPORT',
cmd: cmdType,
searchApiName: $("input[name=searchApiName]").val(),
searchGwInstanceId: $("input[name=searchGwInstanceId]").val(),
searchBizDivCode: $("input[name=searchBizDivCode]").val(),
@@ -517,6 +527,50 @@
xhr.send(formData.join('&'));
}
function listSummary() {
var gridPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
$('#gridSummary').jqGrid({
datatype: "json",
mtype: 'POST',
postData: gridPostData,
colNames: [
'API명',
'총건수', '성공', 'Timeout', '시스템오류', '업무오류',
'Seq900 Timeout', 'Seq900 시스템오류', 'Seq900 업무오류',
'평균응답(ms)', '최소응답(ms)', '최대응답(ms)'
],
colModel: [
{ name: 'apiName', align: 'left', width: '250', sortable: false },
{ name: 'totalCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'successCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'timeoutCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'systemErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'bizErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'seq900TimeoutCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'seq900SystemErrCnt', align: 'right', width: '120', formatter: numberFormatter, sortable: false },
{ name: 'seq900BizErrCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'avgRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'minRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'maxRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false }
],
jsonReader: { repeatitems: false },
pager: $('#pagerSummary'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: 'auto',
autowidth: true,
viewrecords: true,
rowList: eval('[${rmsDefaultRowList}]'),
loadComplete: function(d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, { sortable: false });
}
}
});
}
function list() {
var gridPostData = getSearchForJqgrid("cmd", "LIST");
$('#grid').jqGrid({
@@ -603,17 +657,23 @@
}
initCharts();
listSummary();
list();
search();
fetchChartData();
resizeJqGridWidth('gridSummary', 'content_middle', '1200');
resizeJqGridWidth('grid', 'content_middle', '1200');
$("#btn_search").click(function() {
search();
});
$("#btn_excel_export_summary").click(function() {
exportToExcel(true);
});
$("#btn_excel_export").click(function() {
exportToExcel();
exportToExcel(false);
});
$("input[name^=search]").keydown(function(key) {
@@ -646,9 +706,6 @@
<button type="button" class="cssbtn" id="btn_search" level="R">
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
</button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드
</button>
</div>
<div class="title" id="title">API 일별 통계</div>
<table class="search_condition" cellspacing="0">
@@ -704,8 +761,30 @@
<div id="callChart" class="chart"></div>
<div id="respChart" class="chart"></div>
</div>
<table id="grid"></table>
<div id="pager"></div>
<!-- 요약 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">API명별 요약 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export_summary" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (요약)
</button>
</div>
<table id="gridSummary"></table>
<div id="pagerSummary"></div>
</div>
<!-- 상세 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">상세 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (상세)
</button>
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
</div>
</div>
</body>
@@ -403,15 +403,23 @@
postData.searchEndDateTime = searchDate + "23";
}
var summaryPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
if (searchDate) {
summaryPostData.searchStartDateTime = searchDate + "00";
summaryPostData.searchEndDateTime = searchDate + "23";
}
$("#gridSummary").setGridParam({ url: url, postData: summaryPostData, page: 1 }).trigger("reloadGrid");
$("#grid").setGridParam({ url: url, postData: postData, page: 1 }).trigger("reloadGrid");
fetchChartData();
}
function exportToExcel() {
console.log('[Excel Export] Starting...');
function exportToExcel(isSummary) {
var cmdType = isSummary ? 'EXCEL_EXPORT_SUMMARY' : 'EXCEL_EXPORT';
console.log('[Excel Export] Starting... (type: ' + cmdType + ')');
var postData = {
cmd: 'EXCEL_EXPORT',
cmd: cmdType,
searchApiName: $("input[name=searchApiName]").val(),
searchGwInstanceId: $("input[name=searchGwInstanceId]").val(),
searchBizDivCode: $("input[name=searchBizDivCode]").val(),
@@ -525,6 +533,50 @@
xhr.send(formData.join('&'));
}
function listSummary() {
var gridPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
$('#gridSummary').jqGrid({
datatype: "json",
mtype: 'POST',
postData: gridPostData,
colNames: [
'API명',
'총건수', '성공', 'Timeout', '시스템오류', '업무오류',
'Seq900 Timeout', 'Seq900 시스템오류', 'Seq900 업무오류',
'평균응답(ms)', '최소응답(ms)', '최대응답(ms)'
],
colModel: [
{ name: 'apiName', align: 'left', width: '250', sortable: false },
{ name: 'totalCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'successCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'timeoutCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'systemErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'bizErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'seq900TimeoutCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'seq900SystemErrCnt', align: 'right', width: '120', formatter: numberFormatter, sortable: false },
{ name: 'seq900BizErrCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'avgRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'minRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'maxRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false }
],
jsonReader: { repeatitems: false },
pager: $('#pagerSummary'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: 'auto',
autowidth: true,
viewrecords: true,
rowList: eval('[${rmsDefaultRowList}]'),
loadComplete: function(d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, { sortable: false });
}
}
});
}
function list() {
var gridPostData = getSearchForJqgrid("cmd", "LIST");
$('#grid').jqGrid({
@@ -589,17 +641,23 @@
}
initCharts();
listSummary();
list();
search();
fetchChartData();
resizeJqGridWidth('gridSummary', 'content_middle', '1200');
resizeJqGridWidth('grid', 'content_middle', '1200');
$("#btn_search").click(function() {
search();
});
$("#btn_excel_export_summary").click(function() {
exportToExcel(true);
});
$("#btn_excel_export").click(function() {
exportToExcel();
exportToExcel(false);
});
$("input[name^=search]").keydown(function(key) {
@@ -632,9 +690,6 @@
<button type="button" class="cssbtn" id="btn_search" level="R">
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
</button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드
</button>
</div>
<div class="title" id="title">API 시간별 통계</div>
<table class="search_condition" cellspacing="0">
@@ -688,8 +743,30 @@
<div id="callChart" class="chart"></div>
<div id="respChart" class="chart"></div>
</div>
<table id="grid"></table>
<div id="pager"></div>
<!-- 요약 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">API명별 요약 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export_summary" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (요약)
</button>
</div>
<table id="gridSummary"></table>
<div id="pagerSummary"></div>
</div>
<!-- 상세 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">상세 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (상세)
</button>
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
</div>
</div>
</body>
@@ -411,15 +411,23 @@
postData.searchEndDateTime = range.end;
}
var summaryPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
if (range) {
summaryPostData.searchStartDateTime = range.start;
summaryPostData.searchEndDateTime = range.end;
}
$("#gridSummary").setGridParam({ url: url, postData: summaryPostData, page: 1 }).trigger("reloadGrid");
$("#grid").setGridParam({ url: url, postData: postData, page: 1 }).trigger("reloadGrid");
fetchChartData(range);
}
function exportToExcel() {
console.log('[Excel Export] Starting...');
function exportToExcel(isSummary) {
var cmdType = isSummary ? 'EXCEL_EXPORT_SUMMARY' : 'EXCEL_EXPORT';
console.log('[Excel Export] Starting... (type: ' + cmdType + ')');
var postData = {
cmd: 'EXCEL_EXPORT',
cmd: cmdType,
searchApiName: $("input[name=searchApiName]").val(),
searchGwInstanceId: $("input[name=searchGwInstanceId]").val(),
searchBizDivCode: $("input[name=searchBizDivCode]").val(),
@@ -536,7 +544,51 @@
xhr.send(formData.join('&'));
}
function list() {
function listSummary() {
var gridPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
$('#gridSummary').jqGrid({
datatype: "json",
mtype: 'POST',
postData: gridPostData,
colNames: [
'API명',
'총건수', '성공', 'Timeout', '시스템오류', '업무오류',
'Seq900 Timeout', 'Seq900 시스템오류', 'Seq900 업무오류',
'평균응답(ms)', '최소응답(ms)', '최대응답(ms)'
],
colModel: [
{ name: 'apiName', align: 'left', width: '250', sortable: false },
{ name: 'totalCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'successCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'timeoutCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'systemErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'bizErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'seq900TimeoutCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'seq900SystemErrCnt', align: 'right', width: '120', formatter: numberFormatter, sortable: false },
{ name: 'seq900BizErrCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'avgRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'minRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'maxRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false }
],
jsonReader: { repeatitems: false },
pager: $('#pagerSummary'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: 'auto',
autowidth: true,
viewrecords: true,
rowList: eval('[${rmsDefaultRowList}]'),
loadComplete: function(d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, { sortable: false });
}
}
});
}
function listDetail() {
var gridPostData = getSearchForJqgrid("cmd", "LIST");
$('#grid').jqGrid({
datatype: "json",
@@ -626,17 +678,23 @@
}
initCharts();
list();
listSummary();
listDetail();
search();
fetchChartData(validateAndAdjustDateRange());
resizeJqGridWidth('gridSummary', 'content_middle', '1200');
resizeJqGridWidth('grid', 'content_middle', '1200');
$("#btn_search").click(function() {
search();
});
$("#btn_excel_export_summary").click(function() {
exportToExcel(true);
});
$("#btn_excel_export").click(function() {
exportToExcel();
exportToExcel(false);
});
$("input[name^=search]").keydown(function(key) {
@@ -674,9 +732,6 @@
<button type="button" class="cssbtn" id="btn_search" level="R">
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
</button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드
</button>
</div>
<div class="title" id="title">API 분단위 통계</div>
<table class="search_condition" cellspacing="0">
@@ -734,8 +789,30 @@
<div id="callChart" class="chart"></div>
<div id="respChart" class="chart"></div>
</div>
<table id="grid"></table>
<div id="pager"></div>
<!-- 요약 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">API명별 요약 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export_summary" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (요약)
</button>
</div>
<table id="gridSummary"></table>
<div id="pagerSummary"></div>
</div>
<!-- 상세 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">상세 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (상세)
</button>
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
</div>
</div>
</body>
@@ -395,18 +395,28 @@
postData.searchEndDateTime = searchEndDate;
}
var summaryPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
if (searchStartDate) {
summaryPostData.searchStartDateTime = searchStartDate;
}
if (searchEndDate) {
summaryPostData.searchEndDateTime = searchEndDate;
}
$("#gridSummary").setGridParam({ url: url, postData: summaryPostData, page: 1 }).trigger("reloadGrid");
$("#grid").setGridParam({ url: url, postData: postData, page: 1 }).trigger("reloadGrid");
fetchChartData();
}
function exportToExcel() {
console.log('[Excel Export] Starting...');
function exportToExcel(isSummary) {
var cmdType = isSummary ? 'EXCEL_EXPORT_SUMMARY' : 'EXCEL_EXPORT';
console.log('[Excel Export] Starting... (type: ' + cmdType + ')');
var searchStartDate = $("input[name=searchStartDateTime]").val().replace(/-/g, "");
var searchEndDate = $("input[name=searchEndDateTime]").val().replace(/-/g, "");
var postData = {
cmd: 'EXCEL_EXPORT',
cmd: cmdType,
searchApiName: $("input[name=searchApiName]").val(),
searchGwInstanceId: $("input[name=searchGwInstanceId]").val(),
searchBizDivCode: $("input[name=searchBizDivCode]").val(),
@@ -521,6 +531,50 @@
xhr.send(formData.join('&'));
}
function listSummary() {
var gridPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
$('#gridSummary').jqGrid({
datatype: "json",
mtype: 'POST',
postData: gridPostData,
colNames: [
'API명',
'총건수', '성공', 'Timeout', '시스템오류', '업무오류',
'Seq900 Timeout', 'Seq900 시스템오류', 'Seq900 업무오류',
'평균응답(ms)', '최소응답(ms)', '최대응답(ms)'
],
colModel: [
{ name: 'apiName', align: 'left', width: '250', sortable: false },
{ name: 'totalCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'successCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'timeoutCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'systemErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'bizErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'seq900TimeoutCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'seq900SystemErrCnt', align: 'right', width: '120', formatter: numberFormatter, sortable: false },
{ name: 'seq900BizErrCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'avgRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'minRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'maxRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false }
],
jsonReader: { repeatitems: false },
pager: $('#pagerSummary'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: 'auto',
autowidth: true,
viewrecords: true,
rowList: eval('[${rmsDefaultRowList}]'),
loadComplete: function(d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, { sortable: false });
}
}
});
}
function list() {
var gridPostData = getSearchForJqgrid("cmd", "LIST");
$('#grid').jqGrid({
@@ -593,17 +647,23 @@
}
initCharts();
listSummary();
list();
search();
fetchChartData();
resizeJqGridWidth('gridSummary', 'content_middle', '1200');
resizeJqGridWidth('grid', 'content_middle', '1200');
$("#btn_search").click(function() {
search();
});
$("#btn_excel_export_summary").click(function() {
exportToExcel(true);
});
$("#btn_excel_export").click(function() {
exportToExcel();
exportToExcel(false);
});
$("input[name^=search]").keydown(function(key) {
@@ -636,9 +696,6 @@
<button type="button" class="cssbtn" id="btn_search" level="R">
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
</button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드
</button>
</div>
<div class="title" id="title">API 월별 통계</div>
<table class="search_condition" cellspacing="0">
@@ -694,8 +751,30 @@
<div id="callChart" class="chart"></div>
<div id="respChart" class="chart"></div>
</div>
<table id="grid"></table>
<div id="pager"></div>
<!-- 요약 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">API명별 요약 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export_summary" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (요약)
</button>
</div>
<table id="gridSummary"></table>
<div id="pagerSummary"></div>
</div>
<!-- 상세 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">상세 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (상세)
</button>
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
</div>
</div>
</body>
@@ -369,18 +369,28 @@
postData.searchEndDateTime = searchEndDate;
}
var summaryPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
if (searchStartDate) {
summaryPostData.searchStartDateTime = searchStartDate;
}
if (searchEndDate) {
summaryPostData.searchEndDateTime = searchEndDate;
}
$("#gridSummary").setGridParam({ url: url, postData: summaryPostData, page: 1 }).trigger("reloadGrid");
$("#grid").setGridParam({ url: url, postData: postData, page: 1 }).trigger("reloadGrid");
fetchChartData();
}
function exportToExcel() {
console.log('[Excel Export] Starting...');
function exportToExcel(isSummary) {
var cmdType = isSummary ? 'EXCEL_EXPORT_SUMMARY' : 'EXCEL_EXPORT';
console.log('[Excel Export] Starting... (type: ' + cmdType + ')');
var searchStartDate = $("input[name=searchStartDateTime]").val().replace(/-/g, "");
var searchEndDate = $("input[name=searchEndDateTime]").val().replace(/-/g, "");
var postData = {
cmd: 'EXCEL_EXPORT',
cmd: cmdType,
searchApiName: $("input[name=searchApiName]").val(),
searchGwInstanceId: $("input[name=searchGwInstanceId]").val(),
searchBizDivCode: $("input[name=searchBizDivCode]").val(),
@@ -495,6 +505,50 @@
xhr.send(formData.join('&'));
}
function listSummary() {
var gridPostData = getSearchForJqgrid("cmd", "LIST_SUMMARY");
$('#gridSummary').jqGrid({
datatype: "json",
mtype: 'POST',
postData: gridPostData,
colNames: [
'API명',
'총건수', '성공', 'Timeout', '시스템오류', '업무오류',
'Seq900 Timeout', 'Seq900 시스템오류', 'Seq900 업무오류',
'평균응답(ms)', '최소응답(ms)', '최대응답(ms)'
],
colModel: [
{ name: 'apiName', align: 'left', width: '250', sortable: false },
{ name: 'totalCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'successCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'timeoutCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'systemErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'bizErrCnt', align: 'right', width: '80', formatter: numberFormatter, sortable: false },
{ name: 'seq900TimeoutCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'seq900SystemErrCnt', align: 'right', width: '120', formatter: numberFormatter, sortable: false },
{ name: 'seq900BizErrCnt', align: 'right', width: '100', formatter: numberFormatter, sortable: false },
{ name: 'avgRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'minRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false },
{ name: 'maxRespTime', align: 'right', width: '90', formatter: decimalFormatter, sortable: false }
],
jsonReader: { repeatitems: false },
pager: $('#pagerSummary'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: 'auto',
autowidth: true,
viewrecords: true,
rowList: eval('[${rmsDefaultRowList}]'),
loadComplete: function(d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, { sortable: false });
}
}
});
}
function list() {
var gridPostData = getSearchForJqgrid("cmd", "LIST");
$('#grid').jqGrid({
@@ -562,17 +616,23 @@
}
initCharts();
listSummary();
list();
search();
fetchChartData();
resizeJqGridWidth('gridSummary', 'content_middle', '1200');
resizeJqGridWidth('grid', 'content_middle', '1200');
$("#btn_search").click(function() {
search();
});
$("#btn_excel_export_summary").click(function() {
exportToExcel(true);
});
$("#btn_excel_export").click(function() {
exportToExcel();
exportToExcel(false);
});
$("input[name^=search]").keydown(function(key) {
@@ -605,9 +665,6 @@
<button type="button" class="cssbtn" id="btn_search" level="R">
<i class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
</button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드
</button>
</div>
<div class="title" id="title">API 연간 통계</div>
<table class="search_condition" cellspacing="0">
@@ -662,8 +719,30 @@
<div id="callChart" class="chart"></div>
<div id="respChart" class="chart"></div>
</div>
<table id="grid"></table>
<div id="pager"></div>
<!-- 요약 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">API명별 요약 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export_summary" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (요약)
</button>
</div>
<table id="gridSummary"></table>
<div id="pagerSummary"></div>
</div>
<!-- 상세 그리드 -->
<div style="margin-top: 20px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
<div class="title" style="margin: 0;">상세 통계</div>
<button type="button" class="cssbtn" id="btn_excel_export" level="R">
<i class="material-icons">file_download</i> Excel 다운로드 (상세)
</button>
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
</div>
</div>
</body>