| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- let progressTemplate = '<div class="progress rounded-lg w-40 h-2 mr-2 inline-block" style="width:120px;" title="{tip}"><div class="progress-bar {color}" style="width: {rate};"></div></div>';
- let statusTemplate = '<span id="instance-status-{id}" data-status="{status}" class="{class}">{text}</span>';
- let cpuCircle, memoryCircle, cpuRate, memoryRate, cpuAnimationId, memoryAnimationId, cpuRateStart = 0, memoryRateStart = 0;
- window.renderInstanceList = function (result, {col, row, value})
- {
- if(col.name === 'status')
- {
- var statusClass = value == 'running' ? 'text-success' : '';
- result[0] = {html: statusTemplate.replace('{id}', row.data.id).replace('{status}', row.data.status).replace('{text}', result[0]).replace('{class}', statusClass)};
- return result;
- }
- if(col.name === 'cpu')
- {
- var rowHtml = progressTemplate.replace('{color}', row.data.cpu.color).replace('{tip}', row.data.cpu.tip).replace('{rate}', row.data.cpu.rate)
- result[0] = {html: rowHtml + '<span class="text-gray">' + row.data.cpu.rate + '</span>'};
- return result;
- }
- if(col.name === 'mem')
- {
- var rowHtml = progressTemplate.replace('{color}', row.data.mem.color).replace('{tip}', row.data.mem.tip).replace('{rate}', row.data.mem.rate)
- result[0] = {html: rowHtml + '<span class="text-gray">' + row.data.mem.usage + '/' + row.data.mem.limit + '</span>'};
- return result;
- }
- return result;
- }
- $(function()
- {
- if(typeof timer !== 'undefined') clearInterval(timer);
- loadCneStatistic();
- if(instanceIdList.length === 0) return;
- if(inQuickon) timer = setInterval(refreshStatus, 5000);
- });
- window.onPageUnmount = function()
- {
- if(typeof timer !== 'undefined') clearInterval(timer);
- }
- function loadCneStatistic()
- {
- toggleLoading('#cpu-circle', true);
- toggleLoading('#memory-circle', true);
- toggleLoading('#status-icon', true);
- toggleLoading('.cpu-rate', true);
- toggleLoading('.cpu-memory', true);
- toggleLoading('#cne-statistic .cne-status', true);
- toggleLoading('#cne-statistic .node-quantity', true);
- $.ajaxSubmit({
- url: $.createLink('system', 'ajaxCneMetrics'),
- onComplete:function(res)
- {
- if(res.result === 'success')
- {
- let cpuInfo = res.data.cpuInfo, memoryInfo = res.data.memoryInfo, cpuLoading = true, memoryLoading = true;
- cpuInfo.tip = cpuInfo.tip.substring(cpuInfo.tip.indexOf('=') + 1).trim();
- memoryInfo.tip = memoryInfo.tip.substring(memoryInfo.tip.indexOf('=') + 1).trim();
- cpuRate = cpuInfo.rate;
- memoryRate = memoryInfo.rate;
- if(typeof $('#cpu-circle').zui() === 'undefined')
- {
- $('#cpu-circle div').remove();
- }
- else
- {
- cpuLoading = false;
- $('#cpu-circle').remove();
- $('.cpu-circle').prepend('<div id="cpu-circle" class="relative"><span class="absolute text-lg" style="transform: translate(-50%, -50%); top: 50%; left: 50%; white-space: nowrap;"><i class="icon icon-cpu mr-1" style="font-size: 20px; color: gray;"></i>' + cpuUsage + '</span></div>')
- }
- if(typeof $('#memory-circle').zui() === 'undefined')
- {
- $('#memory-circle div').remove();
- }
- else
- {
- memoryLoading = false;
- $('#memory-circle').remove();
- $('.memory-circle').prepend('<div id="memory-circle" class="relative"><span class="absolute text-lg" style="transform: translate(-50%, -50%); top: 50%; left: 50%; white-space: nowrap;"><i class="icon icon-memory mr-1" style="font-size: 20px; color: gray;"></i>' + memUsage + '</span></div>')
- }
- cpuCircle = new zui.ProgressCircle('#cpu-circle', {percent: 0, size: 160, circleColor: cpuInfo.color, circleWidth: 8, text: ''});
- memoryCircle = new zui.ProgressCircle('#memory-circle', {percent: 0, size: 160, circleColor: memoryInfo.color, circleWidth: 8, text: ''});
- $('#status-icon').replaceWith('<i class="icon icon-exclamation-pure app-status-circle icon-' + statusIcons[res.data.status] + ' status-' + res.data.status + ' " style="font-size: 30px;"></i>');
- $('#cne-statistic .cne-status').text(statusList[res.data.status]);
- const nodeQuantity = res.data.node_count == res.data.ready_count ? res.data.ready_count : res.data.ready_count + '/' + res.data.node_count;
- $('#cne-statistic .node-quantity').text(nodeQuantity);
- const nodeError = res.data.nodeError;
- if(!nodeError)
- {
- $('#cne-statistic .node-quantity-help').addClass('hidden');
- }
- else
- {
- $('#cne-statistic .node-quantity-help').removeClass('hidden').attr('title', nodeError);
- }
- $('#cne-statistic .icon-cpu').css('color' , cpuInfo.color);
- $('#cne-statistic .icon-memory').css('color' , memoryInfo.color);
- $('.cpu-rate').html(cpuInfo.rate + '<span class="text-xl ml-1">%</span>');
- $('.memory-rate').html(memoryInfo.rate + '<span class="text-xl ml-1">%</span>');
- let element = document.querySelector(".cpu-rate"),textNode = document.createTextNode(cpuInfo.tip);
- element.parentNode.insertBefore(textNode, element.nextSibling);
- element = document.querySelector(".memory-rate");
- textNode = document.createTextNode(memoryInfo.tip);
- element.parentNode.insertBefore(textNode, element.nextSibling);
- toggleLoading('#cne-statistic .cne-status', false);
- toggleLoading('#cne-statistic .node-quantity', false);
- if(cpuLoading) toggleLoading('#cpu-circle', false);
- if(memoryLoading) toggleLoading('#memory-circle', false);
- toggleLoading('.cpu-rate', false);
- toggleLoading('.cpu-memory', false);
- loadProgressCircle();
- }
- else
- {
- toggleLoading('#cpu-circle', false);
- toggleLoading('#memory-circle', false);
- toggleLoading('#status-icon', false);
- toggleLoading('.cpu-rate', false);
- toggleLoading('.cpu-memory', false);
- toggleLoading('#cne-statistic .cne-status', false);
- toggleLoading('#cne-statistic .node-quantity', false);
- }
- }
- });
- }
- function loadProgressCircle()
- {
- loadCpuProgressCircle();
- loadMemoryProgressCircle();
- }
- function loadCpuProgressCircle()
- {
- if(++cpuRateStart >= Math.floor(cpuRate))
- {
- cpuCircle.render({percent: cpuRate});
- cancelAnimationFrame(cpuAnimationId);
- }
- else if(cpuRateStart < Math.floor(cpuRate))
- {
- cpuCircle.render({percent: cpuRateStart});
- cpuAnimationId = requestAnimationFrame(loadCpuProgressCircle);
- }
- }
- function loadMemoryProgressCircle()
- {
- if(++memoryRateStart >= Math.floor(memoryRate))
- {
- memoryCircle.render({percent: memoryRate});
- cancelAnimationFrame(memoryAnimationId);
- }
- else if(memoryRateStart < Math.floor(memoryRate))
- {
- memoryCircle.render({percent: memoryRateStart});
- memoryAnimationId = requestAnimationFrame(loadMemoryProgressCircle);
- }
- }
- function refreshStatus()
- {
- const postData = new FormData();
- if(instanceIdList.length > 0)
- {
- instanceIdList.forEach(function(id){postData.append('idList[]', id)});
- }
- $.ajaxSubmit({
- url: $.createLink('instance', 'ajaxStatus'),
- method: 'POST',
- data: postData,
- onComplete: function(res)
- {
- if(res.result === 'success')
- {
- $.each(res.data, function(index, instance)
- {
- if($("#instance-status-" + instance.id).data('status') != instance.status)
- {
- loadTable();
- return;
- }
- });
- }
- }
- });
- }
|