There is a couple of little problem with the script : one have been
corrected by someone post... Look at Raymond on 9/2/10 12:11 AM

The other problem, actually not a problem, but it could be much more fun for
user to be able to erase only the added line they mistake on...

So having a button erase on the side of every added row.

It pretty much like Gmail contact interface...

The last thing I would like is to be able to add more then only one
subfield. For example, if I have

Client
Name

Address
Street
City

I would have form like this

Name :
Street | City
emptyboxstreetrow1 | emptyboxcityrow1 trashcan button
emptyboxstreetrow2 | emptyboxcityrow2 trashcan button

I guest it could be easier like this in the first place :

Name :
        Street :
        City :
        Street :
        City :
        etc.


Here the SQLFORM.factory doc link that should be the way to generate the
basic form that can then be modify by Charlie's script


http://www.web2py.com/book/default/chapter/07#SQLFORM.factory

Richard

On Mon, Jan 17, 2011 at 1:56 PM, mart <msenecal...@gmail.com> wrote:

> yes, I see what you mean... that is interesting... Now, you have me
> wanting to look into that too ;) Could be very useful as a plugin (or
> ready made snippet of code), you are right with that.
>
> Mart :)
>
> On Jan 17, 1:08 pm, Richard Vézina <ml.richard.vez...@gmail.com>
> wrote:
> > Not exactly what I seaching for...
> >
> > As far as I understand... It only let you simplified code by isolated
> > repetitive piece of model code. Since it's only create one table I can't
> > have a normalized schema.
> >
> > I would do something like this :
> >
> > http://charlie.griefer.com/blog/index.cfm/2009/9/17/jQuery--Dynamical...
> > see
> > demo link in page
> >
> > This snippet seems much more interresting since you can even pick the
> type
> > of input field you want to create :
> http://www.randomsnippets.com/2008/02/21/how-to-dynamically-add-form-...
> > second
> > example
> >
> > This can let me insert the other form field (or subform) in my first form
> > then I could use jQuery to add more row in my second table or subform...
> But
> > I have 2 submit buttons and I will have to set the ID of the first form
> as a
> > foreigh key for the second form or table manually :
> http://www.mail-archive.com/web2py@googlegroups.com/msg31293.html
> >
> > Richard
> >
> > On Mon, Jan 17, 2011 at 8:46 AM, Richard Vézina <
> ml.richard.vez...@gmail.com
> >
> >
> >
> >
> >
> >
> >
> > > wrote:
> > > Thanks Mart... I read back my mail and my english was terrible. ;-)
> >
> > > I thought about it after sent the mail and I realise that subform seems
> > > what I was searching for.
> >
> > >  I will try what you propose and give feedback here.
> >
> > > Richard
> >
> > > On Sun, Jan 16, 2011 at 10:43 PM, mart <msenecal...@gmail.com> wrote:
> >
> > >> You know, I discovered a week or 2 ago a way to make a form appear to
> > >> have sub-forms (or sub-templates). Massimo's 'Audit Trail' (i think I
> > >> saw it on web2pyslices) serves this purpose extremely well. To that,
> > >> it becomes very easy to write scripts to generate all sorts of
> > >> combinations of tables that exist to those that can be generated
> > >> dynamically. Anyways, from the Audit trail idea, I made a "requests
> > >> app", that serves many different categories and types of requests,
> > >> where forms can be created/generated on the fly.
> >
> > >> If I were doing something like you described, I would probably try
> > >> something like this
> >
> > >> test_1=db.Table(None,'test_1',
> > >>     Field('results','??????')
> > >>    Field('whomadethetest','string'),
> > >>    Field('date','date'))
> >
> > >> test_2=db.Table(None,'test_2',
> > >>     Field('results','??????')
> > >>    Field('whomadethetest','string'),
> > >>    Field('date','date'))
> >
> > >> then you could do this (or have scripts generate it):
> >
> > >> db.define_table('result',
> > >>    Field('length','integer'),
> > >>    Field('width','integer'),
> > >>     Field('result','integer'),
> > >>    test_1)
> >
> > >> or
> >
> > >> db.define_table('result',
> > >>    Field('length','integer'),
> > >>    Field('width','integer'),
> > >>     Field('result','integer'),
> > >>    test_1,
> > >>    test2)
> >
> > >> or just the test results:
> >
> > >> db.define_table('result',test_1,test2)
> >
> > >> etc...
> >
> > >> Hope it helps,
> > >> Mart :)
> >
> > >> On Jan 16, 4:38 pm, Richard Vézina <ml.richard.vez...@gmail.com>
> > >> wrote:
> > >> > Hello,
> >
> > >> > Let me expose my problem. I have a test (experience test that I made
> in
> > >> lab)
> > >> > that I have to redo many time. At time point 1 there is only one
> result,
> > >> but
> > >> > at the other time point the is one more result to store each time.
> So at
> > >> > time point 2 there is two results, at time point 3 there is 3
> results
> > >> and so
> > >> > on.
> >
> > >> > Since the number of time point is not fixed I can create a given
> number
> > >> of
> > >> > columns to handle this probleme in a not normalized way. Say fill
> with
> > >> null
> > >> > the empty columns when the results are not available for a
> particular
> > >> record
> > >> > (or a given time point).
> >
> > >> > To normalize the schema I can do :
> >
> > >> > db.define_table('result',
> > >> >     Field('length','integer'),
> > >> >     Field('width','integer'),
> > >> >     Field('result','integer'))
> >
> > >> > db.define_table('test1',
> > >> >     Field('results','list:integer result')
> > >> >     Field('whomadethetest','string'),
> > >> >     Field('date','date'))
> >
> > >> > db.test1.results.requires = IS_IN_DB(db,'result.id',db.
> > >> > result._format,multiple=True)
> >
> > >> > I could add my result one by one in the result table and then pick
> them
> > >> > up...
> >
> > >> > But I would do something sexier then that.
> >
> > >> > I would like to be able to add any number of record by adding the
> row of
> > >> > result table in the same form of test1 table.
> >
> > >> > So my model should be :
> >
> > >> > db.define_table('test1',
> > >> >     Field('results','??????')
> > >> >     Field('whomadethetest','string'),
> > >> >     Field('date','date'))
> >
> > >> > db.define_table('result',
> > >> >     Field('length','integer'),
> > >> >     Field('width','integer'),
> > >> >     Field('result','integer'),
> > >> >     Field('test1_id','db.test1')
> >
> > >> > I have now a 1:n relation that is stored in result table.
> >
> > >> > I would build a widget that let insert all the fields of an other
> table
> > >> row
> > >> > by row. So if I have one result generated at time point 1 there will
> be
> > >> one
> > >> > row in my form. But if I am a later time point there will have 2
> rows
> > >> for
> > >> > time point 2 and 3 for time point 3, etc.
> >
> > >> > It could has a button to add more empty row that could be filled
> out.
> >
> > >> > I read an search a lot. I found web2py_component that could be of
> some
> > >> > utility, but I am not sure since it seams to work with form in a
> global
> > >> > manner and not support field. SQLFORM.factory look the way to go
> before
> > >> > build the whole thing from scratch with form...
> >
> > >> > If any of you have a android phone, I would make a form that looks
> and
> > >> works
> > >> > like the contact app. You can add any number of phone number for the
> > >> same
> > >> > contact by pressing + button to add an other empty box (field).
> >
> > >> > Do I must made a custom widget (widget seams to be reserved to a
> single
> > >> form
> > >> > processing), build custom form with helpers, or could
> SQLFORM.factory is
> > >> > enough???
> >
> > >> > Thanks
> >
> > >> > Richard
>

Reply via email to