diff --git a/xCAT-UI/js/monitor/rmcmon.js b/xCAT-UI/js/monitor/rmcmon.js index d9683faf1..1a53fc9e0 100644 --- a/xCAT-UI/js/monitor/rmcmon.js +++ b/xCAT-UI/js/monitor/rmcmon.js @@ -319,13 +319,53 @@ function parseRmcData(returnData){ function showNodeDetail(){ var nodeChat; - //remember how many nodes parsed, used for adding new table row - var parseNum = 0; - var detailTable = $('
'); - var detailRow; + var select; + var detailFilter = $('
'); + $('#rmcMonStatus').empty().append("RMC Monitoring Show"); $('#rmcmonDetail').empty().append('

Detail


'); + $('#rmcmonDetail').append(detailFilter); + + select = $(''); + for(var node in globalNodesDetail){ + for(var attr in globalNodesDetail[node]){ + select.append(''); + } + break; + } + + detailFilter.append('Metric: '); + detailFilter.append(select); + detailFilter.append('    '); + + //sort type + select = $(''); + select.append(''); + select.append(''); + select.append(''); + + detailFilter.append('Sort: '); + detailFilter.append(select); + detailFilter.append('    '); + + var filterButton = createButton('Filter'); + detailFilter.append(filterButton); + filterButton.bind('click', function(){ + var attr = $('#metric').val(); + var type = $('#sortType').val(); + showAllNodes(attr, type); + }); +} + +function showAllNodes(attrName, type){ + $('#rmcmonDetail table').remove(); + var detailTable = $('
'); + //remember how many nodes parsed, used for adding new table row + var parseNum = 0; + var detailRow; + var sortArray = new Array(); + $('#rmcmonDetail').append(detailTable); for (var nodeName in globalErrNodes){ @@ -354,7 +394,8 @@ function showNodeDetail(){ tempTd.append('
' + nodeName + '
'); } - for (var nodeName in globalNodesDetail){ + filterSort(attrName, type, sortArray); + for (var sortIndex in sortArray){ var tempTd = $(''); if (0 == (parseNum % 4)){ detailRow = $(''); @@ -365,15 +406,66 @@ function showNodeDetail(){ nodeChat = $('
'); tempTd.append(nodeChat); - for (var attrName in globalNodesDetail[nodeName]){ - var tempData = globalNodesDetail[nodeName][attrName].split(','); - var tempArray = []; - for (var i in tempData){ - tempArray.push([i, tempData[i]]); - } - $.plot(nodeChat, [tempArray]); - break; + + var tempData = sortArray[sortIndex]['value'].split(','); + var tempArray = []; + for (var i in tempData){ + tempArray.push([i, tempData[i]]); } - tempTd.append('
' + nodeName + '
'); + $.plot(nodeChat, [tempArray]); + + tempTd.append('
' + sortArray[sortIndex]['name'] + '
'); + } +} + +function filterSort(attrName, sortType, retArray){ + var tempObj = {}; + + for(var node in globalNodesDetail){ + tempObj['name'] = node; + tempObj['value'] = globalNodesDetail[node][attrName]; + retArray.push(tempObj); + } + + //by node name + if(3 == sortType){ + retArray.sort(sortName); + } + //desend + else if(2 == sortType){ + retArray.sort(sortDes); + } + //ascend + else{ + retArray.sort(sortAsc); + } + + return; +} + +function sortAsc(x, y){ + if(x['value'] > y['value']){ + return 1; + } + else{ + return -1; + } +} + +function sortDes(x, y){ + if(x['value'] > y['value']){ + return -1; + } + else{ + return 1; + } +} + +function sortName(x, y){ + if(x['name'] > y['name']){ + return 1; + } + else{ + return -1; } } \ No newline at end of file