X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=Utils.js;h=cf5d7b430a0f7b5bae7b3064d54c2005c54149c6;hb=99a5979b2b01a85620bc49f1330d3e7db5bd1dfc;hp=600fcbef0568aaaea675e308076647cdb11fc6a7;hpb=b91c7ce2100c74579b686f8246f0b0d3a99f02bc;p=proxmox-widget-toolkit.git diff --git a/Utils.js b/Utils.js index 600fcbe..cf5d7b4 100644 --- a/Utils.js +++ b/Utils.js @@ -1,10 +1,6 @@ Ext.ns('Proxmox'); Ext.ns('Proxmox.Setup'); -if (!Ext.isFunction(gettext)) { - function gettext(buf) { return buf; } -} - if (!Ext.isDefined(Proxmox.Setup.auth_cookie_name)) { throw "Proxmox library not initialized"; } @@ -61,11 +57,26 @@ Ext.define('Proxmox.Utils', { utilities: { groupText: gettext('Group'), language_map: { + zh_CN: 'Chinese (Simplified)', + zh_TW: 'Chinese (Traditional)', + ca: 'Catalan', + da: 'Danish', en: 'English', + eu: 'Euskera (Basque)', fr: 'French', de: 'German', it: 'Italian', - es: 'Spanish' + es: 'Spanish', + ja: 'Japanese', + nb: 'Norwegian (Bokmal)', + nn: 'Norwegian (Nynorsk)', + fa: 'Persian (Farsi)', + pl: 'Polish', + pt_BR: 'Portuguese (Brazil)', + ru: 'Russian', + sl: 'Slovenian', + sv: 'Swedish', + tr: 'Turkish' }, render_language: function (value) { @@ -144,26 +155,6 @@ Ext.define('Proxmox.Utils', { utilities: { } }, - format_duration_short: function(ut) { - - if (ut < 60) { - return ut.toString() + 's'; - } - - if (ut < 3600) { - var mins = ut / 60; - return mins.toFixed(0) + 'm'; - } - - if (ut < 86400) { - var hours = ut / 3600; - return hours.toFixed(0) + 'h'; - } - - var days = ut / 86400; - return days.toFixed(0) + 'd'; - }, - format_subscription_level: function(level) { if (level === 'c') { return 'Community'; @@ -218,7 +209,7 @@ Ext.define('Proxmox.Utils', { utilities: { if (clearMaskBeforeLoad) { me.mon(store, 'beforeload', function(s, operation, eOpts) { Proxmox.Utils.setErrorMask(me, false); - }) + }); } else { me.mon(store, 'beforeload', function(s, operation, eOpts) { if (!me.loadCount) { @@ -289,7 +280,11 @@ Ext.define('Proxmox.Utils', { utilities: { Ext.apply(newopts, { success: function(response, options) { if (options.waitMsgTarget) { - options.waitMsgTarget.setLoading(false); + if (Proxmox.Utils.toolkit === 'touch') { + options.waitMsgTarget.setMasked(false); + } else { + options.waitMsgTarget.setLoading(false); + } } var result = Ext.decode(response.responseText); response.result = result; @@ -304,7 +299,11 @@ Ext.define('Proxmox.Utils', { utilities: { }, failure: function(response, options) { if (options.waitMsgTarget) { - options.waitMsgTarget.setLoading(false); + if (Proxmox.Utils.toolkit === 'touch') { + options.waitMsgTarget.setMasked(false); + } else { + options.waitMsgTarget.setLoading(false); + } } response.result = {}; try { @@ -329,8 +328,12 @@ Ext.define('Proxmox.Utils', { utilities: { var target = newopts.waitMsgTarget; if (target) { - // Note: ExtJS bug - this does not work when component is not rendered - target.setLoading(newopts.waitMsg); + if (Proxmox.Utils.toolkit === 'touch') { + target.setMasked({ xtype: 'loadmask', message: newopts.waitMsg} ); + } else { + // Note: ExtJS bug - this does not work when component is not rendered + target.setLoading(newopts.waitMsg); + } } Ext.Ajax.request(newopts); }, @@ -402,6 +405,7 @@ Ext.define('Proxmox.Utils', { utilities: { eth: gettext("Network Device"), bridge: 'Linux Bridge', bond: 'Linux Bond', + vlan: 'Linux VLAN', OVSBridge: 'OVS Bridge', OVSBond: 'OVS Bond', OVSPort: 'OVS Port', @@ -413,9 +417,104 @@ Ext.define('Proxmox.Utils', { utilities: { Proxmox.Utils.unknownText; }, - // you can override this to provide nicer task descriptions + task_desc_table: { + acmenewcert: [ 'SRV', gettext('Order Certificate') ], + acmeregister: [ 'ACME Account', gettext('Register') ], + acmedeactivate: [ 'ACME Account', gettext('Deactivate') ], + acmeupdate: [ 'ACME Account', gettext('Update') ], + acmerefresh: [ 'ACME Account', gettext('Refresh') ], + acmerenew: [ 'SRV', gettext('Renew Certificate') ], + acmerevoke: [ 'SRV', gettext('Revoke Certificate') ], + 'move_volume': [ 'CT', gettext('Move Volume') ], + clustercreate: [ '', gettext('Create Cluster') ], + clusterjoin: [ '', gettext('Join Cluster') ], + diskinit: [ 'Disk', gettext('Initialize Disk with GPT') ], + vncproxy: [ 'VM/CT', gettext('Console') ], + spiceproxy: [ 'VM/CT', gettext('Console') + ' (Spice)' ], + vncshell: [ '', gettext('Shell') ], + spiceshell: [ '', gettext('Shell') + ' (Spice)' ], + qmsnapshot: [ 'VM', gettext('Snapshot') ], + qmrollback: [ 'VM', gettext('Rollback') ], + qmdelsnapshot: [ 'VM', gettext('Delete Snapshot') ], + qmcreate: [ 'VM', gettext('Create') ], + qmrestore: [ 'VM', gettext('Restore') ], + qmdestroy: [ 'VM', gettext('Destroy') ], + qmigrate: [ 'VM', gettext('Migrate') ], + qmclone: [ 'VM', gettext('Clone') ], + qmmove: [ 'VM', gettext('Move disk') ], + qmtemplate: [ 'VM', gettext('Convert to template') ], + qmstart: [ 'VM', gettext('Start') ], + qmstop: [ 'VM', gettext('Stop') ], + qmreset: [ 'VM', gettext('Reset') ], + qmshutdown: [ 'VM', gettext('Shutdown') ], + qmsuspend: [ 'VM', gettext('Suspend') ], + qmresume: [ 'VM', gettext('Resume') ], + qmconfig: [ 'VM', gettext('Configure') ], + vzsnapshot: [ 'CT', gettext('Snapshot') ], + vzrollback: [ 'CT', gettext('Rollback') ], + vzdelsnapshot: [ 'CT', gettext('Delete Snapshot') ], + vzcreate: ['CT', gettext('Create') ], + vzrestore: ['CT', gettext('Restore') ], + vzdestroy: ['CT', gettext('Destroy') ], + vzmigrate: [ 'CT', gettext('Migrate') ], + vzclone: [ 'CT', gettext('Clone') ], + vztemplate: [ 'CT', gettext('Convert to template') ], + vzstart: ['CT', gettext('Start') ], + vzstop: ['CT', gettext('Stop') ], + vzmount: ['CT', gettext('Mount') ], + vzumount: ['CT', gettext('Unmount') ], + vzshutdown: ['CT', gettext('Shutdown') ], + vzsuspend: [ 'CT', gettext('Suspend') ], + vzresume: [ 'CT', gettext('Resume') ], + hamigrate: [ 'HA', gettext('Migrate') ], + hastart: [ 'HA', gettext('Start') ], + hastop: [ 'HA', gettext('Stop') ], + srvstart: ['SRV', gettext('Start') ], + srvstop: ['SRV', gettext('Stop') ], + srvrestart: ['SRV', gettext('Restart') ], + srvreload: ['SRV', gettext('Reload') ], + cephcreatemgr: ['Ceph Manager', gettext('Create') ], + cephdestroymgr: ['Ceph Manager', gettext('Destroy') ], + cephcreatemon: ['Ceph Monitor', gettext('Create') ], + cephdestroymon: ['Ceph Monitor', gettext('Destroy') ], + cephcreateosd: ['Ceph OSD', gettext('Create') ], + cephdestroyosd: ['Ceph OSD', gettext('Destroy') ], + cephcreatepool: ['Ceph Pool', gettext('Create') ], + cephdestroypool: ['Ceph Pool', gettext('Destroy') ], + cephfscreate: ['CephFS', gettext('Create') ], + cephcreatemds: ['Ceph Metadata Server', gettext('Create') ], + cephdestroymds: ['Ceph Metadata Server', gettext('Destroy') ], + imgcopy: ['', gettext('Copy data') ], + imgdel: ['', gettext('Erase data') ], + unknownimgdel: ['', gettext('Destroy image from unknown guest') ], + download: ['', gettext('Download') ], + vzdump: ['', gettext('Backup') ], + aptupdate: ['', gettext('Update package database') ], + startall: [ '', gettext('Start all VMs and Containers') ], + stopall: [ '', gettext('Stop all VMs and Containers') ], + migrateall: [ '', gettext('Migrate all VMs and Containers') ], + dircreate: [ gettext('Directory Storage'), gettext('Create') ], + lvmcreate: [ gettext('LVM Storage'), gettext('Create') ], + lvmthincreate: [ gettext('LVM-Thin Storage'), gettext('Create') ], + zfscreate: [ gettext('ZFS Storage'), gettext('Create') ] + }, + format_task_description: function(type, id) { - return type + ' ' + id; + var farray = Proxmox.Utils.task_desc_table[type]; + var text; + if (!farray) { + text = type; + if (id) { + type += ' ' + id; + } + return text; + } + var prefix = farray[0]; + text = farray[1]; + if (prefix) { + return prefix + ' ' + id + ' - ' + text; + } + return text; }, format_size: function(size) { @@ -478,7 +577,19 @@ Ext.define('Proxmox.Utils', { utilities: { return Ext.Date.format(servertime, 'Y-m-d H:i:s'); }, - }, + openXtermJsViewer: function(vmtype, vmid, nodename, vmname) { + var url = Ext.urlEncode({ + console: vmtype, // kvm, lxc, upgrade or shell + xtermjs: 1, + vmid: vmid, + vmname: vmname, + node: nodename + }); + var nw = window.open("?" + url, '_blank', 'toolbar=no,location=no,status=no,menubar=no,resizable=yes,width=800,height=420'); + nw.focus(); + } + +}, singleton: true, constructor: function() {