summaryrefslogtreecommitdiff
path: root/elchemy-dashboard.el
diff options
context:
space:
mode:
Diffstat (limited to 'elchemy-dashboard.el')
-rw-r--r--elchemy-dashboard.el91
1 files changed, 0 insertions, 91 deletions
diff --git a/elchemy-dashboard.el b/elchemy-dashboard.el
deleted file mode 100644
index 9df76cf..0000000
--- a/elchemy-dashboard.el
+++ /dev/null
@@ -1,91 +0,0 @@
-(defun elchemy/create-dashboard (&optional RECREATE)
- "Create the user dashboard"
- (interactive)
- (let ((buffer (get-buffer-create "*Dashboard*")))
- (switch-to-buffer buffer)
- (unless (and buffer-read-only (not RECREATE))
- (read-only-mode -1)
- (erase-buffer)
- (when (file-exists-p (concat elchemy/elchemy-root elchemy/dashboard-splash))
- (insert-image (create-image (concat elchemy/elchemy-root elchemy/dashboard-splash) nil nil :scale 0.25))
- (insert "\n"))
- (let ((start (point)))
- (insert elchemy/dashboard/header-text)
- (add-text-properties start (point)
- `(face (:height ,elchemy/dashboard/header-size))))
- (insert "\n")
- (when (file-exists-p (concat elchemy/elchemy-root elchemy/elchemy-headings-file))
- (elchemy/display-tabular-button-alist
- (elchemy/read-alist-file (concat elchemy/elchemy-root elchemy/elchemy-headings-file))
- elchemy/dashboard/heading-columns elchemy/dashboard/heading-padding)
- (insert "\n"))
- (when (file-exists-p (concat elchemy/elchemy-root elchemy/elchemy-projects-file))
- (let ((start (point)))
- (insert "Projects")
- (add-text-properties start (point)
- `(face (:height ,elchemy/dashboard/subheader-size))))
- (insert "\n")
- (elchemy/display-tabular-button-alist
- (elchemy/read-alist-file (concat elchemy/elchemy-root elchemy/elchemy-projects-file))
- elchemy/dashboard/projects-columns elchemy/dashboard/projects-padding)
- (insert "\n"))
- (ignore-errors
- (setq agenda-items (mapcar #'(lambda (x) (elchemy/get-agenda-items x 3)) elchemy/dashboard-agenda-titles)
- agenda-max-count (apply 'max (mapcar #'(lambda (x) (length x)) agenda-items))
- agenda-max-length (apply 'max (mapcar #'(lambda (x) (apply 'max (mapcar #'(lambda (y) (length y)) x))) agenda-items))
- agenda-heading-format-string "")
- (let ((start (point)))
- (insert "Agenda")
- (add-text-properties start (point)
- `(face (:height ,elchemy/dashboard/subheader-size))))
- (insert "\n")
- (dotimes (_ (- (length elchemy/dashboard-agenda-titles) 1))
- (setq agenda-heading-format-string (concat agenda-heading-format-string "%-" (format "%d" (+ agenda-max-length elchemy/dashboard/agenda-padding)) "s")))
- (setq agenda-heading-format-string (concat agenda-heading-format-string "%s\n"))
- (insert (apply 'format agenda-heading-format-string elchemy/dashboard-agenda-titles))
- (dotimes (i agenda-max-count)
- (dotimes (c (length elchemy/dashboard-agenda-titles))
- (if (eq (% (+ c 1) (length elchemy/dashboard-agenda-titles)) 0)
- (insert (format "%s\n"
- (elchemy/replace-nil (nth i (nth c agenda-items)))))
- (insert (format
- (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard/agenda-padding)) "s")
- (elchemy/replace-nil (nth i (nth c agenda-items)))))
- )))
- (insert "\n")
- (let ((start (point)))
- (insert "Overdue")
- (add-text-properties start (point)
- `(face (:height ,elchemy/dashboard/subheader-size))))
- (insert "\n")
- (setq overdue-s (elchemy/format-processed-agenda (mapcar 'elchemy/process-agenda-heading (org-ql-select (org-agenda-files) `(and (todo "STRT" "WAIT" "TODO" "CYCL") (ts :from ,(- elchemy/schedule-lookahead) :to -1)) :sort '(todo priority date)))))
- (if (eq (length overdue-s) 0)
- (insert "Yay, nothing here!\n")
- (insert overdue-s))
- (insert "\n")
- (let ((start (point)))
- (insert "Upcoming")
- (add-text-properties start (point)
- `(face (:height ,elchemy/dashboard/subheader-size))))
- (insert "\n")
- (setq upcoming-s (elchemy/format-processed-agenda (mapcar 'elchemy/process-agenda-heading (org-ql-select (org-agenda-files) `(and (todo "STRT" "WAIT" "TODO" "CYCL") (ts :from today :to ,elchemy/schedule-lookahead)) :sort '(todo priority date)))))
- (if (eq (length upcoming-s) 0)
- (if (eq (length overdue-s) 0)
- (insert "You are free!\n")
- (insert "Time to work on that backlog!\n"))
- (insert upcoming-s))
- (insert "\n"))
- (insert (buttonize "Refresh" '(lambda (x) (elchemy/recreate-dashboard))))
- (insert "\n")
- (button-mode +1)
- (read-only-mode +1)
- (setq-local truncate-lines t)
- (local-set-key (kbd "r") 'elchemy/recreate-dashboard)
- (goto-char (point-min)))))
-
-(defun elchemy/recreate-dashboard ()
- "Recreate the dashboard"
- (interactive)
- (elchemy/create-dashboard t))
-
-(provide 'elchemy-dashboard)