From c4fdc7792286090c631f29ebac66a813ecba7ddc Mon Sep 17 00:00:00 2001 From: Florrie Date: Sat, 15 Dec 2018 11:50:46 -0400 Subject: Label showing # of items / total items in menu --- playlist-utils.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'playlist-utils.js') diff --git a/playlist-utils.js b/playlist-utils.js index f20ec98..64c1df4 100644 --- a/playlist-utils.js +++ b/playlist-utils.js @@ -175,6 +175,19 @@ function flattenGrouplike(grouplike) { } } +function countTotalItems(grouplike) { + // Returns the total number of items in a grouplike, including items in any + // descendant groups. Basically the same as flattenGrouplike().items.length. + + return grouplike.items.map(item => { + if (isGroup(item)) { + return countTotalItems(item) + } else { + return 1 + } + }).reduce((a, b) => a + b, 0) +} + function collectGrouplikeChildren(grouplike, filter = null) { // Collects all descendants of a grouplike into a single flat array. // Can be passed a filter function, which will decide whether or not to add @@ -492,7 +505,7 @@ module.exports = { updatePlaylistFormat, updateGroupFormat, updateTrackFormat, cloneGrouplike, filterTracks, - flattenGrouplike, + flattenGrouplike, countTotalItems, partiallyFlattenGrouplike, collapseGrouplike, filterGrouplikeByProperty, filterPlaylistByPathString, filterGrouplikeByPath, -- cgit 1.3.0-6-gf8a5