{"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","file2Details","comparisonResult","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":"CAAA,SAAWA,EAAGC,EAAGC,gBAIb,IAAMC,EAAU,8CAEhB,GAAKH,EAAEI,WAAcJ,EAAEI,UAAUD,GAKjC,IAAKE,IAAIC,KAAON,EAAEI,UAAUD,GAAU,CAElC,MAAMI,EAAaN,EAAE,IAAMK,EAAIE,aACzBC,EAAWH,EAAII,MAKfC,EAAmB,iBAKzBN,IAAIO,EAAsBC,EAAiBC,EAAeC,EAE1Dd,EAAE,WACEY,EAAkBN,EAAWS,KAVL,oBAWxBF,EAAgBP,EAAWS,KAAKL,GAChCI,EAAkBR,EAAWS,KARF,wBAW3BT,EAAWS,KAVgB,8BAUaC,OAAO,WAC3C,MAAMC,EAASC,KAAKC,MAEpBP,EAAgBG,KAjBa,yBAiBsBK,KAAK,WACpD,MAAMC,EAAwBrB,EAAEkB,MAChC,IAAMI,EAAcD,EAAsBN,KAAKL,GAAkBa,KAAK,SAASC,EAAOC,GAClF,MAAMC,EAAU1B,EAAEwB,GAAOG,KAAK,UACxBC,EAAe3B,EAAEc,KAAKP,EAAU,SAASqB,GAAQ,OAAOA,EAAKC,SAAWJ,IACxEK,EAAU/B,EAAEyB,GAAOE,KAAK,UACxBK,EAAe/B,EAAEc,KAAKP,EAAU,SAASqB,GAAQ,OAAOA,EAAKC,SAAWC,IAE9E,IAAIE,EACJ,OAAQhB,GACJ,IAAK,MACDgB,EAAmBL,EAAaM,MAAMC,cAAcH,EAAaE,OACjE,MACJ,IAAK,MACDD,EAAmBD,EAAaE,MAAMC,cAAcP,EAAaM,OACjE,MACJ,IAAK,MACDD,EAAmBL,EAAaQ,KAAKD,cAAcH,EAAaI,MAChE,MACJ,IAAK,MACDH,EAAmBD,EAAaI,KAAKD,cAAcP,EAAaQ,MAChE,MACJ,IAAK,MACDH,EAAmBI,KAAKC,MAAMV,EAAaW,MAAQF,KAAKC,MAAMN,EAAaO,MAC3E,MACJ,IAAK,MACDN,EAAmBI,KAAKC,MAAMN,EAAaO,MAAQF,KAAKC,MAAMV,EAAaW,MAC3E,MACJ,IAAK,QACDN,EAAmBL,EAAaY,KAAOR,EAAaQ,KACpD,MACJ,IAAK,QACDP,EAAmBD,EAAaQ,KAAOZ,EAAaY,KACpD,MACJ,QACIP,EAAmBL,EAAaa,QAAUT,EAAaS,QAI/D,OAAOR,IAGXZ,EAAsBqB,KAAKpB,OAKnChB,EAAWS,KA9Da,oBA8Da4B,GAAG,QACpC,WACI,MAAMC,GAAc5C,EAAEkB,MAAM2B,OAAS,IAAIC,cACrCnC,GACAZ,EAAEgD,aAAapC,GAGnBA,EAAuBZ,EAAEiD,WAAW,WAE5BnC,EAAcO,KAAK,WACf,MAAM6B,EAAQjD,EAAEkB,MACVgC,EAASD,EAAMtB,KAAK,UACpBwB,EAAclD,EAAEc,KAAKP,EAAU,SAASqB,GAAQ,OAAOA,EAAKC,SAAWoB,IAEvEhB,GAASiB,EAAYjB,OAAS,IAAIY,cAClCV,GAAQe,EAAYf,MAAQ,IAAIU,cAChCM,GAAeD,EAAYC,aAAe,IAAIN,cAEpC7C,EAAEoD,KAAKT,EAAWU,MAAM,KACpC,SAASC,GAEL,OADAA,EAAWvD,EAAEwD,KAAKD,IACgB,EAA3BrB,EAAMuB,QAAQF,KACS,EAA1BnB,EAAKqB,QAAQF,KACoB,EAAjCH,EAAYK,QAAQF,KAI5BN,EAAMS,OAENT,EAAMU,SAKd/C,EAAgBQ,KAAK,WACjB,MAAMwC,EAAmB5D,EAAEkB,MAIH,EAHE0C,EAAiB7C,KAAKL,GAAkBmD,OAAO,WACrE,MAAkC,SAA3B7D,EAAEkB,MAAM4C,IAAI,aACpBC,OAECH,EAAiBF,OAEjBE,EAAiBD,SAKpB/C,EAAgBoD,GAAG,YAGpBlD,EAAgB6C,OAFhB7C,EAAgB4C,QAKxB,cAhIhBO,QAAQC,MAAM,wBAA0BhE,GAPhD,CA2IGiE,OAAQC,OAAQnE"}