Skip to content

Commit 6954dbf

Browse files
committed
Add an option to sort files by name/type
1 parent 6b647e6 commit 6954dbf

8 files changed

+1464
-1449
lines changed

javascript/app/components/file-tree.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,47 @@ const containsHaskellModule = function(node) {
3535
});
3636
}
3737

38+
const fileExtension = function (filename) {
39+
const idx = filename.lastIndexOf('.');
40+
return (idx < 1) ? "" : filename.substr(idx + 1);
41+
}
42+
3843
export default Ember.Component.extend({
3944
query: null,
45+
sortType: "alphabetical",
46+
sortTypeObserver : Ember.observer('sortType',function() {
47+
Ember.run.next(this,() => {
48+
this.jstree.refresh();
49+
});
50+
}),
4051
didInsertElement : function () {
4152
this._super(...arguments);
4253
const element = this.element.getElementsByClassName('file-tree')[0];
54+
const component = this;
4355

4456
const jstreeElement = Ember.$(element).jstree({
4557
'core' : {
4658
'data' : directoryTreeToJsTree(this.get('packageId'),this.get('directoryTree'))
4759
},
4860
"plugins" : [
49-
"search"
61+
"search",
62+
"sort"
5063
],
5164
"search": {
5265
"case_insensitive": true,
5366
"show_only_matches" : true,
5467
"show_only_matches_children": true
68+
},
69+
'sort' : function (a,b) {
70+
const node1 = this.get_node(a).data;
71+
const node2 = this.get_node(b).data;
72+
if(component.get("sortType") === "alphabetical") {
73+
return node1.name > node2.name;
74+
} else {
75+
const extendedName1 = (node1.tag === "Dir" ? "0" : "1") + fileExtension(node1.name) + node1.name;
76+
const extendedName2 = (node2.tag === "Dir" ? "0" : "1") + fileExtension(node2.name) + node2.name;
77+
return extendedName1 > extendedName2;
78+
}
5579
}
5680
});
5781

javascript/app/styles/app.scss

+2-2
Original file line numberDiff line numberDiff line change
@@ -477,13 +477,13 @@ ul.autocomplete-items {
477477
top:0;
478478
left:0;
479479
right:0;
480-
height:50px;
480+
height:65px;
481481
margin:5px;
482482
}
483483

484484
.file-tree-content {
485485
position:absolute;
486-
top:50px;
486+
top:70px;
487487
left:0;
488488
right:0;
489489
bottom:0;

javascript/app/templates/components/file-tree.hbs

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22
<div class="input-group">
33
{{input class="form-control" value=query placeholder="Filename"}}<a class="hide-file-tree" href="#" {{action "hide"}}>Hide</a>
44
</div>
5+
<div>
6+
{{#radio-button
7+
value="alphabetical"
8+
groupValue=sortType}}
9+
<span>Sort by name</span>
10+
{{/radio-button}}
11+
{{#radio-button
12+
value="type"
13+
groupValue=sortType}}
14+
<span>Sort by type</span>
15+
{{/radio-button}}
16+
</div>
517
</div>
618
<div class="file-tree-content">
719
<div class="file-tree"></div>

javascript/release/assets/haskell-code-explorer-19079cde21bf9ef72bfcdf717db9fdb8.css

-6
This file was deleted.

javascript/release/assets/haskell-code-explorer-717832df8786392c9b8a9bd8010463d2.css

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

javascript/release/assets/haskell-code-explorer-580feffefaa893bb3f63fd622016179c.js renamed to javascript/release/assets/haskell-code-explorer-cad5fb9792387f6cfc24f131065ceaab.js

+78-74
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

javascript/release/assets/vendor-d4b94e799d060c228d5d738458f6246a.js renamed to javascript/release/assets/vendor-50f07db367a389f7f8439a88095598a3.js

+1,337-1,362
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

javascript/release/index.html

+4-4
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)