r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!RebGUI] A lightweight alternative to VID

Cyphre
19-Jul-2006
[4585]
(Just posted table and couple of fixes and enhancments to SVN.)
Pekr
19-Jul-2006
[4586x2]
guys, those of you, working with databases - currently in new grid 
implementation, there are insert column, remove column, swap columns 
functions. Those do physically alter order in block of blocks (data) 
section. Apart from possible speed limitations, do you think it would 
be better to just virtually swap, insert (at the tail), remove (just 
make it invisible), or is it ok?
has it any impact of possible update call to the database? Just thinking 
lound ... hiding columns is ok, but if user changes their order, 
data changes too ....
Robert
20-Jul-2006
[4588]
Short note: Cyphre did, what I call, an input-grid. It's a static 
grid that you can specify which even generates names to access the 
cells. Might be useful in many cases as well.
Pekr
31-Jul-2006
[4589x6]
Hi, I would like to get some feedback on some rebgui-grid decision. 
The thing is, I need to do it till tomorrow, to stabilise a bit and 
go for more final version ....
So - you can look at the latest screenshot here - http://www.xidys.com/rebgui-grid.jpg
The thing is - one one hand, I don't want grid to be as capable (and 
big) as Henrik's grid, otoh it would be good to offer some functionality 
commonly needed for DB apps ....
The issue I am trying to currently adress, is that of (non)modifying 
original data block, and here come some questions ....
currently functions like - swap-columns, insert-column, remove-column, 
work with real data block, whereas sorting column introduces virtual 
adressing. You can still access raw data by going to grid/content/2/2 
or so, but if you want to get sorting reflected, you need to use 
API ....
what I am thinking about is to virtualise even things like insert-columns, 
remove-column (then hide-column becomes redundant), swap-columns, 
so that original data block would not be changed, which can be usefull 
for easy updates to sql directly from data block .... what do you 
think?
Henrik
31-Jul-2006
[4595]
I'm doing that in LIST-VIEW and it can easily be done fast enough, 
if you are worried about performance.
Pekr
31-Jul-2006
[4596]
you are doing what - virtual access, or raw changes?
Henrik
31-Jul-2006
[4597x3]
although, I can't produce virtual columns
virtual access of both rows and columns
sorry, rephrasing virtual columns: specifically new columns that 
contain new information derived from existing columns
Pekr
31-Jul-2006
[4600x2]
ah .... ok ....
how do you solve possible change to amount of data? My friend working 
with SAP grid suggested to me simply keep index block, and assign 
each record a recno virtually, as with update, in multiuser system, 
there could come some new records, or some may disappear ....
Henrik
31-Jul-2006
[4602]
if I have two real columns: height and width, I can't produce an 
area column with the product of the two first columns and show that 
next to the first two columns.
Pekr
31-Jul-2006
[4603]
I am not sure I understand :-(
Henrik
31-Jul-2006
[4604x4]
yes, I calculate an index block every time the list is updated with 
new information. I use that index block to display the raw data in 
the sequence I want.
no matter, it's not so important. :-)
in my experience, data manipulation is never a performance issue. 
what is a performance issue, is related to VID and SHOW
that's why I built in options to turn off updating when doing multiple 
operations. by doing that, operations can speed up tremendously.
[unknown: 9]
31-Jul-2006
[4608]
At what "size" of array do you notice slow downs?  We are about to 
add a simple spreadsheet to Qtask.  We will be facing the same issues. 
 In our case we will be using Javascript on the front end, but the 
issues are similar, we have to decide which parts work on the client 
(virtual as you would say), or when we do a complete refresh.
Henrik
31-Jul-2006
[4609x2]
I think it's depending on view size rather than the number of cells. 
A list with 10x10 entries in a 300x300 configuration can be faster 
to scroll than a 5x5 in an 600x600 configuration. LIST-VIEW uses 
iterated faces to generate the entries, so whenever the list view 
needs to be updated in just one cell, the entire list face is rerendered 
automatically.
also I don't really notice slow downs on very large arrays, because 
I always work from a sorting index, a plain 'pick of the row need 
from the data array. this is pretty fast.
[unknown: 9]
31-Jul-2006
[4611]
Yeah, that was my expectation.
Henrik
31-Jul-2006
[4612]
if SHOW was much faster, LIST-VIEW could be insanely fast. you could 
probably easily scroll a 50x50 array in fullscreen 1024x768 at 25-40 
fps. I've noticed that when doing manipulations when not updating, 
such as sorting and moving entries in one go, these things are close 
to instant. The MOVE-ROW-UP/DOWN operations work like that.
[unknown: 9]
31-Jul-2006
[4613]
I find that having looked at thousands of spreadsheets, most are 
not larger than 50x25, or 25x50.  The exception is when people are 
dumping databases, and those are not using fomulas, but rather are 
for working out data.  This is done by programmers, not by users 
in general.
Pekr
31-Jul-2006
[4614]
Reichart - there is problem with capability of show refresh. Cyphre 
told me he has it much faster already on his hd, we just need to 
wait for new View release. The quesiton is, if it will be in 1.3.3, 
or R3 ..
[unknown: 9]
31-Jul-2006
[4615]
Yeah, since I don't know how slow we are talking here, it is hard 
for me to know where the slow down is felt.
Henrik
31-Jul-2006
[4616]
probably somewhere around 2-5 fps with a fullscreen list.
[unknown: 9]
31-Jul-2006
[4617]
Yeah, that is slow.  8fps is my normal cut off (anime rate).
Robert
31-Jul-2006
[4618x4]
Petr: IMO you need to decide, do you have all the data in memory 
or not. If it's up to 10.000 lines and 10 columns you shoul be able 
to do this. Than per line one block. Either have the block contain 
only values (that position matters) or use a name/value pair. Than 
it doesn't. Going for name/value pairs with hash! should be pretty 
fast.
If you want to scroll through 1.000.000 lines, you need to virtualize 
the data stuff anyway.
And, I find it simpelst to have the data on the screen and in the 
program in sync. Sorting should alter the data block as well. If 
I pick the first line, I want to pick the first record. Of course 
using an API for indirection is OK too. But than do it always and 
for everything. No direct access to the record data.
otherwise you will have side-effects the developer must know about... 
and that's maintenance horror.
Pekr
31-Jul-2006
[4622x2]
I really have to think about it. One of original concerns was, that 
grid should be able to display direct data block return of sql query 
(so block of blocks=rows)
... without the need to adapt block to any other format. However, 
I think I decided to not modify original data block, and one of the 
reasons is easy call to update sql from the row. If I let user change 
order of  fields directly, the update could be a bit tricky, without 
knowing which field is on particular position.
Ashley
31-Jul-2006
[4624]
If I let user change order of  fields directly

 ... is this a requirement? I've never met an end user who ever wanted 
 or needed to change order of columns ... good UI design will present 
 only the columns and rows needed, and in the most appropriate order. 
 "Appropriate" could be by order of importance, logical sequence (e.g. 
 street number followed by street name), or tied back to an "external" 
 order/sequence (e.g. another application, paper-based forms, etc).


I think something like grid is far easier to over-engineer than under-engineer! 
;)
Pekr
1-Aug-2006
[4625]
Ashley - I don't know how many users you met, or how are particular 
users' habits in various countries, but I can guarantee you, that 
we had pretty powerfull grid even 10 years ago in Clipper (DBase 
era). I should dig some app and make a screen-shot probably :-) Even 
in DOS, our grid allowed to freeze some columns, each user could 
set its own column order, add available column or hide it, set column 
width, and save it - for each DB. It was pretty heavily used.....
Graham
1-Aug-2006
[4626]
I'm constantly reordering my columns when looking at databases
[unknown: 9]
1-Aug-2006
[4627]
Ashley is making the same point I am, "end user" vs. programmer (or 
tech).  Any time a programmer says "I do X all the time" all I think 
is that if "I can bottle the exact opposite of X I can make a billion 
dollars."


Hence I wrote above "The exception is when people are dumping databases, 
and those are not using formulas, but rather are for working out 
data.  This is done by programmers, not by users in general."


Never-the-less, if the goal here is the goal, which is for technical 
people to do this, we all still need a solve, which is speed to do 
it.


In Qtask we did part on the server, and part on the client.  So, 
we let you sort columns locally, but would send all the data to the 
server.  What we learned is:

The server would send down all the data.  Slow, but needed.
Then JS would arrange everything into a table.  Slow but needed.

Then JS would sort.  And we allowed 4 levels of sort… Slow, slow, 
slow, and turns out, not so needed.


It turns out that with anything more than about 20 lines it was better 
in the long run to just sort form the server side.


This is not to say this is how this will work where with Rebol.  
My point is more to the idea of playing with UI until you strike 
the right balance of speed and convenience.
Graham
17-Aug-2006
[4628]
Just noticed that we don't have a request-text requester
Thør
21-Aug-2006
[4629]
.
Graham
24-Aug-2006
[4630x2]
One I hadn't seen before ... 
** Script Error: foreach expected data argument of type: series
** Where: next-field

** Near: foreach sibling siblings [if target: any [tabbed? sibling 
into-widget/forwards sibling] [
return target]] all
** Press enter to quit...
Was just tabbing thru my windows on my desktop...
Pekr
26-Aug-2006
[4632x2]
How can I access (further parametrise widget) in terms of display 
code? E.g. simple color change - I miss something like VID's 'with 
directive ...
the only thing I came up with is using 'do [show-color widget value]
Graham
26-Aug-2006
[4634]
text "blah ... " font [ color: red ]