I am creating a flex table dynamically with the following code.
for (int CurrentRow=1;CurrentRow<2;CurrentRow++)
{
Label lblGettingName = new Label("Getting Name...");
View.getMainFlex().setWidget(CurrentRow, 0, lblGettingName);
Button btnViewDetails = new Button("View Details");
View.getMainFlex().setWidget(CurrentRow, 1, btnViewDetails);
Label lblGettingBid = new Label("Getting Bid...");
View.getMainFlex().setWidget(CurrentRow, 2, lblGettingBid);
View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold");
Label lblGettingBidDesription = new Label("Getting Bid Desription...");
lblGettingBidDesription.setStyleName("BidDesc");
View.getMainFlex().setWidget(CurrentRow, 3, lblGettingBidDesription);
View.getMainFlex().getCellFormatter().setWidth(CurrentRow, 3, "40");
View.getMainFlex().getFlexCellFormatter().setStylePrimaryName(CurrentRow, 3, ".BidDesc");
Label lblCalculating = new Label("Calculating..");
Label lblCalculatingTime = new Label("Calculating Time...");
View.getMainFlex().setWidget(CurrentRow, 4, lblCalculatingTime);
View.getMainFlex().getFlexCellFormatter().setStyleName(1,4, "BackNormalNotBold");
TextBox textBox = new TextBox();
View.getMainFlex().setWidget(CurrentRow+1, 3, textBox);
View.getMainFlex().getCellFormatter().setWidth(CurrentRow+1, 3, "40");
View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 0, "BackNormalNotBold");
View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 1, "BackNormalNotBold");
View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold");
View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow+1, 3, "BackNormalNotBold");
View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 4, 3);
View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 2, 3);
View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 1, 3);
View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 0, 3);
View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow+1, 3, 2);
View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow, 3, 2);
View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow-1, 3, 2);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 1, HasHorizontalAlignment.ALIGN_CENTER);
View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 1, HasVerticalAlignment.ALIGN_MIDDLE);
View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 0, HasVerticalAlignment.ALIGN_MIDDLE);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 0, HasHorizontalAlignment.ALIGN_CENTER);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 2, HasHorizontalAlignment.ALIGN_CENTER);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+1, 3, HasHorizontalAlignment.ALIGN_CENTER);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 3, HasHorizontalAlignment.ALIGN_CENTER);
Button btnPlaceBid = new Button("Bid!");
View.getMainFlex().setWidget(CurrentRow+2, 3, btnPlaceBid);
View.getMainFlex().getCellFormatter().setWidth(CurrentRow+2, 3, "20");
btnPlaceBid.setSize("66px", "26px");
ToggleButton tglbtnAutomate = new ToggleButton("Automate");
View.getMainFlex().setWidget(3, 4, tglbtnAutomate);
View.getMainFlex().getCellFormatter().setWidth(3, 4, "20");
tglbtnAutomate.getDownHoveringFace().setText("TurnOFF");
tglbtnAutomate.getUpHoveringFace().setText("TurnON");
tglbtnAutomate.getDownDisabledFace().setText("Enable");
tglbtnAutomate.setHTML("Auto:OFF");
tglbtnAutomate.getUpFace().setHTML("Auto:OFF");
tglbtnAutomate.getDownFace().setHTML("Auto:ON");
tglbtnAutomate.setSize("54px", "18px");
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+2, 3, HasHorizontalAlignment.ALIGN_RIGHT);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow-1, 4, HasHorizontalAlignment.ALIGN_CENTER);
View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 4, HasHorizontalAlignment.ALIGN_CENTER);
}
FlexTableHelper.fixRowSpan(View.getMainFlex());
When the loop executes only once, the correct layout is generated but when i try to create more than 1 row, the layout degerate
Most likely problems with flextable are caused by setRowSpan/setColSpan methods which can easily wreak havoc in layout. Instead of using those methods you can create composite widget/Html and place it in cells so Flextable will have less amount of rows/columns.
FlexTable uses old element attributes of td like width, height, align etc.
It is not yet adapted to use CSS instead even in the newest release. IE11 does no longer support <td align="..."> at all, for example.
Related
I have a dasaset of length 200 and length of each row of data is also 200. This dataset is space separated. Here is sample dataset (first row).
-0.1100208269729097 0.1248460463105589 -0.01559138588255286 -0.01625839428292603 -0.05323888667281371 0.06722185430549973 -0.0490877148079949 -0.05039368886946847 0.0897270838973875 0.00754589058726465 -0.06693447805463611 -0.1193740974362337 -0.02214573804045866 0.02930806967704801 -0.009567144727872222 -0.02288991169653539 0.04256313697292451 -0.08190168271952417 0.008274133732539695 -0.02299227162395361 0.0111923018567119 -0.009872522389769637 0.06866110814693088 0.04622954799009332 0.05498202029091768 -0.06672541846259043 -0.05130079655965012 0.1107659505844031 0.07912810279475517 0.02246390669165305 -0.06997067603392053 -0.02069109953229961 -0.05191987832821615 -0.01971016519416264 -0.008691704006401698 -0.02963829527404451 0.02332929010677706 -0.1035585589634834 0.03801924036385142 -0.07035181096148016 -0.02460761051792025 0.05545479574143786 0.06632500394350074 -0.01693623441811409 -0.0202000922412099 0.0387732166529701 -0.06835009268170482 -0.06684471565316714 0.09737868086728406 -0.03776102176325794 -0.03087980353481784 -0.04630278791951752 -0.1129739647985331 0.09622849675187727 0.05975310144103099 -0.08083650075114446 0.05258346559791484 0.05583993856089118 -0.03916345795047688 -0.2981097687887527 0.04087798461219992 0.07153463501552468 0.07113045074135986 0.01717619972420815 -0.01893649865573213 -0.007503347735166889 0.06551854299072507 -0.005153581328393866 -0.08659840104899437 0.04864888731854276 0.08965801176651583 -0.004562179660153576 -0.1252787635844004 0.06896990208188783 -0.003925090827015415 -0.05755687748680104 -0.02544736897698906 0.02530385776038159 -0.125784848738536 0.07433650535349738 0.02153916317259382 0.04738213124034089 -0.03299623626264642 0.02073383160046674 -0.008966711746564809 0.04983292315200202 0.01974696673478601 -0.04419678420395467 -0.02442715323795661 -0.0694663145847256 0.1101497271416977 0.04200639135007367 -0.06082113335723243 -0.01473508072467703 0.01142600017146485 -0.03532257289246362 -0.02260329422449697 0.05396810070565884 0.1581078158241939 -0.05426153505070038 -0.01534772560258162 -0.04461245038675606 -0.05082561044342486 0.003953621713155758 -0.09395992245069541 0.02029879424655968 0.09397373054431565 -0.01540603811173099 -0.00188325436669238 0.07341578917873427 -0.07930228379622654 -0.01519407550785842 0.01388266474816023 0.09152064522133056 0.0106446218365201 -0.2157572256227169 0.04804075039482639 0.01970079327929429 -0.04738197196862703 0.06770927522186629 0.1006260778362594 -0.06299061441376895 0.02961951153113571 0.01572783315493193 0.1349089347411493 -0.0242042239418958 -0.07337276266118564 -0.09620055007994345 0.04754719051788902 -0.04777964847293222 0.01477148963357754 0.06678924792453055 0.05579081171364433 -0.03405429131223387 0.03615588517175376 -0.1554971840439641 -0.04581567263300179 -0.07873107398807083 0.05966093431149457 -0.128446162280915 -0.05912532817875745 0.1194692701951161 0.1103496401807509 0.0153127716173752 0.01607453121383664 -0.07114032721360454 0.03276185612322021 0.1169776569257143 0.07706242373764424 0.04889932405415184 0.0008715101384050066 0.006894007893755344 0.04519320187367908 -0.001306669064508431 0.0291067296150834 -0.02697983215093226 -0.07374490898814057 -0.04408652590757124 0.118965444980577 0.08668199929217432 0.02704832616237655 0.01473294258443707 0.02049896556673346 -0.0569226246137925 -0.0120183686689177 -0.1007080842912528 0.03517628230997978 -0.2003177929062758 0.01491215547976228 0.04590546935765301 0.1670139443078561 -0.05992676476987346 0.07038240324837636 -0.003567431692839979 0.08197255057946093 -0.01384071718153512 0.01443837418022523 -0.0393556604031245 0.003264844777785919 -0.190455395258628 -0.09122702488367737 -0.007113243408323287 0.1221344569965773 -0.06583221256210335 0.002275841418885295 -0.02418590378253777 -0.02462843336523757 -0.1054326841702153 -0.009075125286585313 0.05233463322601897 -0.09944517224527978 0.08201627957443283 0.1144830692826725 -0.1488155291532296 0.001711351371442085 0.06463339531524601 0.02089587578959802 -0.05699940762150812 0.01798950350182588 -0.01642350646709232
I tried in following way to convert it into comma seperated data. Here is my code
val bufferedSource1 = Source.fromFile(Path1 + name)
val lines1 : Iterator[String] = bufferedSource1.getLines()
val lines2 = lines1.toArray
println( lines2(0).toList )
Result of last line of code is
List(-, 0, ., 1, 1, 0, 0, 2, 0, 8, 2, 6, 9, 7, 2, 9, 0, 9, 7, , 0, ., 1, 2, 4, 8, 4, 6, 0, 4, 6, 3, 1, 0, 5, 5, 8, 9, , -, 0, ., 0, 1, 5, 5, 9, 1, 3, 8, 5, 8, 8, 2, 5, 5, 2, 8, 6, , -, 0, ., 0, 1, 6, 2, 5, 8, 3, 9, 4, 2, 8, 2, 9, 2, 6, 0, 3, , -, 0, ., 0, 5, 3, 2,.........
This is returning me single character but I want complete row that will be space separated. How can I fix This issue?
here is remaining code for conversion
val data1 : Array[Array[Double]] = lines2.flatMap{xz : String =>
Seq (xz.replaceAll(" ", ",").split(",").map(_.toDouble) )
}.toArray
import spark.implicits._
val ds = List("-0.1100208269729097 0.1248460463105589 -0.01559138588255286 -0.01625839428292603 -0.05323888667281371 0.06722185430549973 -0.0490877148079949 -0.05039368886946847 0.0897270838973875 0.00754589058726465 -0.06693447805463611 -0.1193740974362337 -0.02214573804045866 0.02930806967704801 -0.009567144727872222 -0.02288991169653539 0.04256313697292451 -0.08190168271952417 0.008274133732539695 -0.02299227162395361 0.0111923018567119 -0.009872522389769637 0.06866110814693088 0.04622954799009332 0.05498202029091768 -0.06672541846259043 -0.05130079655965012 0.1107659505844031 0.07912810279475517 0.02246390669165305 -0.06997067603392053 -0.02069109953229961 -0.05191987832821615 -0.01971016519416264 ","-0.1100208269729097 0.1248460463105589 -0.01559138588255286 -0.01625839428292603 -0.05323888667281371 0.06722185430549973 -0.0490877148079949 -0.05039368886946847 0.0897270838973875 0.00754589058726465 -0.06693447805463611 -0.1193740974362337 -0.02214573804045866 0.02930806967704801 -0.009567144727872222 -0.02288991169653539 0.04256313697292451 -0.08190168271952417 0.008274133732539695 -0.02299227162395361 0.0111923018567119 -0.009872522389769637 0.06866110814693088 0.04622954799009332 0.05498202029091768 -0.06672541846259043 -0.05130079655965012 0.1107659505844031 0.07912810279475517 0.02246390669165305 -0.06997067603392053 -0.02069109953229961 -0.05191987832821615 -0.01971016519416264 ").toDS()
ds.map(i=> i.split(" ").mkString(",")).show(false)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|-0.1100208269729097,0.1248460463105589,-0.01559138588255286,-0.01625839428292603,-0.05323888667281371,0.06722185430549973,-0.0490877148079949,-0.05039368886946847,0.0897270838973875,0.00754589058726465,-0.06693447805463611,-0.1193740974362337,-0.02214573804045866,0.02930806967704801,-0.009567144727872222,-0.02288991169653539,0.04256313697292451,-0.08190168271952417,0.008274133732539695,-0.02299227162395361,0.0111923018567119,-0.009872522389769637,0.06866110814693088,0.04622954799009332,0.05498202029091768,-0.06672541846259043,-0.05130079655965012,0.1107659505844031,0.07912810279475517,0.02246390669165305,-0.06997067603392053,-0.02069109953229961,-0.05191987832821615,-0.01971016519416264|
|-0.1100208269729097,0.1248460463105589,-0.01559138588255286,-0.01625839428292603,-0.05323888667281371,0.06722185430549973,-0.0490877148079949,-0.05039368886946847,0.0897270838973875,0.00754589058726465,-0.06693447805463611,-0.1193740974362337,-0.02214573804045866,0.02930806967704801,-0.009567144727872222,-0.02288991169653539,0.04256313697292451,-0.08190168271952417,0.008274133732539695,-0.02299227162395361,0.0111923018567119,-0.009872522389769637,0.06866110814693088,0.04622954799009332,0.05498202029091768,-0.06672541846259043,-0.05130079655965012,0.1107659505844031,0.07912810279475517,0.02246390669165305,-0.06997067603392053,-0.02069109953229961,-0.05191987832821615,-0.01971016519416264|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
I have recently started using PlotlyJS.
I am trying to create a subplots of relative bar charts (bar charts with barmode=relative). Unfortunately it seems that the bar charts lose their barmode attribute, when they become a subplot. For example:
# PlotlyJS
using PlotlyJS;
pltjs = PlotlyJS
function bar1()
trace1 = pltjs.bar(;x=[1, 2, 3, 4], y=[1, 4, 9, 16], name="Trace1")
trace2 = pltjs.bar(;x=[1, 2, 3, 4], y=[6, -8, -4.5, 8], name="Trace2")
data = [trace1, trace2];
layout = pltjs.Layout(;xaxis_title="X axis",
yaxis_title="Y axis",
barmode="relative",
title="Relative 1");
pltjs.plot(data, layout)
end
function bar2()
trace3 = pltjs.bar(;x=[1, 2, 3, 4], y=[-15, -3, 4.5, -8], name="Trace3")
trace4 = pltjs.bar(;x=[1, 2, 3, 4], y=[-1, 3, -3, -4], name="Trace4")
data = [trace3, trace4];
layout = pltjs.Layout(;xaxis_title="X axis",
yaxis_title="Y axis",
barmode="relative",
title="Relative 2");
pltjs.plot(data, layout)
end
p1 = bar1();
pltjs.savefig(p1, "./fig1.pdf") # This works
p2 = bar2();
pltjs.savefig(p2, "./fig2.pdf") # This works
p3 = [bar1() bar2()];
pltjs.savefig(p3, "./fig3.pdf") # This doesn't works
I have seen similar issues in other languages, but I wasn't able to find a workaround for Julia. Would you please explain me why doesn't work and how to fix it?
I managed to do it using the code below:
p3.plot.layout["barmode"] = "relative";
I have two arrays
var availableIndex: Int[] = [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14]
var answerIndex: Int[] = [1, 3, 10, 8]
I want to remove 1, 3, 10, 8 from availableIndex array. I've seen the documentation how to achieve that using removeObjectsInArray
availableIndex.removeObjectsInArray(answerIndex)
but I can't use that method, it gave me an error. I have no idea where's my fault. Sorry if my bad English
edit:
here is the error 'Int[]' does not have a member named 'removeObjectsInArray'
The proper Swifty way to do this is
availableIndex = availableIndex.filter { value in
!answerIndex.contains(value)
}
(will create a new filtered array only with values not contained in answerIndex)
Of course, a better solution would be to convert answerIndex into a Set.
removeObjectsInArray is defined only on Obj-C mutable arrays (NSMutableArray).
An Obj-C workaround is to define the array directly as NSMutableArray
var availableIndex: NSMutableArray = [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14]
var answerIndex: Int[] = [1, 3, 10, 8]
availableIndex.removeObjectsInArray(answerIndex)
It's also possible to do it like that:
availableIndex.removeAll(where: { answerIndex.contains($0) })
I want to try the ReedSolomonDecoder from the ZXing library on the example given on page 10 of this paper
Basically, it encodes the message
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
using the generator polynomial
x^4 + 15x^3 + 3x^2 + x + 12
which results in
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 3, 12, 12
I want to decode this in the following manner:
int[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 3, 12, 12};
GenericGF field = new GenericGF(?, 16, 1); // what integer should I use for primitive here?
ReedSolomonDecoder decoder = new ReedSolomonDecoder(field);
decoder.decode(data, 4);
I don't know how to create a GenericGF object from the given generator polynomial. I know that it expects a binary integer representation of the polynomial, but to do that, I would need the polynomial to be in an irreducible form, i.e. all the coefficients to be either 0 or 1. How can I achieve that from this given generator polynomial?
I'm pretty new to this as well but I think you would want to use
public static GenericGF AZTEC_PARAM = new GenericGF(0x13, 16, 1);
I need to generate a chart like this one:
Specifically, I want to show both a positive value and a negative value for a time period (could be an hour, minute, etc.) and display it like this.
I could have sworn I saw something like this on the Google Visualization API Gallery the other day, but I can't find it now, and am not even sure what this kind of chart is called.
First, do you know what this kind of chart is called so I can possibly find documentation? Second, is there any way to implement such a chart with the Google Visualization API? If not, is there another common charting solution for web that I can achieve this with?
Thank you for your time.
This is called a "Stacked Bar Chart", and can indeed be created with the Google Visualisation API.
Simply use the "isStacked" property (described here; http://code.google.com/apis/visualization/documentation/gallery/barchart.html).
Here's some sample code (based off the default bar chart example provided by Google and updated to show the use of isStacked and some sample data from your example);
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Month');
data.addColumn('number');
data.addColumn('number');
data.addRows(12);
data.setCell(0, 0, 'January');
data.setCell(1, 0, 'February');
data.setCell(2, 0, 'March');
data.setCell(3, 0, 'April');
data.setCell(4, 0, 'May');
data.setCell(5, 0, 'June');
data.setCell(6, 0, 'July');
data.setCell(7, 0, 'August');
data.setCell(8, 0, 'September');
data.setCell(9, 0, 'October');
data.setCell(10, 0, 'November');
data.setCell(11, 0, 'December');
data.setCell(0, 1, 19);
data.setCell(1, 1, 18);
data.setCell(2, 1, 20);
data.setCell(3, 1, 19);
data.setCell(4, 1, 18);
data.setCell(5, 1, 20);
data.setCell(6, 1, 19);
data.setCell(7, 1, 18);
data.setCell(8, 1, 20);
data.setCell(9, 1, 19);
data.setCell(10, 1, 18);
data.setCell(11, 1, 20);
data.setCell(0, 2, -12);
data.setCell(1, 2, -13);
data.setCell(2, 2, -11);
data.setCell(3, 2, -12);
data.setCell(4, 2, -13);
data.setCell(5, 2, -11);
data.setCell(6, 2, -12);
data.setCell(7, 2, -13);
data.setCell(8, 2, -11);
data.setCell(9, 2, -12);
data.setCell(10, 2, -13);
data.setCell(11, 2, -11);
data.setCell(0, 2, -12);
data.setCell(1, 2, -13);
data.setCell(2, 2, -11);
// Create and draw the visualization.
new google.visualization.ColumnChart(document.getElementById('visualization')).
draw(data,
{title:"S&P 500 Up/Down Performance Since 1980",
width:600, height:400,
isStacked:"true",
legend:"none" }
);
}
And the results...
Use ColumnChart instead of BarChart:
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
https://jsfiddle.net/0rrar9oq/16