From: Carsten Dominik <dominik@science.uva.nl>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: Org-mode <emacs-orgmode@gnu.org>
Subject: Re: Feature-Request/Question: how to apply a calc/elisp function to a column in org-column-view
Date: Thu, 9 Oct 2008 07:35:57 +0200 [thread overview]
Message-ID: <66E0395D-1DA1-49FA-B33A-B22FC186EBAD@uva.nl> (raw)
In-Reply-To: <8763o21qf6.fsf@gmail.com>
Hi Eric,
one conceivable way out would be this:
First you do create a column view that does contain all the columns
that you need, and then you use TBLFM to create additional columns
with the desired results. That will leave you with a table with all
the values you need, but with a few columns too many, right? You
could then use the orgtbl send/receive mechanism to send this table to
a different location in the same buffer. On the way you can skip the
columns you do not want, this is the :skip parameter to the orgtbl-to-
generic translator function. If that is not enough, you could write
your own translator function which does do more complex operations.
Clearly a hack, and maybe you need to ask yourself if you want to do
this kind of complex operations in Org-mode, or maybe if you are
better off to use an external, full spreasheet program for this.
A completely independent way would be to implement a separate function
that updates property values according to your formulas, so you could
create additional properties this way, *before* you cal column view to
extract the table. Such a function would be easy to write if the
formulas only connect values within a single entries, i.e. if they do
not depend on children or parent values. Such a function would be easy:
- Walk the outline tree
- At each stop check if you want to do a calculation, for example only
do it
if all properties that you need already exist.
- if yes, use org-entry-get to get the property values
- Do your calculation and put the result back into a new property.
For large outlines/tables, this is definitely going to be slow. Org
and column view are not optimized for large datasets.
HTH, for now.
- Carsten
On Oct 9, 2008, at 3:57 AM, Eric Schulte wrote:
> Hi,
>
> In columnview, I'm looking to be able to apply a calc/elisp function
> to
> a columns values before the column view is generated. This is
> specifically for columnviews captured in tables.
>
> (see info:org:Capturing column view)
>
> This has come up before, and Carsten was nice enough to make it
> possible
> to recalculate the column view automatically using an existing #+TBLFM
> line inside the columnview dynamic block.
>
> However, I would like to *replace* a column's value with a calculated
> result. This is because I am sometimes storing very *large* lists as
> properties (large enough that Emacs chokes when trying to manage
> tables
> with such large cells), and then trying to use columnview to generate
> tables of calculated properties of these lists.
>
> I realize that this is both an edge-case and a bastardization of the
> intended use of columnview, and I would be happy to put the required
> effort into implementing such a feature, but I have become tangled in
> the columnview code, and don't know where I should look to insert this
> functionality.
>
> I was thinking this should be part of either
> `org-dblock-write:columnview', or `org-columns', and then I noticed
> `org-columns-compute-all' which seemed promising but upon inspection
> was
> somewhat opaque.
>
> Could anyone familiar with org-colview.el point me in the right
> direction?
>
> Should I just abandon the use of columnview for this task, and instead
> write an independent function which sucks in the properties and spits
> out the table?
>
> Many Thanks -- Eric
>
> As a "simple" example see below, I'd like to be able to generate the
> given table using the given #+COLUMNS line (or something like it)
>
> * example
>
> #+COLUMNS: %ITEM %d %f %=f+d
> #+BEGIN: columnview :id "results"
> | ITEM | d | f | f+d |
> |-------------+----+---+-----|
> | *** Results | | | |
> | **** run1 | 33 | 2 | 35 |
> | **** run2 | 34 | 2 | 36 |
> | **** run3 | 35 | 2 | 37 |
> | **** run4 | 36 | 2 | 38 |
> #+END:
>
>
> ** Results
> :PROPERTIES:
> :ID: results
> :END:
>
> *** run1
> :PROPERTIES:
> :d: 33
> :f: 2
> :END:
>
> *** run2
> :PROPERTIES:
> :d: 34
> :f: 2
> :END:
>
> *** run3
> :PROPERTIES:
> :d: 35
> :f: 2
> :END:
>
> *** run4
> :PROPERTIES:
> :d: 36
> :f: 2
> :END:
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
prev parent reply other threads:[~2008-10-09 5:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 1:57 Feature-Request/Question: how to apply a calc/elisp function to a column in org-column-view Eric Schulte
2008-10-09 5:35 ` Carsten Dominik [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=66E0395D-1DA1-49FA-B33A-B22FC186EBAD@uva.nl \
--to=dominik@science.uva.nl \
--cc=emacs-orgmode@gnu.org \
--cc=schulte.eric@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.