Hi David,

I definitely understand your confusion about the tree-datapath thing. It's about because "tree" resp. actually "basetree" tries to be super-smart, but it fails obviously. If you take a look at "basetree#createChildTrees()", you'll see a for-in loop which copies an internal object called "_instanceAttrs" into a new js-Object. All instance attributes of an instance are stored in this "_instanceAttrs" field, plus some special objects like a datapath (, if it was defined per datapath-tag!). And now we copy this field, because we want to make sure that every tree-node/leaf has got the same method, handlers, appearance etc. when we dynamically instantiate new trees-leafs. Now comes the fun part: You've given your tree a datapath per tag, therefore the "_instanceAttrs"-object contains an entry called "$datapath". Later on in "basetree#createChildTrees()", the copy of "_instanceAttrs" (with the "$datapath" entry) will get another datapath, but this time attribute-like (identifier is "datapath" instead of "$datapath"). So, two datapaths for a tree => makes double replication, just as noted in the bugreport.

- André


On 12/5/2007 9:24 PM, David Buckler wrote:
Andre

I appreciate you opening up that bug and I understand it will definitely cover the datapath attribute versus child node issue. I am just wondering does the datapath of the second tree get set by the first tree by the instantiation, and hence causes the duplicate replicaton. I am just confused because all I did to get the duplicate replication was move the datapath attribute out of the tree tag into a child datapath tag with an xpath of *.
David

-----Original Message-----
From: André Bargull [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 04, 2007 4:05 PM
To: David Buckler
Cc: Henry Minsky
Subject: Re: [Laszlo-user] Dataset as an Attribute and Tag Error

I've created LPP-5193 (http://www.openlaszlo.org/jira/browse/LPP-5193)
to fix this issue.

- André


On 12/4/2007 11:00 PM, André Bargull wrote:
Hello David,

I could reproduce this bug, so feel free to open a bugreport.

Here is an example using the tree code that is in the Laszlo Reference.
You will note that all I did was pull the datapath attribute out of the last tree node and used it as a tag. When you run this code it creates
duplicate nodes exactly as I first experienced.   Let me know if you are
experiencing the same behavior I am and I have no problems opening up a bug for this. <canvas width="450" height="250">
  <include href="lz/tree.lzx"/>
<dataset name="ancestors">
    <hobbit name="Frodo">
      <hobbit name="Drogo">
        <hobbit name="Fosco" grandparent="true"/>
        <hobbit name="Bolger, Ruby" grandparent="true"/>
      </hobbit>
      <hobbit name="Brandybuck, Primula">
        <hobbit name="Brandybuck, Gorbadoc" grandparent="true"/>
        <hobbit name="Took, Mirabella" grandparent="true"/>
      </hobbit>
    </hobbit>
  </dataset>
<!-- data replicated tree -->
    <view width="200" height="200">
      <tree datapath="ancestors:/" icon="null" showroot="false">
        <tree icon="null" text="$path{'@name'}"
isleaf="$path{'@grandparent'}">
          <datapath xpath="*"/>
        </tree>
      </tree>
    </view>
  </canvas>

Reply via email to