Hi Claudiu, Here is part of the existing code of the custom component.
Data is invalidated in the dataProvider setter and used in commitProperties:
override protected function commitProperties():void
{
super.commitProperties();
if(isTextColorStyleChanged)
{
isTextColorStyleChanged = false;
pricesAreaChart.setStyle("color",
textColorData);
pricesHLOCChart.setStyle("color",
textColorData);
tradeVolumesChart.setStyle("color",
textColorData);
legend.setStyle("color", textColorData);
}
if(isFontFamilyStyleChanged)
{
isFontFamilyStyleChanged = false;
pricesAreaChart.setStyle("fontFamily",
fontFamilyData);
pricesHLOCChart.setStyle("fontFamily",
fontFamilyData);
tradeVolumesChart.setStyle("fontFamily",
fontFamilyData);
legend.setStyle("fontFamily", fontFamilyData);
}
if(isFontWeightStyleChanged)
{
isFontWeightStyleChanged = false;
pricesAreaChart.setStyle("fontWeight",
fontWeightData);
pricesHLOCChart.setStyle("fontWeight",
fontWeightData);
tradeVolumesChart.setStyle("fontWeight",
fontWeightData);
legend.setStyle("fontWeight", fontWeightData);
}
if(isFontSizeStyleChanged)
{
isFontSizeStyleChanged = false;
pricesAreaChart.setStyle("fontSize",
fontSizeData);
pricesHLOCChart.setStyle("fontSize",
fontSizeData);
tradeVolumesChart.setStyle("fontSize",
fontSizeData);
legend.setStyle("fontSize", fontSizeData);
}
if(this._bDataDirty)
{
this._bDataDirty = false;
// Update the time line start and end time
timeLine.startTime = minTime;
timeLine.endTime = maxTime;
// Reset charts series
pricesAreaChart.series = [];
pricesHLOCChart.series = [];
tradeVolumesChart.series = [];
// Reset change watchers to prevent memory
leaks as we do no set useWeakReference to true
for each(var changeWatcher:ChangeWatcher in
changeWatchers)
{
changeWatcher.unwatch();
changeWatcher = null;
}
changeWatchers = [];
// Remove Dynamic skin parts
for each(var dynamicSkinPartObject:Object in
dynamicPartsInstances) {
removeDynamicPartInstance(dynamicSkinPartObject.partName,
dynamicSkinPartObject.instance);
}
dynamicPartsInstances = [];
// Create charts series
var columnSet:ColumnSet = new ColumnSet();
columnSet.type = "stacked";
for each(var item:StockDataItemDTO in
dataProvider)
{
if(item.data)
{
if(item.isPrimary) {
timeLineAreaSeries.dataProvider = item.data;
}
// Create one data tip per market
//createDataTip(item);
//#######################################
// Each StockDataItem
represents a market
//#######################################
//-------------------------------------------------------------------------
// Top chart: Spread, Level 1,
VWAP - AreaSeries, LineSeries and HLOCSeries
//-------------------------------------------------------------------------
// Spread area
var spreadAreaSeries:AreaSeries
= new AreaSeries();
spreadAreaSeries.dataProvider =
item.data;
spreadAreaSeries.xField =
"date";
spreadAreaSeries.yField =
"high";
spreadAreaSeries.minField =
"low";
var spreadAreaStroke:IStroke =
new SolidColorStroke(item.areaColor, 1, 0.4);
var
spreadAreaFill:LinearGradient = new LinearGradient();
var spreadAreaRatio:Number =
0.0;
spreadAreaFill.rotation = 90;
var gradientEntries:Array = [];
for each(var spreadColor:Number
in item.areaFill)
{
var
gradientEntry:GradientEntry = new GradientEntry(spreadColor, spreadAreaRatio,
0.1);
gradientEntries.push(gradientEntry);
spreadAreaRatio += 0.33;
}
spreadAreaFill.entries =
gradientEntries;
spreadAreaSeries.setStyle("areaFill", spreadAreaFill);
spreadAreaSeries.setStyle("form", formData);
pricesAreaChart.series.push(spreadAreaSeries);
changeWatchers.push(BindingUtils.bindProperty(spreadAreaSeries, "visible",
item, "isSpreadDisplayed"));
// Level 1 (Price)
var priceLineSeries:LineSeries
= new LineSeries();
priceLineSeries.dataProvider =
item.data;
priceLineSeries.xField = "date";
priceLineSeries.yField =
"price";
var priceLineStroke:IStroke =
new SolidColorStroke(item.priceColor, 1, 1);
priceLineSeries.setStyle("lineStroke", priceLineStroke);
var priceLineFilter:GlowFilter
= new GlowFilter(0xFFFFFF, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
//priceLineSeries.filters =
[priceLineFilter];
priceLineSeries.setStyle("form", formData);
pricesAreaChart.series.push(priceLineSeries);
changeWatchers.push(BindingUtils.bindProperty(priceLineSeries, "visible", item,
"isLevel1Displayed"));
if(item.isPrimary) {
changeWatchers.push(BindingUtils.bindSetter(priceLineSeriesVisibleChanged,
item, "isLevel1Displayed"));
}
priceLineSeries.addEventListener(FlexEvent.HIDE,
seriesHideShowHandler);
priceLineSeries.addEventListener(FlexEvent.SHOW,
seriesHideShowHandler);
// VWAP line
var vwapLineSeries1:LineSeries
= new LineSeries();
vwapLineSeries1.dataProvider =
item.data;
vwapLineSeries1.xField="date";
vwapLineSeries1.yField="vwap";
var vwapLineStroke:IStroke =
new SolidColorStroke(0xFFFFFF, 1, 1); // Line the same color for all markets
(default is white)
vwapLineSeries1.setStyle("lineStroke", vwapLineStroke);
var vwapFilter:GlowFilter = new
GlowFilter(item.priceColor, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
//vwapLineSeries1.filters =
[vwapFilter];
vwapLineSeries1.setStyle("form", formData);
pricesAreaChart.series.push(vwapLineSeries1);
changeWatchers.push(BindingUtils.bindProperty(vwapLineSeries1, "visible", item,
"isVWAPDisplayed"));
var highLineSeries1:LineSeries
= new LineSeries();
highLineSeries1.dataProvider =
item.data;
highLineSeries1.xField = "date";
highLineSeries1.yField = "high";
highLineSeries1.setStyle("lineStroke", spreadAreaStroke);
highLineSeries1.setStyle("form", formData);
var lowLineSeries1:LineSeries =
new LineSeries();
lowLineSeries1.dataProvider =
item.data;
lowLineSeries1.xField = "date";
lowLineSeries1.yField = "low";
lowLineSeries1.setStyle("lineStroke", spreadAreaStroke);
lowLineSeries1.setStyle("form",
formData);
pricesAreaChart.series.push(highLineSeries1);
pricesAreaChart.series.push(lowLineSeries1);
changeWatchers.push(BindingUtils.bindProperty(highLineSeries1, "visible", item,
"isSpreadDisplayed"));
changeWatchers.push(BindingUtils.bindProperty(lowLineSeries1, "visible", item,
"isSpreadDisplayed"));
// HLOC
var hlocSeries:HLOCSeries = new
HLOCSeries();
hlocSeries.dataProvider =
item.data;
hlocSeries.xField="date";
hlocSeries.openField="open";
hlocSeries.highField="high";
hlocSeries.lowField="low";
hlocSeries.closeField="close";
hlocSeries.setStyle("openTickLength", 7);
hlocSeries.setStyle("closeTickLength", 7);
var hlocLineStroke:IStroke =
new SolidColorStroke(item.hlocColor, 1, 1);
hlocSeries.setStyle("lineStroke", hlocLineStroke);
var closeTickStroke:IStroke =
new SolidColorStroke(item.closeTickColor, 1, 1);
hlocSeries.setStyle("closeTickStroke", closeTickStroke);
var openTickStroke:IStroke =
new SolidColorStroke(item.openTickColor, 1, 1);
hlocSeries.setStyle("openTickStroke", openTickStroke);
var highLineSeries2:LineSeries
= new LineSeries();
highLineSeries2.dataProvider =
item.data;
highLineSeries2.xField = "date";
highLineSeries2.yField = "high";
highLineSeries2.setStyle("lineStroke", spreadAreaStroke);
highLineSeries2.setStyle("form", formData);
var lowLineSeries2:LineSeries =
new LineSeries();
lowLineSeries2.dataProvider =
item.data;
lowLineSeries2.xField = "date";
lowLineSeries2.yField = "low";
lowLineSeries2.setStyle("lineStroke", spreadAreaStroke);
lowLineSeries2.setStyle("form",
formData);
pricesHLOCChart.series.push(hlocSeries);
pricesHLOCChart.series.push(highLineSeries2);
pricesHLOCChart.series.push(lowLineSeries2);
changeWatchers.push(BindingUtils.bindProperty(highLineSeries2, "visible", item,
"isSpreadDisplayed"));
changeWatchers.push(BindingUtils.bindProperty(lowLineSeries2, "visible", item,
"isSpreadDisplayed"));
// VWAP line
var vwapLineSeries2:LineSeries
= new LineSeries();
vwapLineSeries2.dataProvider =
item.data;
vwapLineSeries2.xField="date";
vwapLineSeries2.yField="vwap";
var vwapLineStroke:IStroke =
new SolidColorStroke(0xFFFFFF, 1, 1); // Line the same color for all markets
(default is white)
vwapLineSeries2.setStyle("lineStroke", vwapLineStroke);
var vwapFilter:GlowFilter = new
GlowFilter(item.priceColor, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
//vwapLineSeries2.filters =
[vwapFilter];
vwapLineSeries2.setStyle("form", formData);
pricesHLOCChart.series.push(vwapLineSeries2);
changeWatchers.push(BindingUtils.bindProperty(vwapLineSeries2, "visible", item,
"isVWAPDisplayed"));
//----------------------------------------------
// Bottom chart: Volume of trades - ColumnSeries
//----------------------------------------------
if(currentAlertType.levelOneVolume)
{
var volumeColumnSeries:ColumnSeries = new
ColumnSeries();
volumeColumnSeries.dataProvider = item.data;
volumeColumnSeries.xField="date";
volumeColumnSeries.yField="volume";
volumeColumnSeries.setStyle("stroke",
spreadAreaStroke); // Same values as the spread
volumeColumnSeries.setStyle("fill",
spreadAreaFill); // Same values as the spread
volumeColumnSeries.displayName = item.marketName;
columnSet.series.push(volumeColumnSeries);
changeWatchers.push(BindingUtils.bindProperty(volumeColumnSeries, "visible",
item, "isLevel1Displayed"));
tradeVolumesChart.visible = true;
tradeVolumesChart.includeInLayout = true;
pricesAreaChart.height = 200;
pricesHLOCChart.height = 200;
}
else
{
tradeVolumesChart.visible = false;
tradeVolumesChart.includeInLayout = false;
pricesAreaChart.height = 400;
pricesHLOCChart.height = 400;
}
}
}
tradeVolumesChart.series = columnSet.series;
}
timeLine.startTime = startTime;
timeLine.endTime = endTime;
// Create dingbats for the alert being investigated
createDingBats();
// Reset price at time of order line on both price and
HLOC canvases
pricesAreaBackgroundCanvas.clear();
pricesHLOCBackgroundCanvas.clear();
invalidateDisplayList();
}
--- In [email protected], claudiu ursica <the_braniak@...> wrote:
>
> Hi Karl,
> Can you share some basic example? I don't know how your chart and data looks
> like, and how you add/discard new data.
>
> I see you already ran into this and did not work...
> https://userflex.wordpress.com/2011/04/21/update-linear-axis/
>
> C
>
>
>
> ________________________________
> From: k.sigiscar <k.sigiscar@...>
> To: [email protected]
> Sent: Monday, July 9, 2012 10:24 AM
> Subject: [flexcoders] Resetting Chart scale on LineAxis
>
>
> Â
> Hi,
>
> I have a chart with dynamic series on a LinearAxis (Y) and a DateTimeAxis (X).
>
> The series visibility can be set to true / false by the user.
>
> When a series with a very high value is displayed, the rest of the chart is
> scaled down.
>
> When the series with the high values is then discarded (visibility set to
> false), the chart doesn't scale down again.
>
> Is there a way to force the chart to "reset its scale" (min/max) values ?
>
> Best regards,
> Karl Sigiscar.
>

