GithubHelp home page GithubHelp logo

elgantt's People

Contributors

legalnonsense avatar quasi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elgantt's Issues

elgantt-header-type 'hashtag not working properly

I have not been able to get (setq elgantt-header-type 'hashtag) to yield the expected results. In particular, certain headlines end up under the wrong hashtag. I have attached a slightly modified version of your test.org file with a single tree under heading Project to allow me to use column view on the whole file.

Columnview shows the following task assignments using hashtags:

ColumnView

The Gantt view by 'outline (e.g., (setq elgantt-header-type 'hashtag)) works perfectly.

header view by outline

When I set (setq elgantt-header-type 'hashtag) and reload the screen, I get

header view by hashtag

Comparing this grouping with the one from columnview shows something is wrong.

Can you please take a look? I am not sure why it is malfunctioning. I think the hashtag view is super useful because it can be used to quickly get a visual summary of human resource utilization.

I have attached my modified test.org, which I have uploaded with a .txt extension.

test.org

Filtering or selecting specific subtrees/tags only

Is it possible to limit the view, as possible in org-agenda, to

  • specific subtrees,
  • tags,
  • or task states (e.g. filter out DONE)?

Maybe via org-ql?

Btw., thanks for this cool package! I've felt for a long time that a Gantt view is missing from org-agenda.

Cannot load the lisp file(s) or some other error

If I add

(require 'elgantt)

To my .emacs file, I get the following error (debug follows)

Warning (initialization): An error occurred while loading ‘c:/Users/stran/AppData/Roaming/.emacs’:

Symbol's value as variable is void: <!DOCTYPE

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace. Disable showing Disable logging


Debugger entered--Lisp error: (void-variable <!DOCTYPE)
  load-with-code-conversion("c:/Users/stran/AppData/Roaming/.emacs.d/lisp/dash...." "c:/Users/stran/AppData/Roaming/.emacs.d/lisp/dash...." nil t)
  require(dash)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\210\300\311!\210\300\312!\207" [require cl-lib org org-duration org-element org-habit seq subr-x dash map ts] 2)
  require(org-ql)
  load-with-code-conversion("c:/Users/stran/AppData/Roaming/.emacs.d/lisp/elgan..." "c:/Users/stran/AppData/Roaming/.emacs.d/lisp/elgan..." nil t)
  require(elgantt)
  load-with-code-conversion("c:/Users/stran/AppData/Roaming/.emacs" "c:/Users/stran/AppData/Roaming/.emacs" t t)
  load("~/.emacs" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0xa685b176aee4f5c>) #f(compiled-function () #<bytecode -0x1f3c686ddc0da035>) t)
  command-line()
  normal-top-level()

I also have the following lines in .emacs, and the corresponding files as listed:

(add-to-list 'load-path' "c:Users/stran/AppData/Roaming/.emacs.d/lisp")
(add-to-list 'load-path' "c:Users/stran/AppData/Roaming/.emacs.d/lisp/elgantt")

I installed org-ql from melpa, but downloaded the ts, s and dash el files directly into the lisp directory as mentioned above.

I would SO love for this to work. Help!

Transform a org-file

First of all, thank you for sharing your work.
I want to ask if it is possible to generate a Gantt diagram from a particular org-file.
What it works is to set the org-agenda-files to the file I want to convert, but is it possible
to do this automatically?

[Feature requests] Week/ Fortnight/ Month view & ability to see dependencies from org-depend

Great piece of software! I just started using it, and it does nearly everything I need (which frankly isn't all that much for my personal projects). What I'm missing is a way to see more of the tasks that I have in the day - I have many and the view becomes difficult to navigate.

Being able to 'zoom in' and see what I'm working on this week/ fortnight/ month would be amazing.

It's much more intuitive to me when I use a Gantt chart than looking at the agenda view.

Secondly, I'm missing the ability to see dependencies on the Gantt chart. A lot of the work I do has multiple dependencies for each piece, so I can't just have a look at the chart and see what I'm missing.

Instead I have to go into the projects and re-examine the tasks I have, and then remember/ read my notes on what's needed.

Being able to just look and see what's blocking my projects would be a true godsend for my workflow (and, in true Emacs style, I'd much rather use elgantt for this than deal with non-Emacs software if possible.)

can not load elgantt and autoremove org-ql

hi,if I add the script:

(add-to-list 'load-path (concat user-emacs-directory "lisp/elgantt/")) ;; Or wherever it is located
(require 'elgantt)

It turns out that can not find the directory.

if I add the script:

  (load-file "~/.emacs.d/private/local/elgantt/elgantt.el")
  (require 'elgantt)

or

(add-to-list 'load-path (expand-file-name  "~/.emacs.d/private/local/elgantt/elgantt"))
 (require 'elgantt)

I found that it removed org-ql automatively.

This is what I config in /.spacemacs:
(load-file "
/.emacs.d/private/local/dash.el")
(load-file "/.emacs.d/private/local/s.el")
(load-file "
/.emacs.d/private/local/ts.el")
(add-to-list 'load-path (expand-file-name "~/.emacs.d/private/local/elgantt/elgantt"))
(require 'elgantt)

And also if I load dash.el spacemacs would remove dash-function automatively.
Thank you very much.

Re-using dynamic dependency definition syntax like, e.g., org-edna

Hi,

Disclaimer: I'm not a user of your elgantt yet and currently, I don't have the personal/business requirement for generating Gantt charts. However, I'd love to see a Gantt solution that I'd use in case I need it. If this solution comes with almost no additional effort, I do think that me as well as many more people would use elgantt in their daily life as an additional visualization even for smaller projects. Therefore, this discussion does not necessarily reflect your strategy for elgantt but I'd like to have discussed my ideas with you.

My personal approach for defining tasks for a project that hold dependencies would be org-edna. Although I'm a user of org-depend, for project management, I'd switch to org-edna because it offers much more features in comparison.

This way, I'd define dynamic dependencies such as:

  • task A has an estimated execution time of 3 days
    • :EFFORT: 3d property according to manual
  • when task A is finished, task B has to start immediately
    • :TRIGGER: ids(taskB) scheduled!(".") todo!(TODO) via org-edna
  • task B is estimated with 2 days
  • when task A is finished, task C should start 3 days afterwards
    • :TRIGGER: ids(taskC) scheduled!("++3d") todo!(TODO) via org-edna
  • task C is estimated with 1 day
  • and so forth.

This is all possible with standard Org + org-edna features. The big advantage is that I don't have to define specific dates for all scheduled and deadline dates/times. When task A takes longer than 3 days, the other tasks get shifted automatically.

Using your current elgantt approach (:ELGANTT-LINKED-TO:, SCHEDULED + DEADLINE), I'd have to re-schedule and "re-deadline" all tasks that are not done yet.

Therefore, my personal approach would be:

  • the proprietary property :ELGANTT-LINKED-TO: would be replaced or extended by various :TRIGGER: properties of org-edna using dynamic linking
  • SCHEDULED + DEADLINE: could be used as well but only for fixed dates because of external dependencies you can not influence

Related links:

Gantt View Limited to a Certain Heading Level (e.g., up to *** headings)

I can use column to see headings levels 1 through 2 by going into column view C-c C-x C-c and typing C-u 2 S-TAB. Using a modified version of your test.org file, I can jump between columnview of all headings and column view up to level 2.

Screen Shot 2021-08-15 at 8 36 52 AM

I can then type C-u 2 S-TAB to get

Screen Shot 2021-08-15 at 8 37 51 AM

I know it should be possible because you simply use org-ql, but I am not quite sure where in you code I could make this change. Is there a way to tell El Gantt to limit itself to headings of a certain level?

No output on elgantt-open on test file

Hi!

I have tried the test file and there's only a blank buffer (more precisely 2 blank rows of 20 columns width. First one same colour as theme background, second row a lighter shade).

The messages buffer shows "Error during redisplay: (eval (elgantt--header-line-formatter)) signaled (wrong-type-argument characterp nil) [2 times]". I'm guessing this is the problem. Can anyone help?

Best way to install?

What's the best way to install? Git clone, load file, and require?
Many thanks!

Overarching Headers Not Displaying

First of all, I really want to say I LOVE this package. I'm very thankful for all the hard work, and appreciate all of the information on making your own custom colors and functions, etc. I've actually learned a lot from your work tinkering with this package.

The only issue I'm currently running into is that the Overarching Headers aren't displaying at all, and they are set to true.

It shouldn't be a faces issue as everything else is working fine, and my theme is rather simple. I also don't have a date assigned to the topmost headers.

I know a lot of the functionality (like connected lines with hashtags) require evaluating other functions. Am I missing something on the overarching headers?

Generate a Gantt chart for any given sub-hierarchy of headings

My feature request is that - similar to many standard export Org features - elgantt can generate a chart for (1) all "elgantt-agenda-files" as you already support as well as (2) a whole Org file as #1 refers to as well as (3) a specific sub-hierarchy of headings.

Background

The reason why I do think that this is an feature worth implementing is that many people tend to follow the same strategy as I do to have only a few but rather large Org mode files. This way, I only curate one single Org mode file for everything that deals with my day job. This rather large file holds at least dozens of projects. Obviously, I would like to generate separate charts for each of them.
As far as I understood your tool, this is not possible yet.

Publish your extension to Microsoft Edge Addons website

Microsoft Edge is the second most used browser on the web, making the browsing experience more flexible, offering many more services for users and optimized for Windows devices.

Microsoft Edge supports Chromium extensions, and you can publish your extensions to Microsoft Edge Add-ons website with minimal code changes. Find out more here.

If you have any more queries about porting Chrome extension to Microsoft Edge or anything else, you can contact the relevant teams whose links are given here.

Let me know if this was helpful. I am happy to help you with more details.

How can I make my table align properly?

Starting the test file gives me this screen, which seems to not align correctly:

Screenshot 2024-04-19 at 9 30 07 PM

I've tried changing the buffer's font, but that doesn't seem to do anything.

I haven't done anything to configure the package, except to set the start date, so I could use the test file.

how to use the variable Elgantt Exclusions

Is it possible to not show the [DONE] task in gantt chart?
I have found the variable [Elgantt Exclusions] might be useful. Is it possible to have an example of using this variable?

No output, `org-ql: No headings in buffer`, and `elgantt--header-line-formatter wrong type argument characterp nil`

Recommended this project on Reddit to build a direly needed timeline, and not having any luck right now. I am using the test file, test.org, and my configuration is posted below:

;; configured time stamps to display
(setq elgantt-agenda-files "~/to/the/test/file/dir")
(setq elgantt-header-type 'outline)
(setq elgantt-timestamps-to-display `(
				      scheduled
				      deadline
				      timestamp-ia
				      timestamp-range-ia
				      )
      elgantt-header-type 'outline
      elgantt-insert-blank-line-between-top-level-header nil
      elgantt-startup-folded nil
      elgantt-draw-overarching-headers t
      elgantt-show-header-depth t
      elgantt-hide-number-line t
      elgantt-insert-header-even-if-no-timestamp t
      elgantt-skip-archives t
      elgantt-scroll-to-current-month-at-startup nil)
(setq elgantt-start-date "2019-01-01")

With the above configuration and the test file, I am receiving numerous errors attempting to get elgantt to render. I am most suspicious of the errors received from org-ql, which is the most probable culprit IMHO. First it output org-ql: Not an org file then it moved to org-ql: No headings in buffer. So, regardless of configuration changes, it has maintained a steady stream of errors.

Once I covered all my bases, setting questionable settings to what is listed as working in the repository, then came along the header-line-formatter error. The full output is:

Error during redisplay: (eval (elgantt--header-line-formatter)) signaled (wrong-type-argument characterp nil)

Which might be related to org-ql? I dunno. Just shooting in the dark, hoping I hit something meaningful.

Not seeing entries for the following year

Thanks for the very nice package. There's something I don't quite understand however: are you supposed to be able to see the entries for the following year? At the moment I only see entries up to the end of the year. Also the screenshots in the repository seem to extend only up to December.

There is the variable elgantt-start-date but I don't see anything comparable for end-date. Also, if I do have an org entry for 2021 the UI breaks down, making the package unusable. Not sure how this is related, but when that happens (have 2021 entry -> open elgantt -> see it break down) I get this message:

helm-M-x-execute-command: Symbol’s function definition is void: first.

EDIT: The helm message is due to launching elgantt with helm-M-x-execute-command obviously. When I start elgantt with M-: I get this:

Debugger entered--Lisp error: (void-function first) first((2020)) elgantt--add-year(2021) #f(compiled-function (date) #<bytecode 0x1feb040f7fd9>)("2021-01-29") mapc(#f(compiled-function (date) #<bytecode 0x1feb040f7fd9>) ("2021-01-29")) elgantt--insert-entry(( data for the 2021 entry )) mapc(elgantt--insert-entry (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...)) elgantt--iterate() elgantt-mode() elgantt-open() eval((elgantt-open) t) eval-expression((elgantt-open) nil nil 127) funcall-interactively(eval-expression (elgantt-open) nil nil 127) call-interactively(eval-expression nil nil) command-execute(eval-expression)

I'm using https://github.com/railwaycat/homebrew-emacsmacport/ .

fix elgantt-header-line-format

The header-line variable is a mess and impossible to easily customize. There should be a function or macro that allows a user to specify what properties they want to display and what spacing to provide between the properties.

Void function `first` in elgantt--draw-overarching-headers` and `elgantt--add-year`

I got the code to work, but I had to replace function first with car in various places since I kept getting errors about first being void. Alas, I could not find it defined anywhere. Maybe, it is part of the one of the dependencies, but I could not find it defined anywhere. Found the problem in the following two functions. In both, I commented the original line with ;; and added my modification below it.

(defun elgantt--add-year (year)
  "Check to see if YEAR has already been displayed in the calendar.
If so, do nothing. If not, insert that year for all calendar lines
and all header lines in the calendar, and push the year onto 
`elgantt--date-range' so that any new entries will contain the 
proper number of years."
  (when (not (memq year elgantt--date-range))
    (cond ((not elgantt--date-range)
	   (cl-pushnew year elgantt--date-range)
	   (elgantt--insert-year year))
;;	  ((< year (first elgantt--date-range))
	  ((< year (car elgantt--date-range))	   
;;	   (let ((dif (- (first elgantt--date-range) year)))
	   (let ((dif (- (car elgantt--date-range) year)))
;;	     (setq year (first elgantt--date-range))
	     (setq year (car elgantt--date-range))
	     (dotimes (_ dif)
	       (setq year (1- year))
	       (cl-pushnew year elgantt--date-range)
	       (elgantt--insert-year year))))
	  ((> year (car (last elgantt--date-range)))
	   (let ((dif (- year (car (last elgantt--date-range)))))
	     (setq year (car (last elgantt--date-range)))
	     (dotimes (_ dif)
	       (setq year (1+ year))
	       (cl-pushnew year elgantt--date-range)
	       (elgantt--insert-year year t)))))
    (setq elgantt--date-range (sort elgantt--date-range #'<))))

and

(defun elgantt--draw-overarching-headers ()
  "If the current line has no dates, draw a bracket starting at the earliest
date and continuing until the latest date."
  (elgantt--scroll-to-beginning)
  (let ((inhibit-read-only t))
    (save-excursion 
      (goto-char (point-min))
      (forward-line 1)
      (cl-loop until (progn (save-excursion (end-of-line)
					    (eobp)))
	       do (forward-line 1)
	       if (elgantt--blank-header-line-p)
	       do (let ((first-date nil)
			(last-date nil)
			(point (point))
			(current-level (elgantt--get-level-at-point)))
		    (save-excursion
		      (forward-line 1)
		      ;; HACK
		      (cl-loop until (or (elgantt--empty-line-p)
					 (<= (elgantt--get-level-at-point)
					     current-level)
					 (eobp))
			       do (progn
				    (save-excursion
				      (goto-char (point-at-bol))
				      (while (re-search-forward elgantt-cell-entry-re (point-at-eol) t)
					(forward-char -1)
					(setq first-date
;;					      (first
					      (car
					       (elgantt--sort-dates
						(-flatten (list first-date
								(elgantt-get-prop-at-point :elgantt-scheduled)
								(elgantt-get-date-at-point))))))
					(forward-char 1)))
				    (save-excursion
				      (goto-char (point-at-eol))
				      (while (re-search-backward elgantt-cell-entry-re (point-at-bol) t)
					(setq last-date
					      (car
					       (last
						(elgantt--sort-dates
						 (-flatten (list last-date
								 (elgantt-get-prop-at-point :elgantt-scheduled)
								 (elgantt-get-date-at-point)))))))))
				    (forward-line 1))
			       finally (when (and first-date
						  last-date
						  (not (string= first-date last-date)))
					 (goto-char point)
					 (cl-loop with end = (1- (elgantt--goto-date last-date))
						  with start = (elgantt--goto-date first-date)
						  for x from start to end
						  if (= x start)
						  do (progn (when (not (looking-at "|"))
							      (elgantt--change-char elgantt-draw--top-left))
							    (forward-char 1))
						  else do (progn (when (not (looking-at "|"))
								   (elgantt--change-char elgantt-draw--horizontal-line))
								 (forward-char 1))
						  finally (elgantt--change-char  elgantt-draw--top-right))))))))))

Thanks for the package

I've just wanted to thank you for sharing this package.
Exactly what I was looking for.

BTW, for the test.org file, you might want to add elgantt-start-date "2020-01-01" to the documentation as it is takes 2021 as default. I thought I couldn't install the package correctly but it was the start-date.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.