diff --git a/emhttp/plugins/dynamix/ArrayDevices.page b/emhttp/plugins/dynamix/ArrayDevices.page index 152050f32..030b130a2 100644 --- a/emhttp/plugins/dynamix/ArrayDevices.page +++ b/emhttp/plugins/dynamix/ArrayDevices.page @@ -23,16 +23,20 @@ function toggle_state(device,name,action) { if (name) { var group = name.replace(/(\d+|\*)$/,''); if (name.slice(-1)!='*') { + // single device $('#dev-'+name.no_tilde()).removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); } 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-disk"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); } else { + // pool devices $('[id^="dev-'+group.master()+'"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); } } } else if (device!='Clear') { + // all devices $('[id^="dev-"]').removeClass('fa-circle fa-square fa-warning fa-times').addClass('fa-refresh fa-spin'); button = '[id^=button-]'; } diff --git a/emhttp/plugins/dynamix/include/ToggleState.php b/emhttp/plugins/dynamix/include/ToggleState.php index 54b5393cd..22b09c692 100644 --- a/emhttp/plugins/dynamix/include/ToggleState.php +++ b/emhttp/plugins/dynamix/include/ToggleState.php @@ -23,6 +23,7 @@ function emcmd($cmd) { } switch ($device) { case 'New': + // unassigned device emcmd("cmdSpin{$action}={$name}"); break; case 'Clear': @@ -31,7 +32,7 @@ case 'Clear': default: if (!$name) { // spin up/down all devices - emcmd("cmdSpin{$device}All=true"); + emcmd("cmdSpin{$device}All=Apply"); break; } if (substr($name,-1) != '*') { @@ -40,14 +41,8 @@ default: break; } // spin up/down group of devices - $disks = (array)@parse_ini_file('state/disks.ini',true); - // remove '*' from 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')); - } + $name = substr($name,0,-1); // remove trailing '*' from name + emcmd("cmdSpin{$action}All=Apply&poolName={$name}"); break; } ?> diff --git a/emhttp/plugins/dynamix/nchan/device_list b/emhttp/plugins/dynamix/nchan/device_list index d57bdfa84..1c0d28f87 100755 --- a/emhttp/plugins/dynamix/nchan/device_list +++ b/emhttp/plugins/dynamix/nchan/device_list @@ -420,7 +420,7 @@ while (true) { } else { foreach ($parity as $disk) if ($disk['status']!='DISK_NP_DSBL') $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";