Emmanuel Kasper [Thu, 25 Feb 2016 12:20:05 +0000 (13:20 +0100)]
change xtype name to follow ExtJS and our own conventions
this also fixes the problem that the method
Ext.ComponentQuery.query() was outputting a warning
since it did not know if it should perform a lookup
for a class name or a xtype
Dominik Csapak [Thu, 25 Feb 2016 13:11:21 +0000 (14:11 +0100)]
ext6migrate: fix LogView
fixes the LogView (for Tasks and Syslog) including:
moving static configuration to class definition
changing deprecated bodyStyle: padding to bodyPadding
removing chrome scrolltop hack (does work properly now, and hack
did not work anymore)
Dominik Csapak [Thu, 25 Feb 2016 13:11:20 +0000 (14:11 +0100)]
ext6migrate: fix Task History for nodes
fixes include:
move static configuration to class declaration
use Ext.create instead of new for reload_task
use store.reload(), because store.filter() triggers no reload with
activated
remove store.guaranteeRange hack for infinite grid (works properly now)
since buffered: true is deprecated, use a BufferedStore instead
remove verticalScrollerType and invalidateScrollerOnRefresh
since this does not exist anymore in extjs6
Without using an idProperty in the KeyValue model, the id of each
store item is autogenerated, and the DiffStore always recreate the whole
store content every second instead of updating the fields where values
have changed. Recreating the whole store content makes the
Node Summary View flicker, as the order of items in the store change
after each reload.
Testing shows that reversing this commit do not break anything else.
Emmanuel Kasper [Mon, 22 Feb 2016 09:16:13 +0000 (10:16 +0100)]
rename component 'id' property to 'stateId'
ExtJS6 requires a stateId if we want to save the component state
(seems it is not autogenerated anymore from 'id')
this fix the selection of timeframes in the Summary View
also move properties out of initComponent()
also remove code which duplicates framework code:
setting stateEvents to 'select' will save the component state
after a selection by calling applyState()/getState() automatically
so we don't need to specify a callback ourselves and we don't need
the testChange() method since applyState() will be called anyway
Wolfgang Link [Wed, 17 Feb 2016 08:12:57 +0000 (09:12 +0100)]
Fix problems with turnkey repository.
To prevent that one time Net:SSL and an outer time IO::Socket::SSL is loaded,
ensure that always use the same socket class.
We load the the Net:SSL in AccessControl.pm if we call pveupdate,
but if we call pveam update this module is not loaded an so the default is used (IO::Socket::SSL).
Emmanuel Kasper [Wed, 17 Feb 2016 13:53:57 +0000 (14:53 +0100)]
temporary disable accessibility warnings
ExtJS6 adds accessibility (aria) support to the framework, which means
special handling of space/enter key and panels title, and a lot of
warnings / errors in the browser console
Aria support will be reenabled after all the components are migrated to
ExtJS6
Emmanuel Kasper [Wed, 17 Feb 2016 13:53:55 +0000 (14:53 +0100)]
Fix initial loading of Node tabpanel:
* push initial components individually
* replace ifor the momment pvepanels with basic panels so we can at least load the first tabs
* group ceph component with previous push call as they require the same capabilities
Emmanuel Kasper [Tue, 16 Feb 2016 15:14:13 +0000 (16:14 +0100)]
use 'refresh' event to reload the grid after filtering the store
'datachanged' event was not reloading the store with ExtJS5,
but 'refresh' does.
According to the API description 'refresh' seems to be what we need:
http://docs.sencha.com/extjs/5.1/5.1.0-apidocs/#!/api/Ext.data.AbstractStore-event-refresh
also remove deprecated readme ( ExtJS6 do not have the 'chunking' Grid Feature, and no bugs
seen in scrolling yet)
Emmanuel Kasper [Mon, 15 Feb 2016 12:29:57 +0000 (13:29 +0100)]
Added UI elements for the backup job disabling function
Added a column in the datacenter backup job overview to see if a job
is enabled or not. Added checkbox to the input panel, which enables
or disables a job.
This closes bug/feature request 492.
Emmanuel Kasper [Mon, 15 Feb 2016 08:23:00 +0000 (09:23 +0100)]
ext6migrate: fix display of sport/dport/proto combo boxes
setting the field value of to '' would trigger
the 'change' event which would then disable
the sport/dport/proto comboboxes too early, an empty
form would have the comboboxes disabled too
instead keep the field to a null value if it is empty, but force
it to '' before sending to the pve-proxy
also makes the macro selector keyboard editable, similar to
the other comboboxes in the input panel
Emmanuel Kasper [Mon, 15 Feb 2016 08:22:59 +0000 (09:22 +0100)]
ext6migrate: set valueField as a class property
Also moves to full declarative style for
IPProtocolSelector, saves 11 lines of of boilerplate code
(works when the store is local and not pulled over the API)
Thomas Lamprecht [Fri, 12 Feb 2016 07:27:42 +0000 (08:27 +0100)]
ext6/triton: add some visual changes and fixes
They are mostly intended to save space as the "new theme", if it
gets applied, takes up space like it's worth pure gold.
Paddings get made smaller on buttons, tabs and grids.
Also let the main tree receive a sane space padding.
Further fix the height of the top info panel (the one with the logo,
PVE version, login button ...).
Also the "start/stop/more/..." buttons from the tool bar above the
navigation tab bar gets fixed.
Login panel got also some small fixes together with all input
fields.
We use simple CSS overrides to achieve this all.
Working with the scss (sass) files and rebuilding the theme would
be nicer, but as I have no intend to start working with senchas
"build system" and we self have no sane way for compiling the sass
stuff also, this is the preferred way for now.
We add a new css stylesheet so that the current manager remains
untouched by this changes.
add permissions to allow non root ceph configuration
Do not only allow root@pam to admin ceph server as some user do not
want to allow root logins and users with the Sys.Modify permission
should be able to modify ceph related stuff.
We use basically the following permissions:
Sys.Modify:
for any delete, add, modify action (POST, PUT, DELETE)
Sys.Audit and Datastore.Audit:
for any status/information view action (GET)
Sys.Log:
for viewing the Ceph log (was already implemented)
We have two exceptions creating and destroying osds. Those may only
be done by 'root@pam' for security reasons.
Also show users with any of those capabilities the ceph tab in the
web GUI.
Thomas Lamprecht [Wed, 10 Feb 2016 10:58:25 +0000 (11:58 +0100)]
use max_workers from datacenter.cfg for stopall/migrateall
If set limit the maximal worker count to the new datacenter.cfg
setting 'max_workers'.
For stopall we prefer this over the cpu count if it's set.
For migrateall we prefer the parameter but allow now to ommit
the parameter and then we use the new setting if set.
if both are not set we throw an error.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Emmanuel Kasper [Thu, 4 Feb 2016 16:01:28 +0000 (17:01 +0100)]
ext6migrate: fix minor selection bug in the ComboGrid
up to now we were only updating the picker selection when the picker
was created, which means that subsequent changes in the text field were
not propagated to the drop-down list
This patch creates a private syncSelection() method which is called each time
the picker is shown
This is roughly based on the ExtJS 4 ComboBox behaviour
Emmanuel Kasper [Thu, 4 Feb 2016 13:46:39 +0000 (14:46 +0100)]
ext6migrate: fix IPRefSelector ComboGrid
The IPrefSelector ComboGrid can have selected values which are not backed
by the component store, ie the store only contains IP aliases, but
the ComboGrid can contain an IP adress not registered as an IP alias.
In that case we should not try to update the selection in the dropdown,
as the dropdown only knows about the component store.
Implementation is similar to the syncSelection() private method of the
ExtJS4 ComboBox.
Emmanuel Kasper [Thu, 4 Feb 2016 13:46:37 +0000 (14:46 +0100)]
ext6migrate: replace unsafe pattern
using applyIf is not safe here as the tbar property has already been set
by the framework ( and anyway we would like to override any default
set by the framework )
this allows the toolbar of the component to be displayed
Dominik Csapak [Tue, 2 Feb 2016 10:43:24 +0000 (11:43 +0100)]
remove 'VZDump backup file' option from upload web gui
since we do not want to upload vzdump backup files (see bug #498),
it is confusing to expose this option in the gui, since currently
it can never succeed.
the correct way would probably allow it based on the users permissions
The last processor editing commit broke various parts of the
cpu editor window.
Most noticeably switching between the default and non-default
cpu types dealt with empty values wrongly and tried to
delete the 'cputype' property rather than the cputype
portion of the cpu property string.
Emmanuel Kasper [Thu, 28 Jan 2016 13:42:43 +0000 (14:42 +0100)]
ext6migrate: adapt the Checkbox column of the firewall panel to ExtJS6
API changes in ExtJS6 involved here:
* 'checkchange' event passes now the record index instead of the whole record
* record.fields is now an array of Field objects, before it was an Object
Emmanuel Kasper [Thu, 28 Jan 2016 09:59:25 +0000 (10:59 +0100)]
ext6migrate: remove 'comment' id from Comment column in our tables
The use of this field raise an error with ExtJS6 because it is not
unique inside the application.
Removing this is safe, because we never query the Comment column
with an id.
Emmanuel Kasper [Wed, 27 Jan 2016 13:13:00 +0000 (14:13 +0100)]
ext6migrate: fix picker dropdown on ViewSelector initial load
This fixes a nasty bug where an initial click on the ViewSelector
trigger would display the picker but hide it immediatly afterwards.
What was happening behind the scene, is that without queryMode 'local',
the store bound to the picker was loaded on each picker display.
Loading the store would then trigger our onLoad() override in ToolKit.js
which called setValue(), which fired a bunch of unwanted events
including 'collapse'.
It is safe here not to call onLoad() to set an initial value, because
the initial value is set in initComponent() (value: groupdef[0][0])
Emmanuel Kasper [Tue, 26 Jan 2016 16:15:55 +0000 (17:15 +0100)]
replace object creation via 'new' with ExtJS methods
This makes the code more homogeneous and allows us to use the ExtJS
class autoloader in the future if we want (autoloader idea: ExtJS tries to load the
JS class file over HTTP based on the class name, no need to maintain a list
of includes)
AnyEvent uses a built-in DH group defined as 'schmorp1539'
by default, which seems to trigger the bug in [1] for every
attempt of accessing the web GUI using IE11 and TLS1.2. By
switching to a bigger default DH group ('skip2048'), the
bug seems to be gone (or trigger sufficiently rarely).
Emmanuel Kasper [Mon, 25 Jan 2016 14:19:28 +0000 (15:19 +0100)]
ext6migrate: fix a long running bug where a logout from the GUI would break the workspace
If we pass true to the removeAll() , ExtJS6 will try to erase the leafes of a tree,
and then try to to iterate throuch these leaves in onNodeRemove() ( this obviously do not work)
The true parameter does not seem to be needed anyway anymore.
After a call to removeAll, the childNodes[] property of the rootNode is empty