Agreed that we can at least standardize the ordering. I don't think it
should be strict, but a warning seems reasonable. Ditto with
attributes that aren't supported by all tools.
Martjin? Matt? You guys have been quiet. Thoughts on how we support
attributes going forward?
Chris raises an interesting issue.
I think, however, that we want to be able to easily add columns to
XLSForm,
and Yaw's suggestion is a good one.
We need to be able to add attributes to at least the bind element,
and I
would argue we should allow them on the input element as well.
The odk:length, constraintMsg and requiredMsg are all on the bind,
and
don't
make sense to attach to the input element via the appearance. They
belong on
the bind.
For Enketo and other tools that are trying to render the forms more
freely
and leverage the power of HTML and CSS, I would argue that the
appearance
attribute is too constraining. We should allow new attributes to be
added to
the input element for easier extension and development of these
tools. I
could imagine wanting to define body::style on them, for example.
And then there are things like the accuracy threshold for geopoints.
These
aren't constraints on the value, since a location can always be
accepted
early by the user, so they should be tied to the input element, but
they
don't affect appearance; they affect behavior. So it is awkward to
stuff
them in the appearance attribute. Other examples might be resolution
settings for image capture and video capture, or specifications of
image,
audio, or video formats. But,given the external intent launching
mechanism
that exists within the appearance attribute, and its support of
argument
lists, perhaps these behavioral settings, that are currently separate
attributes, should be moved into the argument list of the appearance
(e.g.,
appearance="maps(1.5)" instead of appearance="maps"
accuracyThreshold="1.5"). The downside of placing everything in the
appearance is that you lose the readability of the XML -- you need to
refer
to our spec documents to know what 1.5 does, whereas having a
separate
attribute provides some self-documentation.
I don't think it is reasonable to freeze the spec and allow no new
attributes. Several years ago, I modified the original JR library to
allow
new attributes specifically because it didn't allow attributes like
odk:length on the bind.
To Chris' point, however, we might need a .NET app or other tool that
will
unify the order and set of columns between two or more XLS forms, so
that
cutting-and-pasting will then work. And we should be clearer when we
update
our example XLS forms so that we clearly communicate the changes
across
those versions. It would also be useful if we could collectively
adopt
an
agreed-upon order of columns for all of our examples, and make them
all
consistent, just to eliminate this point of confusion.
Mitch
On Wed, Jul 16, 2014 at 6:02 PM, Christopher Robert cro...@surveycto.com wrote:
One argument against new-columns-for-new-attributes is that it makes
it
hard to have a single "template" that people can use for multiple
surveys.
At SurveyCTO, we early on established the norm that we'd provide
form
templates and users would fill them in -- without having to add
columns. And
then we made sure that every one of our samples used the same
template.
The
reason was this: everybody wants to copy and paste between surveys
(more or
less all the time) and this leads to enormous difficulties when the
set
and
order of columns isn't shared between the different surveys. We
estimate
that a large proportion of users' debugging time can easily go into
debugging copy-paste problems that are themselves the result of
differing
column sets or orders. And that's just a terrible shame. Thus, the
attempt
to stamp out those errors with a single template.
Now, granted, comma-delimited lists of name-value pairs is maybe
hard
for
users to construct and debug. What if we had a series of pre-set
property
columns like property-name1, property-value1, property-name2, and so
on?
Actually, pyxform would only need to support property-name* and
property-value*, and it would be up to crazy people like us to build
templates with a pre-fab set of them for users to fill in. But
actually, it
would also be wonderful if people could easily copy and paste
between
ODK,
formhub, Ona, Enketo, and SurveyCTO surveys... so if others wanted
to
jump
on the "master template" idea, we could settle on a default or
example
template that has the same set and order of columns across our
different
systems. I think that everybody would benefit.
Obviously, the XML format is naturally better at supporting ad-hoc
attributes. I'm just trying to imagine what works well in the
spreadsheet
format.
Best,
Chris
On Wed, Jul 16, 2014 at 7:16 PM, Yaw Anokwa yan...@nafundi.com wrote:
I still want there to be new columns, but we don't have to hard
code
them into pyxform.
Attributes can appear in the instance, bind, and in the body, so my
proposal is to have three new column headers that a user can add if
they want a new attribute. So, instance::$x, bind::$x, and body::$x
So for the autocomplete example, that appears in the bind, so you'd
add a column with bind::saveIncomplete. And in the row, you'd put
true().
Then pyxform would know to generate this:
You could also then add another column with bind::myAttribute, and
then the XML would look like:
Again, we are adding new columns to the XLS, but we don't have to
also
add them to the pyxform code.
I think having one properties column where everything is separated
by
commas seems more fragile and harder to debug.
On Wed, Jul 16, 2014 at 10:41 AM, Matt Berg mlb...@gmail.com wrote:
Can you elaborate with an xlsform example of how this would work.
Instead of adding new columns we cooked add a properties column
and
have
these be comma delimited or something like that.
On Jul 16, 2014 2:56 PM, "Yaw Anokwa" yan...@nafundi.com wrote:
Hi all,
We've added true auto save to Collect. This feature was needed
because
we have a client who needs to save as incomplete at a particular
point
in the form before launching an external widget.
The XML looks like this:
Before we push this code to trunk, we want to add support for it
in
XLSForm. The obvious way to do this is to add a new column, but
I
don't think it's sustainable in the long run for every attribute
we
might want to add.
I wanted to bring this discussion to the community to solicit
ideas.
Is the status quo of adding a named column what we want? Or do
we
want
a more generic solution?
For example, any column with body::x as a header would insert x
as
an
attribute in the body XML? And bind::y would insert y as in
attribute
in the bind XML.
Good idea? Terrible idea?
Yaw
Need ODK services? http://nafundi.com provides form design,
server
setup, professional support, and software development for ODK.
--
You received this message because you are subscribed to the
Google
Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from
it,
send
an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the
Google
Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it,
send
an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it,
send
an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it,
send
an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
Mitch Sundt
Software Engineer
University of Washington
mitche...@gmail.com
--
You received this message because you are subscribed to the Google
Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it,
send
an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.