Hi,
PFA patch to fix the issue in boolean editor & also corrected feature test.
RM#2848
--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
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 () {