|
Nope.
Given
a combobox named "cbyear", both...
Debug.write(cbyear.xpath)
Debug.write(cbyear.parsedPath.path)
...print <<undefined>>
Depending on what you've got in
your datapointers, it seems like you could use either the xpath or the parsed
path.
Try:
Debug.write( byear.xpath );
Debug.write( byear.parsedPath.path );
Seems like one of those should give you what you're looking
for.
William Krick wrote:
Here's a fully working version with the paths hard-coded.
You can see how ugly it is (and probably inefficient).
If there were some way to grab the datapath of a combobox as
_text_, then I could append to the path and use it to set the
datapath of the next combobox.
The problem is, when you say something like...
Debug.write( byear.getAttribute('datapath') );
...it prints the actual data that it's pointing to
in the dataset, not the path as text. :(
So, I'm not sure there's any way to get at the datapath
as a string once you've set it.
<canvas width="600" height="400">
<class name="textlistitemx" extends="textlistitem">
<method event="ondata">
<!-- if I'm the first (or only) item in the list, -->
<!-- make my parent select me -->
<![CDATA[
if( !this['clonenumber'] || this.clonenumber == 0 )
this.parent.select(this);
]]>
</method>
</class>
<dataset name="ds_symbols">
<symbols>
<year value="2007">
<make value="AUDI">
<model value="Q7 QUATTRO">
<body value="UTL4X4 4 Dr">
<vin value="WA1AV74L&7" symbol="23" />
<vin value="WA1AV94L&7" symbol="24" />
<vin value="WA1BV74L&7" symbol="24" />
<vin value="WA1BV94L&7" symbol="25" />
</body>
</model>
</make>
<make value="CADILLAC">
<model value="ESCALADE">
<body value="UTL4X2 4 Dr">
<vin value="1GY&C638&7" symbol="23" />
</body>
</model>
<model value="ESCALADE AWD">
<body value="UTL4X4 4 Dr">
<vin value="1GY&K638&7" symbol="23" />
</body>
</model>
<model value="ESCALADE ESV AWD">
<body value="UTL4X4 4 Dr">
<vin value="3GY&K668&7" symbol="23" />
</body>
</model>
<model value="ESCALADE EXT AWD">
<body value="SUT4X4 4 Dr">
<vin value="3GY&K628&7" symbol="25" />
</body>
</model>
</make>
</year>
</symbols>
</dataset>
<datapointer name="dp1" />
<simplelayout axis="y"/>
<combobox editable="false" name="cbyear" datapath="ds_symbols:/symbols">
<method event="onselect">
var dp = "ds_symbols:/symbols/" +
"[EMAIL PROTECTED]'" + this.value + "']";
parent.cbmake.setDatapath( dp );
</method>
<textlistitemx datapath="year"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbmake" datapath="" visible="true">
<method event="onselect">
var dp = "ds_symbols:/symbols/" +
"[EMAIL PROTECTED]'" + parent.cbyear.value + "']/" +
"[EMAIL PROTECTED]'" + this.value + "']";
parent.cbmodel.setDatapath( dp );
</method>
<textlistitemx datapath="make"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbmodel" datapath="" visible="true">
<method event="onselect">
var dp = "ds_symbols:/symbols/" +
"[EMAIL PROTECTED]'" + parent.cbyear.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbmake.value + "']/" +
"[EMAIL PROTECTED]'" + this.value + "']";
parent.cbbody.setDatapath( dp );
</method>
<textlistitemx datapath="model"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbbody" datapath="" visible="true">
<method event="onselect">
var dp = "ds_symbols:/symbols/" +
"[EMAIL PROTECTED]'" + parent.cbyear.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbmake.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbmodel.value + "']/" +
"[EMAIL PROTECTED]'" + this.value + "']";
parent.cbvin.setDatapath( dp );
</method>
<textlistitemx datapath="body"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbvin" datapath="" visible="true">
<method event="onselect">
var dp = "ds_symbols:/symbols/" +
"[EMAIL PROTECTED]'" + parent.cbyear.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbmake.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbmodel.value + "']/" +
"[EMAIL PROTECTED]'" + parent.cbbody.value + "']/" +
"[EMAIL PROTECTED]'" + this.value + "']/@symbol";
parent.vsymbol.tsymbol.setDatapath( dp );
</method>
<textlistitemx datapath="vin"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<view bgcolor="silver" name="vsymbol">
<text x="4" y="3" name="tsymbol" visible="true"
width="${parent.parent.cbyear.width-4}"
height="${parent.parent.cbyear.height-3}"/>
</view>
</canvas>
-----Original Message-----
From: J Crowley [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, October 03, 2006 1:00 PM
To: William Krick
Subject: Re: [Laszlo-user] how do I get a datapointer from within a
control?
Ah, sorry, I think I did kind of misread your question. I'll think
about this and have a better answer for you in a bit.
On 10/3/06, William Krick <[EMAIL PROTECTED]> wrote:
In order to make that work, I need to be able to do three things.
1) get the datapointer from a combobox
2) append to the datapointer path
3) use the appended datapointer to set the datapath on another combobox
I'm guessing in order to do this, I'll have to have some way to convert a
datapointer to a datapath and back again.
-----Original Message-----
From: J Crowley [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, October 03, 2006 1:29 AM
To: [EMAIL PROTECTED]
Cc: [email protected]
Subject: Re: [Laszlo-user] how do I get a datapointer from within a
control?
Hey, William.
You can find some documentation on the function in
http://www.laszlosystems.com/lps-3.3/docs/reference/datapointer.html
about halfway down the page.
IIRC, the way you use it is, say you have two datapointers, DP1 and
DP2. So, in a script somewhere, you'd have:
DP1.setFromPointer("DP2");
...which would set DP1 to the same dataset/location/etc as DP2.
Hope this is helpful. I can provide examples if you need them; I
think it's also used in some stuff in svn.openlaszlo.org/labs and a
few other places.
- Josh
On 10/2/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
No, but I'll look into it. Is there any documentation or examples you
can point me at so I can see how it's used?
Quoting J Crowley <[EMAIL PROTECTED]>:
Sorry, I might be misreading/misinterpreting your question, but have
you tried setFromPointer()?
- Josh
On 10/2/06, William Krick <[EMAIL PROTECTED]> wrote:
In my example code below, there's an "onselect" method for the first
combobox.
While the code works, I need it to be more generic so that I can
apply
the
same logic to the rest of the comboboxes.
Basically, from inside a combobox, I need to build a new datapath
based
on
where I currently am, and then use that to set the datapath on the
next
combobox...
var dp = this.getAttribute('datapath') + "[EMAIL PROTECTED]'" + this.value +
"']" ;
next_combobox.setDatapath( dp );
Of course, that doesn't work.
I'm sure there's some XPath magic involved but I can't find a good
example.
Any ideas?
<canvas width="600" height="400">
<class name="textlistitemx" extends="textlistitem">
<method event="ondata">
<!-- if I'm the first (or only) item in the list, -->
<!-- make my parent select me -->
<![CDATA[
if( !this['clonenumber'] || this.clonenumber == 0 )
this.parent.select(this);
]]>
</method>
</class>
<dataset name="ds_symbols">
<symbols>
<year value="2007">
<make value="AUDI">
<model value="Q7 QUATTRO">
<body value="UTL4X4 4 Dr">
<vin value="WA1AV74L&7" symbol="23" />
<vin value="WA1AV94L&7" symbol="24" />
<vin value="WA1BV74L&7" symbol="24" />
<vin value="WA1BV94L&7" symbol="25" />
</body>
</model>
</make>
<make value="CADILLAC">
<model value="ESCALADE">
<body value="UTL4X2 4 Dr">
<vin value="1GY&C638&7" symbol="23" />
</body>
</model>
<model value="ESCALADE AWD">
<body value="UTL4X4 4 Dr">
<vin value="1GY&K638&7" symbol="23" />
</body>
</model>
<model value="ESCALADE ESV AWD">
<body value="UTL4X4 4 Dr">
<vin value="3GY&K668&7" symbol="23" />
</body>
</model>
<model value="ESCALADE EXT AWD">
<body value="SUT4X4 4 Dr">
<vin value="3GY&K628&7" symbol="25" />
</body>
</model>
</make>
</year>
</symbols>
</dataset>
<simplelayout axis="y"/>
<combobox editable="false" name="cbyear"
datapath="ds_symbols:/symbols">
<method event="onselect">
var dp = "ds_symbols:/symbols/[EMAIL PROTECTED]'" + this.value +
"']";
parent.cbmake.setDatapath( dp );
</method>
<textlistitemx datapath="year"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbmake" datapath="">
<method event="onselect">
// ???
</method>
<textlistitemx datapath="make"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbmodel" datapath="">
<method event="onselect">
// ???
</method>
<textlistitemx datapath="model"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbbody" datapath="">
<method event="onselect">
// ???
</method>
<textlistitemx datapath="body"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
<combobox editable="false" name="cbvin" datapath="">
<method event="onselect">
// ???
</method>
<textlistitemx datapath="vin"
text="$path{'@value'}" value="$path{'@value'}" />
</combobox>
</canvas>
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user
--
Jason Stafford
Principal Developer
Inspiration Software, Inc.
The leader in visual thinking & learning
InspireData(tm), the newest innovative thinking and learning tool from
Inspiration Software(r), extends the proven power of visual learning to
data analysis. Learn more at www.inspiration.com.
503-297-3004 Extension 119
503-297-4676 (Fax)
9400 SW Beaverton-Hillsdale Highway
Suite 300
Beaverton, OR 97005-3300
|