diff --git a/www/NavigationTree.js b/www/NavigationTree.js index 53c8daff..bcf1d198 100644 --- a/www/NavigationTree.js +++ b/www/NavigationTree.js @@ -267,13 +267,25 @@ Ext.define('PBS.view.main.NavigationTree', { j++; } - let [qtip, iconCls] = ['', 'fa fa-database']; + let mountStatus = records[i].data['mount-status'] ?? 'nonremovable'; + let isRemovable = mountStatus !== 'nonremovable'; + let mainIcon = `fa fa-${isRemovable ? 'plug' : 'database'}`; + let [qtip, iconCls] = ['', mainIcon]; const maintenance = records[i].data.maintenance; + + const removable_not_mounted = records[i].data['mount-status'] === 'notmounted'; + if (removable_not_mounted) { + iconCls = `${mainIcon} pmx-tree-icon-custom unplugged`; + qtip = gettext('Removable datastore not mounted'); + } if (maintenance) { const [type, message] = PBS.Utils.parseMaintenanceMode(maintenance); qtip = `${type}${message ? ': ' + message : ''}`; - let maintenanceTypeCls = type === 'delete' ? 'destroying' : 'maintenance'; - iconCls = `fa fa-database pmx-tree-icon-custom ${maintenanceTypeCls}`; + let maintenanceTypeCls = 'maintenance'; + if (type === 'delete') { + maintenanceTypeCls = 'destroying'; + } + iconCls = `${mainIcon} pmx-tree-icon-custom ${maintenanceTypeCls}`; } if (getChildTextAt(j).localeCompare(name) !== 0) { diff --git a/www/css/ext6-pbs.css b/www/css/ext6-pbs.css index c33ce684..706e681e 100644 --- a/www/css/ext6-pbs.css +++ b/www/css/ext6-pbs.css @@ -271,6 +271,10 @@ span.snapshot-comment-column { content: "\ "; } +.x-treelist-item-icon.fa-plug, .pmx-tree-icon-custom.fa-plug { + font-size: 12px; +} + /* datastore maintenance */ .pmx-tree-icon-custom.maintenance:after { content: "\f0ad"; @@ -290,6 +294,10 @@ span.snapshot-comment-column { color: #888; } +.pmx-tree-icon-custom.unplugged:before { + color: #888; +} + /*' PBS specific icons */ .pbs-icon-tape { diff --git a/www/datastore/DataStoreListSummary.js b/www/datastore/DataStoreListSummary.js index b908034d..f7ea83e7 100644 --- a/www/datastore/DataStoreListSummary.js +++ b/www/datastore/DataStoreListSummary.js @@ -22,6 +22,7 @@ Ext.define('PBS.datastore.DataStoreListSummary', { stillbad: 0, deduplication: 1.0, error: "", + removable: false, maintenance: '', }, },