Hi Steve, thanks for your feedback :)
 
Nice work.  I like the idea of adding a number line. Some thoughts comments and questions:

If I understand your implementation, you have a horizontal and vertical scale. Then you for each scale you select the "current object" you wish to operate on, to sets its vertical/horizontal position to the "current object position in chart" for each scale.

Yes, that is correct.
 

I think it would be better if you could somehow set the playfield's "scale" based upon the number line(s).   When you add a scale to a the playfield, the objects in that playfield have their X and Y values set to the scales you added.  Then if you "move forward by | N" it moves forward not by N pixels but by the scale settings.

Well, that was my initial implementation, but as I recall Bert argued that it was too complicated to add another scale on top of existing scaling. And I have to agree with him, not only because this way is a lot less work :) but because it is also less error prone, my last implementation required patching a lot of important methods.

Also, I think changing the scale of the playfield based on the number line could cause confusion. If we follow that direction what scale would a playfield use if we add two number lines? The opposite is also true: having a different independent scale for the playfield and for the number lines can cause confusion as well (as Randy pointed out). So I think this is the simplest posible implementation: the only responsible of transforming from one scale to another is the number line.
 
 
Another possible approach is to have a collection for each "scale". Then all objects in that collection will have their X, Y values set to and use those scale(s).

It would also be nice to have "set of scales" as one object (an X and Y scale) and one collection to make it simpler to add to both in one step.

I'm sorry, I couldn't follow you... 
  • Perhaps have an option to show 0 (or not).  This would be useful for when you have two axis that intersect at 0, as it would look better if we didn't show the 0 labels.
Yes, that's something I thought too.
 
  • When I change the Line's min val it changes the max value (and vica versa).  Hmmm, okay I think I'm beginning to understand why you did this.  I was used to setting the min and max value for the axis and having the scale adjust as opposed to the scale setting the max value (well "Invert always invert" ;)  Have to think about this.
Mmm... I don't remember why I did it like that. I guess I thought the scale was more important and it should be fixed, but I can change that if you feel it should be the other way around.
  • The labels seem a little too close to the number lines.
True. I'll fix that.
 
  • It would be nice to have tiles to specify the font and size for the labels. (Or course it would be nice to tiles to specify font, size, centered/left flush|right flush|centered, for all text objects :)
Mmm... I could add those tiles to the text objects but I'm not sure of adding them to the number line. Maybe I could add the "collections" category to the number lines and you could iterate over its submorphs changing whatever property you like. In fact, I think that could be added to all objects because all of them can behave like a collection. What do you think?
  • How can you set the arrow head for the negative direction?
Well, you can't :). But that's easy to fix. I don't remember who did but someone told me that the axis with the two arrow heads was confusing because it is supposed to point to the direction of positive infinity, but I always thought the arrows represent the axis going on forever, so I removed the negative arrow head at the time. I don't really know what is the correct meaning of the arrow heads but I could add a preference to turn the negative on/off.

Cheers,
Richo

 
Stephen

On Sun, Oct 16, 2011 at 8:16 PM, Ricardo Moran <richi.moran@gmail.com> wrote:
Hi guys, I'm trying again with the graphing tools. It's been a while since I worked on this (sorry about that) but I really want to see them integrated.

So now I'm following Bert's suggestions and I'm trying with a less general approach: I'm not introducing a new scale on top of the existing one, instead I just added a "current object" slot on the number lines, and a "current object position in chart" slot that transforms from squeak's pixel to the number line scale and viceversa.

The implementation is much simpler than before but it's more uncomfortable IMHO. I think it would be best to have two "transform" functions accepting a number as argument and returning it transformed from one scale to the other. Unfortunately, it seems Etoys doesn't support this kind of functions nicely, all the examples I could find (such as #color:sees:) seem to be a little hacked and I wasn't sure if following that path was the right way to proceed.

I think the best would be for you to test it and tell me what you think. I'm attaching a project with the new number lines. 
Thanks!

Richo

P.S. I also renamed the project to Charts as Bert suggested

_______________________________________________
squeakland mailing list
squeakland@squeakland.org
http://lists.squeakland.org/mailman/listinfo/squeakland