-
Notifications
You must be signed in to change notification settings - Fork 0
/
organize.js
101 lines (85 loc) · 2.77 KB
/
organize.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
require([
'jquery',
'jquery.jstree',
'RootFolder',
'Folder',
'ChromeBookmarkStore',
'TagStores/UrlTagStore',
'TagStores/IntranetTagStore',
'TagStores/FileTagStore',
'TagStores/TitleTagStore',
'BookmarkTreeReader',
'FolderSorter',
'FolderStrategy/GreedyFolderStrategy',
'BookmarkTreeViewer',
'PropertySort'
], function (
$,
jstree,
rootFolderConstructor,
folderConstructor,
bookmarkStore,
urlTagStore,
intranetTagStore,
fileTagStore,
titleTagStore,
bookmarkTreeReader,
folderSorter,
folderStrategy,
bookmarkTreeViewerConstructor,
propertySort
) {
function Organize(title, tagStore, bookmarkList, forceEmptyRoot) {
var tagMap = {};
var sortedBookmarks = [];
var unsortedBookmarks = [];
bookmarkList.forEach(function (bookmark) {
var tags = tagStore.RequestTags(bookmark);
if (tags.length > 0) {
tagMap[bookmark.id] = tags;
sortedBookmarks.push(bookmark);
} else {
unsortedBookmarks.push(bookmark);
}
});
var folder = folderStrategy.OrganizeIntoFolders(sortedBookmarks, tagMap);
folder.title = title;
if (forceEmptyRoot) {
unsortedBookmarks = unsortedBookmarks.concat(folder._bookmarks);
folder._bookmarks = [];
}
return {
Folder: folder,
UnsortedBookmarks: unsortedBookmarks
};
}
function TryCategorize(title, tagStore, bookmarkList, afterRootFolder, forceEmptyRoot) {
var fileFolder = Organize(title, tagStore, bookmarkList, forceEmptyRoot);
afterRootFolder.AddFolder(fileFolder.Folder);
return fileFolder.UnsortedBookmarks;
}
bookmarkStore.GetBookmarkTree(function (bookmarkTree)
{
var beforeRootFolder = new rootFolderConstructor();
bookmarkTreeReader.readTree(bookmarkTree[0].children, beforeRootFolder);
var beforeTreeViewer = new bookmarkTreeViewerConstructor('#before', true);
beforeTreeViewer.ShowFolder(beforeRootFolder);
var bookmarkList = beforeRootFolder.GetAllBookmarks();
bookmarkList.sort(propertySort('id'));
var afterRootFolder = new rootFolderConstructor();
bookmarkList = TryCategorize('Files', fileTagStore, bookmarkList, afterRootFolder);
bookmarkList = TryCategorize('Intranet', intranetTagStore, bookmarkList, afterRootFolder);
bookmarkList = TryCategorize('Websites', urlTagStore, bookmarkList, afterRootFolder, true);
bookmarkList = TryCategorize('Category', titleTagStore, bookmarkList, afterRootFolder, true);
var unsortedFolder = new folderConstructor('Unsorted');
unsortedFolder._bookmarks = bookmarkList;
afterRootFolder.AddFolder(unsortedFolder);
folderSorter(afterRootFolder);
var afterTreeViewer = new bookmarkTreeViewerConstructor('#after', true);
afterTreeViewer.ShowFolder(afterRootFolder);
$('#UpdateBookmarks').click(function () {
bookmarkStore.CreateHierarchy(afterRootFolder);
bookmarkStore.RemoveEmptyFolders();
});
}.bind(this));
});