From 3548f0db6f0adc055b2b279708d7a59bcc1c66b4 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Tue, 14 Nov 2017 08:54:35 +0100 Subject: [PATCH 01/13] refactor(webapp): simplify isAdmin statement (#1388) --- app/components/createConfig/createConfigController.js | 2 +- app/components/createContainer/createContainerController.js | 4 ++-- app/components/createNetwork/createNetworkController.js | 2 +- app/components/createSecret/createSecretController.js | 2 +- app/components/createService/createServiceController.js | 4 ++-- app/components/createStack/createStackController.js | 2 +- app/components/createVolume/createVolumeController.js | 2 +- app/components/templates/templatesController.js | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/components/createConfig/createConfigController.js b/app/components/createConfig/createConfigController.js index 6d390f97f..071b38bdd 100644 --- a/app/components/createConfig/createConfigController.js +++ b/app/components/createConfig/createConfigController.js @@ -60,7 +60,7 @@ function ($scope, $state, $document, Notifications, ConfigService, Authenticatio $scope.create = function () { var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; diff --git a/app/components/createContainer/createContainerController.js b/app/components/createContainer/createContainerController.js index 65c9fe817..c62817aac 100644 --- a/app/components/createContainer/createContainerController.js +++ b/app/components/createContainer/createContainerController.js @@ -550,7 +550,7 @@ function ($q, $scope, $state, $timeout, $transition$, $filter, Container, Contai }); var userDetails = Authentication.getUserDetails(); - $scope.isAdmin = userDetails.role === 1 ? true : false; + $scope.isAdmin = userDetails.role === 1; } function validateForm(accessControlData, isAdmin) { @@ -574,7 +574,7 @@ function ($q, $scope, $state, $timeout, $transition$, $filter, Container, Contai var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; diff --git a/app/components/createNetwork/createNetworkController.js b/app/components/createNetwork/createNetworkController.js index a973e4632..eedb272ca 100644 --- a/app/components/createNetwork/createNetworkController.js +++ b/app/components/createNetwork/createNetworkController.js @@ -93,7 +93,7 @@ function ($q, $scope, $state, PluginService, Notifications, NetworkService, Labe var networkConfiguration = prepareConfiguration(); var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; diff --git a/app/components/createSecret/createSecretController.js b/app/components/createSecret/createSecretController.js index de81a7bc3..18c9d3903 100644 --- a/app/components/createSecret/createSecretController.js +++ b/app/components/createSecret/createSecretController.js @@ -59,7 +59,7 @@ function ($scope, $state, Notifications, SecretService, LabelHelper, Authenticat var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; diff --git a/app/components/createService/createServiceController.js b/app/components/createService/createServiceController.js index 24f8a7e0e..7f7ef4498 100644 --- a/app/components/createService/createServiceController.js +++ b/app/components/createService/createServiceController.js @@ -387,7 +387,7 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; @@ -443,7 +443,7 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C var settings = data.settings; $scope.allowBindMounts = settings.AllowBindMountsForRegularUsers; var userDetails = Authentication.getUserDetails(); - $scope.isAdmin = userDetails.role === 1 ? true : false; + $scope.isAdmin = userDetails.role === 1; }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to initialize view'); diff --git a/app/components/createStack/createStackController.js b/app/components/createStack/createStackController.js index 04f487490..ba2ccf5ba 100644 --- a/app/components/createStack/createStackController.js +++ b/app/components/createStack/createStackController.js @@ -67,7 +67,7 @@ function ($scope, $state, $document, StackService, CodeMirrorService, Authentica var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; var userId = userDetails.ID; if (!validateForm(accessControlData, isAdmin)) { diff --git a/app/components/createVolume/createVolumeController.js b/app/components/createVolume/createVolumeController.js index bffdf874e..491276484 100644 --- a/app/components/createVolume/createVolumeController.js +++ b/app/components/createVolume/createVolumeController.js @@ -43,7 +43,7 @@ function ($q, $scope, $state, VolumeService, PluginService, ResourceControlServi var volumeConfiguration = VolumeService.createVolumeConfiguration(name, driver, driverOptions); var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; diff --git a/app/components/templates/templatesController.js b/app/components/templates/templatesController.js index c6610886e..0b03d76c5 100644 --- a/app/components/templates/templatesController.js +++ b/app/components/templates/templatesController.js @@ -122,7 +122,7 @@ function ($scope, $q, $state, $transition$, $anchorScroll, $filter, ContainerSer var userDetails = Authentication.getUserDetails(); var userId = userDetails.ID; var accessControlData = $scope.formValues.AccessControlData; - var isAdmin = userDetails.role === 1 ? true : false; + var isAdmin = userDetails.role === 1; if (!validateForm(accessControlData, isAdmin)) { return; @@ -241,7 +241,7 @@ function ($scope, $q, $state, $transition$, $anchorScroll, $filter, ContainerSer $scope.templatesKey = templatesKey; var userDetails = Authentication.getUserDetails(); - $scope.isAdmin = userDetails.role === 1 ? true : false; + $scope.isAdmin = userDetails.role === 1; var endpointMode = $scope.applicationState.endpoint.mode; var apiVersion = $scope.applicationState.endpoint.apiVersion; From a2d41e5316a1c9069c9f2fd6cd2decac404fbc67 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 20 Nov 2017 10:09:11 +0100 Subject: [PATCH 02/13] feat(build-system): check that files listed in vendor.yml exist (#1398) * chore(build-system) check that files listed in vendor.yml exist (#1410) * fix(build-system) Chart.min.js duplicated in vendor.yml (#1410) --- gruntfile.js | 32 +++++++++++++++++++++++--------- vendor.yml | 1 - 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/gruntfile.js b/gruntfile.js index d7ae868d2..100f9b818 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -55,6 +55,29 @@ module.exports = function (grunt) { grunt.registerTask('run-dev', ['build', 'shell:run', 'watch:build']); grunt.registerTask('clear', ['clean:app']); + // Load content of `vendor.yml` to src.jsVendor, src.cssVendor and src.angularVendor + grunt.registerTask('vendor', 'vendor:', function(min) { + // Argument `min` defaults to 'minified' + var minification = (min === '') ? 'minified' : min; + var vendorFile = grunt.file.readYAML('vendor.yml'); + for (var filelist in vendorFile) { + if (vendorFile.hasOwnProperty(filelist)) { + var list = vendorFile[filelist][minification]; + // Check if any of the files is missing + for (var itemIndex in list) { + if (list.hasOwnProperty(itemIndex)) { + var item = list[itemIndex]; + if (!grunt.file.exists(item)) { + grunt.fail.warn('Dependency file ' + item + ' not found.'); + } + } + } + // If none is missing, save the list + grunt.config('src.' + filelist + 'Vendor', list); + } + } + }); + // Project configuration. grunt.initConfig({ distdir: 'dist/public', @@ -232,13 +255,4 @@ module.exports = function (grunt) { } }); - grunt.registerTask('vendor', 'vendor:', function(min) { - // The content of `vendor.yml` is loaded to src.jsVendor, src.cssVendor and src.angularVendor - // Argument `min` selects between the 'regular' or 'minified' sets - var m = ( min === '' ) ? 'minified' : min; - var v = grunt.file.readYAML('vendor.yml'); - for (type in v) { if (v.hasOwnProperty(type)) { - grunt.config('src.'+type+'Vendor',v[type][m]); - }} - }); }; diff --git a/vendor.yml b/vendor.yml index 7602aaadb..005939a74 100644 --- a/vendor.yml +++ b/vendor.yml @@ -21,7 +21,6 @@ js: - bower_components/jquery/dist/jquery.min.js - bower_components/bootstrap/dist/js/bootstrap.min.js - bower_components/bootbox.js/bootbox.js - - bower_components/Chart.js/Chart.min.js - bower_components/filesize/lib/filesize.min.js - bower_components/lodash/dist/lodash.min.js - bower_components/moment/min/moment.min.js From 6b9f3dad7a032f2c54d86d2acbd6741ac3e0822b Mon Sep 17 00:00:00 2001 From: Yassir Hannoun Date: Mon, 20 Nov 2017 14:34:14 +0100 Subject: [PATCH 03/13] feat(UX): add an image autocomplete feature for services and containers (#1389) --- .../createContainer/createcontainer.html | 4 +- .../createService/createservice.html | 4 +- app/components/service/service.html | 3 +- app/components/service/serviceController.js | 9 ++-- .../imageRegistry/por-image-registry.js | 3 +- .../imageRegistry/porImageRegistry.html | 8 ++-- .../porImageRegistryController.js | 48 ++++++++++--------- app/services/docker/imageService.js | 9 ++++ 8 files changed, 53 insertions(+), 35 deletions(-) diff --git a/app/components/createContainer/createcontainer.html b/app/components/createContainer/createcontainer.html index 9f6edae53..8ac6a7c84 100644 --- a/app/components/createContainer/createcontainer.html +++ b/app/components/createContainer/createcontainer.html @@ -9,7 +9,7 @@
-
+
@@ -28,7 +28,7 @@
- +
diff --git a/app/components/createService/createservice.html b/app/components/createService/createservice.html index e89dd5a07..3a159fda4 100644 --- a/app/components/createService/createservice.html +++ b/app/components/createService/createservice.html @@ -9,7 +9,7 @@
- +
@@ -23,7 +23,7 @@
- +
diff --git a/app/components/service/service.html b/app/components/service/service.html index 9cf5c4c00..b5d1a8d90 100644 --- a/app/components/service/service.html +++ b/app/components/service/service.html @@ -68,7 +68,8 @@ Image - + diff --git a/app/components/service/serviceController.js b/app/components/service/serviceController.js index cca9cbb64..17e1bbb9f 100644 --- a/app/components/service/serviceController.js +++ b/app/components/service/serviceController.js @@ -1,12 +1,13 @@ angular.module('service', []) -.controller('ServiceController', ['$q', '$scope', '$transition$', '$state', '$location', '$timeout', '$anchorScroll', 'ServiceService', 'ConfigService', 'ConfigHelper', 'SecretService', 'SecretHelper', 'Service', 'ServiceHelper', 'LabelHelper', 'TaskService', 'NodeService', 'Notifications', 'Pagination', 'ModalService', -function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, ServiceService, ConfigService, ConfigHelper, SecretService, SecretHelper, Service, ServiceHelper, LabelHelper, TaskService, NodeService, Notifications, Pagination, ModalService) { +.controller('ServiceController', ['$q', '$scope', '$transition$', '$state', '$location', '$timeout', '$anchorScroll', 'ServiceService', 'ConfigService', 'ConfigHelper', 'SecretService', 'ImageService', 'SecretHelper', 'Service', 'ServiceHelper', 'LabelHelper', 'TaskService', 'NodeService', 'Notifications', 'Pagination', 'ModalService', +function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, ServiceService, ConfigService, ConfigHelper, SecretService, ImageService, SecretHelper, Service, ServiceHelper, LabelHelper, TaskService, NodeService, Notifications, Pagination, ModalService) { $scope.state = {}; $scope.state.pagination_count = Pagination.getPaginationCount('service_tasks'); $scope.tasks = []; $scope.sortType = 'Updated'; $scope.sortReverse = true; + $scope.availableImages = []; $scope.lastVersion = 0; @@ -333,7 +334,8 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, tasks: TaskService.tasks({ service: [service.Name] }), nodes: NodeService.nodes(), secrets: apiVersion >= 1.25 ? SecretService.secrets() : [], - configs: apiVersion >= 1.30 ? ConfigService.configs() : [] + configs: apiVersion >= 1.30 ? ConfigService.configs() : [], + availableImages: ImageService.images() }); }) .then(function success(data) { @@ -341,6 +343,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, $scope.nodes = data.nodes; $scope.configs = data.configs; $scope.secrets = data.secrets; + $scope.availableImages = ImageService.getUniqueTagListFromImages(data.availableImages); // Set max cpu value var maxCpus = 0; diff --git a/app/directives/imageRegistry/por-image-registry.js b/app/directives/imageRegistry/por-image-registry.js index f8d004967..ccc65cdc9 100644 --- a/app/directives/imageRegistry/por-image-registry.js +++ b/app/directives/imageRegistry/por-image-registry.js @@ -3,6 +3,7 @@ angular.module('portainer').component('porImageRegistry', { controller: 'porImageRegistryController', bindings: { 'image': '=', - 'registry': '=' + 'registry': '=', + 'autoComplete': '<' } }); diff --git a/app/directives/imageRegistry/porImageRegistry.html b/app/directives/imageRegistry/porImageRegistry.html index 3f1dbcd43..7153ad1ae 100644 --- a/app/directives/imageRegistry/porImageRegistry.html +++ b/app/directives/imageRegistry/porImageRegistry.html @@ -1,12 +1,14 @@
- +
- +
-
+
\ No newline at end of file diff --git a/app/directives/imageRegistry/porImageRegistryController.js b/app/directives/imageRegistry/porImageRegistryController.js index 496209be7..b037bcb41 100644 --- a/app/directives/imageRegistry/porImageRegistryController.js +++ b/app/directives/imageRegistry/porImageRegistryController.js @@ -1,27 +1,29 @@ angular.module('portainer') -.controller('porImageRegistryController', ['$q', 'RegistryService', 'DockerHubService', 'Notifications', -function ($q, RegistryService, DockerHubService, Notifications) { - var ctrl = this; + .controller('porImageRegistryController', ['$q', 'RegistryService', 'DockerHubService', 'ImageService', 'Notifications', + function ($q, RegistryService, DockerHubService, ImageService, Notifications) { + var ctrl = this; - function initComponent() { - $q.all({ - registries: RegistryService.registries(), - dockerhub: DockerHubService.dockerhub() - }) - .then(function success(data) { - var dockerhub = data.dockerhub; - var registries = data.registries; - ctrl.availableRegistries = [dockerhub].concat(registries); - if (!ctrl.registry.Id) { - ctrl.registry = dockerhub; - } else { - ctrl.registry = _.find(ctrl.availableRegistries, { 'Id': ctrl.registry.Id }); + function initComponent() { + $q.all({ + registries: RegistryService.registries(), + dockerhub: DockerHubService.dockerhub(), + availableImages: ctrl.autoComplete ? ImageService.images() : [] + }) + .then(function success(data) { + var dockerhub = data.dockerhub; + var registries = data.registries; + ctrl.availableImages = ImageService.getUniqueTagListFromImages(data.availableImages); + ctrl.availableRegistries = [dockerhub].concat(registries); + if (!ctrl.registry.Id) { + ctrl.registry = dockerhub; + } else { + ctrl.registry = _.find(ctrl.availableRegistries, { 'Id': ctrl.registry.Id }); + } + }) + .catch(function error(err) { + Notifications.error('Failure', err, 'Unable to retrieve registries'); + }); } - }) - .catch(function error(err) { - Notifications.error('Failure', err, 'Unable to retrieve registries'); - }); - } - initComponent(); -}]); + initComponent(); + }]); diff --git a/app/services/docker/imageService.js b/app/services/docker/imageService.js index 181de81e3..4ca499fa9 100644 --- a/app/services/docker/imageService.js +++ b/app/services/docker/imageService.js @@ -152,5 +152,14 @@ angular.module('portainer.services') return deferred.promise; }; + service.getUniqueTagListFromImages = function (availableImages) { + return _.flatten(_.map(availableImages, function (image) { + _.remove(image.RepoTags, function (item) { + return item.indexOf('') !== -1; + }); + return image.RepoTags ? _.uniqWith(image.RepoTags, _.isEqual) : []; + })); + }; + return service; }]); From 3ee2e20f8e1e00f4ab955a96a8c6f0774142c5eb Mon Sep 17 00:00:00 2001 From: Thomas Krzero Date: Mon, 20 Nov 2017 14:44:23 +0100 Subject: [PATCH 04/13] feat(services): add the ability to specify a target for secrets (#1365) --- .../createService/createServiceController.js | 5 ++++- .../createService/includes/secret.html | 20 ++++++++++++++----- app/components/service/includes/secrets.html | 12 +++++++++-- app/components/service/serviceController.js | 17 ++++++++++++---- 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/app/components/createService/createServiceController.js b/app/components/createService/createServiceController.js index 7f7ef4498..324e8c481 100644 --- a/app/components/createService/createServiceController.js +++ b/app/components/createService/createServiceController.js @@ -82,7 +82,7 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C }; $scope.addSecret = function() { - $scope.formValues.Secrets.push({}); + $scope.formValues.Secrets.push({ overrideTarget: false }); }; $scope.removeSecret = function(index) { @@ -275,6 +275,9 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C if (secret.model) { var s = SecretHelper.secretConfig(secret.model); s.File.Name = s.SecretName; + if (secret.overrideTarget && secret.target && secret.target !== '') { + s.File.Name = secret.target; + } secrets.push(s); } }); diff --git a/app/components/createService/includes/secret.html b/app/components/createService/includes/secret.html index fdf95a01d..aca1f5264 100644 --- a/app/components/createService/includes/secret.html +++ b/app/components/createService/includes/secret.html @@ -1,7 +1,7 @@
- Secrets will be available under /run/secrets/$SECRET_NAME in containers. + By default, secrets will be available under /run/secrets/$SECRET_NAME in containers.
@@ -12,16 +12,26 @@
-
+
secret
- +
+ target + +
+
+
+ + +
+ +
diff --git a/app/components/service/includes/secrets.html b/app/components/service/includes/secrets.html index 4a2d16572..2383345b4 100644 --- a/app/components/service/includes/secrets.html +++ b/app/components/service/includes/secrets.html @@ -5,10 +5,18 @@ diff --git a/app/components/service/serviceController.js b/app/components/service/serviceController.js index 17e1bbb9f..7a90b15ac 100644 --- a/app/components/service/serviceController.js +++ b/app/components/service/serviceController.js @@ -75,10 +75,16 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, $scope.updateConfig = function updateConfig(service) { updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs); }; - $scope.addSecret = function addSecret(service, secret) { - if (secret && service.ServiceSecrets.filter(function(serviceSecret) { return serviceSecret.Id === secret.Id;}).length === 0) { - service.ServiceSecrets.push({ Id: secret.Id, Name: secret.Name, FileName: secret.Name, Uid: '0', Gid: '0', Mode: 444 }); - updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets); + $scope.addSecret = function addSecret(service, newSecret) { + if (newSecret.secret) { + var filename = newSecret.secret.Name; + if (newSecret.override) { + filename = newSecret.target; + } + if (service.ServiceSecrets.filter(function(serviceSecret) { return serviceSecret.Id === newSecret.secret.Id && serviceSecret.FileName === filename;}).length === 0) { + service.ServiceSecrets.push({ Id: newSecret.secret.Id, Name: newSecret.secret.Name, FileName: filename, Uid: '0', Gid: '0', Mode: 444 }); + updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets); + } } }; $scope.removeSecret = function removeSecret(service, index) { @@ -358,6 +364,9 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, $scope.state.sliderMaxCpu = 32; } + // Default values + $scope.state.addSecret = {override: false}; + $timeout(function() { $anchorScroll(); }); From 8a101f67f67697f4f4cb5f2f3b3f372614de0481 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 20 Nov 2017 14:48:42 +0100 Subject: [PATCH 05/13] style(container-details): change the grouping of buttons * style(containers) make add container button responsive * style(container) make action buttons responsive, group as in containers --- app/components/container/container.html | 20 +++++++++++--------- app/components/containers/containers.html | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/components/container/container.html b/app/components/container/container.html index 15d960dda..f3f19fa93 100644 --- a/app/components/container/container.html +++ b/app/components/container/container.html @@ -12,15 +12,17 @@
- - - - - - - - - + + + + + + + +
+
+ +
diff --git a/app/components/containers/containers.html b/app/components/containers/containers.html index 2e5cb8491..5c6179309 100644 --- a/app/components/containers/containers.html +++ b/app/components/containers/containers.html @@ -32,7 +32,7 @@
- Add container + Add container
From 547511c8aa694544514b91781fa9ba39b1a2e0d8 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 20 Nov 2017 17:46:01 +0100 Subject: [PATCH 06/13] feat(UX): change background color for selected items (#1414) --- app/components/configs/configs.html | 2 +- app/components/containers/containers.html | 2 +- app/components/endpoints/endpoints.html | 2 +- app/components/images/images.html | 2 +- app/components/networks/networks.html | 2 +- app/components/registries/registries.html | 2 +- app/components/services/services.html | 2 +- app/components/stacks/stacks.html | 2 +- app/components/teams/teams.html | 2 +- app/components/users/users.html | 2 +- app/components/volumes/volumes.html | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/components/configs/configs.html b/app/components/configs/configs.html index 9c5fb4624..07093c63d 100644 --- a/app/components/configs/configs.html +++ b/app/components/configs/configs.html @@ -51,7 +51,7 @@ - + {{ config.Name }} {{ config.CreatedAt | getisodate }} diff --git a/app/components/containers/containers.html b/app/components/containers/containers.html index 5c6179309..d8bfcd681 100644 --- a/app/components/containers/containers.html +++ b/app/components/containers/containers.html @@ -109,7 +109,7 @@ - + {{ container.Status }} diff --git a/app/components/endpoints/endpoints.html b/app/components/endpoints/endpoints.html index 5f9f0a183..921a00397 100644 --- a/app/components/endpoints/endpoints.html +++ b/app/components/endpoints/endpoints.html @@ -128,7 +128,7 @@ - + {{ endpoint.Name }} {{ endpoint.URL | stripprotocol }} diff --git a/app/components/images/images.html b/app/components/images/images.html index acafa7ae0..793da3767 100644 --- a/app/components/images/images.html +++ b/app/components/images/images.html @@ -122,7 +122,7 @@ - + {{ image.Id|truncate:20}} diff --git a/app/components/networks/networks.html b/app/components/networks/networks.html index ce2f9ce35..0c30c2d4b 100644 --- a/app/components/networks/networks.html +++ b/app/components/networks/networks.html @@ -98,7 +98,7 @@ - + {{ network.Name | truncate:40 }} {{ network.StackName ? network.StackName : '-' }} diff --git a/app/components/registries/registries.html b/app/components/registries/registries.html index e350b83a3..caa3935db 100644 --- a/app/components/registries/registries.html +++ b/app/components/registries/registries.html @@ -118,7 +118,7 @@ - + {{ registry.Name }} diff --git a/app/components/services/services.html b/app/components/services/services.html index 5d6357878..ce710be8a 100644 --- a/app/components/services/services.html +++ b/app/components/services/services.html @@ -87,7 +87,7 @@ - + {{ service.Name }} {{ service.StackName ? service.StackName : '-' }} diff --git a/app/components/stacks/stacks.html b/app/components/stacks/stacks.html index 4e9a8c1c6..503d4e6cd 100644 --- a/app/components/stacks/stacks.html +++ b/app/components/stacks/stacks.html @@ -84,7 +84,7 @@ - + diff --git a/app/components/teams/teams.html b/app/components/teams/teams.html index 3b9c47037..3d1fb16d1 100644 --- a/app/components/teams/teams.html +++ b/app/components/teams/teams.html @@ -106,7 +106,7 @@ - + {{ team.Name }} diff --git a/app/components/users/users.html b/app/components/users/users.html index c11f56d30..521dab42e 100644 --- a/app/components/users/users.html +++ b/app/components/users/users.html @@ -168,7 +168,7 @@ - + {{ user.Username }} diff --git a/app/components/volumes/volumes.html b/app/components/volumes/volumes.html index eaa98378f..845904fb4 100644 --- a/app/components/volumes/volumes.html +++ b/app/components/volumes/volumes.html @@ -87,7 +87,7 @@ - + {{ volume.Id|truncate:25 }} From 4ab580923f4f636a5aff935230abf35abc1b5a5c Mon Sep 17 00:00:00 2001 From: Anthony Lapenna Date: Wed, 22 Nov 2017 22:16:53 +0100 Subject: [PATCH 07/13] fix(templates): fix an issue preventing linuxserver.io templates to be displayed (#1426) --- app/components/templates/templates.html | 8 ++++---- app/components/templates/templatesController.js | 3 ++- app/models/api/templateLinuxServer.js | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/components/templates/templates.html b/app/components/templates/templates.html index 633e9cf92..92664fad0 100644 --- a/app/components/templates/templates.html +++ b/app/components/templates/templates.html @@ -356,8 +356,8 @@
- -