mirror of
https://github.com/portainer/portainer.git
synced 2025-08-02 20:35:25 +02:00
fix(app): wrapper for UI refresh trigger with async/await (#2945)
* fix(app): wrapper for UI refresh trigger with async/await * fix(async): $async wrapper now accepts functions with params * fix(async): $async should return a promise to be chained with ES5 .then() style * fix(async): $async with multiple params was not working * refactor(app): wrap all async functions with $async * docs(async): add link to async wrapper documentation
This commit is contained in:
parent
09cf55a7dc
commit
71b1da8d32
9 changed files with 167 additions and 92 deletions
|
@ -3,12 +3,14 @@ import angular from 'angular';
|
|||
class ConfigsController {
|
||||
|
||||
/* @ngInject */
|
||||
constructor($state, ConfigService, Notifications) {
|
||||
constructor($state, ConfigService, Notifications, $async) {
|
||||
this.$state = $state;
|
||||
this.ConfigService = ConfigService;
|
||||
this.Notifications = Notifications;
|
||||
this.$async = $async;
|
||||
|
||||
this.removeAction = this.removeAction.bind(this);
|
||||
this.removeActionAsync = this.removeActionAsync.bind(this);
|
||||
}
|
||||
|
||||
async $onInit() {
|
||||
|
@ -20,7 +22,11 @@ class ConfigsController {
|
|||
}
|
||||
}
|
||||
|
||||
async removeAction(selectedItems) {
|
||||
removeAction(selectedItems) {
|
||||
return this.$async(this.removeActionAsync, selectedItems);
|
||||
}
|
||||
|
||||
async removeActionAsync(selectedItems) {
|
||||
let actionCount = selectedItems.length;
|
||||
for (const config of selectedItems) {
|
||||
try {
|
||||
|
|
|
@ -5,7 +5,7 @@ import angular from "angular";
|
|||
|
||||
class CreateConfigController {
|
||||
/* @ngInject */
|
||||
constructor($state, $transition$, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) {
|
||||
constructor($async, $state, $transition$, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) {
|
||||
this.$state = $state;
|
||||
this.$transition$ = $transition$;
|
||||
this.Notifications = Notifications;
|
||||
|
@ -13,6 +13,7 @@ class CreateConfigController {
|
|||
this.Authentication = Authentication;
|
||||
this.FormValidator = FormValidator;
|
||||
this.ResourceControlService = ResourceControlService;
|
||||
this.$async = $async;
|
||||
|
||||
this.formValues = {
|
||||
Name: "",
|
||||
|
@ -26,6 +27,30 @@ class CreateConfigController {
|
|||
};
|
||||
|
||||
this.editorUpdate = this.editorUpdate.bind(this);
|
||||
this.createAsync = this.createAsync.bind(this);
|
||||
}
|
||||
|
||||
async $onInit() {
|
||||
if (!this.$transition$.params().id) {
|
||||
this.formValues.displayCodeEditor = true;
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
let data = await this.ConfigService.config(this.$transition$.params().id);
|
||||
this.formValues.Name = data.Name + "_copy";
|
||||
this.formValues.Data = data.Data;
|
||||
let labels = _.keys(data.Labels);
|
||||
for (let i = 0; i < labels.length; i++) {
|
||||
let labelName = labels[i];
|
||||
let labelValue = data.Labels[labelName];
|
||||
this.formValues.Labels.push({ name: labelName, value: labelValue });
|
||||
}
|
||||
this.formValues.displayCodeEditor = true;
|
||||
} catch (err) {
|
||||
this.formValues.displayCodeEditor = true;
|
||||
this.Notifications.error("Failure", err, "Unable to clone config");
|
||||
}
|
||||
}
|
||||
|
||||
addLabel() {
|
||||
|
@ -74,7 +99,11 @@ class CreateConfigController {
|
|||
return true;
|
||||
}
|
||||
|
||||
async create() {
|
||||
create() {
|
||||
return this.$async(this.createAsync);
|
||||
}
|
||||
|
||||
async createAsync() {
|
||||
let accessControlData = this.formValues.AccessControlData;
|
||||
let userDetails = this.Authentication.getUserDetails();
|
||||
let isAdmin = this.Authentication.isAdmin();
|
||||
|
@ -111,29 +140,6 @@ class CreateConfigController {
|
|||
editorUpdate(cm) {
|
||||
this.formValues.ConfigContent = cm.getValue();
|
||||
}
|
||||
|
||||
async $onInit() {
|
||||
if (!this.$transition$.params().id) {
|
||||
this.formValues.displayCodeEditor = true;
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
let data = await this.ConfigService.config(this.$transition$.params().id);
|
||||
this.formValues.Name = data.Name + "_copy";
|
||||
this.formValues.Data = data.Data;
|
||||
let labels = _.keys(data.Labels);
|
||||
for (let i = 0; i < labels.length; i++) {
|
||||
let labelName = labels[i];
|
||||
let labelValue = data.Labels[labelName];
|
||||
this.formValues.Labels.push({ name: labelName, value: labelValue });
|
||||
}
|
||||
this.formValues.displayCodeEditor = true;
|
||||
} catch (err) {
|
||||
this.formValues.displayCodeEditor = true;
|
||||
this.Notifications.error("Failure", err, "Unable to clone config");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default CreateConfigController;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue