[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Showing Property in headline; generating table from properties;
From: |
John Kitchin |
Subject: |
Re: [O] Showing Property in headline; generating table from properties; exporting table to CSV |
Date: |
Thu, 06 Aug 2015 14:14:30 -0400 |
Matt Price writes:
> This is fantastic, but it turns out my use case is a little more complex
> than I thought & I've now bnaged my head against it for a hwile, might as
> well ask you for help!
>
> I have non-assignment level-1 headlines in my comments.org files:
>
> * Introduction
> let me explain how this system works... and here is some code to generate
> the grading templates
>
> * Assignment 1
> ** Student 1
> ** Student 2
> * Assignment 2
> ** Student 1
> ** Student 2
>
> ...etc.
>
You can limit the scope of org-map-entries to headlines that are tagged
or that have properties like this:
;; get assignments
(let ((org-use-tag-inheritance nil))
(org-map-entries
(lambda ()
(add-to-list 'assignments (nth 4 (org-heading-components)) t))
"assignment"))
;; get student names as list of cons cells
(let ((org-use-property-inheritance nil))
(org-map-entries
(lambda ()
(add-to-list 'students (cons (nth 4 (org-heading-components)) '()) t))
"MAIL_TO={edu}"))
here you rely on a headline being tagged an assignment, and a student
having a MAIL_TO property that has edu in it, and the level of each
headline is irrelevant now.
> Solution: add a tag to Assignment headlines :ASSIGNMENT and search that
> way:
>
> (setq assignments '())
> (setq students '())
>
> ;; get assignments
> (org-map-entries
> (lambda ()
> (when (member "ASSIGNMENT" (org-get-tags-at (point) 'local)) ;; (= 1
> (nth 0 (org-heading-components)))
> (add-to-list 'assignments (nth 4 (org-heading-components)) t))))
>
>
> But there are also level-2 headings that shouldn't be added to the student
> list, and I have trouble with that part:
>
> (org-map-entries
> (lambda ()
> (when (member "ASSIGNMENT" (org-element-property :tags
> (org-element-lineage (org-element-at-point) 'headline)))
> (add-to-list 'students (cons (nth 4 (org-heading-components)) '())
> t))))
>
> does not work, for instance; nor does:
>
> (org-map-entries
> (lambda ()
> (when (member "ASSIGNMENT" (org-get-tags-at (save-excursion
> (org-up-heading-safe)) 'local))
> (add-to-list 'students (cons (nth 4 (org-heading-components)) '())
> t))))
>
> What's the best way to check the tags of the parents of a headline from
> withing org-map-entries?
>
> On Thu, Aug 6, 2015 at 9:52 AM, John Kitchin <address@hidden>
> wrote:
>
>> This gets you pretty close to what you want. I changed some grades to
>> make it easier to see it is doing the right thing.
>>
>> #+BEGIN_SRC emacs-lisp
>> (setq assignments '())
>> (setq students '())
>>
>> ;; get assignments
>> (org-map-entries
>> (lambda ()
>> (when (= 1 (nth 0 (org-heading-components)))
>> (add-to-list 'assignments (nth 4 (org-heading-components)) t))))
>>
>> ;; get student names as list of cons cells
>> (org-map-entries
>> (lambda ()
>> (when (= 2 (nth 0 (org-heading-components)))
>> (add-to-list 'students (cons (nth 4 (org-heading-components)) '())
>> t))))
>>
>>
>> ;;loop over entries
>> (dolist (assignment assignments)
>> (save-excursion
>> ;; jump to assignment
>> (org-open-link-from-string (format "[[*%s]]" assignment))
>> ;; map over entries
>> (org-map-entries
>> (lambda ()
>> (let* ((student (car (assoc (nth 4 (org-heading-components))
>> students))))
>> (when student
>> (setf (cdr (assoc student students))
>> (append (cdr (assoc student students))
>> (list (org-entry-get (point) "GRADE")))))))
>> nil 'tree)))
>>
>> (setq gradebook
>> (append (list (append '("Student") assignments)
>> 'hline)
>> students))
>>
>> (orgtbl-to-csv gradebook nil)
>> #+END_SRC
>>
>> #+RESULTS:
>> : Student,Definition,Darwin
>> : Student One,10,40
>> : Student Two,20,50
>> : Student Three,30,60
>>
>>
>>
>> Matt Price writes:
>>
>> > Hello eveyrone!
>> >
>> > I know the big guns are all working on last-minute 8.3 bugs (thank you!).
>> >
>> > I am hoping to get some guidance before heading off on vacation. I have
>> > switched over to doing all grading for my courses in org. My workflow:
>> >
>> > - export a csv file containing student names.
>> > - generate grading templates for each student, for each assignment
>> > - email comments back to students
>> > - enter marks in an official spreadsheet which can be used for final
>> grade
>> > submission
>> >
>> > A sample "Comments.org" is at the bottom of this email (it was a little
>> > long).
>> >
>> > So, here are my questions:
>> >
>> > - I currently store my grades as properties of level-2 headlines.
>> However,
>> > I would really like to be able to see the grades when the headline is
>> > folded, so I can have a quick visual sense of how many papers I've
>> marked,
>> > how well the students are doing, and so forth. THe best would be to be
>> > able to see the actual marks in the headlines; but if I could, say,
>> adjust
>> > the color of the healdine based on the property value, that would be cool
>> > too.
>> >
>> > - It seems silly to record the grades once in org, and then again in a
>> > libreoffice spreadsheet. Better would be to generate a table and/or csv
>> > spreadsheet directly from the headlines and property values. So, the
>> > example below would give the table:
>> > | Student | Definition | Darwin |
>> > | Student One | 0 | 0 |
>> > | Student Two | 0 | 0 |
>> > | Student Three | 0 | 0 |
>> >
>> > and from there I guess I could generate a CSV just with org-table-export.
>> >
>> > Had anyone done either of these tasks before? Any guidance on how to do
>> > it?
>> >
>> > Thanks as always,
>> > Matt
>> >
>> > ------------------------------------------
>> > * Definition
>> > ** TODO Student One
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Definition Assignment (Student One)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> > ** TODO Student Two
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Definition Assignment (Student Two)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> > ** TODO Student Three
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Definition Assignment (Student Three)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> >
>> >
>> > * Darwin
>> > ** TODO Student One
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Darwin Assignment (Student One)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> > ** TODO Student Two
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Darwin Assignment (Student Two)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> > ** TODO Student Three
>> > :PROPERTIES:
>> > :GRADE: 0
>> > :MAIL_TO: address@hidden
>> > :MAIL_CC: address@hidden
>> > :MAIL_REPLY: address@hidden
>> > :MAIL_SUBJECT: Comments on Darwin Assignment (Student Three)
>> > :END:
>> > - Organization ::
>> > - Clarity of Thesis ::
>> > - Presentation of Evidence ::
>> > - Grammar and Spelling ::
>> > - Style ::
>> > - Citations ::
>> > - Further Comments ::
>> > - Grade ::
>> > ---------------------------------------------
>> >
>> > I have three remaining issues
>>
>> --
>> Professor John Kitchin
>> Doherty Hall A207F
>> Department of Chemical Engineering
>> Carnegie Mellon University
>> Pittsburgh, PA 15213
>> 412-268-7803
>> @johnkitchin
>> http://kitchingroup.cheme.cmu.edu
>>
--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu
Re: [O] Showing Property in headline; generating table from properties; exporting table to CSV, John Kitchin, 2015/08/06
Re: [O] Showing Property in headline; generating table from properties; exporting table to CSV, John Kitchin, 2015/08/06