diff --git a/web/pgadmin/tools/schema_diff/static/css/schema_diff.css b/web/pgadmin/tools/schema_diff/static/css/schema_diff.css index 93f7d32d3..98525bc2f 100644 --- a/web/pgadmin/tools/schema_diff/static/css/schema_diff.css +++ b/web/pgadmin/tools/schema_diff/static/css/schema_diff.css @@ -52,6 +52,7 @@ .slick-header-column.ui-state-default { height: 32px !important; + line-height: 25px !important; } #schema-diff-grid .grid-header label { @@ -187,3 +188,7 @@ flex-wrap: wrap; max-width: 40% !important; } + +.slick-cell .ml-2 { + margin-left: 2rem !important; +} diff --git a/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js b/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js index 51a3e970b..101cf78c6 100644 --- a/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js +++ b/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js @@ -318,7 +318,7 @@ export default class SchemaDiffUI { // Format Schema object title with appropriate icon var formatColumnTitle = function (row, cell, value, columnDef, dataContext) { let icon = 'icon-' + dataContext.type; - return '' + value + ''; + return '' + value + ''; }; // Grid Columns @@ -349,7 +349,14 @@ export default class SchemaDiffUI { getter: 'type', formatter: function (g) { let icon = 'icon-coll-' + g.value; - return '' + g.rows[0].label + ''; + let identical=0, different=0, source_only=0, target_only=0; + for (var i = 0; i < g.rows.length; i++) { + if (g.rows[i]['status'] == self.filters[0]) identical++; + else if (g.rows[i]['status'] == self.filters[1]) different++; + else if (g.rows[i]['status'] == self.filters[2]) source_only++; + else if (g.rows[i]['status'] == self.filters[3]) target_only++; + } + return '' + g.rows[0].label + ' - ' + gettext('Identical') + ': ' + identical + '  ' + gettext('Different') + ': ' + different + '  ' + gettext('Source Only') + ': ' + source_only + '  ' + gettext('Target Only') + ': ' + target_only + ''; }, aggregateCollapsed: true, lazyTotalsCalculation: true, @@ -406,6 +413,8 @@ export default class SchemaDiffUI { grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false})); grid.registerPlugin(checkboxSelector); + self.dataView.syncGridSelection(grid, true, true); + grid.onClick.subscribe(function(e, args) { if (args.row) { data = args.grid.getData().getItem(args.row); @@ -431,11 +440,13 @@ export default class SchemaDiffUI { render_grid_data(data) { var self = this; + self.grid.setSelectedRows([]); self.dataView.beginUpdate(); self.dataView.setItems(data); self.dataView.setFilter(self.filter.bind(self)); self.groupBySchemaObject(); self.dataView.endUpdate(); + self.dataView.refresh(); self.resize_grid(); } diff --git a/web/pgadmin/tools/sqleditor/utils/get_column_types.py b/web/pgadmin/tools/sqleditor/utils/get_column_types.py index 5d1483310..5484985be 100644 --- a/web/pgadmin/tools/sqleditor/utils/get_column_types.py +++ b/web/pgadmin/tools/sqleditor/utils/get_column_types.py @@ -35,13 +35,12 @@ def get_columns_types(is_query_tool, columns_info, table_oid, conn, has_oids): column_types[col['name']] = col_type if not is_query_tool: - if key in rset['rows']: - col_type['not_null'] = col['not_null'] = \ - rset['rows'][key]['not_null'] + col_type['not_null'] = col['not_null'] = \ + rset['rows'][key]['not_null'] - col_type['has_default_val'] = \ - col['has_default_val'] = \ - rset['rows'][key]['has_default_val'] + col_type['has_default_val'] = \ + col['has_default_val'] = \ + rset['rows'][key]['has_default_val'] else: for row in rset['rows']: