|
@@ -2950,49 +2950,48 @@
|
|
|
|
|
|
|
|
ko.bindingHandlers.hueChecked = {
|
|
ko.bindingHandlers.hueChecked = {
|
|
|
after: ['value', 'attr'],
|
|
after: ['value', 'attr'],
|
|
|
- init: function (element, valueAccessor, allBindings) {
|
|
|
|
|
- element.type = 'checkbox';
|
|
|
|
|
- element.checked = false;
|
|
|
|
|
|
|
+ init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
|
|
|
|
|
+ var selectedValues = valueAccessor();
|
|
|
|
|
+
|
|
|
|
|
+ var updateCheckedState = function () {
|
|
|
|
|
+ ko.utils.toggleDomNodeCssClass(element, 'fa-check', selectedValues.indexOf(viewModel) > -1);
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
ko.utils.registerEventHandler(element, 'click', function () {
|
|
ko.utils.registerEventHandler(element, 'click', function () {
|
|
|
- element.checked = ! element.checked;
|
|
|
|
|
- ko.utils.toggleDomNodeCssClass(element, 'fa-check', element.checked);
|
|
|
|
|
|
|
+ var currentIndex = selectedValues.indexOf(viewModel);
|
|
|
|
|
+ if (currentIndex === -1) {
|
|
|
|
|
+ selectedValues.push(viewModel);
|
|
|
|
|
+ } else if (currentIndex > -1) {
|
|
|
|
|
+ selectedValues.splice(currentIndex, 1);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
- ko.bindingHandlers.checked.init(element, valueAccessor, allBindings);
|
|
|
|
|
|
|
|
|
|
- ko.utils.toggleDomNodeCssClass(element, 'fa-check', element.checked);
|
|
|
|
|
-
|
|
|
|
|
- valueAccessor().subscribe(function () {
|
|
|
|
|
- ko.utils.toggleDomNodeCssClass(element, 'fa-check', element.checked);
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ selectedValues.subscribe(updateCheckedState);
|
|
|
|
|
+ updateCheckedState();
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
ko.bindingHandlers.hueCheckAll = {
|
|
ko.bindingHandlers.hueCheckAll = {
|
|
|
init: function (element, valueAccessor, allBindings) {
|
|
init: function (element, valueAccessor, allBindings) {
|
|
|
- var allSelected = ko.observable(false);
|
|
|
|
|
var allValues = ko.utils.unwrapObservable(valueAccessor()).allValues;
|
|
var allValues = ko.utils.unwrapObservable(valueAccessor()).allValues;
|
|
|
var selectedValues = ko.utils.unwrapObservable(valueAccessor()).selectedValues;
|
|
var selectedValues = ko.utils.unwrapObservable(valueAccessor()).selectedValues;
|
|
|
|
|
|
|
|
- ko.bindingHandlers.hueChecked.init(element, function () {
|
|
|
|
|
- return allSelected;
|
|
|
|
|
- }, allBindings);
|
|
|
|
|
-
|
|
|
|
|
- self.allTablesSelected = ko.observable(false);
|
|
|
|
|
- self.selectedTables = ko.observableArray();
|
|
|
|
|
|
|
+ var updateCheckedState = function () {
|
|
|
|
|
+ ko.utils.toggleDomNodeCssClass(element, 'fa-check', selectedValues().length === allValues().length);
|
|
|
|
|
+ ko.utils.toggleDomNodeCssClass(element, 'fa-minus hue-uncheck', selectedValues().length > 0 && selectedValues().length !== allValues().length);
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
ko.utils.registerEventHandler(element, 'click', function () {
|
|
ko.utils.registerEventHandler(element, 'click', function () {
|
|
|
- if (allSelected() && selectedValues().length == 0) {
|
|
|
|
|
|
|
+ if (selectedValues().length == 0) {
|
|
|
selectedValues(allValues().slice(0));
|
|
selectedValues(allValues().slice(0));
|
|
|
} else {
|
|
} else {
|
|
|
selectedValues([]);
|
|
selectedValues([]);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- selectedValues.subscribe(function (newValue) {
|
|
|
|
|
- allSelected(newValue.length === allValues().length);
|
|
|
|
|
- ko.utils.toggleDomNodeCssClass(element, 'fa-minus hue-uncheck', newValue.length > 0 && newValue.length !== allValues().length);
|
|
|
|
|
- })
|
|
|
|
|
- ko.utils.toggleDomNodeCssClass(element, 'fa-minus hue-uncheck', selectedValues().length > 0 && selectedValues().length !== allValues().length);
|
|
|
|
|
|
|
+ selectedValues.subscribe(updateCheckedState);
|
|
|
|
|
+ allValues.subscribe(updateCheckedState);
|
|
|
|
|
+ updateCheckedState();
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|