mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-08-04 21:03:55 +00:00
Add sorting by tiddler lists
The tag and tagging filters now sort their results by the list field of the tag, if present
This commit is contained in:
parent
554168fcf1
commit
a9a2ae2223
@ -40,6 +40,10 @@ exports.tag = function(source,operator,options) {
|
|||||||
checkTiddler(title);
|
checkTiddler(title);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// Sort the results if we are matching a tag
|
||||||
|
if(operator.prefix !== "!") {
|
||||||
|
results = options.wiki.sortByList(results,operator.operand);
|
||||||
|
}
|
||||||
return results;
|
return results;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -411,6 +411,7 @@ exports.getShadowTitles = function() {
|
|||||||
Retrieves a list of the tiddler titles that are tagged with a given tag
|
Retrieves a list of the tiddler titles that are tagged with a given tag
|
||||||
*/
|
*/
|
||||||
exports.getTiddlersWithTag = function(tag) {
|
exports.getTiddlersWithTag = function(tag) {
|
||||||
|
// Get the list associated with the tag
|
||||||
var titles = [];
|
var titles = [];
|
||||||
for(var title in this.tiddlers) {
|
for(var title in this.tiddlers) {
|
||||||
var tiddler = this.tiddlers[title];
|
var tiddler = this.tiddlers[title];
|
||||||
@ -418,7 +419,34 @@ exports.getTiddlersWithTag = function(tag) {
|
|||||||
titles.push(title);
|
titles.push(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return titles;
|
return this.sortByList(titles,tag);
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Sorts an array of tiddler titles according to an ordered list
|
||||||
|
*/
|
||||||
|
exports.sortByList = function(array,listTitle) {
|
||||||
|
var list = this.getTiddlerList(listTitle);
|
||||||
|
if(list) {
|
||||||
|
var titles = [], t, title;
|
||||||
|
// First place any entries that are present in the list
|
||||||
|
for(t=0; t<list.length; t++) {
|
||||||
|
title = list[t];
|
||||||
|
if(array.indexOf(title) !== -1) {
|
||||||
|
titles.push(title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Then place any remaining entries
|
||||||
|
for(t=0; t<array.length; t++) {
|
||||||
|
title = array[t];
|
||||||
|
if(list.indexOf(title) === -1) {
|
||||||
|
titles.push(title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return titles;
|
||||||
|
} else {
|
||||||
|
return array;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -4,7 +4,7 @@ title: $:/core/ui/TagTemplate
|
|||||||
<$reveal state="$:/state/tagpopup" type="popup" position="below" qualifyTiddlerTitles="yes" ><div class="tw-drop-down">
|
<$reveal state="$:/state/tagpopup" type="popup" position="below" qualifyTiddlerTitles="yes" ><div class="tw-drop-down">
|
||||||
<$view field="title" format="link" />
|
<$view field="title" format="link" />
|
||||||
----
|
----
|
||||||
<$list filter="[is[current]tagging[]sort[title]]">
|
<$list filter="[is[current]tagging[]]">
|
||||||
<$view field="title" format="link" />
|
<$view field="title" format="link" />
|
||||||
</$list>
|
</$list>
|
||||||
</div></$reveal>
|
</div></$reveal>
|
||||||
|
@ -114,7 +114,7 @@ describe("Filter tests", function() {
|
|||||||
|
|
||||||
it("should handle the tagging operator", function() {
|
it("should handle the tagging operator", function() {
|
||||||
expect(wiki.filterTiddlers("[[one]tagging[]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
expect(wiki.filterTiddlers("[[one]tagging[]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
||||||
expect(wiki.filterTiddlers("[[one]tagging[]]").join(",")).toBe("TiddlerOne,Tiddler Three");
|
expect(wiki.filterTiddlers("[[one]tagging[]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
||||||
expect(wiki.filterTiddlers("[[two]tagging[]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
expect(wiki.filterTiddlers("[[two]tagging[]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
||||||
expect(wiki.filterTiddlers("[is[current]tagging[]sort[title]]","one").join(",")).toBe("Tiddler Three,TiddlerOne");
|
expect(wiki.filterTiddlers("[is[current]tagging[]sort[title]]","one").join(",")).toBe("Tiddler Three,TiddlerOne");
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
title: introduction
|
title: introduction
|
||||||
modified: 201306041707
|
modified: 201306041707
|
||||||
color: plum
|
color: plum
|
||||||
|
list: HelloThere Acknowledgements Improvements Demos [[TiddlyWiki5 Editions]] Docs DeveloperDocs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user