[pve-devel] [PATCH manager v4 00/49] use proxmox widget toolkit and i18n package

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Jan 25 11:02:36 CET 2018


This is the joint effort from Dominiks and me to move the PVE WebUI
code base over to the split out 'Proxmox Widget Toolkit'.

The following changes since commit 6c3ea03d963cd20f5f15c5ed04d198c6a38fdd41:

  correct the upgradecmd for xtermjs (2018-01-18 10:05:54 +0100)

are available in the git repository at:

  git pull --ff-only https://github.com/GamerSource/pve-manager.git full-wtk-migration-merge-v4

for you to fetch changes up to 6d81549a4e45792eab368c688eb0f968664f8da6:

  remove now unused translations (2018-01-25 10:11:45 +0100)

The changes in this version are not big and thus I refrain from
sending the whole series to not spam the list completely.

Changes v3 -> v4:
* Dominik did some additional testing (thanks) and found some small
  regressions, so fix those - I added the code difference between the
  last version at the end, it's not much.

Previous changes and rest from cover letter for reference:

 > Thomas part:
 > * The Toolkit does not gets deleted entirely, we keep very PVE
 >   specific VTypes and setting the toolkit environment 'extjs' vs
 >   'touch'
 > * The "TimeEdit: use schematic declaration" was moved to the widget
 >   toolkit
 > * Add R-b from Dominik where applicable
 > * Add patch which removes the whole po/ directory and its references
 >   at the end
 >
 > Dominik's part:
 > * fix trailing whitespace introduced in the Utils patch.
 > * include the 'use pve-i18n package'
 > * Add R-b from Thomas where applicable
 >
 > Note: I depend already on proxmox-widget-toolkit in version 1.0-10,
 > as it includes all the fixes since the fork from pve-manager in
 > spring last year. The latest bumped version, at time of writing, is
 > '1.0-9', thus you may bump it yourself, else apt may complain.
 >
 > Obviously, nothing should break and we cross tested things, but this
 > warrants, nonetheless, quite a bit of testing, maybe some longer time
 > on pvetest, IMO.
 >
 > It would be really great if this gets a little more priority when
 > considering applying, as the WebUI is currently frozen, more or less,
 > until this gets through. Gives us also more time for testing between
 > now and the next point release.

cheers,
Thomas

----------------------------------------------------------------
Dominik Csapak (23):
      add proxmox-widget-toolkit to pve gui
      use pve-i18n package
      use ComboGrid from proxmox-widget-toolkit
      use TextField from proxmox-widget-toolkit
      use IntegerField from widget toolkit
      use TimeView and TimeEdit from widget toolkit
      use NetworkView/NetworkEdit from widget toolkit
      use NodeAPT grid from widget toolkit
      remove unused MigrateAll window
      add rrd models
      use RRDChart and RRDStore from widget toolkit
      use JsonObject from widget toolkit
      use UpdateStore from widget toolkit
      change pve-invalid-row class to proxmox-invalid-row
      use Tasks from widget toolkit
      use ServiceView from widget toolkit
      add 'service' parameter to syslog api call
      use DNSView/DNSEdit from widget toolkit
      create some models
      use Proxmox.button.StdRemoveButton where possible
      use Button from widget toolkit
      use Proxmox.Utils instead of PVE.Utils
      remove unneeded SendKeyMenu

Thomas Lamprecht (26):
      use LanguageSelector from widget toolkit
      use BondModeSelector & BondPolicySelector from widget toolkit
      use Checkbox from widget toolkit
      use RRDTypeSelector from widget toolkit
      use KVCombobox from widget toolkit
      use ObjectGrid from widget toolkit
      dc/OptionView: cleanup & use new features from ObjectGrid
      lxc/Resources: cleanup & use new features from ObjectGrid
      lxc/Options: cleanup & use a few new features from ObjectGrid
      grid/FireWallOptions: cleanup & use new features from ObjectGrid
      qemu/Options: cleanup & use new features from ObjectGrid
      use PendingObjectGrid from widget toolkit
      use windowEdit from widget toolkit
      use TaskViewer & TaskProgress window from widget toolkit
      use window.PasswordEdit from widget toolkit
      use HelpButton from widget toolkit
      use DiffStore from widget toolkit
      use TimezoneStore from widget toolkit
      use ObjectStore from widget toolkit
      use RestProxy from widget toolkit
      use GaugeWidget from widget toolkit
      use LogView from widget toolkit
      use InputPanel from widget toolkit
      RealmComboBox: use schematic declaration and ViewController
      reuse Toolkit from widget toolkit
      remove now unused translations

 Makefile                                       |    6 +-
 PVE/API2/Nodes.pm                              |   17 +-
 PVE/Service/pveproxy.pm                        |   14 +-
 debian/control                                 |    2 +
 defines.mk                                     |    1 -
 po/Makefile                                    |   27 -
 po/ca.po                                       | 2925 -----------------
 po/da.po                                       | 3372 -------------------
 po/de.po                                       | 3048 -----------------
 po/es.po                                       | 3350 -------------------
 po/eu.po                                       | 3378 -------------------
 po/fa.po                                       | 3341 -------------------
 po/fr.po                                       | 3342 -------------------
 po/gl.po                                       | 3336 -------------------
 po/hu.po                                       | 3299 -------------------
 po/it.po                                       | 3262 ------------------
 po/ja.po                                       | 4182 ------------------------
 po/jsgettext.pl                                |   91 -
 po/messages.pot                                | 2282 -------------
 po/nb.po                                       | 3326 -------------------
 po/nn.po                                       | 3324 -------------------
 po/pl.po                                       | 3372 -------------------
 po/po2js.pl                                    |   99 -
 po/pt_BR.po                                    | 3373 -------------------
 po/ru.po                                       | 3370 -------------------
 po/sl.po                                       | 3355 -------------------
 po/sv.po                                       | 3379 -------------------
 po/tr.po                                       | 3372 -------------------
 po/zh_CN.po                                    | 3383 -------------------
 www/css/ext6-pve.css                           |    4 +-
 www/index.html.tpl                             |    8 +
 www/manager6/Makefile                          |   39 +-
 www/manager6/Toolkit.js                        |  498 +--
 www/manager6/Utils.js                          |  600 +---
 www/manager6/Workspace.js                      |   14 +-
 www/manager6/button/Button.js                  |   96 -
 www/manager6/button/HelpButton.js              |   78 -
 www/manager6/ceph/Config.js                    |    2 +-
 www/manager6/ceph/Crush.js                     |    2 +-
 www/manager6/ceph/Monitor.js                   |   26 +-
 www/manager6/ceph/OSD.js                       |   28 +-
 www/manager6/ceph/Pool.js                      |   22 +-
 www/manager6/ceph/Status.js                    |    8 +-
 www/manager6/data/DiffStore.js                 |  114 -
 www/manager6/data/ObjectStore.js               |   35 -
 www/manager6/data/PVEProxy.js                  |  102 -
 www/manager6/data/RRDStore.js                  |  119 -
 www/manager6/data/ResourceStore.js             |   16 +-
 www/manager6/data/TimezoneStore.js             |  418 ---
 www/manager6/data/UpdateQueue.js               |   67 -
 www/manager6/data/UpdateStore.js               |   68 -
 www/manager6/data/model/RRDModels.js           |   62 +
 www/manager6/data/model/Realm.js               |   29 +
 www/manager6/data/reader/JsonObject.js         |  127 -
 www/manager6/dc/ACLView.js                     |   14 +-
 www/manager6/dc/AuthEdit.js                    |   26 +-
 www/manager6/dc/AuthView.js                    |   27 +-
 www/manager6/dc/Backup.js                      |   42 +-
 www/manager6/dc/GroupEdit.js                   |    4 +-
 www/manager6/dc/GroupView.js                   |   27 +-
 www/manager6/dc/Health.js                      |    6 +-
 www/manager6/dc/Log.js                         |   12 +-
 www/manager6/dc/NodeView.js                    |    2 +-
 www/manager6/dc/OptionView.js                  |  259 +-
 www/manager6/dc/PoolEdit.js                    |    4 +-
 www/manager6/dc/PoolView.js                    |   27 +-
 www/manager6/dc/RoleView.js                    |    2 +-
 www/manager6/dc/SecurityGroups.js              |   44 +-
 www/manager6/dc/StorageView.js                 |   31 +-
 www/manager6/dc/Summary.js                     |    8 +-
 www/manager6/dc/Support.js                     |    2 +-
 www/manager6/dc/Tasks.js                       |   16 +-
 www/manager6/dc/UserEdit.js                    |    8 +-
 www/manager6/dc/UserView.js                    |   88 +-
 www/manager6/form/BackupModeSelector.js        |    2 +-
 www/manager6/form/BondModeSelector.js          |   42 -
 www/manager6/form/Boolean.js                   |    2 +-
 www/manager6/form/BridgeSelector.js            |    6 +-
 www/manager6/form/BusTypeSelector.js           |    2 +-
 www/manager6/form/CPUModelSelector.js          |    4 +-
 www/manager6/form/CacheTypeSelector.js         |    4 +-
 www/manager6/form/CephPoolSelector.js          |    2 +-
 www/manager6/form/Checkbox.js                  |   44 -
 www/manager6/form/ComboGrid.js                 |  353 --
 www/manager6/form/CompressionSelector.js       |    4 +-
 www/manager6/form/ContentTypeSelector.js       |    2 +-
 www/manager6/form/ControllerSelector.js        |    3 +-
 www/manager6/form/DayOfWeekSelector.js         |    2 +-
 www/manager6/form/DiskFormatSelector.js        |    2 +-
 www/manager6/form/DisplaySelector.js           |    2 +-
 www/manager6/form/EmailNotificationSelector.js |    2 +-
 www/manager6/form/FileSelector.js              |    6 +-
 www/manager6/form/FirewallPolicySelector.js    |    2 +-
 www/manager6/form/GlobalSearchField.js         |    4 +-
 www/manager6/form/GroupSelector.js             |    4 +-
 www/manager6/form/GuestIDSelector.js           |    4 +-
 www/manager6/form/IPProtocolSelector.js        |    2 +-
 www/manager6/form/IPRefSelector.js             |    4 +-
 www/manager6/form/IntegerField.js              |    8 -
 www/manager6/form/KVComboBox.js                |   72 -
 www/manager6/form/LanguageSelector.js          |    5 -
 www/manager6/form/NetworkCardSelector.js       |    2 +-
 www/manager6/form/NodeSelector.js              |    4 +-
 www/manager6/form/PoolSelector.js              |    4 +-
 www/manager6/form/QemuBiosSelector.js          |    2 +-
 www/manager6/form/RRDTypeSelector.js           |   49 -
 www/manager6/form/RealmComboBox.js             |   56 +-
 www/manager6/form/RoleSelector.js              |    4 +-
 www/manager6/form/ScsiHwSelector.js            |    2 +-
 www/manager6/form/SecurityGroupSelector.js     |    4 +-
 www/manager6/form/SnapshotSelector.js          |    4 +-
 www/manager6/form/StorageSelector.js           |    8 +-
 www/manager6/form/TextField.js                 |   36 -
 www/manager6/form/USBSelector.js               |    4 +-
 www/manager6/form/UserSelector.js              |    4 +-
 www/manager6/form/VMSelector.js                |    2 +-
 www/manager6/form/VNCKeyboardSelector.js       |    2 +-
 www/manager6/form/iScsiProviderSelector.js     |    2 +-
 www/manager6/grid/BackupView.js                |   39 +-
 www/manager6/grid/FirewallAliases.js           |   39 +-
 www/manager6/grid/FirewallOptions.js           |  135 +-
 www/manager6/grid/FirewallRules.js             |   76 +-
 www/manager6/grid/ObjectGrid.js                |  132 -
 www/manager6/grid/PendingObjectGrid.js         |   95 -
 www/manager6/grid/PoolMembers.js               |   14 +-
 www/manager6/grid/Replication.js               |   53 +-
 www/manager6/ha/GroupEdit.js                   |   10 +-
 www/manager6/ha/GroupSelector.js               |    4 +-
 www/manager6/ha/Groups.js                      |   27 +-
 www/manager6/ha/ResourceEdit.js                |   12 +-
 www/manager6/ha/Resources.js                   |   33 +-
 www/manager6/ha/Status.js                      |    4 +-
 www/manager6/ha/StatusView.js                  |    4 +-
 www/manager6/lxc/CmdMenu.js                    |   12 +-
 www/manager6/lxc/Config.js                     |   15 +-
 www/manager6/lxc/CreateWizard.js               |   10 +-
 www/manager6/lxc/DNS.js                        |   18 +-
 www/manager6/lxc/MPEdit.js                     |   20 +-
 www/manager6/lxc/MPResize.js                   |    4 +-
 www/manager6/lxc/Network.js                    |   22 +-
 www/manager6/lxc/Options.js                    |  103 +-
 www/manager6/lxc/ResourceEdit.js               |   17 +-
 www/manager6/lxc/Resources.js                  |   94 +-
 www/manager6/lxc/Snapshot.js                   |    8 +-
 www/manager6/lxc/SnapshotTree.js               |   26 +-
 www/manager6/lxc/Summary.js                    |   15 +-
 www/manager6/node/APT.js                       |  210 --
 www/manager6/node/Config.js                    |   46 +-
 www/manager6/node/DNSEdit.js                   |   55 -
 www/manager6/node/DNSView.js                   |   48 -
 www/manager6/node/Disks.js                     |   26 +-
 www/manager6/node/NetworkEdit.js               |  325 --
 www/manager6/node/NetworkView.js               |  351 --
 www/manager6/node/ServiceView.js               |  164 -
 www/manager6/node/StatusView.js                |    2 +-
 www/manager6/node/Subscription.js              |   12 +-
 www/manager6/node/Summary.js                   |   19 +-
 www/manager6/node/Tasks.js                     |  175 -
 www/manager6/node/TimeEdit.js                  |   39 -
 www/manager6/node/TimeView.js                  |   57 -
 www/manager6/panel/ConfigPanel.js              |    2 +-
 www/manager6/panel/GaugeWidget.js              |   96 -
 www/manager6/panel/GuestStatusView.js          |    2 +-
 www/manager6/panel/IPSet.js                    |   77 +-
 www/manager6/panel/InputPanel.js               |  124 -
 www/manager6/panel/LogView.js                  |  274 --
 www/manager6/panel/NotesView.js                |    2 +-
 www/manager6/panel/RRDChart.js                 |  187 --
 www/manager6/panel/RRDView.js                  |  112 -
 www/manager6/panel/StatusView.js               |    2 +-
 www/manager6/pool/StatusView.js                |    2 +-
 www/manager6/qemu/BootOrderEdit.js             |   12 +-
 www/manager6/qemu/CDEdit.js                    |    4 +-
 www/manager6/qemu/CPUOptions.js                |   11 +-
 www/manager6/qemu/Clone.js                     |   10 +-
 www/manager6/qemu/CmdMenu.js                   |   14 +-
 www/manager6/qemu/Config.js                    |   21 +-
 www/manager6/qemu/CreateWizard.js              |    2 +-
 www/manager6/qemu/DisplayEdit.js               |    2 +-
 www/manager6/qemu/HDEdit.js                    |   14 +-
 www/manager6/qemu/HDEfi.js                     |    4 +-
 www/manager6/qemu/HDMove.js                    |    6 +-
 www/manager6/qemu/HDResize.js                  |    2 +-
 www/manager6/qemu/HDThrottle.js                |   12 +-
 www/manager6/qemu/HardwareView.js              |   24 +-
 www/manager6/qemu/KeyboardEdit.js              |    2 +-
 www/manager6/qemu/MemoryEdit.js                |   12 +-
 www/manager6/qemu/Monitor.js                   |    2 +-
 www/manager6/qemu/NetworkEdit.js               |   10 +-
 www/manager6/qemu/OSTypeEdit.js                |    4 +-
 www/manager6/qemu/Options.js                   |  113 +-
 www/manager6/qemu/ProcessorEdit.js             |   12 +-
 www/manager6/qemu/QemuBiosEdit.js              |    4 +-
 www/manager6/qemu/ScsiHwEdit.js                |    2 +-
 www/manager6/qemu/SendKeyMenu.js               |  114 -
 www/manager6/qemu/Smbios1Edit.js               |    4 +-
 www/manager6/qemu/Snapshot.js                  |   10 +-
 www/manager6/qemu/SnapshotTree.js              |   26 +-
 www/manager6/qemu/Summary.js                   |   15 +-
 www/manager6/qemu/TemplateMenu.js              |    2 +-
 www/manager6/qemu/USBEdit.js                   |    4 +-
 www/manager6/storage/ContentView.js            |   55 +-
 www/manager6/storage/DirEdit.js                |   10 +-
 www/manager6/storage/GlusterFsEdit.js          |   12 +-
 www/manager6/storage/IScsiEdit.js              |    8 +-
 www/manager6/storage/LVMEdit.js                |   12 +-
 www/manager6/storage/LvmThinEdit.js            |   10 +-
 www/manager6/storage/NFSEdit.js                |   10 +-
 www/manager6/storage/RBDEdit.js                |    8 +-
 www/manager6/storage/SheepdogEdit.js           |    6 +-
 www/manager6/storage/StatusView.js             |    4 +-
 www/manager6/storage/Summary.js                |   11 +-
 www/manager6/storage/ZFSEdit.js                |   10 +-
 www/manager6/storage/ZFSPoolEdit.js            |   10 +-
 www/manager6/window/Backup.js                  |    8 +-
 www/manager6/window/BackupConfig.js            |    2 +-
 www/manager6/window/BulkAction.js              |    6 +-
 www/manager6/window/Edit.js                    |  308 --
 www/manager6/window/LoginWindow.js             |    2 +-
 www/manager6/window/Migrate.js                 |   10 +-
 www/manager6/window/MigrateAll.js              |   85 -
 www/manager6/window/NotesEdit.js               |    2 +-
 www/manager6/window/Restore.js                 |   12 +-
 www/manager6/window/SafeDestroy.js             |   10 +-
 www/manager6/window/Settings.js                |    8 +-
 www/manager6/window/StartupEdit.js             |    4 +-
 www/manager6/window/TaskViewer.js              |  223 --
 www/manager6/window/Wizard.js                  |    8 +-
 www/mobile/Datacenter.js                       |    4 +-
 www/mobile/NodeSummary.js                      |    6 +-
 www/mobile/TaskList.js                         |    2 +-
 www/mobile/TaskViewer.js                       |    4 +-
 www/mobile/Toolkit.js                          |    2 +-
 www/mobile/VMSummaryBase.js                    |    6 +-
 www/mobile/Workspace.js                        |    4 +-
 www/touch/index.html.tpl                       |   12 +-
 236 files changed, 1163 insertions(+), 77292 deletions(-)
 delete mode 100644 po/Makefile
 delete mode 100644 po/ca.po
 delete mode 100644 po/da.po
 delete mode 100644 po/de.po
 delete mode 100644 po/es.po
 delete mode 100644 po/eu.po
 delete mode 100644 po/fa.po
 delete mode 100644 po/fr.po
 delete mode 100644 po/gl.po
 delete mode 100644 po/hu.po
 delete mode 100644 po/it.po
 delete mode 100644 po/ja.po
 delete mode 100755 po/jsgettext.pl
 delete mode 100644 po/messages.pot
 delete mode 100644 po/nb.po
 delete mode 100644 po/nn.po
 delete mode 100644 po/pl.po
 delete mode 100755 po/po2js.pl
 delete mode 100644 po/pt_BR.po
 delete mode 100644 po/ru.po
 delete mode 100644 po/sl.po
 delete mode 100644 po/sv.po
 delete mode 100644 po/tr.po
 delete mode 100644 po/zh_CN.po
 delete mode 100644 www/manager6/button/Button.js
 delete mode 100644 www/manager6/button/HelpButton.js
 delete mode 100644 www/manager6/data/DiffStore.js
 delete mode 100644 www/manager6/data/ObjectStore.js
 delete mode 100644 www/manager6/data/PVEProxy.js
 delete mode 100644 www/manager6/data/RRDStore.js
 delete mode 100644 www/manager6/data/TimezoneStore.js
 delete mode 100644 www/manager6/data/UpdateQueue.js
 delete mode 100644 www/manager6/data/UpdateStore.js
 create mode 100644 www/manager6/data/model/RRDModels.js
 create mode 100644 www/manager6/data/model/Realm.js
 delete mode 100644 www/manager6/data/reader/JsonObject.js
 delete mode 100644 www/manager6/form/BondModeSelector.js
 delete mode 100644 www/manager6/form/Checkbox.js
 delete mode 100644 www/manager6/form/ComboGrid.js
 delete mode 100644 www/manager6/form/IntegerField.js
 delete mode 100644 www/manager6/form/KVComboBox.js
 delete mode 100644 www/manager6/form/LanguageSelector.js
 delete mode 100644 www/manager6/form/RRDTypeSelector.js
 delete mode 100644 www/manager6/form/TextField.js
 delete mode 100644 www/manager6/grid/ObjectGrid.js
 delete mode 100644 www/manager6/grid/PendingObjectGrid.js
 delete mode 100644 www/manager6/node/APT.js
 delete mode 100644 www/manager6/node/DNSEdit.js
 delete mode 100644 www/manager6/node/DNSView.js
 delete mode 100644 www/manager6/node/NetworkEdit.js
 delete mode 100644 www/manager6/node/NetworkView.js
 delete mode 100644 www/manager6/node/ServiceView.js
 delete mode 100644 www/manager6/node/Tasks.js
 delete mode 100644 www/manager6/node/TimeEdit.js
 delete mode 100644 www/manager6/node/TimeView.js
 delete mode 100644 www/manager6/panel/GaugeWidget.js
 delete mode 100644 www/manager6/panel/InputPanel.js
 delete mode 100644 www/manager6/panel/LogView.js
 delete mode 100644 www/manager6/panel/RRDChart.js
 delete mode 100644 www/manager6/panel/RRDView.js
 delete mode 100644 www/manager6/qemu/SendKeyMenu.js
 delete mode 100644 www/manager6/window/Edit.js
 delete mode 100644 www/manager6/window/MigrateAll.js
 delete mode 100644 www/manager6/window/TaskViewer.js

# git diff full-wtk-migration-merge-v3 full-wtk-migration-merge-v4
----8<----
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 1150bf05..1d67238e 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -269,7 +269,7 @@ Ext.define('PVE.Utils', { utilities: {
     },
 
     render_kvm_language: function (value) {
-	if (!value) {
+	if (!value || value === '__default__') {
 	    return Proxmox.Utils.defaultText;
 	}
 	var text = PVE.Utils.kvm_keymaps[value];
diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js
index 8e2c13da..6b976be6 100644
--- a/www/manager6/dc/OptionView.js
+++ b/www/manager6/dc/OptionView.js
@@ -11,7 +11,9 @@ Ext.define('PVE.dc.OptionView', {
 
 	me.add_combobox_row('keyboard', gettext('Keyboard Layout'), {
 	    renderer: PVE.Utils.render_kvm_language,
-	    comboItems: PVE.Utils.kvm_keymap_array()
+	    comboItems: PVE.Utils.kvm_keymap_array(),
+	    defaultValue: '__default__',
+	    deleteEmpty: true
 	});
 	me.add_text_row('http_proxy', gettext('HTTP proxy'), {
 	    defaultValue: Proxmox.Utils.noneText,
diff --git a/www/manager6/lxc/Resources.js b/www/manager6/lxc/Resources.js
index 0d867892..55514cdd 100644
--- a/www/manager6/lxc/Resources.js
+++ b/www/manager6/lxc/Resources.js
@@ -5,6 +5,17 @@ Ext.define('PVE.lxc.RessourceView', {
 
     onlineHelp: 'pct_configuration',
 
+    renderKey: function(key, metaData, rec, rowIndex, colIndex, store) {
+	var me = this;
+	var rowdef = me.rows[key] || {};
+
+	metaData.tdAttr = "valign=middle";
+	if (rowdef.tdCls) {
+	    metaData.tdCls = rowdef.tdCls;
+	}
+	return rowdef.header || key;
+    },
+
     initComponent : function() {
 	var me = this;
 	var i, confid;
diff --git a/www/manager6/lxc/Snapshot.js b/www/manager6/lxc/Snapshot.js
index 5a0b00c2..bdb99018 100644
--- a/www/manager6/lxc/Snapshot.js
+++ b/www/manager6/lxc/Snapshot.js
@@ -86,7 +86,7 @@ Ext.define('PVE.window.LxcSnapshot', {
 	    items.push({
 		xtype: 'displayfield',
 		name: 'snaptime',
-		renderer: Proxmox.Utils.render_timestamp_human_readable,
+		renderer: PVE.Utils.render_timestamp_human_readable,
 		fieldLabel: gettext('Timestamp')
 	    });
 	}
diff --git a/www/manager6/qemu/Snapshot.js b/www/manager6/qemu/Snapshot.js
index 1dffcb65..59fae1a2 100644
--- a/www/manager6/qemu/Snapshot.js
+++ b/www/manager6/qemu/Snapshot.js
@@ -86,7 +86,7 @@ Ext.define('PVE.window.Snapshot', {
 	    items.push({
 		xtype: 'displayfield',
 		name: 'snaptime',
-		renderer: Proxmox.Utils.render_timestamp_human_readable,
+		renderer: PVE.Utils.render_timestamp_human_readable,
 		fieldLabel: gettext('Timestamp')
 	    });
 	} else {




More information about the pve-devel mailing list