Skip to content

Commit

Permalink
Ahmad/YAxis Seperations (#311)
Browse files Browse the repository at this point in the history
* indicator fix

* fix

* adding common function

* for candle , ohlc and hollow

* wrapping all

* horizontal barrier

* yAxis config clas

* adding into data_series

* remove unused

* remove unused

* scatter painter

* review fix

* review fix basic chart

* format

* cleanup clipping

* cleanup

* review fix

* add seperate label for drawing tool

* label seperation review fix

* formatting

* formatting

* fix: market closed (#312)

* formatting

* format

* format

* format

* fixing duplicate import

* fixing duplicate import

---------

Co-authored-by: balakrishna-deriv <[email protected]>
  • Loading branch information
ahmadtaimoor-deriv and balakrishna-deriv authored Jul 2, 2024
1 parent 752a52a commit 2c0cd84
Show file tree
Hide file tree
Showing 36 changed files with 205 additions and 97 deletions.
1 change: 1 addition & 0 deletions lib/deriv_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,4 @@ export 'src/add_ons/drawing_tools_ui/channel/channel_drawing_tool_config.dart';
export 'src/add_ons/drawing_tools_ui/fibfan/fibfan_drawing_tool_config.dart';
export 'src/add_ons/drawing_tools_ui/rectangle/rectangle_drawing_tool_config.dart';
export 'src/deriv_chart/chart/data_visualization/drawing_tools/drawing_data.dart';
export 'src/deriv_chart/chart/y_axis/y_axis_config.dart';
1 change: 0 additions & 1 deletion lib/src/add_ons/indicators_ui/adx/adx_indicator_item.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/widgets/field_widget.dart';

import 'package:flutter/material.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:flutter/material.dart';

import '../callbacks.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/aroon/aroon_indicator_config.dart';

import 'package:flutter/material.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/ma_indicator/ma_indicator_item.dart';
import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/deriv_chart.dart';

import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:flutter/material.dart';

import '../callbacks.dart';
import '../indicator_config.dart';
import '../indicator_item.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/gator/gator_indicator_config.dart';
import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:flutter/material.dart';

import '../callbacks.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:flutter/material.dart';

import '../callbacks.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/ma_indicator/ma_indicator_config.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/ma_indicator/ma_indicator_item.dart';

Expand Down
1 change: 0 additions & 1 deletion lib/src/add_ons/indicators_ui/roc/roc_indicator_item.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/callbacks.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/indicator_config.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/indicator_item.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/callbacks.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/indicator_config.dart';
import 'package:deriv_chart/src/add_ons/indicators_ui/indicator_item.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/generated/l10n.dart';
import 'package:deriv_chart/deriv_chart.dart';

import 'package:flutter/material.dart';

Expand Down
43 changes: 25 additions & 18 deletions lib/src/deriv_chart/chart/basic_chart.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:deriv_chart/src/deriv_chart/chart/custom_painters/chart_data_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_axis_config.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_grid_label_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_grid_label_painter_web.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_grid_line_painter.dart';
Expand Down Expand Up @@ -373,26 +374,32 @@ class BasicChartState<T extends BasicChart> extends State<T>
},
);

Widget _buildQuoteGridLine(List<double> gridLineQuotes) =>
MultipleAnimatedBuilder(
animations: getQuoteGridAnimations(),
builder: (BuildContext context, _) => RepaintBoundary(
child: CustomPaint(
painter: YGridLinePainter(
gridLineQuotes: gridLineQuotes,
quoteToCanvasY: chartQuoteToCanvasY,
style: context.watch<ChartTheme>().gridStyle,
labelWidth: (gridLineQuotes.isNotEmpty)
? labelWidth(
gridLineQuotes.first,
context.watch<ChartTheme>().gridStyle.yLabelStyle,
widget.pipSize,
)
: 0,
),
Widget _buildQuoteGridLine(List<double> gridLineQuotes) {
final double calculatedLabelWidth = (gridLineQuotes.isNotEmpty)
? labelWidth(
gridLineQuotes.first,
context.watch<ChartTheme>().gridStyle.yLabelStyle,
widget.pipSize,
)
: 0;

YAxisConfig.instance.setLabelWidth(calculatedLabelWidth +
context.watch<ChartTheme>().gridStyle.labelHorizontalPadding * 2);

return MultipleAnimatedBuilder(
animations: getQuoteGridAnimations(),
builder: (BuildContext context, _) => RepaintBoundary(
child: CustomPaint(
painter: YGridLinePainter(
gridLineQuotes: gridLineQuotes,
quoteToCanvasY: chartQuoteToCanvasY,
style: context.watch<ChartTheme>().gridStyle,
labelWidth: calculatedLabelWidth,
),
),
);
),
);
}

/// Returns a list of animation controllers to animate the top quote grid.
List<Listenable> getQuoteGridAnimations() => <Listenable>[
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/accumulator_object.dart';

import 'accumulators_closed_indicator_painter.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/annotations/barriers/accumulators_barriers/accumulators_closed_indicator.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_data.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/animation_info.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_dot.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_text.dart';
import 'package:deriv_chart/src/theme/painting_styles/barrier_style.dart';
import 'package:flutter/material.dart';

/// Accumulator barriers painter.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/accumulator_object.dart';

import 'accumulators_indicator_painter.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
import 'dart:ui' as ui;

import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_data.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/accumulator_object.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/animation_info.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/create_shape_path.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_dot.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_text.dart';
import 'package:flutter/material.dart';

/// Accumulator barriers painter.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/accumulator_object.dart';

import 'accumulators_recently_closed_indicator_painter.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import 'package:deriv_chart/deriv_chart.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/annotations/barriers/accumulators_barriers/accumulators_recently_closed_indicator.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_data.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/series_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/animation_info.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_dot.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_text.dart';
import 'package:deriv_chart/src/theme/painting_styles/barrier_style.dart';
import 'package:flutter/material.dart';

/// Accumulator barriers painter.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/create
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_dot.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_line.dart';
import 'package:deriv_chart/src/deriv_chart/chart/helpers/paint_functions/paint_text.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_axis_config.dart';
import 'package:deriv_chart/src/theme/painting_styles/barrier_style.dart';
import 'package:flutter/material.dart';

Expand Down Expand Up @@ -112,7 +113,11 @@ class HorizontalBarrierPainter<T extends HorizontalBarrier>

// Blinking dot.
if (style.hasBlinkingDot && dotX != null) {
paintBlinkingDot(canvas, dotX, y, animationInfo, style.blinkingDotColor);
// to hide the blinking spot on yAxis
YAxisConfig.instance.yAxisClipping(canvas, size, () {
paintBlinkingDot(
canvas, dotX!, y, animationInfo, style.blinkingDotColor);
});
}

final TextPainter valuePainter = makeTextPainter(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/functions/min_max_calculator.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/animation_info.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_axis_config.dart';
import 'package:deriv_chart/src/models/chart_config.dart';
import 'package:deriv_chart/src/models/tick.dart';
import 'package:deriv_chart/src/theme/chart_theme.dart';
Expand Down Expand Up @@ -314,8 +315,10 @@ abstract class DataSeries<T extends Tick> extends Series {
ChartConfig chartConfig,
ChartTheme theme,
) {
super.paint(
canvas, size, epochToX, quoteToY, animationInfo, chartConfig, theme);
YAxisConfig.instance.yAxisClipping(canvas, size, () {
super.paint(
canvas, size, epochToX, quoteToY, animationInfo, chartConfig, theme);
});

_lastTickIndicator?.paint(
canvas, size, epochToX, quoteToY, animationInfo, chartConfig, theme);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ class GatorSeries extends Series {
jawPeriod: gatorOptions.jawPeriod,
jawOffset: gatorConfig.jawOffset,
teethPeriod: gatorOptions.teethPeriod,
teethOffset: gatorConfig.teethOffset)
,
teethOffset: gatorConfig.teethOffset),
inputIndicator: _fieldIndicator,
options: gatorOptions,
style: barStyle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ class IchimokuCloudSeries extends Series {
/// SpanB line series.
late SingleIndicatorSeries spanBSeries;


/// Ichimoku series.
final List<SingleIndicatorSeries> ichimokuSeries = <SingleIndicatorSeries>[];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_data.
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/chart_series/line_series/line_painter.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/helpers/combine_paths.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/models/animation_info.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_axis_config.dart';
import 'package:deriv_chart/src/models/tick.dart';
import 'package:deriv_chart/src/theme/painting_styles/line_style.dart';
import 'package:flutter/foundation.dart';
Expand Down Expand Up @@ -114,11 +115,13 @@ class ChannelFillPainter extends DataPainter<DataSeries<Tick>> {
PathOperation.difference, channelFillPath, firstLineAreaPath);
}

canvas
..drawPath(firstDataPathInfo.path, firstLinePaint)
..drawPath(secondDataPathInfo.path, secondLinePaint)
..drawPath(firstUpperChannelFill, firstChannelFillPaint)
..drawPath(secondUpperChannelFill, secondChannelFillPaint);
YAxisConfig.instance.yAxisClipping(canvas, size, () {
canvas
..drawPath(firstDataPathInfo.path, firstLinePaint)
..drawPath(secondDataPathInfo.path, secondLinePaint)
..drawPath(firstUpperChannelFill, firstChannelFillPaint)
..drawPath(secondUpperChannelFill, secondChannelFillPaint);
});
}

void _createPathReverse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@ abstract class Drawing {
EdgePoint? endPoint,
}) {}

/// Paints Label
void onLabelPaint(
Canvas canvas,
Size size,
ChartTheme theme,
int Function(double x) epochFromX,
double Function(double) quoteFromY,
double Function(int x) epochToX,
double Function(double y) quoteToY,
DrawingToolConfig config,
DrawingData drawingData,
DataSeries<Tick> series,
) {}

/// Is called before repaint the drawing to check if it needs to be
/// repainted.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_too
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/drawing.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/drawing_data.dart';
import 'package:deriv_chart/src/deriv_chart/chart/x_axis/x_axis_model.dart';
import 'package:deriv_chart/src/deriv_chart/chart/y_axis/y_axis_config.dart';
import 'package:deriv_chart/src/misc/debounce.dart';
import 'package:deriv_chart/src/models/tick.dart';
import 'package:deriv_chart/src/theme/chart_theme.dart';
Expand Down Expand Up @@ -394,7 +395,26 @@ class _DrawingPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
for (final Drawing drawingPart in drawingData.drawingParts) {
drawingPart.onPaint(
YAxisConfig.instance.yAxisClipping(canvas, size, () {
drawingPart.onPaint(
canvas,
size,
theme,
epochFromX,
quoteFromY,
epochToX,
quoteToY,
config,
drawingData,
series,
updatePositionCallback,
draggableStartPoint,
draggableMiddlePoint: draggableMiddlePoint,
draggableEndPoint: draggableEndPoint,
);
});

drawingPart.onLabelPaint(
canvas,
size,
theme,
Expand All @@ -405,10 +425,6 @@ class _DrawingPainter extends CustomPainter {
config,
drawingData,
series,
updatePositionCallback,
draggableStartPoint,
draggableMiddlePoint: draggableMiddlePoint,
draggableEndPoint: draggableEndPoint,
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_too
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/drawing_paint_style.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/drawing_parts.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/edge_point.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/extensions.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/vector.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/data_model/point.dart';
import 'package:deriv_chart/src/deriv_chart/chart/data_visualization/drawing_tools/drawing.dart';
Expand Down Expand Up @@ -243,7 +242,7 @@ class FibfanDrawing extends Drawing with LineVectorDrawingMixin {
_drawTriangle(canvas, paint, config, _finalInnerVector);

/// Draw markers again to hide their overlap with shadows
/// The second cicle is getting created here as the lines and
/// The second cicle is getting created here as the lines and
/// second marker are getting created at same time
canvas
..drawCircle(
Expand Down
Loading

0 comments on commit 2c0cd84

Please sign in to comment.