From 8bc44e77e1918a0d684a3beec76b987f654cce6c Mon Sep 17 00:00:00 2001 From: bergware Date: Fri, 9 Mar 2018 13:05:39 +0100 Subject: [PATCH] Docker list: do all updating inline + new button "Update all Containers" --- .../DockerContainers.page | 29 +++++++---------- .../include/DockerContainers.php | 2 +- .../include/DockerUpdate.php | 31 +++++++++++++++++++ .../javascript/docker.js | 23 +++++++------- 4 files changed, 56 insertions(+), 29 deletions(-) create mode 100644 plugins/dynamix.docker.manager/include/DockerUpdate.php diff --git a/plugins/dynamix.docker.manager/DockerContainers.page b/plugins/dynamix.docker.manager/DockerContainers.page index dcac595fe..50b1a1700 100644 --- a/plugins/dynamix.docker.manager/DockerContainers.page +++ b/plugins/dynamix.docker.manager/DockerContainers.page @@ -19,7 +19,6 @@ Markdown="false" ?> - - -
- - -
-
- - - -
@@ -54,10 +43,11 @@ th.three{width:3%} ApplicationVersionNetworkPort Mappings (App to Host)Volume Mappings (App to Host)AutostartLog Please wait... retrieving container information - - - - + + + + + @@ -82,7 +72,7 @@ function listview() { $('.docker_readmore').readmore('destroy'); } } -function loadlist() { +function loadlist(update) { $.get('/plugins/dynamix.docker.manager/include/DockerContainers.php',function(d) { var data = d.split(/\0/); $('#docker_list').html(data[0]); @@ -103,6 +93,11 @@ function loadlist() { listview(); context.init({preventDoubleContext:false}); $('input[type=button]').prop('disabled',false); + if (update) { + $('input#checkAll').hide(); $('input#updateAll').show(); + } else { + $('input#checkAll').show(); $('input#updateAll').hide(); + } }); } $(function() { @@ -113,6 +108,6 @@ $(function() { $.cookie('docker_listview_mode',$('.advancedview').is(':checked')?'advanced':'basic',{expires:3650}); listview(); }); - loadlist(); + $.post('/plugins/dynamix.docker.manager/include/DockerUpdate.php',{},function(u){loadlist(u);}); }); diff --git a/plugins/dynamix.docker.manager/include/DockerContainers.php b/plugins/dynamix.docker.manager/include/DockerContainers.php index 105311a5d..75f7f4f30 100644 --- a/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -48,7 +48,7 @@ foreach ($all_containers as $ct) { $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');",addslashes($name),addslashes($imageID),addslashes($template),$running,$updateStatus,$is_autostart,addslashes($webGui),$id,addslashes($support),addslashes($project)); - $docker[] = "docker.push({id:'$id',state:'$running'});"; + $docker[] = "docker.push({name:'$name',id:'$id',state:'$running',update:'$updateStatus'});"; $shape = $ct['Running'] ? 'play':'square'; $status = $ct['Running'] ? 'started':'stopped'; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; diff --git a/plugins/dynamix.docker.manager/include/DockerUpdate.php b/plugins/dynamix.docker.manager/include/DockerUpdate.php new file mode 100644 index 000000000..100f89350 --- /dev/null +++ b/plugins/dynamix.docker.manager/include/DockerUpdate.php @@ -0,0 +1,31 @@ + +downloadTemplates(); + $DockerTemplates->getAllInfo(true); +} +$all_containers = $DockerClient->getDockerContainers(); +$all_info = $DockerTemplates->getAllInfo(); +foreach ($all_containers as $ct) { + $info = &$all_info[$ct['Name']]; + if ($info['updated']=='false'&&$info['updated']!='undef') {echo 'true'; break;} +} +?> diff --git a/plugins/dynamix.docker.manager/javascript/docker.js b/plugins/dynamix.docker.manager/javascript/docker.js index 6a5c2c67d..5229f91c8 100644 --- a/plugins/dynamix.docker.manager/javascript/docker.js +++ b/plugins/dynamix.docker.manager/javascript/docker.js @@ -42,9 +42,9 @@ function addDockerImageContext(image, imageTag) { function execUpContainer(container) { var title = "Updating the container: "+container; var address = "/plugins/dynamix.docker.manager/include/CreateDocker.php?updateContainer=true&ct[]="+encodeURIComponent(container); - popupWithIframe(title, address, true); + popupWithIframe(title, address, true, 'loadlist'); } -function popupWithIframe(title, cmd, reload) { +function popupWithIframe(title, cmd, reload, func) { pauseEvents(); $("#iframe-popup").html(''); $("#iframe-popup").dialog({ @@ -62,7 +62,7 @@ function popupWithIframe(title, cmd, reload) { }, close:function(event, ui) { if (reload && !$("#myIframe").contents().find("#canvas").length) { - location = window.location.href; + if (func) setTimeout(func+'()',0); else location = window.location.href; } else { resumeEvents(); } @@ -154,16 +154,17 @@ function stopAll() { for (var i=0,ct; ct=docker[i]; i++) if (ct.state=='true') $('#'+ct.id).find('i').addClass('fa-spin'); $.post('/plugins/dynamix.docker.manager/include/ContainerManager.php',{action:'stop'}, function(){loadlist();}); } -function reloadUpdate() { +function checkAll() { + $('input[type=button]').prop('disabled',true); $(".updatecolumn").html(" checking..."); - $("#cmdStartStop").val("/plugins/dynamix.docker.manager/scripts/dockerupdate.php"); - $("#cmdArg1").remove(); - $("#cmdArg2").remove(); - $("#formStartStop").submit(); + $.post('/plugins/dynamix.docker.manager/include/DockerUpdate.php',{check:true},function(u){loadlist(u);}); } -function autoStart(container, event) { - document.getElementsByName("container")[0].value = container; - $("#formStartStop").submit(); +function updateAll() { + $('input[type=button]').prop('disabled',true); + var list = ''; + for (var i=0,ct; ct=docker[i]; i++) if (ct.update=='false') list += '&ct[]='+ct.name; + var address = "/plugins/dynamix.docker.manager/include/CreateDocker.php?updateContainer=true"+list; + popupWithIframe('Updating all Containers', address, true, 'loadlist'); } function containerLogs(container, id) { var height = 600;