Re: proposed additions to org-collector code

2022-05-01 Thread Ihor Radchenko
Charles Millar  writes:

> First, I thank Slava Barinov for his proposed patch to appending a 
> #+tblfm line to an org-collector table. Date: 17 Mar 2019 13:22:58 +0300
> Message-ID: <87sgvl4wes@gmail.com> (raw)
>
> Attached is my, in all modesty named, cm-org-collector.el in which I 
> have added code to prepend name and attribute headers to the table, for 
> example:

Thanks for sharing!

Note that org-collector is currently unmaintained.
We are looking to new maintainers for it (and other packages from
https://git.sr.ht/~bzg/org-contrib).

You appear to be actively using org-collector.
Would you be interested to take over the maintenance?

Best,
Ihor



proposed additions to org-collector code

2021-08-30 Thread Charles Millar
First, I thank Slava Barinov for his proposed patch to appending a 
#+tblfm line to an org-collector table. Date: 17 Mar 2019 13:22:58 +0300

Message-ID: <87sgvl4wes@gmail.com> (raw)

Attached is my, in all modesty named, cm-org-collector.el in which I 
have added code to prepend name and attribute headers to the table, for 
example:


* orgcollector experiment
:PROPERTIES:
:ID: test
:END:

** Heading One


** Heading two

#+BEGIN: propview :id "test" :cols (ITEM) :noquote t :defaultval "" 
:tblfm "@>$>" :tblname "That" :tblattributes "#+attr_latex: 
somethingelse" :content ""

#+name: That
#+attr_latex: somethingelse
| ITEM|
|-|
| orgcollector experiment |
| Heading One |
| Heading two |
|-|
| |
#+tblfm: @>$>
#+END:

Please note that the :content param must be set to an empty string on 
the #+BEGIN: propview line. Without doing so, upon evaluation of the 
block, the table is updated; however, the following conditions result:

(error "(user-error Not at a table)")
the #+tblfm line is not replaced but an additional #+tblfm line is 
added, and
the #+name and #+attr headers do not reflect any changes to :tblname and 
tblattributes if made in the propview line.


I realize that org-collector is an orphan and that it requires 
additional documentation. (See Bastien's comments to Slava's message.)


That said, if anyone so desires, please consider these additions, make 
all appropriate changes and corrections and patch them to 
org-coolector.el. I believe that this additional code makes 
org-collector more useful as database tool. Instead of having to add 
headers after evaluation, those headers would be inserted at the correct 
point when the propview is evaluated. The resulting table can be called 
from other code blocks. Also, the #+attr header allows, I believe, for 
exporting as desired. (I tried only a latex to pdf and it worked OK.)


I imagine other header params may be included as well.

Charlie Millar

;;; cm-org-collector --- Eric Schulte's org-collector modified to for Charlie

;; Copyright (C) 2008-2021 Free Software Foundation, Inc.

;; Author: Eric Schulte 
;; Keywords: outlines, hypermedia, calendar, wp, experimentation,
;;   organization, properties
;; Homepage: https://orgmode.org
;; Version: 0.01

;; This file is not yet part of GNU Emacs.

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see .

;;; Commentary:

;; Pass in an alist of columns, each column can be either a single
;; property or a function which takes column names as arguments.
;;
;; For example the following propview block would collect the value of
;; the 'amount' property from each header in the current buffer
;;
;; #+BEGIN: propview :cols (ITEM amount)
;; | "ITEM"  | "amount" |
;; |-+--|
;; | "December Spending" |0 |
;; | "Grocery Store" |56.77 |
;; | "Athletic club" | 75.0 |
;; | "Restaurant"|30.67 |
;; | "January Spending"  |0 |
;; | "Athletic club" | 75.0 |
;; | "Restaurant"|50.00 |
;; |-+--|
;; | |  |
;; #+END:
;;
;; This slightly more selective propview block will limit those
;; headers included to those in the subtree with the id 'december'
;; in which the spendtype property is equal to "food"
;;
;; #+BEGIN: propview :id "december" :conds ((string= spendtype "food")) :cols (ITEM amount)
;; | "ITEM"  | "amount" |
;; |-+--|
;; | "Grocery Store" |56.77 |
;; | "Restaurant"|30.67 |
;; |-+--|
;; | |  |
;; #+END:
;;
;; Org Collector allows arbitrary processing of the property values
;; through elisp in the cols: property.  This allows for both simple
;; computations as in the following example
;;
;; #+BEGIN: propview :id "results" :cols (ITEM f d list (apply '+ list) (+ f d))
;; | "ITEM" | "f" | "d" | "list"  | "(apply (quote +) list)" | "(+ f d)" |
;; |+-+-+-+--+---|
;; | "run1" |   2 |  33 | (quote (9 2 3 4 5 6 7)) | 36   |35 |
;; | "run2" |   2 |  34 | :na | :na  |36 |
;; | "run3" |   2 |  35 | :na | :na