[Seaside] how to make a list of items that can be rearranged via drag and drop or buttons
Louis LaBrunda
Lou at Keystone-Software.com
Tue Jul 14 22:00:52 UTC 2020
Hi Esteban,
Thank you very much, I will give it a try.
Lou
On Tue, 14 Jul 2020 17:28:23 -0300, Esteban Maringolo <emaringolo at gmail.com> wrote:
>Hi Louis,
>
>I use jQuery UI sortable() [1] for this. You need to add the
>JQUiDeploymentLibrary library to your application (or link the to the
>files).
>
>MyComponent>>renderContentOn: html
>
>html div
>"snip"
> script: (self createSortableOn: html)
>"snip"
>
>MyComponent>>createSortableOn: html
>
>^(((html jQuery id: self elementId)
> find: '.' , self containerCssClass , ':first') sortable)
> placeholder: 'placeholder';
> handle: '.sort-handle';
> onStart: ((JSStream on: 'ui.placeholder.height(ui.item.height());')
>asFunction: #('e' 'ui'));
> onUpdate: (self createSortableUpdateScriptOn: html);
> yourself
>
>
>MyComponent>>createSortableUpdateScriptOn: html
>^html jQuery post
> callback: [:v | self reorderChildrenWithSequence: (v subStrings:
>',')] value: (((html jQuery id: self elementId)
> find: '.' , self containerCssClass, ':first') call: 'sortable' with:
>'toArray')
>
>Each sortable DOM element has an id attribute that is what the
>sortable("toArray") uses to get the id of each (it is also
>configurable), then with that collection of IDs look for them in my
>model:
>
>reorderChildrenWithSequence: anOrderedCollection
> self children: (anOrderedCollection collect: [:each | self children
>detect: [:one | one elementId = each]]).
> self model children: (self children collect: [:each | each model])
>
>Also I use a placeholder while the dragging begins, you can remove the
>onStart: part if you're not interested in it.
>
>I hope this helps you get started.
>
>Best regards,
>
>[1] https://jqueryui.com/sortable/
>
>ps: My case is a little more complicated as I can sort at arbitrary
>depth (but only within the same level of depth), but it's a single
>component that recursively builds a tree of components.
>You can replace the ((html jQuery id: self elementId) find: '.' , self
>containerCssClass , ':first') by your jQuery instance.
>
>
>Esteban A. Maringolo
>
>
>
>On Tue, Jul 14, 2020 at 4:50 PM Louis LaBrunda
><Lou at keystone-software.com> wrote:
>>
>> Hi All,
>>
>> Can anyone please give me an example of how to make a list of items that can be rearranged via drag and drop or buttons
>> and the new order retrieved?
>>
>> Lou
>> --
>> Louis LaBrunda
>> Keystone Software Corp.
>> SkypeMe callto://PhotonDemon
>>
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>_______________________________________________
>seaside mailing list
>seaside at lists.squeakfoundation.org
>http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
--
Louis LaBrunda
Keystone Software Corp.
SkypeMe callto://PhotonDemon
More information about the seaside
mailing list