{"version":3,"file":"FileList.min.js","sources":["FileList.js"],"sourcesContent":["(function (w, $, _) {\r\n \r\n 'use strict';\r\n\r\n const assetId = '~/Parts/Views/File/FileList/FileList.min.js';\r\n\r\n if (!w.umwAssets || !w.umwAssets[assetId]) {\r\n console.error('No context found for ' + assetId);\r\n return;\r\n }\r\n\r\n for (let ctx of w.umwAssets[assetId]) {\r\n\r\n const $mainPanel = $('#' + ctx.mainPanelId);\r\n const allFiles = ctx.files;\r\n\r\n // Selectors\r\n const filesSourceSelector = '.js-uc200-source';\r\n const sourceItemsContainerSelector = '.js-uc200-source-body';\r\n const fileItemSelector = '.js-uc200-item';\r\n const filterInputSelector = '.js-uc200-search';\r\n const noMatchesLabelSelector = '.js-uc200-no-matches';\r\n const sortingControlSelector = '.js-uc200-sorting-selector';\r\n\r\n let filterChangedTimeout, $allFileSources, $allFileItems, $noMatchesLabel;\r\n\r\n $(function() {\r\n $allFileSources = $mainPanel.find(filesSourceSelector);\r\n $allFileItems = $mainPanel.find(fileItemSelector);\r\n $noMatchesLabel = $mainPanel.find(noMatchesLabelSelector);\r\n\r\n // Setup sorting\r\n $mainPanel.find(sortingControlSelector).change(function() {\r\n const sortBy = this.value;\r\n\r\n $allFileSources.find(sourceItemsContainerSelector).each(function() {\r\n const $sourceItemsContainer = $(this);\r\n const sortedItems = $sourceItemsContainer.find(fileItemSelector).sort(function(file1, file2) {\r\n const file1Id = $(file1).data('fileid');\r\n const file1Details = _.find(allFiles, function(file) { return file.itemId === file1Id; });\r\n const file2Id = $(file2).data('fileid');\r\n const file2Details = _.find(allFiles, function(file) { return file.itemId === file2Id; });\r\n\r\n var comparisonResult;\r\n switch (sortBy) {\r\n case '208': // Title ASC\r\n comparisonResult = file1Details.title.localeCompare(file2Details.title);\r\n break;\r\n case '209': // Title DESC\r\n comparisonResult = file2Details.title.localeCompare(file1Details.title);\r\n break;\r\n case '210': // Name ASC\r\n comparisonResult = file1Details.name.localeCompare(file2Details.name);\r\n break;\r\n case '211': // Name DESC\r\n comparisonResult = file2Details.name.localeCompare(file1Details.name);\r\n break;\r\n case '246': // Date ASC\r\n comparisonResult = Date.parse(file1Details.date) - Date.parse(file2Details.date);\r\n break;\r\n case '247': // Date DESC\r\n comparisonResult = Date.parse(file2Details.date) - Date.parse(file1Details.date);\r\n break;\r\n case '30009': // Size ASC\r\n comparisonResult = file1Details.size - file2Details.size;\r\n break;\r\n case '30010': // Size DESC\r\n comparisonResult = file2Details.size - file1Details.size;\r\n break;\r\n default: // OrderNr ASC\r\n comparisonResult = file1Details.orderNr - file2Details.orderNr;\r\n break;\r\n }\r\n\r\n return comparisonResult;\r\n });\r\n\r\n $sourceItemsContainer.html(sortedItems);\r\n });\r\n });\r\n\r\n // Setup filtering\r\n $mainPanel.find(filterInputSelector).on('keyup',\r\n function() {\r\n const filterTerm = ($(this).val() || '').toLowerCase();\r\n if (filterChangedTimeout) {\r\n w.clearTimeout(filterChangedTimeout);\r\n }\r\n\r\n filterChangedTimeout = w.setTimeout(function() {\r\n // Since there is no paging, just check and show/hide currently shown rows\r\n $allFileItems.each(function() {\r\n const $this = $(this);\r\n const fileId = $this.data('fileid');\r\n const fileDetails = _.find(allFiles, function(file) { return file.itemId === fileId; });\r\n\r\n const title = (fileDetails.title || '').toLowerCase();\r\n const name = (fileDetails.name || '').toLowerCase();\r\n const description = (fileDetails.description || '').toLowerCase();\r\n\r\n const isMatch = _.some(filterTerm.split(';'),\r\n function(termPart) {\r\n termPart = $.trim(termPart);\r\n return title.indexOf(termPart) > -1 ||\r\n name.indexOf(termPart) > -1 ||\r\n description.indexOf(termPart) > -1;\r\n });\r\n\r\n if (isMatch) {\r\n $this.show();\r\n } else {\r\n $this.hide();\r\n }\r\n });\r\n\r\n // Hide empty sources\r\n $allFileSources.each(function() {\r\n const $sourceContainer = $(this);\r\n const totalVisibleItems = $sourceContainer.find(fileItemSelector).filter(function() {\r\n return $(this).css('display') !== 'none';\r\n }).length;\r\n if (totalVisibleItems > 0) {\r\n $sourceContainer.show();\r\n } else {\r\n $sourceContainer.hide();\r\n }\r\n });\r\n\r\n // Show message if all sources are hidden\r\n if (!$allFileSources.is(':visible')) {\r\n $noMatchesLabel.show();\r\n } else {\r\n $noMatchesLabel.hide();\r\n }\r\n },\r\n 200);\r\n });\r\n });\r\n }\r\n})(window, jQuery, _)"],"names":["w","$","_","assetId","umwAssets","let","ctx","$mainPanel","mainPanelId","allFiles","files","fileItemSelector","filterChangedTimeout","$allFileSources","$allFileItems","$noMatchesLabel","find","change","sortBy","this","value","each","$sourceItemsContainer","sortedItems","sort","file1","file2","file1Id","data","file1Details","file","itemId","file2Id","comparisonResult","file2Details","title","localeCompare","name","Date","parse","date","size","orderNr","html","on","filterTerm","val","toLowerCase","clearTimeout","setTimeout","$this","fileId","fileDetails","description","some","split","termPart","trim","indexOf","show","hide","$sourceContainer","filter","css","length","is","console","error","window","jQuery"],"mappings":"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"}