I am trying to stack bar graphs up as in the picture below. My data layer is returning several values for a particular date, which corresponds to different 'codes'. However, when using Chart.XY element and feeding the data to Logi, the X-axis repeats the date for every different element (or 'code) and not stacking them properly. I believe there is something fundamental I'm doing wrong, but cannot find out what (Extra bar option set to 'Stacked'). Any help is appreciated!
This is the graph:
It may not be possible to create the exact chart you need using a single Chart.XY element. ExtraGrid Layers don't support multi-series, so you can't currently layer 2 multi-series charts on top of each other. The best option might be to build multiple charts each with it's own multi-series using a Crosstab filter.
Here's a quick example of a similar chart to your example produced with 'static' data with the Crosstab filter.
<Chart Type="XY" XYChartType="Bar" ChartHeight="300" ChartWidth="500" ChartOrientation="Horizontal" Color="#66C2A5,#FC8D62,#8DA0CB,#E78AC3" ChartLabelColumn="Item" ChartLabelColumnDataType="Text" Transparency="4">
<DataLayer Type="Static" ID="staticDL1">
<StaticDataRow Item="F" BudgetQuarter="Q1" BudgetValue="65" />
<StaticDataRow Item="F" BudgetQuarter="Q2" BudgetValue="55" />
<StaticDataRow Item="F" BudgetQuarter="Q3" BudgetValue="45" />
<StaticDataRow Item="F" BudgetQuarter="Q4" BudgetValue="60" />
<StaticDataRow Item="E" BudgetQuarter="Q1" BudgetValue="45" />
<StaticDataRow Item="E" BudgetQuarter="Q2" BudgetValue="55" />
<StaticDataRow Item="E" BudgetQuarter="Q3" BudgetValue="65" />
<StaticDataRow Item="E" BudgetQuarter="Q4" BudgetValue="70" />
<StaticDataRow Item="A" BudgetQuarter="Q1" BudgetValue="65" />
<StaticDataRow Item="A" BudgetQuarter="Q2" BudgetValue="55" />
<StaticDataRow Item="A" BudgetQuarter="Q3" BudgetValue="45" />
<StaticDataRow Item="A" BudgetQuarter="Q4" BudgetValue="60" />
<StaticDataRow Item="B" BudgetQuarter="Q1" BudgetValue="45" />
<StaticDataRow Item="B" BudgetQuarter="Q2" BudgetValue="55" />
<StaticDataRow Item="B" BudgetQuarter="Q3" BudgetValue="65" />
<StaticDataRow Item="B" BudgetQuarter="Q4" BudgetValue="70" />
<CrosstabFilter CrosstabColumn="BudgetQuarter" CrosstabLabelColumn="Item" CrosstabValueColumn="BudgetValue" CrosstabValueFunction="Sum" />
</DataLayer>
<Legend />
</Chart>
You can build 2 of these charts, one for your Budget and one for Actual. Depending on how the data is structured, you might also be able to use Extra Data Columns/Extra Grid Layers to build a more complex chart.
For more details on Crosstab charts, you might want to take a look at the Sample application for static charts:
http://devnet.logixml.com/rdPage.aspx?rdReport=Samples
Specifically, looking at the Crosstab filter :
http://devnet.logixml.com/SampleCharts/rdPage.aspx?rdReport=CrosstabFilter
Related
My schema.xml has the below field type:
<fieldType name="string_searchable" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="pub_title" type="string_searchable" indexed="true" stored="true" multiValued="true"/>
Below data is present in one of the facet (without double quotes):
pub_title:"Current Concept on the Classification and Treatment of Spondylolisthesis"
I am firing the below query on solr query console in q and I am getting no results:
pub_title:*Treatment of Spondylolisthesis*
When I try to search using the below q parameter, it works, but the search operation takes twice longer:
pub_title:*Treatment\ of\ Spondylolisthesis*
I want to have a facet with the complete string (without double quotes) "Current Concept on the Classification and Treatment of Spondylolisthesis". I also need highlighting on this field.
I tried using solr.StandardTokenizerFactory, but facets were tokenized.
Please let me know where I am going wrong.
Thanks,
Pranay
I have several hundred placemarks that are all in one folder. I'm trying to make the labels appear only below a certain altitude. (The placemarks were created by exporting a layer from ArcGIS, and I presume that the altitude should be specified in the units used by the coordinate system of the layer, in this case, in feet; correct me if I'm wrong.) However, nothing I do with the <Region> tag seems to work; the labels happily appear at all altitudes. Here is the code that I'm using; can anyone tell what is wrong with it?
<Document id="DocumentName">
<name>NameGoesHere</name>
<Snippet></Snippet>
<Folder id="NameOfTheFolder">
<name>NameGoesHere</name>
<Region id="highAltitude">
<LatLonAltBox>
<north>40</north>
<south>37</south>
<east>-74</east>
<west>-79</west>
<minAltitude>50000</minAltitude>
<maxAltitude>500000</maxAltitude>
</LatLonAltBox>
<LabelStyle id="styleNameHere">
<scale>0</scale>
</LabelStyle>
</Region>
<Snippet></Snippet>
...
<placemark> ... </placemark>
<placemark> ... </placemark>
<placemark> ... </placemark>
...
</Folder>
</Document>
The point of all this code is to suppress labels at altitudes above 50,000 feet, but it does nothing of the sort. Toward the end of the code, after the </Folder> tag but before the </Document> tag, there is some code, generated when the file was exported, that specifies label styles. But whether or not I delete the <scale> part of it, it seems to have no effect. That code is as follows:
<Style id="Stylename">
<IconStyle>
...
</IconStyle>
<LabelStyle>
<color> ... </color>
<scale> ... </scale>
</LabelStyle>
<PolyStyle>
...
</PolyStyle>
</Style>
I suspect that I'm doing something wrong here in terms of syntax, but, because I've had no experience with KML at all until a few days ago, I'm not sure what the issue is. I appreciate any ideas as to why this isn't working.
You need to define the Lod (Level of Detail) in the Region otherwise it will always appear.
<Region id="highAltitude">
<LatLonAltBox>
...
</LatLonAltBox>
<Lod>
<minLodPixels>256</minLodPixels>
</Lod>
<Region>
The minLodPixels defines the size of the region where if it is less than this minimum number of pixels on the screen then the region is not shown.
https://developers.google.com/kml/documentation/kmlreference#lod
Also, the LabelStyle is not valid within the Region. That must appear in a <Style> element. If KML doesn't behave as you'd expect 9 out of 10 times the syntax is wrong -- try to validate it using a KML validator.
My requirement is to generate one XML file and few HTML files in the secondary port. I have configured few steps in XProc.
Here’s the sample code:
<p:xslt name="create-document">
<p:input port="stylesheet">
<p:document href="stylesheet.xsl" />
</p:input>
</p:xslt>
<p:for-each>
<p:iteration-source>
<p:pipe step="create-document" port="secondary" />
</p:iteration-source>
<p:store>
<p:with-option name="doctype-public" select="'-//W3C//DTD XHTML 1.0 Frameset//EN'" />
<p:with-option name="doctype-system" select="'http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd'" />
<p:with-option name="encoding" select="'UTF-8'" />
<p:with-option name="media-type" select="'text/html'" />
<p:with-option name="method" select="'xhtml'" />
<p:with-option name="omit-xml-declaration" select="'no'" />
</p:store>
</p:for-each>
The problem here is HTML file is generated properly. And the XML file is generated, but I am not able to view the XML content. Instead it displays everything in HTML format.This is because of <p:store> in the above code snippet.
How do you have two <p:store> steps? (One for HTML and the other for XML)
It would be nice if you could somehow determine with which xsl:result-document parameters each document on the secondary output was written. You would be able to duplicate those for your p:store. But you can derive other things from each document. You can retrieve the document name using base-uri(), and you can look at for instance the root element. You can put these values in a variable using:
<p:variable name="path" select="base-uri(/*)"/>
<p:variable name="root" select="local-name(/*)"/>
(Put these just below the p:iteration-source.)
You then need to decide how to call p:store. You could use XPath if, provided your XProc parser supports XPath 2.0 (like XMLCalabash does). But I’d recommend using a p:choose like this:
<p:choose>
<p:when test="ends-with($path, '.xhtml')">
<p:store
doctype-public="-//W3C//DTD XHTML 1.0 Frameset//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
encoding="UTF-8"
media-type="text/html"
method="xhtml"
omit-xml-declaration="no">
<p:with-option name="href" select="$path"/>
</p:store>
</p:when>
<p:otherwise>
<p:store
encoding="UTF-8"
media-type="application/xml"
method="xml"
omit-xml-declaration="no">
<p:with-option name="href" select="$path"/>
</p:store>
</p:otherwise>
</p:choose>
(This entire p:choose replaces the p:store you already have.)
The test in p:when only looks at $path, but you could include a test for $root as well, if you like.
It also requires you to use .xhtml as extension in your xsl:result-document statements for the HTML output, but you can easily tweak that if you like.
The var and the choose should be enough to get your XML written properly, at least.
Good luck!
This is suppose to be quite simple but I have already spent couple of hours on this without solution. My fragment of code follows:
<h:selectOneMenu id="carro" value="#{abastecimentoAction.idCarroPesquisa}" required="true">
<ui:repeat value="#{carroList.resultList}" var="_meuCarro">
<f:selectItem itemValue="#{_meuCarro.id}" itemLabel="#{_meuCarro.nome}"/>
<h:outputText value="Testes"/>
</ui:repeat>
</h:selectOneMenu>
The point is the "Testes" string is correctly printed as many times as the size of carroList.resultList but no options is printed. I get a blank combo.
tx in advance.
Just managed to fix this using:
<h:selectOneMenu id="carro" value="#{abastecimentoAction.idCarroPesquisa}" required="false">
<s:selectItems var="carro" value="#{carroList.resultList}" label="#{carro.nome}" itemValue="#{carro.id}" />
</h:selectOneMenu>
I've seen a number of examples, e.g. here, where people are including locale resource bundles by referencing the locale attribute in the element. For some reason this doesn't work for me. Here's what I have for the task:
<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US">
<source-path path-element="${basedir}/src/main/flex"/>
<include-sources dir="${basedir}/src/main/flex" includes="*" />
<include-libraries file="${basedir}/libs"/>
<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true">
<include name="playerglobal.swc"/>
</compiler.external-library-path>
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs"/>
<include name="locale/${locale}"/>
</compiler.library-path>
<load-config filename="${basedir}/fb3config.xml" />
</compc>
This fails with a bunch of errors of the form:
[compc] Error: could not find source for resource bundle ...
I can make it build with this one change:
<include name="locale/en_US"/>
The configuration file generated by Flex Builder 3 actually renders this as "locale/{locale}" (notice the $ is missing). I've tried that as well with the same (failing) results.
For now, I'm doing OK directly injecting en_US as we won't be doing localization bundles for quite some time, but I will eventually need to get this working. Also, it bugs me that I can't make it work the way that it SHOULD work!
I think the problem here is that ${locale} is interpreted by ant as a property, rather than a string literal to pass to the compc task. What I mean is that ant sees ${locale} and thinks that you want to substitute the value of the property locale which is (supposedly) defined in your build file. Of course, this isn't what you want at all, and things break miserably because of it.
The way I've done things in my build files is to remove the $ prefix and everything seems to work as expected. So your example would look something like this:
<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US">
<source-path path-element="${basedir}/src/main/flex"/>
<include-sources dir="${basedir}/src/main/flex" includes="*" />
<include-libraries file="${basedir}/libs"/>
<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true">
<include name="playerglobal.swc"/>
</compiler.external-library-path>
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs"/>
<!-- Ditch the dollar sign and things should work! -->
<include name="locale/{locale}"/>
</compiler.library-path>
<load-config filename="${basedir}/fb3config.xml" />
</compc>