Hi

On 21 April 2010 06:44, Jason Pickering <jason.p.picker...@gmail.com> wrote:
> Hi Viet,
>
> This is good news.
>
> So, my suggestion would be as follows.
>
> 1) Use the user settings to determine what the initial sorting should
> be. Retrieve the first block of data based on whatever the user
> settings are when the user enters the page. At this point there would
> be no filter.
>
> 2) Should the user apply a filter, a new block of data would need to
> be retrieved, based on the user input. One thing that I have noticed
> is that there should be some sort of "delay" implemented until the
> user finishes typing. It would be inefficient to send an AJAX request
> each time the user types a character, but the request should be
> generated once the user stops typing. This might require some
> experimentation. My browser sort of does a "hiccup" each time I filter
> on the data element list, as it filters after the input of each
> character. If it would be possible to wait until the user actually
> finishes typing, and then make the filter, this might result in a
> better user experience. On a slow machine of mine, Firefox has crashed
> several times while trying to filter the data element list. This is
> one of the reasons I keep pushing so hard for this feature. :)

Haven't yet looked at the code but yes you do need to have some sort
of software "hysteresis" on these Ajax kind of things to prevent
excessive "chatter" and synchronisation problems.  Part of the
challenge is choosing the right amount of delay (and/or number of
characters typed) to make the system behave reasonably in different
network environments.  In very high latency internet environments
(like for example a lot of the Indian deployment) doing this auto
dispatching of ajax requests would need to be tuned quite differently
(or switched off) compared to running the app on the same workstation
as the browser.  I suspect the best short term solution is to be able
to switch automatic filtering on and off.

(Crazy aside:   Ideally it would be *nice-to-have* a sort of adaptive
timeout which recalibrates itself against the measured round-trip
times of the ajax request/response.   This is the same problem which
TCP solves in the calculation of its timeouts.  [To save myself
recalculating - if I was writing a program in C on linux - I could use
getsockopt(TCP_INFO) ] Nevertheless, implementing a similar algorithm
in javascript working on the ajax RTTs is not beyond the bounds of
reason.  I guess I'd keep the time in a hidden div on the page with
id='RTT'.  Each time I sent a request I'd include a timestamp.  On
receiving the response I'd compare timestamp with current time and
update the RTT.  Of course RTTs can have considerable variance so I'd
probably want to do what TCP does and keep a moving weighted average
to avoid spikes causing me to set ridiculous timeouts.)

>
> 3) I would think it would  be desirable to view all results (the
> current view that we have) as well.
>
> 4) When I saw this with Murod in Tajikistan a few weeks back, I did
> not pay attention to the details. But, it would be very nice to be
> able to filter/search on other properties of the object. This is a
> "nice to have" feature. Right now, we can only filter on the "name"
> but there are situations when you need to filter the data element code
> for instance. Not sure if this is possible.
>
> As Lars has detailed in a previous mail, a separate branch should
> probably be made for this. Although I think it is a good and needed
> feature, it may result in worse performance due to the roundtrips
> between the client and the server that will be required each time a
> new page needs to be generated. For large lists, i.e. patients and
> data elements, it would seem to make sense in theory, but may actually
> be worse than loading the entire DOM into the browser and filtering on
> the client side.

I think with lists like patients you really cannot get away from
server side pagination.

Cheers
Bob

> I would be of course available to test this with you.
>
> Lastly, thanks for taking a look at this.
>
> Regards,
> Jason
>
>
>
> On Wed, Apr 21, 2010 at 7:22 AM, Viet Nguyen <phamquocv...@gmail.com> wrote:
>>
>> Hi Jason,
>>
>> I planed to move this to common ... but...somehow forgot it sorry :(
>> Will do it  asap.
>>
>> Something I would like to note here  for  sorting and filter functions.
>>
>> When we apply the paging,  we need to sort from database, so there will be
>> many changes in  service  methods.
>> And for filter function,   this is the most thing I have been worry about .
>> Because we should not just filter  in current page. I think we need to use
>> ajax here.
>> At this point,  filter would be similar to search function, the only
>> different thing is  it effects on the fly.
>> When user type  something in filter text box, we get the result from
>> database, then sort  and paging  that list, then return to the view.
>>
>> What do you think about this ?
>>
>>
>
>
>
> --
> --
> Jason P. Pickering
> email: jason.p.picker...@gmail.com
> tel:+260968395190
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to     : dhis2-devs@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help   : https://help.launchpad.net/ListHelp
>

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to     : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help   : https://help.launchpad.net/ListHelp

Reply via email to