]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - window/Edit.js
task view, progress: add taskDone callback
[proxmox-widget-toolkit.git] / window / Edit.js
index 794db8d7146c6aec4ac72671c9cd9cfb222217ba..f72bee0d3c6f84ad5a6a934bbff39f70414bcb29 100644 (file)
@@ -13,9 +13,9 @@ Ext.define('Proxmox.window.Edit', {
     // Create: <subject>
     subject: undefined,
 
-    // set create to true if you want a Create button (instead
+    // set isCreate to true if you want a Create button (instead
     // OK and RESET)
-    create: false,
+    isCreate: false,
 
     // set to true if you want an Add button (instead of Create)
     isAdd: false,
@@ -23,6 +23,9 @@ Ext.define('Proxmox.window.Edit', {
     // set to true if you want an Remove button (instead of Create)
     isRemove: false,
 
+    // custom submitText
+    submitText: undefined,
+
     backgroundDelay: 0,
 
     // needed for finding the reference to submitbutton
@@ -35,6 +38,17 @@ Ext.define('Proxmox.window.Edit', {
 
     showProgress: false,
 
+    showTaskViewer: false,
+
+    // gets called if we have a progress bar or taskview and it detected that
+    // the task finished. function(success)
+    taskDone: Ext.emptyFn,
+
+    // assign a reference from docs, to add a help button docked to the
+    // bottom of the window. If undefined we magically fall back to the
+    // onlineHelp of our first item, if set.
+    onlineHelp: undefined,
+
     isValid: function() {
        var me = this;
 
@@ -122,7 +136,7 @@ Ext.define('Proxmox.window.Edit', {
                Ext.Msg.alert(gettext('Error'), response.htmlStatus);
            },
            success: function(response, options) {
-               var hasProgressBar = (me.backgroundDelay || me.showProgress) &&
+               var hasProgressBar = (me.backgroundDelay || me.showProgress || me.showTaskViewer) &&
                    response.result.data ? true : false;
 
                if (hasProgressBar) {
@@ -131,8 +145,10 @@ Ext.define('Proxmox.window.Edit', {
                    me.hide();
 
                    var upid = response.result.data;
-                   var win = Ext.create('PVE.window.TaskProgress', {
+                   var viewerClass = me.showTaskViewer ? 'Viewer' : 'Progress';
+                   var win = Ext.create('Proxmox.window.Task' + viewerClass, {
                        upid: upid,
+                       taskDone: me.taskDone,
                        listeners: {
                            destroy: function () {
                                me.close();
@@ -195,6 +211,8 @@ Ext.define('Proxmox.window.Edit', {
            throw "no url specified";
        }
 
+       if (me.create) {throw "deprecated parameter, use isCreate";}
+
        var items = Ext.isArray(me.items) ? me.items : [ me.items ];
 
        me.items = undefined;
@@ -205,9 +223,9 @@ Ext.define('Proxmox.window.Edit', {
            trackResetOnLoad: true,
            bodyPadding: 10,
            border: false,
-           defaults: {
+           defaults: Ext.apply({}, me.defaults, {
                border: false
-           },
+           }),
            fieldDefaults: Ext.apply({}, me.fieldDefaults, {
                labelWidth: 100,
                anchor: '100%'
@@ -220,8 +238,10 @@ Ext.define('Proxmox.window.Edit', {
        var form = me.formPanel.getForm();
 
        var submitText;
-       if (me.create) {
-           if (me.isAdd) {
+       if (me.isCreate) {
+           if (me.submitText) {
+               submitText = me.submitText;
+           } else if (me.isAdd) {
                submitText = gettext('Add');
            } else if (me.isRemove) {
                submitText = gettext('Remove');
@@ -229,13 +249,13 @@ Ext.define('Proxmox.window.Edit', {
                submitText = gettext('Create');
            }
        } else {
-           submitText = gettext('OK');
+           submitText = me.submitText || gettext('OK');
        }
 
        var submitBtn = Ext.create('Ext.Button', {
            reference: 'submitbutton',
            text: submitText,
-           disabled: !me.create,
+           disabled: !me.isCreate,
            handler: function() {
                me.submit();
            }
@@ -252,7 +272,7 @@ Ext.define('Proxmox.window.Edit', {
        var set_button_status = function() {
            var valid = form.isValid();
            var dirty = form.isDirty();
-           submitBtn.setDisabled(!valid || !(dirty || me.create));
+           submitBtn.setDisabled(!valid || !(dirty || me.isCreate));
            resetBtn.setDisabled(!dirty);
        };
 
@@ -268,10 +288,10 @@ Ext.define('Proxmox.window.Edit', {
            (inputPanel.column1 || inputPanel.column2);
 
        if (me.subject && !me.title) {
-           me.title = Proxmox.Utils.dialog_title(me.subject, me.create, me.isAdd);
+           me.title = Proxmox.Utils.dialog_title(me.subject, me.isCreate, me.isAdd);
        }
 
-       if (me.create) {
+       if (me.isCreate) {
                me.buttons = [ submitBtn ] ;
        } else {
                me.buttons = [ submitBtn, resetBtn ];