diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py b/web/pgadmin/feature_tests/view_data_dml_queries.py index 153d796..bb9d688 100644 --- a/web/pgadmin/feature_tests/view_data_dml_queries.py +++ b/web/pgadmin/feature_tests/view_data_dml_queries.py @@ -197,9 +197,6 @@ CREATE TABLE public.defaults if data[1] == 'true': checkbox_el = cell_el.find_element_by_xpath(".//input") checkbox_el.click() - ActionChains(self.driver).move_to_element(checkbox_el).double_click( - checkbox_el - ).perform() def _tables_node_expandable(self): self.page.toggle_open_tree_item(self.server['name']) diff --git a/web/pgadmin/static/js/slickgrid/editors.js b/web/pgadmin/static/js/slickgrid/editors.js index 80f7cce..9d5986f 100644 --- a/web/pgadmin/static/js/slickgrid/editors.js +++ b/web/pgadmin/static/js/slickgrid/editors.js @@ -545,7 +545,7 @@ */ function CheckboxEditor(args) { var $select, el; - var defaultValue; + var defaultValue, previousState; var scope = this; this.init = function () { @@ -564,22 +564,31 @@ checkbox_status = 1; } switch(checkbox_status) { - // unchecked, going indeterminate + // State 0 will come when we had indeterminate state case 0: - el.prop('indeterminate', true); - el.data('checked', 2); // determines next checkbox status + // We will check now + el.prop('checked', true); + el.data('checked', 1); break; - // indeterminate, going checked + // State 1 will come when we had checked state case 1: - el.prop('checked', true); + // We will uncheck now + el.prop('checked', false); + el.data('checked', 2); + break; + + // State 2 will come when we had unchecked state + case 2: + // We will set to indeterminate state + el.prop('indeterminate', true); el.data('checked', 0); break; - // checked, going unchecked + // Default, Set to indeterminate state default: - el.prop('checked', false); - el.data('checked', 1); + el.prop('indeterminate', true); + el.data('checked', 0); } }); }; @@ -594,18 +603,21 @@ this.loadValue = function (item) { defaultValue = item[args.column.field]; + previousState = 0; if (_.isNull(defaultValue)||_.isUndefined(defaultValue)) { $select.prop('indeterminate', true); - $select.data('checked', 2); + $select.data('checked', 0); } else { defaultValue = !!item[args.column.field]; if (defaultValue) { $select.prop('checked', true); - $select.data('checked', 0); + $select.data('checked', 1); + previousState = 1; } else { $select.prop('checked', false); - $select.data('checked', 1); + $select.data('checked', 2); + previousState = 2; } } }; @@ -622,10 +634,8 @@ }; this.isValueChanged = function () { - // var select_value = this.serializeValue(); - var select_value = $select.data('checked'); - return (!(select_value === 2 && (defaultValue == null || defaultValue == undefined))) && - (select_value !== defaultValue); + var currentState = $select.data('checked'); + return currentState !== previousState; }; this.validate = function () {