scExtensions – Användning¶
Math.calculateAverage¶
Beräknar medelvärdet för en array av tal.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
ary |
Array<Number> |
Array med tal att beräkna medelvärdet för |
Returvärde: Number – medelvärdet, eller 0 om arrayen är tom.
Math.isOdd¶
Kontrollerar om ett tal är udda.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
value |
Number |
Talet som ska kontrolleras |
Returvärde: Boolean – true om värdet är udda, annars false.
Math.isEven¶
Kontrollerar om ett tal är jämnt.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
value |
Number |
Talet som ska kontrolleras |
Returvärde: Boolean – true om värdet är jämnt, annars false.
String.prototype.split¶
Delar upp en sträng vid en angiven avgränsare och returnerar en array med delarna.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
delimiter |
String |
Avgränsaren som strängen ska delas vid |
Returvärde: Array<String> – en array med delarna av strängen.
FindAllAlarms¶
Söker rekursivt igenom ett objekt (vanligtvis DataStore) och samlar ihop alla larm.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
alarms |
Array |
Tom array som fylls på med hittade larm |
parent |
String |
Startsträng för sökvägen – ange "" |
obj |
Object |
Objektet att söka igenom, vanligtvis DataStore |
severity |
Number (valfri) |
Filtrera på specifik allvarlighetsgrad. Utelämna för att hämta alla larm. |
var alarms = new Array();
// Hämta alla larm
scExtensions.FindAllAlarms(alarms, "", DataStore);
// Hämta bara larm med allvarlighetsgrad 10
scExtensions.FindAllAlarms(alarms, "", DataStore, 10);
Varje element i alarms-arrayen har följande struktur:
| Egenskap | Typ | Beskrivning |
|---|---|---|
Alarm |
Object |
Referens till larmobjektet |
Name |
String |
Sökvägen till larmet i DataStore |
Active |
Boolean |
Senast kända aktivt-status |
msLeftUntilMidnight¶
Returnerar antalet millisekunder tills midnatt, baserat på systemklockan.
Returvärde: Number – millisekunder kvar till midnatt.
var ms = scExtensions.msLeftUntilMidnight();
// Starta timer som löper ut vid midnatt
myTimer.start(ms);
bytesToSize¶
Konverterar ett bytevärde till en läsbar sträng med automatiskt vald enhet.
Parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
bytes |
Number |
Antalet bytes att konvertera |
Returvärde: String – formaterat värde med enhet, t.ex. "5.00 MiB".
scExtensions.bytesToSize(5242880); // "5.00 MiB"
scExtensions.bytesToSize(1073741824); // "1.00 GiB"
scExtensions.bytesToSize(0); // "0 B"
Skriptet¶
//***********************************************//
// The purpose of this script library
// is to provide extensions to the script
// engine.
// Version 1.0 (2022-06-13)
// Copyright © 2022 Kentima AB. No rights reserved.
//***********************************************//
try
{
//Calculate average for Array of Numbers
Math.calculateAverage = function (ary)
{
if(ary.length === 0)
return 0;
var totalSum = 0;
for(var i in ary) //Iterate Array object
{
if(isNaN(ary[i]))
throw new Error("Value: '" + ary[i] + "' is not a Number.");
else
totalSum += ary[i];
}
var average = totalSum / ary.length; //Calculate average
return average;
};
//Check if 'value' is odd
Math.isOdd = function(value)
{
if(isNaN(value))
throw new Error("Math.isOdd(): value: '" + value + "' is not a Number"); //Throw error if value is not a number
return (value % 2 == 1); //return if value is odd or not(true/false)
};
//Check if 'value' is even
Math.isEven = function(value)
{
if(isNaN(value))
throw new Error("Math.isEven(): value: '" + value + "' is not a Number");
return (value % 2 == 0); //return if value is even or not(true/false)
};
//Extend String object with split function
String.prototype.split = function (delimiter)
{
if (arguments.length < 1)
{
return [this];
}
var result = []; //Create Array object
var buffer = this.slice();
var dlen = Math.max(1, delimiter.length);
while (true) //Do work until nothing left to split
{
var ind = buffer.indexOf(delimiter);
if (ind != -1 && buffer != "")
{
result.push(buffer.slice(0, ind));
buffer = buffer.slice(ind + dlen);
}
else
{
result.push(buffer);
return result; //Return Array object
}
}
};
//Locate all possible alarms in the system
this.FindAllAlarms = function(alarms, parent, obj, severity)
{
for(prop in obj) //Iterate the object you want to find all alarms in, most likely 'DataStore'
{
if (obj[prop] instanceof Object)
{
this.FindAllAlarms(alarms, parent + prop + ".", obj[prop], severity);
}
else
{
if(obj.hasOwnProperty("Severity"))
{
//Only add Alarm objects
//we can detect them as they have a property named 'Acknowledged'
if(((severity == undefined) ? true : (obj.Severity == severity)) && (prop == "Acknowledged"))
{
alarms[alarms.length] = { "Alarm" : obj, "Name" : parent.substring(0, parent.length-1), "Active" : false };
}
}
}
}
};
//Get number of milliseconds left until midnight
this.msLeftUntilMidnight = function()
{
var milliseconds = ((23 - System.Clock.Hour) * 3600000) + ((60 - System.Clock.Minute) * 60000) + ((60 - System.Clock.Second) * 1000); //Figure out how many milliseconds there are left until midnight.
//Debug.Print("msl: " + milliseconds); //For debugging
return milliseconds;
};
//Format bytes
this.bytesToSize = function(bytes)
{
var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB' , 'PiB', 'EiB', 'ZiB', 'YiB'];
if (bytes == 0) return '0 B';
if (isNaN(bytes)) throw new Error ("Value: '" + bytes + "' is not a number");
var i = Math.floor(Math.log(bytes) / Math.log(1024));
return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i];
};
}
catch(e)
{
Debug.Print("scExtensions: " + e);
}