diff --git a/index.html b/index.html
index 969bbdc..1f2c75f 100644
--- a/index.html
+++ b/index.html
@@ -305,12 +305,7 @@
var defaultExcludeFilters = [];
const filterButtonTitles = ['Exclude', 'Include'];
const filterButtonColors = ['#c82333', 'green'];
-
- $.ajax({
- async: false,
- type: 'GET',
- url: `/default-filters?token=${token}`,
- success: function(data) {
+ function applyFilters(data) {
if (data.include) {
for (let i = 0; i < data.include.length; i++) {
filters[FilterEnum.include]
@@ -325,8 +320,8 @@
defaultExcludeFilters.push(data.exclude[i].id);
}
}
+ console.log(filters);
}
- });
var previewFrame = document.getElementById("preview-frame"); // div
var hoverNode = document.getElementById("hovernode"); // iframe
@@ -410,7 +405,7 @@
} else {
$('#colormode-checkbox').bootstrapToggle('off')
}
-
+
$('#colormode-checkbox').change(function() {
if(this.checked) {
$(document.body).addClass("darkmode");
@@ -524,7 +519,26 @@
}
}
}
+ var filterSource;
setCurrentBufferSource();
+ $.get(`/default-filters?force=1&token=${token}`, function(data, status){
+ defaultExcludeFilters = []
+ defaultIncludeFilters = []
+ console.log(`Connection to /default-filters: ${status}`);
+ applyFilters(JSON.parse(data.substring(data.indexOf(':') + 1)));
+ filterSource = new EventSource(`/default-filters?token=${token}`);
+ console.log(filterSource.readyState);
+ filterSource.onmessage = function (event) {
+
+ defaultExcludeFilters = []
+ defaultIncludeFilters = []
+ filters[0].clear();
+ filters[1].clear();
+ applyFilters(JSON.parse(event.data));
+ view.refresh();
+ updateDropdown();
+ }
+ });
function debugFunction() {
}
@@ -551,7 +565,7 @@
reload();
$("#reload-button").click(function() {
- roamSource.close()
+ roamSource.close();
reload();
currentBuffer.close()
setCurrentBufferSource();
diff --git a/org-roam-server.el b/org-roam-server.el
index 930a7bc..02b1128 100644
--- a/org-roam-server.el
+++ b/org-roam-server.el
@@ -195,6 +195,12 @@ or [{ \"id\": \"test\", \"parent\" : \"tags\" }]"
:group 'org-roam-server
:type 'string)
+(defcustom org-roam-server-tags ""
+ "Option to set tags.
+Format: +tag1 -tag2 +tag3"
+ :group 'org-roam-server
+ :type 'string)
+
(defcustom org-roam-server-link-auto-replace t
"When non-nil, replace Org-roam's roam links on export."
:group 'org-roam-server
@@ -447,6 +453,21 @@ DESCRIPTION is the shown attribute to the user if the image is not rendered."
html-link org-roam-server-token desc)
(format "
" html-link desc)))))))
+(defun org-roam-server-set-tags()
+ "Process org-roam-server-tags"
+ (interactive)
+ (let* (
+ (tags (read-string "Tags: " org-roam-server-tags))
+ (tags-temp (cdr (split-string tags "\ [\+]")))
+ (plus (mapcar (lambda(a) (string-trim (car (split-string a "\ [\-]")))) tags-temp))
+ (tags-temp (cdr (split-string tags "\ [\-]")))
+ (minus (mapcar (lambda(a) (string-trim (car (split-string a "\ [\+]")))) tags-temp)))
+
+ (setq org-roam-server-default-include-filters (json-encode (mapcar (lambda (tag) (list (cons 'id tag ) (cons 'parent "tags"))) plus)))
+ (setq org-roam-server-default-exclude-filters (json-encode (mapcar (lambda (tag) (list (cons 'id tag ) (cons 'parent "tags"))) minus)))
+ (setq org-roam-server-tags tags)
+ ))
+
;;;###autoload
(define-minor-mode org-roam-server-mode
"Start the http server and serve org-roam files."
@@ -556,14 +577,16 @@ DESCRIPTION is the shown attribute to the user if the image is not rendered."
(if (not (string= org-roam-server-token token))
(httpd-error httpd-current-proc 403)))
(insert (or org-roam-server-style ":empty")))
-
-(defservlet* default-filters application/json (token)
+(setq org-roam-server-default-filters-last "")
+(defservlet* default-filters text/event-stream (token &optional force)
(if org-roam-server-authenticate
(if (not (string= org-roam-server-token token))
(httpd-error httpd-current-proc 403)))
- (insert (format "{\"include\" : %s, \"exclude\": %s}"
+ (when (or force (not (equal org-roam-server-default-filters-last org-roam-server-tags)))
+ (insert (format "data: %s\n\n" (format "{\"include\" : %s, \"exclude\": %s}"
org-roam-server-default-include-filters
org-roam-server-default-exclude-filters)))
+ (setq org-roam-server-default-filters-last org-roam-server-tags)))
(defun org-roam-server-insert-title (title)
"Insert the TITLE as `org-document-title`."