New device spin up/down logic

Based on implementation for beta 23
This commit is contained in:
bergware
2023-11-14 13:40:11 +01:00
parent 781fc20d16
commit 82da91c96c
3 changed files with 10 additions and 11 deletions

View File

@@ -23,16 +23,20 @@ function toggle_state(device,name,action) {
if (name) { if (name) {
var group = name.replace(/(\d+|\*)$/,''); var group = name.replace(/(\d+|\*)$/,'');
if (name.slice(-1)!='*') { if (name.slice(-1)!='*') {
// single device
$('#dev-'+name.no_tilde()).removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); $('#dev-'+name.no_tilde()).removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin');
} else { } else {
if (group=='array') { if (group=='disk') {
// array devices
$('[id^="dev-parity"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); $('[id^="dev-parity"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin');
$('[id^="dev-disk"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); $('[id^="dev-disk"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin');
} else { } else {
// pool devices
$('[id^="dev-'+group.master()+'"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); $('[id^="dev-'+group.master()+'"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin');
} }
} }
} else if (device!='Clear') { } else if (device!='Clear') {
// all devices
$('[id^="dev-"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); $('[id^="dev-"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin');
button = '[id^=button-]'; button = '[id^=button-]';
} }

View File

@@ -23,6 +23,7 @@ function emcmd($cmd) {
} }
switch ($device) { switch ($device) {
case 'New': case 'New':
// unassigned device
emcmd("cmdSpin{$action}={$name}"); emcmd("cmdSpin{$action}={$name}");
break; break;
case 'Clear': case 'Clear':
@@ -31,7 +32,7 @@ case 'Clear':
default: default:
if (!$name) { if (!$name) {
// spin up/down all devices // spin up/down all devices
emcmd("cmdSpin{$device}All=true"); emcmd("cmdSpin{$device}All=Apply");
break; break;
} }
if (substr($name,-1) != '*') { if (substr($name,-1) != '*') {
@@ -40,14 +41,8 @@ default:
break; break;
} }
// spin up/down group of devices // spin up/down group of devices
$disks = (array)@parse_ini_file('state/disks.ini',true); $name = substr($name,0,-1); // remove trailing '*' from name
// remove '*' from name emcmd("cmdSpin{$action}All=Apply&poolName={$name}");
$name = substr($name,0,-1);
foreach ($disks as $disk) {
if (_var($disk,'status') != 'DISK_OK') continue;
$array = ($name=='array' && in_array(_var($disk,'type'),['Parity','Data']));
if ($array || explode($_tilde_,prefix(_var($disk,'name')))[0]==$name) emcmd("cmdSpin{$action}="._var($disk,'name'));
}
break; break;
} }
?> ?>

View File

@@ -420,7 +420,7 @@ while (true) {
} else { } else {
foreach ($parity as $disk) if ($disk['status']!='DISK_NP_DSBL') $echo[0] .= array_online($disk); foreach ($parity as $disk) if ($disk['status']!='DISK_NP_DSBL') $echo[0] .= array_online($disk);
foreach ($data as $disk) $echo[0] .= array_online($disk); foreach ($data as $disk) $echo[0] .= array_online($disk);
if (_var($display,'total') && _var($var,'mdNumDisks',0)>1) $echo[0] .= show_totals(sprintf(_('Array of %s devices'),my_word($var['mdNumDisks'])),true,'array*'); if (_var($display,'total') && _var($var,'mdNumDisks',0)>1) $echo[0] .= show_totals(sprintf(_('Array of %s devices'),my_word($var['mdNumDisks'])),true,'disk*');
} }
$echo[1] = "boot_device\n"; $echo[1] = "boot_device\n";