diff --git a/plugins/dynamix.apcupsd/UPSsummary.page b/plugins/dynamix.apcupsd/UPSsummary.page index 9a0f68d1e..bc14653f0 100644 --- a/plugins/dynamix.apcupsd/UPSsummary.page +++ b/plugins/dynamix.apcupsd/UPSsummary.page @@ -1,6 +1,4 @@ -Menu="Dashboard:2" -Title="UPS Summary" -Tag="icon-ups" +Menu="Dashboard:1" Cond="file_exists('/var/run/apcupsd.pid')" --- - +
UPS StatusBattery ChargeRuntime LeftNominal PowerUPS LoadUPS Load %
 
diff --git a/plugins/dynamix.docker.manager/DockerContainers.page b/plugins/dynamix.docker.manager/DockerContainers.page index 7b71124ac..ef8df7fff 100644 --- a/plugins/dynamix.docker.manager/DockerContainers.page +++ b/plugins/dynamix.docker.manager/DockerContainers.page @@ -26,30 +26,22 @@ $cpus = cpu_list(); - +
ApplicationVersionNetworkPort Mappings (App to Host)Volume Mappings (App to Host)CPU loadMemory loadAutostartLog
NameVersionNetworkPort Mappings (App to Host)Volume Mappings (App to Host)CPU loadMemory loadAutostartLog
@@ -89,8 +81,10 @@ function resetSorting() { function listview() { var more = $.cookie('docker_listview_mode')=='advanced'; if (more) { + $.post('/plugins/dynamix.docker.manager/include/UpdateConfig.php',{action:'docker_load_start'}); $('.docker_readmore').readmore('destroy'); } else { + $.post('/plugins/dynamix.docker.manager/include/UpdateConfig.php',{action:'docker_load_stop'}); $('.docker_readmore').readmore({maxHeight:32,moreLink:"",lessLink:""}); } $('input.autostart').each(function(){ @@ -112,7 +106,7 @@ function loadlist() { $('#docker_list').html(data[0]).sortable({helper:sortableHelper,items:'tr.sortable',opacity:0.4,update:function(e,i){ var row = $('#docker_list').find('tr:first'); var names = ''; var index = ''; - row.parent().children().find('td.ct-name').each(function(){names+=$(this).text().replace(/Container ID.*$/,'')+';';index+=$(this).parent().parent().children().index($(this).parent())+';';}); + row.parent().children().find('td.ct-name').each(function(){names+=$(this).find('.appname').text()+';';index+=$(this).parent().parent().children().index($(this).parent())+';';}); $.post('/plugins/dynamix.docker.manager/include/UserPrefs.php',{names:names,index:index}); }}); $('head').append(' @@ -258,12 +251,12 @@ foreach ($ports as $port) { - + - + @@ -452,8 +445,8 @@ function noVMs() { } function loadlist(init) { if (init) { - $('#apps').switchButton({show_labels:false, checked:$.cookie('my_apps')=='startedOnly'}); - $('#vms').switchButton({show_labels:false, checked:$.cookie('my_vms')=='startedOnly'}); + $('#apps').switchButton({labels_placement:'left', off_label:'All Apps', on_label:'Started only', checked:$.cookie('my_apps')=='startedOnly'}); + $('#vms').switchButton({labels_placement:'left', off_label:'All VMs', on_label:'Started only', checked:$.cookie('my_vms')=='startedOnly'}); $('#apps').change(function(){ $('span.outer.apps.stopped').finish().toggle('fast',function(){noApps();}) $('#apps').is(':checked') ? $.cookie('my_apps','startedOnly',{expires:3650}) : $.removeCookie('my_apps'); @@ -464,7 +457,7 @@ function loadlist(init) { }); context.init({preventDoubleContext:false,left:true,above:false}); } - $.post('/webGui/include/DashboardApps.php',{display:'',docker:'',vm:''},function(d) { + $.post('/webGui/include/DashboardApps.php',{display:''},function(d) { var data = d.split(/\0/); $('.docker_view').html(data[0]); $('.vm_view').html(data[1]); @@ -756,10 +749,10 @@ $(function() { 0):?> toggleView('fan_view',true); - + toggleView('docker_view',true); - + toggleView('vm_view',true); toggleView('parity_view',true); diff --git a/plugins/dynamix/include/DashboardApps.php b/plugins/dynamix/include/DashboardApps.php index aa0e77683..79fb31f65 100644 --- a/plugins/dynamix/include/DashboardApps.php +++ b/plugins/dynamix/include/DashboardApps.php @@ -20,101 +20,97 @@ $display = $_POST['display']; $menu = []; if ($display=='icons' || $display=='docker') { - echo ""; } echo "\0"; if ($display=='icons' || $display=='vms') { - echo ""; } echo "\0"; diff --git a/plugins/dynamix/include/DefaultPageLayout.php b/plugins/dynamix/include/DefaultPageLayout.php index bd2dc17b4..717797814 100644 --- a/plugins/dynamix/include/DefaultPageLayout.php +++ b/plugins/dynamix/include/DefaultPageLayout.php @@ -25,7 +25,7 @@ $themes2 = in_array($theme,['gray','azure']); - +"> diff --git a/plugins/dynamix/styles/default-azure.css b/plugins/dynamix/styles/default-azure.css index 7a5126d40..db6005647 100644 --- a/plugins/dynamix/styles/default-azure.css +++ b/plugins/dynamix/styles/default-azure.css @@ -1,8 +1,8 @@ html{font-family:clear-sans;font-size:62.5%;height:100%} body{font-size:1.3rem;color:#606e7f;background-color:#e4e2e4;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -@media (max-width:1280px){#template{min-width:1280px;margin:0}} -@media (min-width:1281px){#template{min-width:1280px;margin:0}} -@media (min-width:1921px){#template{min-width:1280px;max-width:1920px;margin:0 auto}} +@media (max-width:1280px){#template{min-width:1260px;max-width:1260px;margin:0}} +@media (min-width:1281px){#template{min-width:1260px;margin:0}} +@media (min-width:1921px){#template{min-width:1260px;max-width:1920px;margin:0 auto}} img{border:none;text-decoration:none;vertical-align:middle} p{text-align:left} p.centered{text-align:left} @@ -153,7 +153,7 @@ table.share_status.share tr td:last-child{width:4%;text-align:right;padding-righ table.share_status.fixed tr>td+td{min-width:39px;font-size:1.1rem;text-align:center;padding:0} table.share_status.table{margin-top:36px} table.share_status.table tr>td{width:50%} -table.share_status.dashboard{float:left;margin:6px 10px 20px 10px;border:1px solid #606e7f} +table.share_status.dashboard{float:left;margin:6px 10px 14px 10px;border:1px solid #606e7f} table.share_status.dashboard thead tr:first-child>td{line-height:5rem;font-size:1.6rem;font-weight:bold;letter-spacing:1.8px;border:none;padding-top:10px} table.share_status.dashboard tbody tr>td{line-height:normal;padding-top:3px;padding-bottom:3px} table.share_status.dashboard tbody tr{border-bottom:none} @@ -173,8 +173,8 @@ table.share_status.dashboard td i[class^="icon-u-"]{font-size:inherit} table.share_status.dashboard td span[class^="fa "]{font-size:1.6rem;margin-right:8px} table.share_status.dashboard td i#mycase[class^="case-"]{font-size:128px} table.share_status.dashboard td i#mycase[class^="fa "]{font-size:96px} -table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:-10px;margin-right:2px;cursor:pointer;color:#606e7f} -table.share_status.dashboard td i.chevron.mt0{margin-top:0} +table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:0;margin-right:2px;cursor:pointer;color:#606e7f} +table.share_status.dashboard td i.chevron.mt0{margin-top:14px} table.share_status.dashboard td div.section{display:inline-block;vertical-align:top;margin-left:4px;font-size:1.2rem;font-weight:bold;text-transform:uppercase;letter-spacing:1px} table.share_status.dashboard td div.section span{font-weight:normal;text-transform:none;letter-spacing:0} table.share_status.dashboard td span.info{float:right;margin-right:20px;font-size:1.2rem;font-weight:normal;text-transform:none;letter-spacing:0} @@ -256,10 +256,18 @@ span.three{margin-left:-23px} span.tub{margin-right:8px;font-size:2.4rem;cursor:pointer} span.score{font-size:1.1rem;color:#ffffff;position:absolute} span#dropbox{background:none;line-height:6rem;margin-right:20px} +span.outer{margin-bottom:20px;margin-right:20px} +span.hand{cursor:pointer} +span.outer.started>img,span.outer.started>i.img{opacity:1.0} +span.outer.stopped>img,span.outer.stopped>i.img{opacity:0.3} +span.outer.paused>img,span.outer.paused>i.img{opacity:0.6} +span.inner{display:inline-block;vertical-align:top} +span.state{font-size:1.1rem;margin-left:7px} i.padlock{margin-right:8px;cursor:default;vertical-align:middle} i.nolock{visibility:hidden;margin-right:8px;vertical-align:middle} i.lock{margin-left:8px;cursor:default;vertical-align:middle} i.orb{font-size:1.1rem;margin:0 8px 0 3px} +img.img,i.img{width:32px;height:32px;margin-right:10px} img.icon{margin:-3px 4px 0 0} img.list{width:auto;max-width:48px;height:48px} i.list{font-size:4rem;color:#606e7f} diff --git a/plugins/dynamix/styles/default-black.css b/plugins/dynamix/styles/default-black.css index 5a10d55a7..2f0848645 100644 --- a/plugins/dynamix/styles/default-black.css +++ b/plugins/dynamix/styles/default-black.css @@ -1,8 +1,8 @@ html{font-family:clear-sans;font-size:62.5%;height:100%} body{font-size:1.3rem;color:#f2f2f2;background-color:#1c1b1b;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -@media (max-width:1280px){#template{min-width:1280px;margin:0}} -@media (min-width:1281px){#template{min-width:1280px;margin:0 10px}} -@media (min-width:1921px){#template{min-width:1280px;max-width:1920px;margin:0 auto}} +@media (max-width:1280px){#template{min-width:1260px;max-width:1260px;margin:0}} +@media (min-width:1281px){#template{min-width:1260px;margin:0 10px}} +@media (min-width:1921px){#template{min-width:1260px;max-width:1920px;margin:0 auto}} img{border:none;text-decoration:none;vertical-align:middle} p{text-align:justify} p.centered{text-align:left} @@ -44,7 +44,7 @@ select.slot{min-width:44rem;max-width:44rem} input.narrow{width:166px} input.trim{width:76px;min-width:76px} textarea{resize:none} -#header{position:absolute;top:0;left:0;width:100%;min-width:1280px;height:91px;z-index:100;margin:0;color:#1c1b1b;background-color:#f2f2f2;background-size:100% 90px;background-repeat:no-repeat} +#header{position:absolute;top:0;left:0;width:100%;min-width:1260px;height:91px;z-index:100;margin:0;color:#1c1b1b;background-color:#f2f2f2;background-size:100% 90px;background-repeat:no-repeat} #header .logo{float:left;margin-left:10px;color:#e22828;width:160px;text-align:center} #header .logo svg{width:160px;display:block;margin:25px 50px 8px 0} #header .block{margin:0;float:right;text-align:right;background-color:rgba(242,242,242,0.3);padding:10px 12px} @@ -57,7 +57,7 @@ textarea{resize:none} #title span.right{font-size:1.4rem;padding-top:2px;padding-right:10px;float:right} #title span img{padding-right:4px} #title.shift{margin-top:-30px} -#menu{position:absolute;top:90px;left:0;width:100%;min-width:1280px;height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;background-color:#f2f2f2;z-index:101} +#menu{position:absolute;top:90px;left:0;width:100%;min-width:1260px;height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;background-color:#f2f2f2;z-index:101} #nav-block{overflow:hidden;height:4rem;letter-spacing:1.8px} #nav-left{float:left} #nav-right{float:right} @@ -150,7 +150,7 @@ table.share_status.share tr td:last-child{width:4%;text-align:right;padding-righ table.share_status.fixed tr>td+td{min-width:39px;font-size:1.1rem;text-align:center;padding:0} table.share_status.table{margin-top:36px} table.share_status.table tr>td{width:50%} -table.share_status.dashboard{float:left;margin:6px 10px 20px 10px;border:1px solid #2b2b2b} +table.share_status.dashboard{float:left;margin:6px 10px 14px 10px;border:1px solid #2b2b2b} table.share_status.dashboard thead tr:last-child{border-bottom:none} table.share_status.dashboard thead tr:first-child>td{background-color:transparent;height:4rem;line-height:4rem;font-size:1.6rem;font-weight:bold;letter-spacing:1.8px;text-transform:capitalize;vertical-align:middle} table.share_status.dashboard tbody tr:nth-child(even){background-color:transparent} @@ -174,8 +174,8 @@ table.share_status.dashboard td i[class^="icon-u-"]{font-size:inherit} table.share_status.dashboard td span[class^="fa "]{font-size:1.6rem;margin-right:8px} table.share_status.dashboard td i#mycase[class^="case-"]{font-size:128px} table.share_status.dashboard td i#mycase[class^="fa "]{font-size:96px} -table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:-10px;margin-right:2px;cursor:pointer;color:#f2f2f2} -table.share_status.dashboard td i.chevron.mt0{margin-top:0} +table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:0;margin-right:2px;cursor:pointer;color:#f2f2f2} +table.share_status.dashboard td i.chevron.mt0{margin-top:14px} table.share_status.dashboard td div.section{display:inline-block;vertical-align:top;margin-left:4px;font-size:1.2rem;font-weight:bold;text-transform:uppercase;letter-spacing:1px} table.share_status.dashboard td div.section span{font-weight:normal;text-transform:none;letter-spacing:0} table.share_status.dashboard td span.info{float:right;margin-right:20px;font-size:1.2rem;font-weight:normal;text-transform:none;letter-spacing:0} @@ -241,10 +241,18 @@ span.two{margin-left:-20px} span.three{margin-left:-23px} span.tub{margin-right:8px;font-size:2.4rem;cursor:pointer} span.score{font-size:1.2rem;color:#1c1b1b;position:absolute} +span.outer{margin-bottom:20px;margin-right:20px} +span.hand{cursor:pointer} +span.outer.started>img,span.outer.started>i.img{opacity:1.0} +span.outer.stopped>img,span.outer.stopped>i.img{opacity:0.3} +span.outer.paused>img,span.outer.paused>i.img{opacity:0.6} +span.inner{display:inline-block;vertical-align:top} +span.state{font-size:1.1rem;margin-left:7px} i.padlock{margin-right:8px;cursor:default;vertical-align:middle} i.nolock{visibility:hidden;margin-right:8px;vertical-align:middle} i.lock{margin-left:8px;cursor:default;vertical-align:middle} i.orb{font-size:1.1rem;margin:0 8px 0 3px} +img.img,i.img{width:32px;height:32px;margin-right:10px} img.icon{margin:-3px 4px 0 0} img.list{width:auto;max-width:48px;height:48px} i.list{font-size:4rem;color:#f2f2f2} diff --git a/plugins/dynamix/styles/default-gray.css b/plugins/dynamix/styles/default-gray.css index 58f16251d..3a4b683b1 100644 --- a/plugins/dynamix/styles/default-gray.css +++ b/plugins/dynamix/styles/default-gray.css @@ -1,8 +1,8 @@ html{font-family:clear-sans;font-size:62.5%;height:100%} body{font-size:1.3rem;color:#606e7f;background-color:#1b1d1b;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -@media (max-width:1280px){#template{min-width:1280px;margin:0}} -@media (min-width:1281px){#template{min-width:1280px;margin:0}} -@media (min-width:1921px){#template{min-width:1280px;max-width:1920px;margin:0 auto}} +@media (max-width:1280px){#template{min-width:1260px;max-width:1260px;margin:0}} +@media (min-width:1281px){#template{min-width:1260px;margin:0}} +@media (min-width:1921px){#template{min-width:1260px;max-width:1920px;margin:0 auto}} img{border:none;text-decoration:none;vertical-align:middle} p{text-align:left} p.centered{text-align:left} @@ -153,7 +153,7 @@ table.share_status.share tr td:last-child{width:4%;text-align:right;padding-righ table.share_status.fixed tr>td+td{min-width:39px;font-size:1.1rem;text-align:center;padding:0} table.share_status.table{margin-top:36px} table.share_status.table tr>td{width:50%} -table.share_status.dashboard{float:left;margin:6px 10px 20px 10px;border:1px solid #606e7f} +table.share_status.dashboard{float:left;margin:6px 10px 14px 10px;border:1px solid #606e7f} table.share_status.dashboard thead tr:first-child>td{line-height:5rem;font-size:1.6rem;font-weight:bold;letter-spacing:1.8px;border:none;padding-top:10px} table.share_status.dashboard tbody tr>td{line-height:normal;padding-top:3px;padding-bottom:3px} table.share_status.dashboard tbody tr{border-bottom:none} @@ -173,8 +173,8 @@ table.share_status.dashboard td i[class^="icon-u-"]{font-size:inherit} table.share_status.dashboard td span[class^="fa "]{font-size:1.6rem;margin-right:8px} table.share_status.dashboard td i#mycase[class^="case-"]{font-size:128px} table.share_status.dashboard td i#mycase[class^="fa "]{font-size:96px} -table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:-10px;margin-right:2px;cursor:pointer;color:#606e7f} -table.share_status.dashboard td i.chevron.mt0{margin-top:0} +table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:0;margin-right:2px;cursor:pointer;color:#606e7f} +table.share_status.dashboard td i.chevron.mt0{margin-top:14px} table.share_status.dashboard td div.section{display:inline-block;vertical-align:top;margin-left:4px;font-size:1.2rem;font-weight:bold;text-transform:uppercase;letter-spacing:1px} table.share_status.dashboard td div.section span{font-weight:normal;text-transform:none;letter-spacing:0} table.share_status.dashboard td span.info{float:right;margin-right:20px;font-size:1.2rem;font-weight:normal;text-transform:none;letter-spacing:0} @@ -256,10 +256,18 @@ span.three{margin-left:-23px} span.tub{margin-right:8px;font-size:2.4rem;cursor:pointer} span.score{font-size:1.1rem;color:#ffffff;position:absolute} span#dropbox{background:none;line-height:6rem;margin-right:20px} +span.outer{margin-bottom:20px;margin-right:20px} +span.hand{cursor:pointer} +span.outer.started>img,span.outer.started>i.img{opacity:1.0} +span.outer.stopped>img,span.outer.stopped>i.img{opacity:0.3} +span.outer.paused>img,span.outer.paused>i.img{opacity:0.6} +span.inner{display:inline-block;vertical-align:top} +span.state{font-size:1.1rem;margin-left:7px} i.padlock{margin-right:8px;cursor:default;vertical-align:middle} i.nolock{visibility:hidden;margin-right:8px;vertical-align:middle} i.lock{margin-left:8px;cursor:default;vertical-align:middle} i.orb{font-size:1.1rem;margin:0 8px 0 3px} +img.img,i.img{width:32px;height:32px;margin-right:10px} img.icon{margin:-3px 4px 0 0} img.list{width:auto;max-width:48px;height:48px} i.list{font-size:4rem;color:#606e7f} diff --git a/plugins/dynamix/styles/default-white.css b/plugins/dynamix/styles/default-white.css index 3320cc267..96066e6ea 100644 --- a/plugins/dynamix/styles/default-white.css +++ b/plugins/dynamix/styles/default-white.css @@ -1,8 +1,8 @@ html{font-family:clear-sans;font-size:62.5%;height:100%} body{font-size:1.3rem;color:#1c1b1b;background-color:#f2f2f2;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -@media (max-width:1280px){#template{min-width:1280px;margin:0}} -@media (min-width:1281px){#template{min-width:1280px;margin:0 10px}} -@media (min-width:1921px){#template{min-width:1280px;max-width:1920px;margin:0 auto}} +@media (max-width:1280px){#template{min-width:1260px;max-width:1260px;margin:0}} +@media (min-width:1281px){#template{min-width:1260px;margin:0 10px}} +@media (min-width:1921px){#template{min-width:1260px;max-width:1920px;margin:0 auto}} img{border:none;text-decoration:none;vertical-align:middle} p{text-align:justify} p.centered{text-align:left} @@ -44,7 +44,7 @@ select.slot{min-width:44rem;max-width:44rem} input.narrow{width:166px} input.trim{width:76px;min-width:76px} textarea{resize:none} -#header{position:absolute;top:0;left:0;width:100%;min-width:1280px;height:91px;z-index:100;margin:0;color:#f2f2f2;background-color:#1c1b1b;background-size:100% 90px;background-repeat:no-repeat} +#header{position:absolute;top:0;left:0;width:100%;min-width:1260px;height:91px;z-index:100;margin:0;color:#f2f2f2;background-color:#1c1b1b;background-size:100% 90px;background-repeat:no-repeat} #header .logo{float:left;margin-left:10px;color:#e22828;width:160px;text-align:center} #header .logo svg{width:160px;display:block;margin:25px 50px 8px 0} #header .block{margin:0;float:right;text-align:right;background-color:rgba(28,27,27,0.3);padding:10px 12px} @@ -57,7 +57,7 @@ textarea{resize:none} #title span.right{font-size:1.4rem;padding-top:2px;padding-right:10px;float:right} #title span img{padding-right:4px} #title.shift{margin-top:-30px} -#menu{position:absolute;top:90px;left:0;width:100%;min-width:1280px;height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;background-color:#1c1b1b;z-index:101} +#menu{position:absolute;top:90px;left:0;width:100%;min-width:1260px;height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;background-color:#1c1b1b;z-index:101} #nav-block{overflow:hidden;height:4rem;letter-spacing:1.8px} #nav-left{float:left} #nav-right{float:right} @@ -150,7 +150,7 @@ table.share_status.share tr td:last-child{width:4%;text-align:right;padding-righ table.share_status.fixed tr>td+td{min-width:39px;font-size:1.1rem;text-align:center;padding:0} table.share_status.table{margin-top:36px} table.share_status.table tr>td{width:50%} -table.share_status.dashboard{float:left;margin:6px 10px 20px 10px;border:1px solid #e3e3e3} +table.share_status.dashboard{float:left;margin:6px 10px 14px 10px;border:1px solid #e3e3e3} table.share_status.dashboard thead tr:last-child{border-bottom:none} table.share_status.dashboard thead tr:first-child>td{background-color:transparent;height:4rem;line-height:4rem;font-size:1.6rem;font-weight:bold;letter-spacing:1.8px;text-transform:capitalize;vertical-align:middle} table.share_status.dashboard tbody tr:nth-child(even){background-color:transparent} @@ -174,8 +174,8 @@ table.share_status.dashboard td i[class^="icon-u-"]{font-size:inherit} table.share_status.dashboard td span[class^="fa "]{font-size:1.6rem;margin-right:8px} table.share_status.dashboard td i#mycase[class^="case-"]{font-size:128px} table.share_status.dashboard td i#mycase[class^="fa "]{font-size:96px} -table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:-10px;margin-right:2px;cursor:pointer;color:#1c1b1b} -table.share_status.dashboard td i.chevron.mt0{margin-top:0} +table.share_status.dashboard td i.chevron{float:right;font-size:1.1rem!important;margin-top:0;margin-right:2px;cursor:pointer;color:#1c1b1b} +table.share_status.dashboard td i.chevron.mt0{margin-top:14px} table.share_status.dashboard td div.section{display:inline-block;vertical-align:top;margin-left:4px;font-size:1.2rem;font-weight:bold;text-transform:uppercase;letter-spacing:1px} table.share_status.dashboard td div.section span{font-weight:normal;text-transform:none;letter-spacing:0} table.share_status.dashboard td span.info{float:right;margin-right:20px;font-size:1.2rem;font-weight:normal;text-transform:none;letter-spacing:0} @@ -241,10 +241,18 @@ span.two{margin-left:-20px} span.three{margin-left:-23px} span.tub{margin-right:8px;font-size:2.4rem;cursor:pointer} span.score{font-size:1.2rem;color:#1c1b1b;position:absolute} +span.outer{margin-bottom:20px;margin-right:20px} +span.hand{cursor:pointer} +span.outer.started>img,span.outer.started>i.img{opacity:1.0} +span.outer.stopped>img,span.outer.stopped>i.img{opacity:0.3} +span.outer.paused>img,span.outer.paused>i.img{opacity:0.6} +span.inner{display:inline-block;vertical-align:top} +span.state{font-size:1.1rem;margin-left:7px} i.padlock{margin-right:8px;cursor:default;vertical-align:middle} i.nolock{visibility:hidden;margin-right:8px;vertical-align:middle} i.lock{margin-left:8px;cursor:default;vertical-align:middle} i.orb{font-size:1.1rem;margin:0 8px 0 3px} +img.img,i.img{width:32px;height:32px;margin-right:10px} img.icon{margin:-3px 4px 0 0} img.list{width:auto;max-width:48px;height:48px} i.list{font-size:4rem;color:#1c1b1b} diff --git a/plugins/dynamix/styles/jquery.switchbutton.css b/plugins/dynamix/styles/jquery.switchbutton.css index 4b970aa94..7dca7c25c 100644 --- a/plugins/dynamix/styles/jquery.switchbutton.css +++ b/plugins/dynamix/styles/jquery.switchbutton.css @@ -1,5 +1,3 @@ -.switch-button-label{float:left;font-size:1.4rem;cursor:pointer;} -.switch-button-label.off{color:#adadad;} -.switch-button-label.on{color:#0088CC;} -.switch-button-background{float:left;position:relative;background:#ccc;border:1px solid #aaa;margin:1px 10px;border-radius:4px;cursor:pointer;} -.switch-button-button{position:absolute;left:-1px;top:-1px;background:#FAFAFA;border:1px solid #aaa;border-radius:4px;} \ No newline at end of file +.switch-button-label{float:left;font-size:1.1rem;text-transform:uppercase;letter-spacing:1px;cursor:pointer} +.switch-button-background{float:left;position:relative;background:#ccc;border:1px solid #aaa;margin:1px 10px;border-radius:4px;cursor:pointer} +.switch-button-button{position:absolute;left:-1px;top:-1px;background:#fafafa;border:1px solid #aaa;border-radius:4px} \ No newline at end of file
Docker Containers
Virtual Machines
"; - if ($_POST['docker']) { - $user_prefs = $dockerManPaths['user-prefs']; - $DockerClient = new DockerClient(); - $DockerTemplates = new DockerTemplates(); - $containers = $DockerClient->getDockerContainers(); - $allInfo = $DockerTemplates->getAllInfo(); - if (file_exists($user_prefs)) { - $prefs = parse_ini_file($user_prefs); $sort = []; - foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs) ?? 999; - array_multisort($sort,SORT_NUMERIC,$containers); - } - foreach ($containers as $ct) { - $name = $ct['Name']; - $id = $ct['Id']; - $info = &$allInfo[$name]; - $running = $info['running'] ? 1:0; - $paused = $info['paused'] ? 1:0; - $is_autostart = $info['autostart'] ? 'true':'false'; - $updateStatus = $info['updated']=='true'||$info['updated']=='undef' ? 'true':'false'; - $template = $info['template']; - $shell = $info['shell']; - $webGui = html_entity_decode($info['url']); - $support = html_entity_decode($info['Support']); - $project = html_entity_decode($info['Project']); - $menu[] = sprintf("addDockerContainerContext('%s','%s','%s',%s,%s,%s,%s,'%s','%s','%s','%s','%s');", addslashes($name), addslashes($ct['ImageId']), addslashes($template), $running, $paused, $updateStatus, $is_autostart, addslashes($webGui), $shell, $id, addslashes($support), addslashes($project)); - $shape = $running ? ($paused ? 'pause' : 'play') : 'square'; - $status = $running ? ($paused ? 'paused' : 'started') : 'stopped'; - $update = $updateStatus=='false' ? 'update' : ''; - $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); - echo "$image$name
$status
"; - } - $none = count($containers) ? "No running docker containers" : "No docker containers defined"; - echo ""; - } else { - echo "Docker service not running

"; + $user_prefs = $dockerManPaths['user-prefs']; + $DockerClient = new DockerClient(); + $DockerTemplates = new DockerTemplates(); + $containers = $DockerClient->getDockerContainers(); + $allInfo = $DockerTemplates->getAllInfo(); + if (file_exists($user_prefs)) { + $prefs = parse_ini_file($user_prefs); $sort = []; + foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs) ?? 999; + array_multisort($sort,SORT_NUMERIC,$containers); } + echo "
"; + foreach ($containers as $ct) { + $name = $ct['Name']; + $id = $ct['Id']; + $info = &$allInfo[$name]; + $running = $info['running'] ? 1:0; + $paused = $info['paused'] ? 1:0; + $is_autostart = $info['autostart'] ? 'true':'false'; + $updateStatus = $info['updated']=='true'||$info['updated']=='undef' ? 'true':'false'; + $template = $info['template']; + $shell = $info['shell']; + $webGui = html_entity_decode($info['url']); + $support = html_entity_decode($info['Support']); + $project = html_entity_decode($info['Project']); + $menu[] = sprintf("addDockerContainerContext('%s','%s','%s',%s,%s,%s,%s,'%s','%s','%s','%s','%s');", addslashes($name), addslashes($ct['ImageId']), addslashes($template), $running, $paused, $updateStatus, $is_autostart, addslashes($webGui), $shell, $id, addslashes($support), addslashes($project)); + $shape = $running ? ($paused ? 'pause' : 'play') : 'square'; + $status = $running ? ($paused ? 'paused' : 'started') : 'stopped'; + $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); + $update = $updateStatus=='false' ? 'blue-text' : ''; + $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + echo "$image$name
$status
"; + } + $none = count($containers) ? "No running docker containers" : "No docker containers defined"; + echo ""; echo "
"; - if ($_POST['vm']) { - $user_prefs = '/boot/config/plugins/dynamix.vm.manager/userprefs.cfg'; - $vms = $lv->get_domains(); - if (file_exists($user_prefs)) { - $prefs = parse_ini_file($user_prefs); $sort = []; - foreach ($vms as $vm) $sort[] = array_search($vm,$prefs) ?? 999; - array_multisort($sort,SORT_NUMERIC,$vms); - } else { - natcasesort($vms); - } - foreach ($vms as $vm) { - $res = $lv->get_domain_by_name($vm); - $uuid = libvirt_domain_get_uuid_string($res); - $dom = $lv->domain_get_info($res); - $id = $lv->domain_get_id($res); - $state = $lv->domain_state_translate($dom['state']); - $vncport = $lv->domain_get_vnc_port($res); - $vnc = ''; - if ($vncport > 0) { - $wsport = $lv->domain_get_ws_port($res); - $vnc = '/plugins/dynamix.vm.manager/vnc.html?autoconnect=true&host='.$_SERVER['HTTP_HOST'].'&port=&path=/wsproxy/'.$wsport.'/'; - } else { - $vncport = ($vncport < 0) ? "auto" : ""; - } - $template = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@name'); - if (empty($template)) $template = 'Custom'; - $log = (is_file("/var/log/libvirt/qemu/$vm.log") ? "libvirt/qemu/$vm.log" : ''); - $menu[] = sprintf("addVMContext('%s','%s','%s','%s','%s','%s');", addslashes($vm), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log)); - $icon = $lv->domain_get_icon_url($res); - switch ($state) { - case 'running': - $shape = 'play'; - $status = 'started'; - break; - case 'paused': - case 'pmsuspended': - $shape = 'pause'; - $status = 'paused'; - break; - default: - $shape = 'square'; - $status = 'stopped'; - break; - } - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); - echo "$image$vm
$status
"; - } - $none = count($vms) ? "No running virtual machines" : "No virtual machines defined"; - echo ""; + $user_prefs = '/boot/config/plugins/dynamix.vm.manager/userprefs.cfg'; + $vms = $lv->get_domains(); + if (file_exists($user_prefs)) { + $prefs = parse_ini_file($user_prefs); $sort = []; + foreach ($vms as $vm) $sort[] = array_search($vm,$prefs) ?? 999; + array_multisort($sort,SORT_NUMERIC,$vms); } else { - echo "VM service not running

"; + natcasesort($vms); } + echo "
"; + foreach ($vms as $vm) { + $res = $lv->get_domain_by_name($vm); + $uuid = libvirt_domain_get_uuid_string($res); + $dom = $lv->domain_get_info($res); + $id = $lv->domain_get_id($res); + $state = $lv->domain_state_translate($dom['state']); + $vncport = $lv->domain_get_vnc_port($res); + $vnc = ''; + if ($vncport > 0) { + $wsport = $lv->domain_get_ws_port($res); + $vnc = '/plugins/dynamix.vm.manager/vnc.html?autoconnect=true&host='.$_SERVER['HTTP_HOST'].'&port=&path=/wsproxy/'.$wsport.'/'; + } else { + $vncport = ($vncport < 0) ? "auto" : ""; + } + $template = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@name'); + if (empty($template)) $template = 'Custom'; + $log = (is_file("/var/log/libvirt/qemu/$vm.log") ? "libvirt/qemu/$vm.log" : ''); + $menu[] = sprintf("addVMContext('%s','%s','%s','%s','%s','%s');", addslashes($vm), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log)); + $icon = $lv->domain_get_icon_url($res); + switch ($state) { + case 'running': + $shape = 'play'; + $status = 'started'; + $color = 'green-text'; + break; + case 'paused': + case 'pmsuspended': + $shape = 'pause'; + $status = 'paused'; + $color = 'orange-text'; + break; + default: + $shape = 'square'; + $status = 'stopped'; + $color = 'red-text'; + break; + } + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + echo "$image$vm
$status
"; + } + $none = count($vms) ? "No running virtual machines" : "No virtual machines defined"; + echo ""; echo "