Highlights of this patch include:
- Changes will affect SQL Editors in Create dialog boxes, SQL tab of the main screen, Query tool, History entries in the query tool, Query tool opened in New Tab/Window
- All the components of SQL editor will refer to single source of preferences which is cached in the Browser object. All other redundant ajax get preference calls are removed.
- SQL editor will not refer template JS variables anymore, once all the references are removed the template variables will also be removed.
- Code refactoring wherever possible.
- Covered JS test cases wherever possible.
1) User was allowed to enter start date ahead of end date while scheduling a job. Fixes#2921
2) Datetime picker was not displaying in the grid (sub-node collection control). Fixes#1749
3) Fixed UI issue where validation error was not displaying properly for Datetime control.
1481 of 1831 messages (80%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1831 messages (92%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1748 of 1831 messages (95%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1750 of 1831 messages (95%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1831 messages (78%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
This significantly speeds up loading of the application; in an average of 3 tests, v1.6
loaded in 11.5s in the runtime on a Mac, whilst the webpacked version of the code
loaded in 5.53s.
2) Modify SubNodeCollectionControl, so that user can pass custom backgrid row.
3) Handling of visible parameter in SubNodeCollectionControl.
4) Customise title and delete message for Delete Cell.
5) Added Backgrid.Extension.Select2DepCell and moved Backgrid.Extension.StringDepCell from user management to backgrid.pgadmin.js.
1. When an existing schedule updated, or a new schedule is added from a pgAgent job dialog, it was not able to generate the proper update SQL Query.
2. The SubNodeCollectionControl was not removing the grid, when it is being getting removed.
- Added DatetimepickerControl, MomentCell (using moment.js)
- Used the 'DatetimepickerControl' in Role (Also - resolved an issue, when unset the datetime for 'Valid Until'.)
- Added a 'Select All/Unselect All' adaptor for Select2 used by pgAgent nodes.
- Fixed an issue with SubNodeCollectionControl, which was not starting the modification session of the child model, when created default value for collection is not null/undefined. And, hence - validation on the child model was not working.
- Fixed a memory leak with SqlFieldControl, and SqlTabControl, which was not releasing the CodeMirror properly.
1. Select2 control fixed for multi-select mode.
2. Index constrains (primary and unique key) fixed column listing issue.
3. Table node "inherited from" (Select2 control) was not showing table name with public schema
The backgrid-sizeable's css property 'overflow: hidden' was overriding backgrid table css property and It was reproducible only in runtime.
Removed 'overflow: hidden' property from backgrid-sizeabled-columns.css
file control selection button.
All our views are inherited from the Backform.Form (a extended
Backbone.View), which has an tag element set to 'form'. The default
action for a button in form is to submit the data, and that results into
undesirable redirection within our Views. We can resolve the issue of
redirection by setting 'preventDefault' to true in the click event
object on that button. But - we may use the button control within our
view in future, and that will have the similar behaviour. Keeping that
in mind, we set the default tag to 'div' instead of 'form' for all our
views.
ommit.
- Rename file/folder not working in list view.
- Selection folder only should not allow to select file.
- Ui changes in table list to match with the pgadmin color styles.
- Custom STORAGE_DIR path don't list files/folders when opened in window
system.
- Code cleanup, formatting & did proper commenting.
- In file selection mode, the value typed in text box not setting into
backbone model.
- Removed create file code, it should be handled on module using it.
- Written a common function to make ajax request, instead of writing
individual functions for same task.
selection, creation, upload/download files/directories resides on the
server side.
This will be useful for file selection/creation for different server
side utilites like pg_dump, pg_dumpall, pg_restore.
will always have latest data related to that type of node. Also, fixed
the cache_level for different node types.
This commit also contains fixes for the following issue:
* In extension module - use the 'node-list-by-name' instead of using a
custom 'node-ajax-options' control, and removed redundant template
schemas from it.
* When we tries to destroy the select2 object from
Select2Cell/Select2Control while releasing the properties view,
sometimes select2 can not find the instance related it for some
unknown reason. Hence - before removing it we will check for manual
instance existance using $.data('select2').
* When we traverse through the browser tree nodes very quickly, it tries
to remove the object before it gets created completely, and results
into an exception.
* Icon in the select2 drop down list was not visible due to some CSS
issues.
Apart of that, we will generate two new browser events -
'pgadmin-node:created:<NODE-TYPE>', 'pgadmin-node:updated:<NODE-TYPE>'
whenever a new node is created, or an existing node will be updated.
Also, remove the CodeMirror object for better clean up process.
When a SQL control/tab is rendered in a hidden element, it does not
render really well. Because - it rely on the height, and width of the
container to count the gutten position, and margin, and other elements.
Hence - whenever the tab, panel becomes visible, we will refresh the
control.
The current implementaton binds the cell/control object, and the ajax
data in the asychronous Cells/Controls with the 'options' functions
extended from the Select2Cell.
The problem starts when we try to fetch the current model from that
options/transform/filter function to do some operation, which does not
require in most of the cases. Except the privileges control - where we
needed the current model for omitting the existing selected object
during transformation, and filtering.
In order resolved the issue, we need a common object, which is shared
among the Cell. In backgrid, the 'Column' object is mong the cell,
hence - implementation logic has been changed to bid the 'Column' object
with the 'options' function and, passed the 'Cell' object as an
arguments.
Because - we do use the common function 'transform' between 'Control'
and 'Cell', we needed make changes in the Select2Control to pass the
Control object as an arguments.
And, make the changes in the privileges control to use the new
implementation. The same logic is also required in some of the
operations, we will be/are working on the table/column nodes.
was not honouring the change events after execution of the function -
'render' more than one time. Change the label of the Add button to make
it consistent with the Unique Collection Control.
Following are the enhancements:
1. Added border to control which was missing earlier.
2. Allows user to provide height to sql-field control by specifying extraClasses field in model schema.
3. Defined new classes for sql-field control height in overrides.css
4. Added scrollbar to the control.
Usage:
{
id: 'definition', label:'{{ _("Definition") }}', cell: 'string',
type: 'text', mode: ['create', 'edit'], group: 'Definition',
control: Backform.SqlFieldControl, extraClasses:['custom_height_css_class']
}
change events.
- In input & textarea control, call the change event on key up (but -
not on every key up events, wait for sometime before trigger that
event, so that - we do not overdo that).
- In unique/subnode control, whenever we create new model object, set
all the required static fields used by pgAdmin form generation logic.
- In NodeAjaxListCell, we don't need to call the list generation
operation (ajax operation) for each and every cell. They use the same
shared column object.
which allows to determine certain group to hide/show the whole
tab/fieldset control in the properties, and create dialog.
Using this functionality in the database for the
'default privileges - types', which is not allowed before PG < 9.2 using
the version check.
1) Unique collection control: we have added 'Edit' button in grid, earlier it was only delete button.
2) Sql field control: We have added control to disabled & visible functionality which were not available.
This patch also includes an issue related to IntegerControl, which does
not emit any error message, when it has some issues.
In order to fix the issue, it will trigger 'pgadmin-session:invalid'
event, when the input value is not an valid integer.
It will be used by the nodes like view, which require to show the code
inside as one parameter.
Also, override the events for the Backform.TextareaControl in order
handle some cases, which were not handling the change in textarea
properly in all situations.
Also, we need to show the error message around the input control with
name attribute only.
Author: Surinder Kumar (small twicks by me).
Reviewed by: Ashesh Vashi
show) for both control and cell, while generating the columns and field
Schema. And, it was resulting into wrong behaviour because of that.
Also - includes the server changes, which was using 'show' parameter
earlier for showing version, when server was connected.
NodeListByNameCell for selecting the grantee.
This patch includes:
- Change the RolePrivilegesModel schema to allow to use the
NodeListByNameCell for showing grantee, and granter information.
- When setting some value - do not use the silent flag in Select2Cell, which
will allow the session manager to take the value in account, which is
used by the NodeListByNameCell.
- Set the top object in the children of the UniqueControl collections.
[Ashesh Vashi]
- Pass on the node information to the actual data model, so that - we can use
node information by the control itself. [Ashesh Vashi]
- While adding the new privilege, set the granter to the current user.
[Ashesh Vashi]
variable control, privilege control, which specifies the keys - which
helps identify the data from the collection. Also, resolved an version
compatibility issue with the variable control.
1. NodeAjaxOtions needs to check 'version_compability' in field, and not
'ver_in_limit' variable. (Thanks Murtuza for pointing that out.)
2. Override the input control to catch the change properly in it.
3. Updated the UniqueCollectionControl and Variable Control to render
proper template in the header.
database(s), and tablespace(s).
Thanks Harshal Dhumal for sharing the original patch.
I've modified a lot to work by fetching the variables later by giving a
url.
Also,
- Introduced the template macros for SECURITY LABELS and VARIABLES.
- Improvised the Backform.Control with better syntactic approach.
- Introduced a jquery function pgMakeVisible(..) to make it visible
under any obj which can be identified by unique class.
properly.
Also, takes care of setting options to empty array, when it couldn't
fetch the options for the NodeAjaxOptionsControl.
And, generating proper url for 'msql' url in the SQL tab, when creating
new node from the same type of node.
such situation. This has been modified specifically for the children
under the schema, and catalog nodes.
Also, override the Backform.Control.prototype.render function to allow
to provide the control data to the evaluable functions (i.e. disabled,
visible, required).
of (label, value) tuple in the SelectControl.
We will apply the transform function, while rendering the control, and
not during intialization. This will allow us to generate different
options data based on the dependent values.
create/edit mode. It will fetch the modified sql using the 'msql' url
specific to that node.
Also, modified by Ashesh before committing it.
i.e. Added code comments, cleanup code for the control, etc.
- Fixed the server backend version check for any schema object.
- Fixed the switch control, it was not enable to toggle the values properly.
- Fixed the editableCell to work properly in the collection properties.
boolean values. (Modified quite a lot by Ashesh, before committing).
This patch also allow to set the header class in the backgrid through
setting 'cellHeaderClass' property of the schema object for any of the
node. It will allow us to set the different behaviour of the cell in the
list. One of the test case for it is: this will allow us to set the
different width of each column in the list using CSS class(es).
Also, resolved an issue related showing the correct server variant in
properties dialog, it is a regression introduced by the patch server
version check.
connect to the database server. Also, added modified the way, we do
check the node is supported by the server.
Instead of creating separate blueprint for the server types, they will
be independently works. In order to add different variant of the
PostgreSQL, we need to extend the ServerType class, and override the
'instanceOf' function for identification using version string. Please
take a look at the ppas.py for the example.
During checking the back-end support for the node, we will also check
the server type (variant) along with the version within the range of
maximum and minimum version for the node. And, the same support added
for the schema attributes in front-end (JavaScript).
Really thankful to Khushboo Vashi for her initial work in front-end. I
took it further from there.
during undo-redo action. Also, resolved the focus losing issue, which
closing the subnode editor using undo action.
Also, resolved an issue related to 'beforeopen' failed on server node,
due to api changes on tree events.
i.e. Switch between the tabs, opening/closing the subnode in edit mode.
Also, removed the Save, Cancel buttons from the subnode editor, it was
looking very redudant. Ctrl+Z for undo, Ctrl+Shift+Z/Ctrl+Y for Redo
shortcut will be good enough for undoing all the changes in the
properties panel.