feat(app): push pull template edit

pull/3393/head
xAt0mZ 2019-11-22 02:25:25 +01:00
parent 213592e97c
commit 5a104c43b8
3 changed files with 39 additions and 21 deletions

View File

@ -81,25 +81,31 @@ function RegistryServiceFactory($q, $async, Registries, DockerHubService, ImageH
return $q.all(promises);
};
service.retrievePorRegistryModelFromRepositoryWithRegistries = retrievePorRegistryModelFromRepositoryWithRegistries;
function retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries) {
const model = new PorImageRegistryModel();
const registry = _.find(registries, (reg) => _.includes(repository, reg.URL));
if (registry) {
const lastIndex = repository.lastIndexOf(registry.URL) + registry.URL.length;
const image = repository.substring(lastIndex + 1);
model.Registry = registry;
model.Image = image;
} else {
model.UseRegistry = false;
model.Image = repository;
}
return model;
}
async function retrievePorRegistryModelFromRepositoryAsync(repository) {
try {
const model = new PorImageRegistryModel();
const [registries, dockerhub] = await Promise.all([
service.registries(),
DockerHubService.dockerhub()
]);
registries.concat([dockerhub]);
const registry = _.find(registries, (reg) => _.includes(repository, reg.URL));
if (registry) {
const lastIndex = repository.lastIndexOf(registry.URL) + registry.URL.length;
const image = repository.substring(lastIndex + 1);
model.Registry = registry;
model.Image = image;
} else {
model.UseRegistry = false;
model.Image = repository;
}
return model;
return retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries);
} catch (err) {
throw { msg: 'Unable to retrieve the registry associated to the repository', err: err }
}

View File

@ -5,18 +5,27 @@ import {
} from '../../models/template';
angular.module('portainer.app')
.factory('TemplateService', ['$q', 'Templates', 'TemplateHelper', 'ImageHelper', 'ContainerHelper',
function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, ContainerHelper) {
.factory('TemplateService', ['$q', 'Templates', 'TemplateHelper', 'RegistryService', 'DockerHubService', 'ImageHelper', 'ContainerHelper',
function TemplateServiceFactory($q, Templates, TemplateHelper, RegistryService, DockerHubService, ImageHelper, ContainerHelper) {
'use strict';
var service = {};
service.templates = function() {
var deferred = $q.defer();
Templates.query().$promise
$q.all({
templates: Templates.query().$promise,
registries: RegistryService.registries(),
dockerhub: DockerHubService.dockerhub()
})
.then(function success(data) {
var templates = data.map(function (item) {
return new TemplateViewModel(item);
data.registries.concat([data.dockerhub]);
const templates = data.templates.map(function (item) {
const res = new TemplateViewModel(item);
const registry = RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(res.RegistryModel.Registry, data.registries);
registry.Image = res.RegistryModel.Image;
res.RegistryModel = registry;
return res;
});
deferred.resolve(templates);
})
@ -29,10 +38,15 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont
service.template = function(id) {
var deferred = $q.defer();
let template;
Templates.get({ id: id }).$promise
.then(function success(data) {
var template = new TemplateViewModel(data);
template = new TemplateViewModel(data);
return RegistryService.retrievePorRegistryModelFromRepository(template.RegistryModel.Registry);
})
.then((registry) => {
registry.Image = template.RegistryModel.Image;
template.RegistryModel = registry;
deferred.resolve(template);
})
.catch(function error(err) {
@ -52,7 +66,6 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont
return Templates.create(payload).$promise;
};
// TODO CHANGE
service.update = function(model) {
var payload = new TemplateUpdateRequest(model);
return Templates.update(payload).$promise;

View File

@ -8,7 +8,6 @@ function ($q, $scope, $state, $transition$, TemplateService, TemplateHelper, Net
actionInProgress: false
};
// TODO CHANGE
$scope.update = function() {
var model = $scope.template;