From 6320d065e82b9462824895f55b75d8ee9be468e7 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Sun, 15 Sep 2024 02:49:21 +0300 Subject: dashboard: Remove graph. * Creating & maintaining a graph using text characters is unnecessary. --- gnosis-dashboard.el | 57 ----------------------------------------------------- 1 file changed, 57 deletions(-) (limited to 'gnosis-dashboard.el') diff --git a/gnosis-dashboard.el b/gnosis-dashboard.el index 23a04f7..3b96348 100644 --- a/gnosis-dashboard.el +++ b/gnosis-dashboard.el @@ -143,63 +143,6 @@ Skips days where no note was reviewed." do (setq total (+ total entry))) (/ total (max (length (remove 0 entries)) 1)))) -;; TODO: Add more conds & faces -(defun gnosis-dashboard--graph-propertize (string num) - "Propertize STRING depending on the NUM of reviews." - (cond ((= num 0) - (propertize string 'face 'shadow)) - ((> num 0) - (propertize string 'face 'font-lock-constant-face)))) - -(defun gnosis-dashboard--add-padding (str-length) - "Add padding for STR-LENGTH." - (let ((padding (/ (- (window-width) str-length) 2))) - (make-string padding ?\s))) - -(defun gnosis-dashboard-reviews-graph (dates &optional ) - "Insert graph for month DATES. - -Optionally, use when using multiple months." - (let ((count 0) - (row 0) - (start-column (current-column)) - (end-column nil)) - (cl-loop for day in dates - when (= count 0) - do (let ((current-column (current-column))) - (and (< (move-to-column start-column) start-column) - ;; Add spaces to reach start-column. - (insert (make-string (- start-column current-column) ?\s)))) - (insert " ") - do (end-of-line) - (insert (gnosis-dashboard--graph-propertize (format "[%s] " (if (= day 0) "-" "x")) day)) - (cl-incf count) - when (= count 7) - do - (setq end-column (current-column)) - (setq count 0) - (insert " ") - (cl-incf row) - (end-of-line) - (when (and (/= (forward-line 1) 0) (eobp)) - (insert "\n") - (forward-line 0))) - (insert (make-string (- end-column (current-column)) ?\s)) - (insert " "))) -;; TODO: Refactor this! -(defun gnosis-dashboard-month-overview (&optional num) - "Insert review graph for MONTHS." - (gnosis-insert-separator) - (let* ((point (point)) - (month (car (calendar-current-date)))) - (insert (gnosis-dashboard--add-padding (min (* (max num 1) 50) (window-width)))) - (while (<= month (+ (car (calendar-current-date)) num)) - ;; (insert (format "%d" month)) - (gnosis-dashboard-reviews-graph (gnosis-dashboard-month-reviews month)) - (goto-char point) - (end-of-line) - (cl-incf month)))) - (defun gnosis-dashboard-output-note (id) "Output contents for note with ID, formatted for gnosis dashboard." (cl-loop for item in (append (gnosis-select '[main options answer tags type] 'notes `(= id ,id) t) -- cgit v1.2.3 From 17418b16f6fe6ac0b8e976f20c4f6fda42b4a025 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Sat, 21 Sep 2024 08:53:27 +0300 Subject: New function: dashboard-enable-mode. * Enables gnosis-dashboard-mode, when in a valid buffer. --- gnosis-dashboard.el | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'gnosis-dashboard.el') diff --git a/gnosis-dashboard.el b/gnosis-dashboard.el index 3b96348..8d06c31 100644 --- a/gnosis-dashboard.el +++ b/gnosis-dashboard.el @@ -383,6 +383,13 @@ When called with called with a prefix, unsuspend all notes of deck." gnosis-dashboard--selected-ids nil) (display-line-numbers-mode 0)) +(defun gnosis-dashboard-enable-mode () + "Enable `gnosis-dashboard-mode'. + +This should only be enabled in a gnosis dashboard buffer." + (when (string= (buffer-name) gnosis-dashboard-buffer-name) + (gnosis-dashboard-mode))) + (cl-defun gnosis-dashboard--search (&optional dashboard-type (note-ids nil)) "Display gnosis dashboard. -- cgit v1.2.3 From e40c28790923f6ce9854fd5e1019b566ff547490 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Sat, 21 Sep 2024 08:54:03 +0300 Subject: [fix] Update dashboard buffer names & issues with dashboard-mode. * Only enable gnosis-dashboard-mode in a buffer with gnosis-dashboard-buffer-name. --- gnosis-dashboard.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'gnosis-dashboard.el') diff --git a/gnosis-dashboard.el b/gnosis-dashboard.el index 8d06c31..a4332cd 100644 --- a/gnosis-dashboard.el +++ b/gnosis-dashboard.el @@ -62,6 +62,8 @@ (defvar gnosis-dashboard-note-ids nil "Store note ids for dashboard.") +(defvar gnosis-dashboard-buffer-name "*Gnosis Dashboard*") + (defvar gnosis-dashboard-search-value nil "Store search value.") @@ -194,8 +196,8 @@ Skips days where no note was reviewed." (defun gnosis-dashboard-output-notes (note-ids) "Return NOTE-IDS contents on gnosis dashboard." (cl-assert (listp note-ids) t "`note-ids' must be a list of note ids.") - (pop-to-buffer-same-window "*gnosis-dashboard*") - (gnosis-dashboard-mode) + (pop-to-buffer-same-window gnosis-dashboard-buffer-name) + (gnosis-dashboard-enable-mode) (gnosis-dashboard-notes-mode) (setf tabulated-list-format `[("Main" ,(/ (window-width) 4) t) ("Options" ,(/ (window-width) 6) t) @@ -276,8 +278,8 @@ Skips days where no note was reviewed." (defun gnosis-dashboard-output-tags (&optional tags) "Format gnosis dashboard with output of TAGS." (let ((tags (or tags (gnosis-get-tags--unique)))) - (pop-to-buffer-same-window "*gnosis-dashboard*") - (gnosis-dashboard-mode) + (pop-to-buffer-same-window gnosis-dashboard-buffer-name) + (gnosis-dashboard-enable-mode) (gnosis-dashboard-tags-mode) (setf gnosis-dashboard--current '(:type 'tags)) (setq tabulated-list-format [("Name" 35 t) @@ -312,8 +314,8 @@ Skips days where no note was reviewed." (defun gnosis-dashboard-output-decks () "Return deck contents for gnosis dashboard." - (pop-to-buffer-same-window "*gnosis-dashboard*") - (gnosis-dashboard-mode) + (pop-to-buffer-same-window gnosis-dashboard-buffer-name) + (gnosis-dashboard-enable-mode) (gnosis-dashboard-decks-mode) (setq tabulated-list-format [("Name" 15 t) ("Total Notes" 10 gnosis-dashboard-sort-total-notes)]) @@ -378,6 +380,7 @@ When called with called with a prefix, unsuspend all notes of deck." (define-derived-mode gnosis-dashboard-mode tabulated-list-mode "Gnosis Dashboard" "Major mode for displaying Gnosis dashboard." :keymap gnosis-dashboard-mode-map + :interactive nil (setq tabulated-list-padding 2 tabulated-list-sort-key nil gnosis-dashboard--selected-ids nil) @@ -494,7 +497,7 @@ DASHBOARD-TYPE: either 'Notes' or 'Decks' to display the respective dashboard." "Test function to create an editable field and a search button." (interactive) (delete-other-windows) - (let ((buffer-name "*Gnosis Dashboard*") + (let ((buffer-name gnosis-dashboard-buffer-name) (due-notes (gnosis-review-get-due-notes))) (when (get-buffer buffer-name) (kill-buffer buffer-name)) ;; Kill the existing buffer if it exists @@ -543,7 +546,7 @@ DASHBOARD-TYPE: either 'Notes' or 'Decks' to display the respective dashboard." (widget-setup)) (pop-to-buffer-same-window buffer) (goto-char (point-min)) - (gnosis-dashboard-mode) + (gnosis-dashboard-enable-mode) (gnosis-dashboard-menu)))) (provide 'gnosis-dashboard) -- cgit v1.2.3