* form-like process for entering rows in an org-mode table?
@ 2022-07-22 16:12 Greg Minshall
2022-09-27 21:41 ` Jean Louis
0 siblings, 1 reply; 6+ messages in thread
From: Greg Minshall @ 2022-07-22 16:12 UTC (permalink / raw)
To: emacs-orgmode
hi. does anyone have any code, or know of any existing package, that
would allow for some sort of form-like (or "transient"-like) interface
for adding rows to an org-mode table? in particular, that provides some
sort of =completing-read= interface for a given set of choices for a
given column, etc.
cheers, Greg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: form-like process for entering rows in an org-mode table?
2022-07-22 16:12 form-like process for entering rows in an org-mode table? Greg Minshall
@ 2022-09-27 21:41 ` Jean Louis
2022-09-28 3:33 ` Greg Minshall
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2022-09-27 21:41 UTC (permalink / raw)
To: Greg Minshall; +Cc: emacs-orgmode
* Greg Minshall <minshall@umich.edu> [2022-07-22 19:14]:
> hi. does anyone have any code, or know of any existing package, that
> would allow for some sort of form-like (or "transient"-like) interface
> for adding rows to an org-mode table? in particular, that provides some
> sort of =completing-read= interface for a given set of choices for a
> given column, etc.
I have total understanding for this use case, as I do similar all the
time. Just that I don't use Org tables, I use database tables.
I would complete from database like
(rcd-completing-read-sql-hash "Choose person" "SELECT people_id,
people_name FROM people" cf-db)
That would give me person to choose from.
(defun rcd-completing-read-sql-hash (prompt sql pg &optional history initial-input not-require-match auto-initial-input)
"Complete selection by using SQL.
First column shall be unique id, followed by text
representation. Example SQL query:
SELECT people_id, people_firstname || ' ' || people_lastname FROM people
PG is database handle. HISTORY is supported with INITIAL-INPUT
Argument PROMPT will be displayed to user."
(let* ((hash (rcd-sql-hash-with-key sql pg))
(completion-ignore-case t)
(require-match (if not-require-match nil t))
(history (or history (rcd-ask-history-variable prompt)))
(initial-input (or initial-input (when auto-initial-input (car (symbol-value history)))))
(choice (completing-read prompt hash nil require-match initial-input history))
(choice (string-trim choice))
(id (gethash choice hash)))
(if id id
(if not-require-match
choice))))
I find parsing text table rather difficult. If you have extensive
work, I would recommend keeping information in the database table, and
then inserting it into Org mode by using source blocks or functions.
Then I am thinking as following:
- psql command line tool has csv format among others
- pandoc can convert from csv to org
and here it is:
$ psql -A -t -X -q -c "select peoplenames_peoplename, peoplenames_peopleid as people from peoplenames where peoplenames_peoplename ~* 'minsh' limit 5;"
Greg Minshall|320418
then that CSV may be converted by using pandoc:
psql -A -t -X -q -c "select peoplenames_peoplename, peoplenames_peopleid as people from peoplenames where peoplenames_peoplename ~* 'minsh' limit 5;" | pandoc -f csv -t org
| Greg Minshall|320418 |
|----------------------|
then that may be beautified... OK not moving so well, let me try with
HTML to Org:
psql -A -t -H -q -c "select peoplenames_peoplename, peoplenames_peopleid as people from peoplenames where peoplenames_peoplename ~* 'min' limit 5;" | pandoc -f html -t org
| Ali Amini | 131 |
| Jasmin Hatipović | 187 |
| Lamin Bangura | 211 |
| Errol Anthony Flemmings | 259 |
| Carlene Cummins | 302 |
So there it is, conversion from PostgreSQL to HTML to Org. 500 people
are converted with his timing:
real 0m0.558s
user 0m0.445s
sys 0m0.121s
Let us say I wish to enter new identity from which to send emails,
letters, then I have this function:
(defun rcd-db-table-identities-insert-new-row (&optional id)
"Add new identity."
(interactive)
(when-tabulated-id "identities"
(let* ((name (rcd-ask-get "Identity name: "))
(first-name (rcd-ask-get "First name: "))
(last-name (rcd-ask-get "Last name: "))
(e-mail (rcd-ask-get "E-mail: "))
(signature (rcd-ask-or-null "Signature: "))
(signature (if signature (sql-escape-string signature) "NULL"))
(signature-file (read-file-name "File name: "))
(signature-file (if signature-file (sql-escape-string signature-file) "NULL"))
(organization (rcd-ask "Organization: "))
(organization (if organization (sql-escape-string organization) "NULL"))
(account (cf-accounts-select))
(language (rcd-db-language-select))
(sql (format "INSERT INTO identities (identities_name, identities_firstname, identities_lastname,
identities_email, identities_signature, identities_signaturefile,
identities_organization, identities_accounts, identities_languages)
VALUES ($1, $2, $3, $4, %s, %s, %s, $5, $6)"
signature signature-file organization)))
(rcd-sql sql cf-db name first-name last-name e-mail account language)
(rcd-tabulated-refresh))))
$ time psql -A -t -H -q -c "select peoplelisttypes_name from peoplelisttypes;" | pandoc -f html -t org
| Competitor |
| Integrator |
| Investor |
| Partner |
| Reseller |
| Our company |
| Accounting |
| Mailing List |
| Mobile Network Provider |
| Family |
| Default |
| Managed Company or Business |
| Country |
| Company |
| Cooperative Society |
| Business |
| Press |
| Sales Leads |
real 0m0.317s
user 0m0.302s
sys 0m0.021s
For more help let me know. Keeping stuff in the ordered database is useful.
--
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: form-like process for entering rows in an org-mode table?
2022-09-27 21:41 ` Jean Louis
@ 2022-09-28 3:33 ` Greg Minshall
2022-09-28 9:23 ` Jean Louis
0 siblings, 1 reply; 6+ messages in thread
From: Greg Minshall @ 2022-09-28 3:33 UTC (permalink / raw)
To: emacs-orgmode
Jean Louis,
> * Greg Minshall <minshall@umich.edu> [2022-07-22 19:14]:
> > hi. does anyone have any code, or know of any existing package, that
> > would allow for some sort of form-like (or "transient"-like) interface
> > for adding rows to an org-mode table? in particular, that provides some
> > sort of =completing-read= interface for a given set of choices for a
> > given column, etc.
>
> I have total understanding for this use case, as I do similar all the
> time. Just that I don't use Org tables, I use database tables.
the project that needs this has been on the back-burner for a while,
but, for the record, i have looked at "Column View" as a possible
replacement for "org tables as a database". in addition to a
completing-read interface, column view gives the opportunity to add
descriptive text to a row -- i.e., just the regular, non-property,
content under a headline -- which is very nice. but, i haven't played
with it enough to see how well it will fit my "needs".
cheers, Greg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: form-like process for entering rows in an org-mode table?
2022-09-28 3:33 ` Greg Minshall
@ 2022-09-28 9:23 ` Jean Louis
2022-09-29 7:51 ` Greg Minshall
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2022-09-28 9:23 UTC (permalink / raw)
To: emacs-orgmode
* Greg Minshall <minshall@umich.edu> [2022-09-28 06:34]:
> Jean Louis,
>
> > * Greg Minshall <minshall@umich.edu> [2022-07-22 19:14]:
> > > hi. does anyone have any code, or know of any existing package, that
> > > would allow for some sort of form-like (or "transient"-like) interface
> > > for adding rows to an org-mode table? in particular, that provides some
> > > sort of =completing-read= interface for a given set of choices for a
> > > given column, etc.
> >
> > I have total understanding for this use case, as I do similar all the
> > time. Just that I don't use Org tables, I use database tables.
>
> the project that needs this has been on the back-burner for a while,
> but, for the record, i have looked at "Column View" as a possible
> replacement for "org tables as a database". in addition to a
> completing-read interface, column view gives the opportunity to add
> descriptive text to a row -- i.e., just the regular, non-property,
> content under a headline -- which is very nice. but, i haven't played
> with it enough to see how well it will fit my "needs".
I do not know what is column view. But I understand that you need
descriptive text.
What I know is that without unique ID, there can't be conclusive
completion.
That is why I first construct various completions like this:
;; because there can be same names in different rows
(let* ((list '("Greg [1]" "Greg [2]"))
(choice (completing-read "Choose: " list)))
(rcd-get-bracketed-id-end choice)) ⇒ 2
(defun rcd-get-bracketed-id-end (s)
"Return the ID number in string S from within first brackets on its
end. For example it would return 123 from `Some string [123]'"
(let* ((match (string-match "\\[\\([[:digit:]]*\\)\\][[:space:]]*$" s)))
(when match
(string-to-number
(substring-no-properties s (match-beginning 1) (match-end 1))))))
--
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: form-like process for entering rows in an org-mode table?
2022-09-28 9:23 ` Jean Louis
@ 2022-09-29 7:51 ` Greg Minshall
2022-09-29 12:04 ` Quiliro Ordóñez
0 siblings, 1 reply; 6+ messages in thread
From: Greg Minshall @ 2022-09-29 7:51 UTC (permalink / raw)
To: emacs-orgmode
hi, Jean Louis,
> I do not know what is column view. But I understand that you need
> descriptive text.
that was my state until recently, though i had seen various references
to it and its usage on the mailing list. it at least offers some form
of completing read, at least for what might be in other contexts a "drop
down list".
it's probably at least glancing at to see if it might suit your need.
cheers, Greg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: form-like process for entering rows in an org-mode table?
2022-09-29 7:51 ` Greg Minshall
@ 2022-09-29 12:04 ` Quiliro Ordóñez
0 siblings, 0 replies; 6+ messages in thread
From: Quiliro Ordóñez @ 2022-09-29 12:04 UTC (permalink / raw)
To: emacs-orgmode
El 2022-09-29 02:51, Greg Minshall escribió:
> hi, Jean Louis,
>
>> I do not know what is column view. But I understand that you need
>> descriptive text.
>
> that was my state until recently, though i had seen various references
> to it and its usage on the mailing list. it at least offers some form
> of completing read, at least for what might be in other contexts a "drop
> down list".
>
> it's probably at least glancing at to see if it might suit your need.
It is not clear what your question is. Have you solved your problem?
If you have, please post a message describing how you did it.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-09-29 14:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-22 16:12 form-like process for entering rows in an org-mode table? Greg Minshall
2022-09-27 21:41 ` Jean Louis
2022-09-28 3:33 ` Greg Minshall
2022-09-28 9:23 ` Jean Louis
2022-09-29 7:51 ` Greg Minshall
2022-09-29 12:04 ` Quiliro Ordóñez
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).