From b6bba2d2ccbd6e12b4b49766e99eb6bb44bb003a Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Tue, 11 Apr 2023 20:47:17 +0200 Subject: [PATCH] feat: added new grid chart --- Kit/plugins/Charts.swift | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Kit/plugins/Charts.swift b/Kit/plugins/Charts.swift index d675f156..dc85a386 100644 --- a/Kit/plugins/Charts.swift +++ b/Kit/plugins/Charts.swift @@ -750,3 +750,54 @@ public class BarChartView: NSView { } } } + +public class GridChartView: NSView { + private let okColor: NSColor = .systemGreen + private let notOkColor: NSColor = .systemRed + private let inactiveColor: NSColor = .underPageBackgroundColor.withAlphaComponent(0.4) + + private var values: [NSColor] = [] + private let grid: (rows: Int, columns: Int) + + public init(frame: NSRect, grid: (rows: Int, columns: Int)) { + self.grid = grid + super.init(frame: frame) + self.values = Array(repeating: self.inactiveColor, count: grid.rows * grid.columns) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + public override func draw(_ dirtyRect: NSRect) { + let spacing: CGFloat = 2 + let size: CGSize = CGSize( + width: (self.frame.width - ((CGFloat(self.grid.rows)-1) * spacing)) / CGFloat(self.grid.rows), + height: (self.frame.height - ((CGFloat(self.grid.columns)-1) * spacing)) / CGFloat(self.grid.columns) + ) + var origin: CGPoint = CGPoint(x: 0, y: (size.height + spacing) * CGFloat(self.grid.columns - 1)) + + var i: Int = 0 + for _ in 0..