From 9379efceaea749263b82b6348a674616a69fe09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 3 Apr 2019 11:22:00 +0200 Subject: [PATCH 1/2] early testing --- .../common/services/listviewhelper.service.js | 48 +++++++++++++++++++ .../src/views/components/umb-table.html | 12 +++-- .../list/list.listviewlayout.controller.js | 4 +- 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js index 6304f4b8a0..6e820e8c33 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js @@ -397,6 +397,54 @@ } } + + + /** + * @ngdoc method + * @name umbraco.services.listViewHelper#selectAllItemsToggle + * @methodOf umbraco.services.listViewHelper + * + * @description + * Helper method for toggling the select state on all items. + * + * @param {Array} items Items to toggle selection on, should be $scope.items + * @param {Array} selection Listview selection, available as $scope.selection + */ + + function selectAllItemsToggle(items, selection) { + + if (!angular.isArray(items)) { + return; + } + + if (isSelectedAll()) { + // unselect all items + angular.forEach(items, function (item) { + item.selected = false; + }); + + // reset selection without loosing reference. + selection.length = 0; + + } else { + + // reset selection without loosing reference. + selection.length = 0; + + // select all items + angular.forEach(items, function (item) { + var obj = { + id: item.id + }; + if (item.key) { + obj.key = item.key; + } + item.selected = true; + vm.selection.push(user.id); + }); + } + + } /** * @ngdoc method diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html index befdd8ee78..cfd9ea2be4 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html @@ -7,12 +7,16 @@ + ng-checked="vm.isSelectedAll()"/> + + + + +
- Name - - + Name +
Status diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/list/list.listviewlayout.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/list/list.listviewlayout.controller.js index f26f077e66..294dd50147 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/list/list.listviewlayout.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/list/list.listviewlayout.controller.js @@ -40,8 +40,8 @@ } } - function selectAll($event) { - listViewHelper.selectAllItems($scope.items, $scope.selection, $event); + function selectAll() { + listViewHelper.selectAllItemsToggle($scope.items, $scope.selection); } function isSelectedAll() { From 2529193ca9ac05e3755409afdd5240edf13d1612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 3 Apr 2019 13:07:00 +0200 Subject: [PATCH 2/2] finished the work --- .../src/common/services/listviewhelper.service.js | 5 +++-- .../src/views/components/umb-table.html | 4 ---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js index 6e820e8c33..8aaddbf98f 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js @@ -417,7 +417,7 @@ return; } - if (isSelectedAll()) { + if (isSelectedAll(items, selection)) { // unselect all items angular.forEach(items, function (item) { item.selected = false; @@ -440,7 +440,7 @@ obj.key = item.key; } item.selected = true; - vm.selection.push(user.id); + selection.push(obj); }); } @@ -575,6 +575,7 @@ deselectItem: deselectItem, clearSelection: clearSelection, selectAllItems: selectAllItems, + selectAllItemsToggle: selectAllItemsToggle, isSelectedAll: isSelectedAll, setSortingDirection: setSortingDirection, setSorting: setSorting, diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html index cfd9ea2be4..75bce1c7a5 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-table.html @@ -4,10 +4,6 @@
-