ADD survival project agenda view
This commit is contained in:
parent
1b8d3a5b55
commit
eb1146b79d
|
@ -2006,6 +2006,36 @@ FUTURE-LIMIT in a list."
|
||||||
(--mapcat (format-key it-category nil it) project-tasks)
|
(--mapcat (format-key it-category nil it) project-tasks)
|
||||||
(format-key it-category t it)))))
|
(format-key it-category t it)))))
|
||||||
|
|
||||||
|
(defun org-x-dag-scan-survival-projects ()
|
||||||
|
(cl-flet*
|
||||||
|
((format-result
|
||||||
|
(cat result)
|
||||||
|
(-let* (((&plist :key :status :tags) result)
|
||||||
|
(priority (alist-get status org-x-project-status-priorities)))
|
||||||
|
(when (>= priority 0)
|
||||||
|
(-when-let (goal-ids (->> (org-x-dag-id->foreign-parents key)
|
||||||
|
(--filter (org-x-dag-id->is-goal-p :survival it))))
|
||||||
|
(org-x-dag-with-id key
|
||||||
|
(let ((item (-> (org-x-dag-format-tag-node cat tags key)
|
||||||
|
(org-add-props nil
|
||||||
|
'x-toplevelp (org-x-dag-id->is-toplevel-p key)
|
||||||
|
'x-status status
|
||||||
|
'x-priority priority))))
|
||||||
|
(--map (org-add-props item nil 'x-goal-id it) goal-ids)))))))
|
||||||
|
(format-key
|
||||||
|
(cat key)
|
||||||
|
(let ((tags (org-x-dag-id->tags nil key)))
|
||||||
|
;; TODO don't hardcode these things
|
||||||
|
(org-x-dag-with-id key
|
||||||
|
(unless (member org-x-tag-incubated tags)
|
||||||
|
(-some->> (org-x-dag-id->buffer-children key)
|
||||||
|
(org-x-dag-headline-get-project-status key tags)
|
||||||
|
(--mapcat (format-result cat it))))))))
|
||||||
|
(org-x-dag-with-files (org-x-dag->action-files)
|
||||||
|
(and (org-x-dag-id->is-toplevel-p it)
|
||||||
|
(not (org-x-dag-id->is-done-p it)))
|
||||||
|
(format-key it-category it))))
|
||||||
|
|
||||||
;; (defun org-x-dag-scan-tasks-with-goals ()
|
;; (defun org-x-dag-scan-tasks-with-goals ()
|
||||||
;; (cl-flet
|
;; (cl-flet
|
||||||
;; ((split-parent-goals
|
;; ((split-parent-goals
|
||||||
|
@ -2594,5 +2624,22 @@ FUTURE-LIMIT in a list."
|
||||||
(substring-no-properties))
|
(substring-no-properties))
|
||||||
"0. Unlinked")))))))))
|
"0. Unlinked")))))))))
|
||||||
|
|
||||||
|
;; TODO this is just toplevel projects (for now)
|
||||||
|
;; TODO wetter than Seattle
|
||||||
|
(defun org-x-dag-agenda-survival-projects ()
|
||||||
|
(interactive)
|
||||||
|
(let ((match ''org-x-dag-scan-survival-projects)
|
||||||
|
(files (org-x-get-action-files)))
|
||||||
|
(nd/org-agenda-call "Survival Projects" nil #'org-x-dag-show-nodes match files
|
||||||
|
`((org-agenda-todo-ignore-with-date t)
|
||||||
|
(org-agenda-sorting-strategy '(user-defined-up category-keep))
|
||||||
|
(org-super-agenda-groups
|
||||||
|
'((:auto-map
|
||||||
|
(lambda (line)
|
||||||
|
(-if-let (i (get-text-property 1 'x-goal-id line))
|
||||||
|
(->> (org-x-dag-id->title i)
|
||||||
|
(substring-no-properties))
|
||||||
|
"0. Unlinked")))))))))
|
||||||
|
|
||||||
(provide 'org-x-dag)
|
(provide 'org-x-dag)
|
||||||
;;; org-x-dag.el ends here
|
;;; org-x-dag.el ends here
|
||||||
|
|
Loading…
Reference in New Issue