From: tbanelwebmin <tbanelwebmin@free.fr>
To: emacs-orgmode@gnu.org
Subject: Re: help: howto aggregate several properties in one column
Date: Sun, 11 Aug 2024 22:27:48 +0200 [thread overview]
Message-ID: <6f4ba917-7c81-641e-336e-0b0ba8381fc3@free.fr> (raw)
In-Reply-To: <daabd776-0543-4e85-b907-b6b9bbe84e3f@cas.cat>
Two quick-and-dirty workarounds:
1. Eval that prior to using propview:
(setq
TEST_A "<>"
TEST_B "<>"
TEST_C "<>"
TEST_D "<>")
2. Define this helper macro:
(defmacro valof (symbol)
`(if (boundp ',symbol)
,symbol
"()"))
Then specify columns like that:
(concat (valof TEST_A) (valof TEST_B))
Have fun
Thierry
On 24-08-11 10:49, Pedro wrote:
> Hi,
>
> I am a heavy user of propview [1] and I am very happy with it, but
> looks like now I reached a limitation, or maybe someone founds a
> magical workaround. I am open to use another solution outside of
> propview.
>
> Find attached in file aggregate-props.org that serves as a playground
> environment and as an example of what I am struggling with, it is
> posed as a generic example: I want to "merge" two properties into one,
> no matter if the property exists or no. I am trying to use concat,
> concat works only when the properties on an item exist, if one of them
> does not exist, fails, which is unfortunate to what I am trying to
> achieve, because on one side, I would like to report (with a propview
> table) the frequency of appearance of each test_a, test_b, test_c,
> etc. on all nodes with tag :test:, and with another propview table, a
> summary of all test properties.
>
> There is a workaround based on a precalculation strategy that I kind
> of hate: do an org-map-entries of all targeted items with tag "test",
> and update SUMMARY property through an adhoc elisp function all the
> properties related to test (I am happy with just enumerating all of
> the involved subproperties, but I recognize, having a regex on
> property such as test_* or that "starts with" test, would be amazing),
> then, it is just as easy as adding the new column SUMMARY, but I would
> like to avoid this solution
>
> Extra note: related to propview, it is not a problem to concat 100
> elements, because you can do it in an extra shortnamed function, so
> the column name can be short
>
> So this is what happens, concat of TEST_A and TEST_B is 0
>
> #+BEGIN: propview :scope tree :match "+test" :noquote all :cols (ITEM
> CREATED TEST_A TEST_B (concat TEST_A TEST_B) (concat TEST_C TEST_D))
> | ITEM | CREATED | TEST_A | TEST_B | (concat TEST_A
> TEST_B) | (concat TEST_C TEST_D) |
> |---------+------------------------+--------+--------+------------------------+------------------------|
>
> | mytest | [2024-08-09 Fri 23:53] | a | 0
> | 0 | cd |
> | mytest2 | [2024-08-09 Fri 23:53] | 0 | b
> | 0 | cd |
> | mytest3 | [2024-08-09 Fri 23:53] | 0 | 0
> | 0 | 0 |
> |---------+------------------------+--------+--------+------------------------+------------------------|
>
> | | | | |
> | |
> #+END:
>
> What I would expect to happen is that in the concat result of TEST_A
> and TEST_B would appear a or b, maybe that could be done with another
> function?
>
> #+BEGIN: propview :scope tree :match "+test" :noquote all :cols (ITEM
> CREATED TEST_A TEST_B (concat TEST_A TEST_B) (concat TEST_C TEST_D))
> | ITEM | CREATED | TEST_A | TEST_B | (concat TEST_A
> TEST_B) | (concat TEST_C TEST_D) |
> |---------+------------------------+--------+--------+------------------------+------------------------|
>
> | mytest | [2024-08-09 Fri 23:53] | a | 0
> | a | cd |
> | mytest2 | [2024-08-09 Fri 23:53] | 0 | b
> | b | cd |
> | mytest3 | [2024-08-09 Fri 23:53] | 0 | 0
> | 0 | 0 |
> |---------+------------------------+--------+--------+------------------------+------------------------|
>
> | | | | |
> | |
> #+END:
>
> Cheers,
> pedeb
>
> [1] https://orgmode.org/worg/org-contrib/org-collector.html
>
next prev parent reply other threads:[~2024-08-11 20:28 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-11 8:49 help: howto aggregate several properties in one column Pedro
2024-08-11 20:27 ` tbanelwebmin [this message]
2024-08-12 8:46 ` Pedro
-- strict thread matches above, loose matches on Subject: below --
2024-08-10 12:13 Pedro
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
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6f4ba917-7c81-641e-336e-0b0ba8381fc3@free.fr \
--to=tbanelwebmin@free.fr \
--cc=emacs-orgmode@gnu.org \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).