// Generated by CoffeeScript 1.10.0 (function() { var breadcrumb, bttf_cover, cd, cd__, cut_path, cwd, documents, files_container, index_n_sort, movies, music, open_folders, photos, pictures, ramona, redraw, root, subfolders_container, up; ramona = { id: 0, name: 'ramona flowers.png', type: 'image' }; bttf_cover = { id: 1, name: 'Back to the Future - Cover.jpg', type: 'image' }; photos = { id: 10, name: 'Photos', subfolders: [], files: [] }; pictures = { id: 2, name: 'Pictures', subfolders: [photos], files: [ ramona, { id: 9, name: 'chibi miku.jpg', type: 'image' }, bttf_cover ] }; movies = { id: 3, name: 'Movies', subfolders: [], files: [ { id: 6, name: 'Back to the Future.mkv', type: 'video' }, bttf_cover ] }; documents = { id: 4, name: 'Documents', subfolders: [photos], files: [ ramona, { id: 12, name: 'money money money.txt', type: 'text' }, { id: 13, name: 'pitfalls.pdf', type: 'pdf' } ] }; music = { id: 14, name: 'Music', subfolders: [], files: [ { id: 15, name: 'Tell your world (初音ミク).mp3', type: 'audio' }, { id: 16, name: 'Surrounded (Dream Theater).mp3', type: 'audio' } ] }; root = { id: 5, subfolders: [pictures, movies, documents, music], files: [ { id: 7, name: 'vmlinuz' } ] }; index_n_sort = function(node) { if (node.index != null) { return; } node.index = {}; node.subfolders.forEach(function(sf) { return node.index[sf.name] = sf; }); node.files.forEach(function(f) { return node.index[f.name] = f; }); node.subfolders.sort(function(a, b) { return d3.ascending(a.name, b.name); }); node.files.sort(function(a, b) { return d3.ascending(a.name, b.name); }); return node.subfolders.forEach(function(sf) { return index_n_sort(sf); }); }; index_n_sort(root); open_folders = [root]; cd = function(sf_name) { open_folders.push(open_folders[open_folders.length - 1].index[sf_name]); return redraw(); }; cd__ = function() { if (open_folders.length > 1) { open_folders.pop(); return redraw(); } }; cut_path = function(folder) { if (open_folders.length === 1 || open_folders[open_folders.length - 1].id === folder.id) { redraw(); return; } open_folders.pop(); return cut_path(folder); }; cwd = d3.select('#cwd'); subfolders_container = cwd.append('div'); files_container = cwd.append('div'); up = d3.select('#up_btn'); breadcrumb = d3.select('#breadcrumb'); up.on('click', function() { return cd__(); }); redraw = function() { var cwd_data, enter_files, enter_previews, files, path_items, subfolders; cwd_data = open_folders[open_folders.length - 1]; subfolders = subfolders_container.selectAll('.subfolder').data(cwd_data.subfolders, function(d) { return d.id; }); subfolders.enter().append('div').attr({ "class": 'subfolder node' }).html(function(d) { return ' ' + d.name; }).on('click', function(d) { return cd(d.name); }); subfolders.exit().remove(); subfolders.order(); files = files_container.selectAll('.file').data(cwd_data.files, function(d) { return d.id; }); enter_files = files.enter().append('div').attr({ "class": 'file node' }); enter_previews = enter_files.append('div').attr({ "class": 'preview' }); enter_previews.each(function(d) { if (d.type === 'image') { return d3.select(this).style({ 'background-image': "url(" + (encodeURI(d.name)) + ")" }); } else { return d3.select(this).html(function(d) { return ""; }); } }); enter_files.append('div').attr({ "class": 'filename' }).html(function(d) { return "" + d.name + ""; }); files.exit().remove(); files.order(); path_items = breadcrumb.selectAll('.path_item').data(open_folders, function(d) { return d.id; }); path_items.enter().append('div').attr({ "class": 'path_item' }).html(function(d) { return '' + (d.name != null ? d.name : 'Home' + ''); }).on('click', function(d) { return cut_path(d); }); return path_items.exit().remove(); }; redraw(); }).call(this);