home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 117
/
FreelogNo117-OctobreNovembre2013.iso
/
Theme
/
8GadgetPack
/
8GadgetPackSetup.msi
/
cpu.js_3
< prev
next >
Wrap
Text (UTF-16)
|
2012-05-19
|
18KB
|
370 lines
////////////////////////////////////////////////////////////////////////////////
//
// THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT.
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
var REFRESH_INTERVAL = 3000;
var dialOffset = -125;
var intCPUDialPos = dialOffset;
var intMEMDialPos = dialOffset;
var intCPUCurrent = dialOffset;
var intMEMCurrent = dialOffset;
var intNoAnimThresh = 4;
var isDocked;
var isVisible = true;
var cpuPercentageText;
var memoryPercentageText;
var gadgetTimeout;
var dialTimeout;
var L_PROCESSOR_TEXT = "CPU usage";
var L_MEMORY_TEXT = "Random access memory (RAM)";
////////////////////////////////////////////////////////////////////////////////
//
// GADGET FUNCTIONS
//
////////////////////////////////////////////////////////////////////////////////
function loadMain()
{
System.Gadget.visibilityChanged = checkVisibility;
System.Gadget.onUndock = checkState;
System.Gadget.onDock = checkState;
cpuPercentageText = document.getElementById("cpuBackground");
memoryPercentageText = document.getElementById("memoryBackground");
cpuMeter.addShadow("grey", 2, 40, 2, 2);
memMeter.addShadow("grey", 2, 40, 2, 2);
checkState();
updateGadgetDials();
}
////////////////////////////////////////////////////////////////////////////////
//
// start gadget animation
//
////////////////////////////////////////////////////////////////////////////////
function updateGadgetDials()
{
clearTimeout(dialTimeout);
var cpuUpdated = false;
var memoryUpdated = false;
var oMachine = new machineStatus();
if (Math.round(intCPUCurrent) != Math.round(oMachine.CPUUsagePercentage))
{
intCPUCurrent = oMachine.CPUUsagePercentage;
writeMeter(0, numberFormat(oMachine.CPUUsagePercentage) + "%");
cpuUpdated = true;
}
if (Math.round(intMEMCurrent) != Math.round(oMachine.memoryPercentage))
{
intMEMCurrent = oMachine.memoryPercentage;
writeMeter(1, numberFormat(oMachine.memoryPercentage) + "%");
memoryUpdated = true;
}
if (cpuUpdated || memoryUpdated)
{
moveDial(cpuUpdated, (oMachine.CPUUsagePercentage - intCPUDialPos), memoryUpdated, (oMachine.memoryPercentage - intMEMDialPos) );
}
gadgetTimeout = setTimeout("updateGadgetDials()", REFRESH_INTERVAL);
}
////////////////////////////////////////////////////////////////////////////////
//
// update machine status statistics
//
////////////////////////////////////////////////////////////////////////////////
function machineStatus()
{
this.CPUCount = System.Machine.CPUs.count;
var usageTotal = 0;
for (var i = 0; i < this.CPUCount; i++)
{
usageTotal += System.Machine.CPUs.item(i).usagePercentage;
}
this.CPUUsagePercentage = Math.min(Math.max(0, usageTotal / this.CPUCount), 100);
this.totalMemory = System.Machine.totalMemory;
this.availableMemory = System.Machine.availableMemory;
if((this.totalMemory > 0) && (this.totalMemory > this.availableMemory))
{
this.memoryPercentage = Math.min(100 - (this.availableMemory / this.totalMemory * 100), 100);
}
else
{
this.memoryPercentage = 0;
}
}
////////////////////////////////////////////////////////////////////////////////
//
// write meter reading
//
////////////////////////////////////////////////////////////////////////////////
function writeMeter(dialType, percent)
{
if (dialType == 0)
{
cpuPercentageText.style.left = centerPercent(percent, [33,56], [3,3]);
cpuPercentageText.innerText = percent;
cpuMeterLabel.innerHTML = L_PROCESSOR_TEXT + " " +percent;
}
else if (dialType == 1)
{
memoryPercentageText.style.left = centerPercent(percent, [89,133], [3,5]);
memoryPercentageText.innerText = percent;
memoryMeterLabel.innerHTML = L_MEMORY_TEXT + " " +percent;
}
}
////////////////////////////////////////////////////////////////////////////////
//
// move the cpu dial
//
////////////////////////////////////////////////////////////////////////////////
function moveDial(cpuDial, cpuInc, memoryDial, memoryInc)
{
if (cpuDial)
{
intCPUDialPos += cpuInc;
if (cpuInc > 0)
{
intCPUDialPos = Math.min(Math.max(0, intCPUDialPos), intCPUCurrent);
}
else
{
intCPUDialPos = Math.max(Math.max(0, intCPUCurrent), intCPUDialPos);
}
cpuMeter.Rotation = (intCPUCurrent * 2.5) + dialOffset;
}
if (memoryDial)
{
intMEMDialPos += memoryInc;
if (memoryInc > 0)
{
intMEMDialPos = Math.min(Math.max(0, intMEMDialPos), intMEMCurrent);
}
else
{
intMEMDialPos = Math.max(Math.max(0, intMEMCurrent), intMEMDialPos);
}
memMeter.Rotation = (intMEMCurrent * 2.5) + dialOffset;
}
}
////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////
function centerPercent(percent, leftPx, adjPx)
{
var index = 0;
if (!isDocked)
{
index = 1;
}
var left = leftPx[index];
if (percent.length > 3)
{
left -= adjPx[index];
}
return left;
}
////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////
function numberFormat(numberIn)
{
if (numberIn == null || numberIn < 0.5)
{
return "00";
}
numberIn = Math.round(numberIn);
if (numberIn != null && numberIn < 10)
{
return "0" + numberIn;
}
else if (numberIn != null && numberIn > 100)
{
return 100;
}
else
{
return numberIn;
}
}
////////////////////////////////////////////////////////////////////////////////
//
// styles for gadget when UNDOCKED
//
////////////////////////////////////////////////////////////////////////////////
function undockedState()
{
with (document.body.style)
{
width = "198px";
height = "159px";
}
background.style.width = "198px";
background.style.height = "159px";
background.src = "url(images/back_lrg.png)";
with (cpuMeter.style)
{
left = "63px";
top = "34px";
width = "10px";
height = "98px";
}
cpuMeter.src = "images/dial_lrg.png";
with (memMeter.style)
{
left = "137px";
top = "16px";
width = "10px";
height = "70px";
}
memMeter.src = "images/dial_lrg_sml.png";
with (dialDot.style)
{
width = "198px";
height = "150px";
}
dialDot.src = "images/dialdot_lrg.png";
cpuPercentageText.style.left = 56;
cpuPercentageText.style.top = 108;
cpuPercentageText.style.fontSize = 12;
memoryPercentageText.style.left = 133;
memoryPercentageText.style.top = 66;
memoryPercentageText.style.fontSize = 12;
glassMap.src = "images/glass_lrg.png";
glassMap.useMap = "#back_lrg_Map";
memoryLargeMap.alt = L_MEMORY_TEXT;
processorLargeMap.alt = L_PROCESSOR_TEXT;
isDocked = false;
}
////////////////////////////////////////////////////////////////////////////////
//
// styles for gadget when DOCKED
//
////////////////////////////////////////////////////////////////////////////////
function dockedState()
{
with (document.body.style)
{
width = "130px";
height = "101px";
}
background.style.width = "130px";
background.style.height = "101px";
background.src = "url(images/back.png)";
with (cpuMeter.style)
{
left = "38px";
top = "22px";
width = "8px";
height = "72px";
}
cpuMeter.src = "images/dial.png";
with (memMeter.style)
{
left = "92px";
top = "8px";
width = "8px";
height = "50px";
}
memMeter.src = "images/dial_sml.png";
with (dialDot.style)
{
width = "130px";
height = "101px";
}
dialDot.src = "images/dialdot.png";
cpuPercentageText.style.left = 33;
cpuPercentageText.style.top = 76;
cpuPercentageText.style.fontSize = 10;
memoryPercentageText.style.left = 89;
memoryPercentageText.style.top = 43;
memoryPercentageText.style.fontSize = 10;
glassMap.src = "images/glass.png";
glassMap.useMap = "#back_Map";
memoryMap.alt = L_MEMORY_TEXT;
processorMap.alt = L_PROCESSOR_TEXT;
isDocked = true;
}
////////////////////////////////////////////////////////////////////////////////
//
// determine if gadget is in sidebar - docked or on the desktop - undocked
//
////////////////////////////////////////////////////////////////////////////////
function checkState()
{
if (!System.Gadget.docked)
{
undockedState();
}
else
{
dockedState();
}
writeMeter(0, numberFormat(intCPUCurrent) + "%");
writeMeter(1, numberFormat(intMEMCurrent) + "%");
}
////////////////////////////////////////////////////////////////////////////////
//
// determine if gadget is visible
//
////////////////////////////////////////////////////////////////////////////////
function checkVisibility()
{
isVisible = System.Gadget.visible;
clearTimeout(gadgetTimeout);
if (isVisible)
{
gadgetTimeout = setTimeout("updateGadgetDials()", REFRESH_INTERVAL);
}
}