Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
PUBLIC CLOUD
PRIVATE CLOUD
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Intelligence (Analytics)
wrap x-axis label
red4m
<p>How can I wrap the Label on the x-axis after max. 15 characters. Or after "-" , "/", " ". I dont want to cut the <strong>words in the middle</strong>.<br>
<br>
Cutting after 15 characters:</p>
<p><strong> </strong></p>
<pre class="_prettyXprint">
function beforeDrawAxisLabel( axis, label, icsc
){var tst =
label.getCaption().getValue();var wrap =
15;var repeat = Math.floor(tst.length() /
wrap);var str =
tst; if(repeat > 0){str =
""; for(i = 0; i < repeat; i++){str +=
tst.substring((i*wrap),((i+1)*wrap-1))+"\r\n";}if((tst.length()
% wrap) > 0){str +=
tst.substring((i*wrap-1),tst.length());}} label.getCaption().setValue(str);}</pre>
<p>Any ideas or same Problems?</p>
Find more posts tagged with
Comments
JFreeman
<p>You could do something like this:</p>
<pre class="_prettyXprint _lang-js">
function beforeDrawAxisLabel( axis, label, icsc )
{
var tst = label.getCaption().getValue();
var wrap = 15;
var repeat = Math.floor(tst.length() / wrap);
var str = tst;
if(repeat > 0){
for(i = 0; i < repeat; i++){
var tempString = str.substring(0, ((i+1)*wrap-1));
var lastSpace = tempString.lastIndexOf(" ");
var lastDash = tempString.lastIndexOf("-");
var lastSlash = tempString.lastIndexOf("/");
if(lastSpace > lastDash && lastSpace > lastSlash){
str = str.substring(0, lastSpace) + "\r\n" + str.substring(lastSpace, str.length());
}else if(lastDash > lastSpace && lastDash > lastSlash){
str = str.substring(0, lastSpace) + "\r\n" + str.substring(lastDash, str.length());
}else if(lastSlash > lastSpace && lastSlash > lastDash){
str = str.substring(0, lastSpace) + "\r\n" + str.substring(lastSlash, str.length());
}
}
}
label.getCaption().setValue(str);
}
</pre>
red4m
<p>Thank you but there is an error.</p>
<p><span>+ </span>TypeError: Cannot call property length in object "my text: is here"</p>
red4m
<p>Found the Problem: no () on length() and</p>
<p><b>var</b> tst = <b>new</b> String(label.getCaption().getValue());</p>
JFreeman
<p>Sorry for the delay.</p>
<p>I'm glad to hear you got it working.</p>
<p> </p>
<p>Let us know if you have any additional questions.</p>
shivkumar150
<p>Well instead of keeping the character counts fixed as 15, you could use the spaces between words for slicing. This one is working fine.</p>
<pre class="_prettyXprint _lang-js">
function beforeDrawAxisLabel( axis, label, icsc )
{
var txtlbl=label.getCaption().getValue();
if(txtlbl.indexOf(" ")>0){
var spaceArray=[];
var space=txtlbl.indexOf(" ");
while(space>=0){
spaceArray.push(space);
space=txtlbl.indexOf(" ",space+1);
}
if(spaceArray.length==1){
label.getCaption().setValue(txtlbl.substring(0,spaceArray[0])+"\r\n"+txtlbl.substring(spaceArray[0]+1,txtlbl.length()));
}
if(spaceArray.length>=2){
label.getCaption().setValue(txtlbl.substring(0,spaceArray[0])+"\r\n"+txtlbl.substring(spaceArray[0]+1,spaceArray[1])+"\r\n"+txtlbl.substring(spaceArray[1]+1,txtlbl.length()));
}
}
label.setVisible(true);
label.getCaption().getFont().setSize(12);
}
</pre>