Dario Zarro wrote:
>
>
>
> Cameron Shorter wrote:
>>
>> Hello Dario,
>> I'm not sure why your code is not working in 1.5, but I have my
>> suspicions.
>> Most/all of the examples in 1.5 use OWSContext instead of WMC.
>> WMC provides a list of WMS layers. OWSContext lists WFS, GML, Cached
>> WMS, Google Map layers as well. Unfortunately it has a slightly
>> different syntax, which means it is not backwardly compatible with WMC.
>> Our MapPaneOL widget should render both WMC and OWSContext files, but it
>> might not. (Note that the MapPane widget has been depreated - that might
>> also be your problem).
>>
>> On another note,
>> I'm interested to know what your end goal is. Adding filter
>> functionality to Mapbuilder is a highly requested feature. I'm
>> interested to know how you plan to achieve this (your design) and
>> whether you are able to return the code back into Mapbuilder.
>>
>> Andreas may have more to say - he has been looking into Filters as well.
>>
>> Of note, manipulating a WMC using a filter, or building a filter should
>> probably be in a widget or tool rather than in the Context.js. Our
>> design aim is to keep the model classes small so that other applications
>> which don't use Filter don't need to include the extra code.
>>
>> Dario Zarro wrote:
>>> hi,
>>> I have developed a new function, initFilter, in Context.js. It's a
>>> simple
>>> function to set wmc:Literal value, in wmc:Filter, with parameter passed
>>> by
>>> URL.
>>>
>>> For example:
>>>
>>> --- WMC : tasmania.xml ----
>>>
>>> <Layer>
>>> ....
>>> <SLD>
>>> ...
>>> <Filter>
>>> ...
>>> <PropertyIsEqualTo>
>>> <PropertyName>
>>> TYPE
>>> </PropertyName>
>>> <Literal id="type"></Literal> // the id attribute determine url
>>> parameter
>>> name
>>> </PropertyIsEqualTo>
>>> <PropertyIsEqualTo>
>>> <PropertyName>
>>> LENGTH
>>> </PropertyName>
>>> <Literal id="length"></Literal> // the id attribute determine
>>> url
>>> parameter name
>>> </PropertyIsEqualTo>
>>> ...
>>> </Filter>
>>> ...
>>> </SLD>
>>> ...
>>> </Layer>
>>>
>>> --------- end WMC ------
>>> -------- Context.js ------
>>> ...
>>> //my function
>>> this.initFilter=function(objRef) {
>>> // Set wmc:Filter of context from URL CGI params
>>>
>>> if(window.cgiArgs["filter"]){
>>> var filter=window.cgiArgs["filter"].split(',');
>>>
>>> var basicXpath='//wmc:[EMAIL PROTECTED]"value"]';
>>> var re="value";
>>>
>>> for(var i=0;i<filter.length;i++){
>>> var keyValue = filter[i].split(':');
>>>
>>> var currentXpath=basicXpath.replace(re,keyValue[0]);
>>>
>>> objRef.setXpathValue(objRef,currentXpath,keyValue[1],true);
>>> }
>>>
>>> }
>>>
>>> }
>>> this.addListener( "loadModel", this.initFilter, this );
>>> ...
>>> -------- end Context.js-----
>>> In this example, I can change value at '<Literal id="type"></Literal>'
>>> passing "../index.html?filter=type:newTypeValue,length:newLengthValue"
>>> in
>>> URL.
>>>
>>> THE PROBLEM:
>>> This function executes correctly in Mapbuilder 1.0.1 but it don't work
>>> in
>>> Mapbuilder 1.5 .
>>> Why?
>>>
>>>
>>>
>>
>>
>> --
>>
>
> Hello Cameron,
> how I wrote in my last post, I want to load maps with filters that I pass
> with CGI parameters. I have developed initFilter function (you can see my
> last post) in Context.js to get from URL the filter parameter and set the
> wmc:Filter before the map is painted. It work correctly in Mapbuilder
> 1.0.1 . I prefer to develop
> a new "MyContext" object (with initFilter function),that inherites from
> Context object, rather than to develop a new widget because the widget is
> useful only after the map is painted. If an application don't use filter
> it can use Context object, if it use filter it can use MyContext object. I
> have an your widget, speciesList, that provide an form to filter the map(
> I have appended the code on bottom of this post). It's a good one but
> don't solves my problem.
>
> Sorry if my english is bad, but i'm an italian student.
>
> ------ speciesList.xsl ------------
> <?xml version="1.0" encoding="UTF-8" ?>
> - <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:gml="http://www.opengis.net/gml" version="1.0">
> - <!--
> Description: Convert a GML Feature or FeatureCollection into a HTML form.
> Author: Cameron Shorter cameron ATshorter.net
> Licence: LGPL as per: http://www.gnu.org/copyleft/lesser.html
> $Id: FeatureList.xsl 1717 2005-10-09 10:55:55Z camerons $
> $Name$
>
>
> -->
> <xsl:output method="xml" encoding="utf-8" />
> - <!-- Common params for all widgets
> -->
> - <!-- xsl:param name="targetModelId"/
> -->
> <xsl:param name="modelId" />
> <xsl:param name="widgetId" />
> - <!-- Main html
> -->
> - <xsl:template match="/">
> - <!-- xsl:variable name="propertyName" select="//wmc:PrpertyName"/
> -->
> - <form>
> Species:
> - <select id="{$widgetId}_species"
> onchange="config.objects.{$widgetId}.setAttr(config.objects.{$widgetId},'//wmc:PropertyName',document.getElementById('{$widgetId}_species').value);">
> <option value="" />
> <option value="SUSSCR">SUSSCR</option>
> <option value="CAPHIR">CAPHIR</option>
> <option value="CERSPP">CERSPP</option>
> </select>
> <br />
> - <!--
> Value:
> <input
> type="text"
> id="{$widgetId}_value"
> value="4/2/3"
>
> onchange="config.objects.{$widgetId}.setAttr(config.objects.{$widgetId},'//wmc:Literal',document.getElementById('{$widgetId}_value').value);"
> />
>
>
> -->
> </form>
> <xsl:apply-templates />
> </xsl:template>
> - <!-- Print out an option list with one option selected
> -->
> - <!--
> <xsl:template name="optionList">
> <xsl:param name="selected"/>
> <xsl:if>
> <xsl:when test="compare($selected,$option)">
> </xsl:when>
> <xsl:otherwise>
> <option value="$option"></option>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
>
> -->
> - <!-- Remove documentation, text, comments
> -->
> <xsl:template match="comment()|text()|processing-instruction()" />
> </xsl:stylesheet>
> ----------- end speciesList.xsl -------
> ----------- speciesList.js ------------
> /*
> License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
> $Id: FeatureList.js 1738 2005-10-16 19:15:14Z camerons $
> */
>
> // Ensure this object's dependancies are loaded.
> mapbuilder.loadScript(baseDir+"/widget/WidgetBase.js");
>
> /**
> * Functions to select a weed species.
> * @constructor
> * @base WidgetBase
> * @author Cameron Shorter
> * @param objRef The widget's XML object node from the configuration
> document.
> * @param model The model object that this widget belongs to.
> */
> function SpeciesList(objRef, model) {
> WidgetBaseXSL.apply(this,new Array(objRef, model));
>
> /**
> * Set the value of an attribute from the SpeciesList.
> * @param objRef Reference to this object.
> * @param xpath Xpath reference to the attribute in the GML.
> * @param value New attribute value.
> */
> this.setAttr=function(objRef,xpath,value){
> objRef.model.setXpathValue(objRef.model,xpath,value);
> }
> }
> --------- end speciesList.js ----------------
>
Hello everybody,
I solved my problem, now my function works on Mapbuilder 1.5.
I created an FilterContext object that inherites from Context object.
It adds initFilter function on Context object.
--
View this message in context:
http://www.nabble.com/new-Context-object-with-initFilter%28%29-function-to-initialize-filter-in-WMC-tp14716460p14807838.html
Sent from the MapBuilder Devel mailing list archive at Nabble.com.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
mapbuilder-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mapbuilder-devel