define([ "jquery", "underscore", "utils", "classes/Extension", "folderList", "fileSystem", ], function($, _, utils, Extension, folderList, fileSystem) { var documentPanel = new Extension("documentPanel", 'Document Panel'); var fileMgr = undefined; documentPanel.onFileMgrCreated = function(fileMgrParameter) { fileMgr = fileMgrParameter; }; var folderEltTmpl = [ '', '
<%= _.size(folderDesc.fileList) %>
', ' <%= folderDesc.name %>
', '' ].join(''); var documentEltTmpl = [ '" data-file-index="<%= fileDesc.fileIndex %>">', '<%= fileDesc.composeTitle() %>', ].join(''); var panelElt = undefined; var documentListElt = undefined; var refreshPanel = function() { // List orphan documents var orphanDocumentList = _.filter(fileSystem, function(fileDesc) { return fileDesc.folder === undefined; }); // Add orphan documents var documentListHtml = _.chain(orphanDocumentList).sortBy(function(fileDesc) { return fileDesc.title.toLowerCase(); }).reduce(function(result, fileDesc) { return result + '
  • ' + _.template(documentEltTmpl, { fileDesc: fileDesc, }) + '
  • '; }, '').value(); documentListHtml = ''; // Build directories _.chain(folderList).sortBy(function(folderDesc) { return folderDesc.name.toLowerCase(); }).each(function(folderDesc) { var fileListHtml = _.chain(folderDesc.fileList).sortBy(function(fileDesc) { return fileDesc.title.toLowerCase(); }).reduce(function(result, fileDesc) { return result + _.template(documentEltTmpl, { fileDesc: fileDesc, }); }, '').value(); documentListHtml += _.template(folderEltTmpl, { folderDesc: folderDesc, fileListHtml: fileListHtml, id: folderDesc.folderIndex.replace('.', '') }); }); documentListElt.innerHTML = documentListHtml; // Add click listeners _.each(documentListElt.querySelectorAll('.file'), function(fileElt) { fileElt = $(fileElt); fileElt.click(function(e) { var fileDesc = fileSystem[fileElt.data('fileIndex')]; if(fileDesc && fileDesc !== selectedFileDesc) { fileMgr.selectFile(fileDesc); } }); }); }; documentPanel.onFileSelected = function(fileDesc) { selectedFileDesc = fileDesc; refreshPanel(); }; documentPanel.onFileCreated = refreshPanel; documentPanel.onFileDeleted = refreshPanel; documentPanel.onTitleChanged = refreshPanel; documentPanel.onSyncExportSuccess = refreshPanel; documentPanel.onSyncRemoved = refreshPanel; documentPanel.onNewPublishSuccess = refreshPanel; documentPanel.onPublishRemoved = refreshPanel; documentPanel.onFoldersChanged = refreshPanel; // Filter for search input in file selector function filterFileSelector(filter) { var liList = $(".file-selector > li"); liList.show(); if(filter) { var words = filter.toLowerCase().split(/\s+/); liList.each(function() { var fileTitle = $(this).text().toLowerCase(); if(_.some(words, function(word) { return fileTitle.indexOf(word) === -1; })) { $(this).hide(); } }); } } documentPanel.onReady = function() { panelElt = document.querySelector('.document-panel'); documentListElt = panelElt.querySelector('.list-group'); }; return documentPanel; });