From 08afe4d0842d9f36f74f01a9953c0d1dbcb749b4 Mon Sep 17 00:00:00 2001 From: Chaim Lando Date: Wed, 5 Sep 2018 18:08:06 +0300 Subject: [PATCH] feat(engine-details): replace old node view with a new component --- app/docker/__module.js | 3 +- .../node-details-view-controller.js | 66 +++++++++++++++++++ .../nodes/node-details/node-details-view.html | 7 ++ .../nodes/node-details/node-details-view.js | 4 ++ 4 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 app/docker/views/nodes/node-details/node-details-view-controller.js create mode 100644 app/docker/views/nodes/node-details/node-details-view.html create mode 100644 app/docker/views/nodes/node-details/node-details-view.js diff --git a/app/docker/__module.js b/app/docker/__module.js index e3f1cd3b6..23ce18433 100644 --- a/app/docker/__module.js +++ b/app/docker/__module.js @@ -238,8 +238,7 @@ angular.module('portainer.docker', ['portainer.app']) url: '/:id', views: { 'content@': { - templateUrl: 'app/docker/views/nodes/edit/node.html', - controller: 'NodeController' + component: 'nodeDetailsView' } } }; diff --git a/app/docker/views/nodes/node-details/node-details-view-controller.js b/app/docker/views/nodes/node-details/node-details-view-controller.js new file mode 100644 index 000000000..b34cc5315 --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view-controller.js @@ -0,0 +1,66 @@ +angular.module('portainer.docker').controller('NodeDetailsViewController', [ + '$stateParams', + 'NodeService', + function NodeDetailsViewController($stateParams, NodeService) { + var ctrl = this; + + ctrl.$onInit = initView; + + function initView() { + NodeService.node($stateParams.id).then(function(node) { + console.log(node) + ctrl.hostDetails = buildHostDetails(node); + ctrl.engineDetails = buildEngineDetails(node); + ctrl.nodeDetails = buildNodeDetails(node); + }); + } + + function buildHostDetails(node) { + return { + os: { + arch: node.PlatformArchitecture, + type: node.PlatformOS + // name: node.OperatingSystem TODO + }, + name: node.Hostname, + // kernelVersion: node.KernelVersion, + totalCPU: node.CPUs / 1e9, + totalMemory: node.Memory + }; + } + + function buildEngineDetails(node) { + return { + releaseVersion: node.EngineVersion, + // apiVersion: versionDetails.ApiVersion, TODO + // rootDirectory: node.DockerRootDir, TODO + // storageDriver: node.Driver, + // loggingDriver: node.LoggingDriver, + volumePlugins: getPlugins(node.Plugins, 'Volume'), + networkPlugins: getPlugins(node.Plugins, 'Network') + }; + } + + function buildNodeDetails(node) { + return { + name: node.Name, + role: node.Role, + managerAddress: node.ManagerAddr, + availability: node.Availability, + status: node.Status, + engineLabels: node.EngineLabels, + nodeLabels: node.Labels + }; + } + + function getPlugins(pluginsList, type) { + return pluginsList + .filter(function(plugin) { + return plugin.Type === type; + }) + .map(function(plugin) { + return plugin.Name; + }); + } + } +]); diff --git a/app/docker/views/nodes/node-details/node-details-view.html b/app/docker/views/nodes/node-details/node-details-view.html new file mode 100644 index 000000000..ccada1c29 --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/app/docker/views/nodes/node-details/node-details-view.js b/app/docker/views/nodes/node-details/node-details-view.js new file mode 100644 index 000000000..5b1c76e2b --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view.js @@ -0,0 +1,4 @@ +angular.module('portainer.docker').component('nodeDetailsView', { + templateUrl: 'app/docker/views/nodes/node-details/node-details-view.html', + controller: 'NodeDetailsViewController' +});