I went ahead and implemented it with React, so you can check it out.  I
didn't use JSX, because of the reasons you mentioned and also I have used
JSX on other project and I don't think it gives advantages worth
complicating deployment.

+1 to re-usable component for status polling with or without React.

On Thu, May 14, 2015 at 11:36 PM, Dave Brondsema <[email protected]> wrote:

> High-level: Our front-end JS certainly is messy in some places.
> Especially some
> EasyWidget stuff that has JS embedded in .py files!  At least we don't
> write any
> new stuff like that.  Since React is self-contained and small I don't think
> there's any problem with introducing it.  The only thing would be that it
> adds a
> bit more to learn to Allura's wide tech stack, when maintaining code that
> uses
> it.  I think that's ok though.  Are we going to use JSX though?  That
> would add
> a compilation step, and some complexity across the board for deployment.
>
> More specifically to your example: I have noticed we have several places
> that do
> semi-complex status polling (this merge request status, also repo refresh
> status, and repo zip file status).  Things like that perhaps could be made
> into
> a re-usable component without using React.  It could be a few JS
> functions, or a
> jquery plugin for example.  That said, React is fine to start using by me.
>
> -Dave
>
> On 5/8/15 7:04 AM, Igor Bondarenko wrote:
> > Hey guys!
> >
> > Every time I'm working on some small js/ajax piece of UI for Allura I'm
> > thinking
> > that I'm creating something fragile which can break apart in any moment
> > without
> > me even noticing. That's mainly because of direct DOM manipulation. The
> > latest
> > example of this is
> https://forge-allura.apache.org/p/allura/tickets/7866/
> > where
> > I needed to check a state of background task and display status to the
> user
> > and
> > enable/disable different pieces of UI depending on task result (this
> pattern
> > actually can be found in a few places in Allura). Every time I write
> > something
> > like this
> >
> https://forge-allura.apache.org/p/allura/git/ci/master/tree/Allura/allura/templates/repo/merge_request.html#l218
> > I feel like I'm stepping on a landmine :)
> >
> > Does it happen to any of you? :)
> >
> > The reason I bring this up now is that I'm starting work on phone
> > verification
> > UI (#7868) and I expect some of js/ajax shenanigans there as well.  I
> would
> > like
> > to try a different approach for dealing with the DOM, but since it
> requires
> > to
> > pull a new technology into our stack I can't do it before discussing it
> with
> > you.
> >
> > There's a library that removes this pain. It's React.js.  I have some
> > experience
> > using it and it's just a breeze for tasks like that. It is built in a way
> > that
> > allows to use it only for a small piece of a page, exactly where you need
> > it, so
> > there's no need to worry about rewriting existing code to support it and
> it
> > can
> > be included only on a pages that need it. It's pretty small, latest
> > compressed
> > version is 129K. For example our jquery-base, which we include on every
> > page is
> > twice that size (332K). It's BSD licensed.
> >
> > I don't think our current situation is *that* bad, but on the other hand
> it
> > can
> > restrain us from trying to build more complex things, UI wise.  In my
> > opinion it
> > worth to try React in Allura, starting with such small problems as I
> > described.
> > In my case, I'm sure it will give me more confidence, that UI pieces I
> build
> > work as expected.
> >
> > What do you think?
> >
>
>
>
> --
> Dave Brondsema : [email protected]
> http://www.brondsema.net : personal
> http://www.splike.com : programming
>               <><
>

Reply via email to