Commit 2666579b authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

no message

parent c2d18ff1
...@@ -159,6 +159,44 @@ ...@@ -159,6 +159,44 @@
A94C0E8624DA7044007F577D /* UIImageView+Rotate.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E0724DA7044007F577D /* UIImageView+Rotate.m */; }; A94C0E8624DA7044007F577D /* UIImageView+Rotate.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E0724DA7044007F577D /* UIImageView+Rotate.m */; };
A94C0E8724DA7044007F577D /* UIColor+StoryBoard.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E0824DA7044007F577D /* UIColor+StoryBoard.m */; }; A94C0E8724DA7044007F577D /* UIColor+StoryBoard.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E0824DA7044007F577D /* UIColor+StoryBoard.m */; };
A94C0E8E24DBABA9007F577D /* ICIAPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E8C24DBABA9007F577D /* ICIAPViewController.m */; }; A94C0E8E24DBABA9007F577D /* ICIAPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E8C24DBABA9007F577D /* ICIAPViewController.m */; };
A94C0EDA24DBF1B4007F577D /* StatisticsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0E9524DBF1B3007F577D /* StatisticsViewController.m */; };
A94C0F4724DBF952007F577D /* AAAreaspline.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0EFB24DBF952007F577D /* AAAreaspline.m */; };
A94C0F4824DBF952007F577D /* AALabels.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0EFD24DBF952007F577D /* AALabels.m */; };
A94C0F4924DBF952007F577D /* AASeries.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0024DBF952007F577D /* AASeries.m */; };
A94C0F4A24DBF952007F577D /* AAXAxis.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0124DBF952007F577D /* AAXAxis.m */; };
A94C0F4B24DBF952007F577D /* AAPlotOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0224DBF952007F577D /* AAPlotOptions.m */; };
A94C0F4C24DBF952007F577D /* AADataLabels.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0324DBF952007F577D /* AADataLabels.m */; };
A94C0F4D24DBF952007F577D /* AAPlotBandsElement.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0424DBF952007F577D /* AAPlotBandsElement.m */; };
A94C0F4E24DBF952007F577D /* AALine.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0524DBF952007F577D /* AALine.m */; };
A94C0F4F24DBF952007F577D /* AATooltip.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0824DBF952007F577D /* AATooltip.m */; };
A94C0F5024DBF952007F577D /* AAYAxis.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0B24DBF952007F577D /* AAYAxis.m */; };
A94C0F5124DBF952007F577D /* AAShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0C24DBF952007F577D /* AAShadow.m */; };
A94C0F5224DBF952007F577D /* AACrosshair.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0D24DBF952007F577D /* AACrosshair.m */; };
A94C0F5324DBF952007F577D /* AACredits.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0E24DBF952007F577D /* AACredits.m */; };
A94C0F5424DBF952007F577D /* AAStates.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F0F24DBF952007F577D /* AAStates.m */; };
A94C0F5524DBF952007F577D /* AAPane.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1224DBF952007F577D /* AAPane.m */; };
A94C0F5624DBF952007F577D /* AAColumn.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1424DBF952007F577D /* AAColumn.m */; };
A94C0F5724DBF952007F577D /* AALang.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1524DBF952007F577D /* AALang.m */; };
A94C0F5824DBF952007F577D /* AAPlotLinesElement.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1624DBF952007F577D /* AAPlotLinesElement.m */; };
A94C0F5924DBF952007F577D /* AAStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1924DBF952007F577D /* AAStyle.m */; };
A94C0F5A24DBF952007F577D /* AABar.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1A24DBF952007F577D /* AABar.m */; };
A94C0F5B24DBF952007F577D /* AATitle.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1B24DBF952007F577D /* AATitle.m */; };
A94C0F5C24DBF952007F577D /* AAArea.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1E24DBF952007F577D /* AAArea.m */; };
A94C0F5D24DBF952007F577D /* AAAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F1F24DBF952007F577D /* AAAnimation.m */; };
A94C0F5E24DBF952007F577D /* AALabel.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F2024DBF952007F577D /* AALabel.m */; };
A94C0F5F24DBF952007F577D /* AALegend.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F2124DBF952007F577D /* AALegend.m */; };
A94C0F6024DBF952007F577D /* AAMarker.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F2324DBF952007F577D /* AAMarker.m */; };
A94C0F6124DBF952007F577D /* AASpline.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F2924DBF952007F577D /* AASpline.m */; };
A94C0F6224DBF952007F577D /* AAPie.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F2B24DBF952007F577D /* AAPie.m */; };
A94C0F6324DBF952007F577D /* AAChart.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F3324DBF952007F577D /* AAChart.m */; };
A94C0F6424DBF952007F577D /* AAJSStringPurer.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F3524DBF952007F577D /* AAJSStringPurer.m */; };
A94C0F6524DBF952007F577D /* AAColor.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F3924DBF952007F577D /* AAColor.m */; };
A94C0F6624DBF952007F577D /* AAGradientColor.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F3A24DBF952007F577D /* AAGradientColor.m */; };
A94C0F6724DBF952007F577D /* AAJSFiles.bundle in Resources */ = {isa = PBXBuildFile; fileRef = A94C0F3B24DBF952007F577D /* AAJSFiles.bundle */; };
A94C0F6824DBF952007F577D /* AAChartView.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F3E24DBF952007F577D /* AAChartView.m */; };
A94C0F6924DBF952007F577D /* AAChartModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F4124DBF952007F577D /* AAChartModel.m */; };
A94C0F6A24DBF952007F577D /* AAOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F4324DBF952007F577D /* AAOptions.m */; };
A94C0F6B24DBF952007F577D /* AASeriesElement.m in Sources */ = {isa = PBXBuildFile; fileRef = A94C0F4424DBF952007F577D /* AASeriesElement.m */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
...@@ -413,6 +451,83 @@ ...@@ -413,6 +451,83 @@
A94C0E0824DA7044007F577D /* UIColor+StoryBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+StoryBoard.m"; sourceTree = "<group>"; }; A94C0E0824DA7044007F577D /* UIColor+StoryBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+StoryBoard.m"; sourceTree = "<group>"; };
A94C0E8C24DBABA9007F577D /* ICIAPViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ICIAPViewController.m; sourceTree = "<group>"; }; A94C0E8C24DBABA9007F577D /* ICIAPViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ICIAPViewController.m; sourceTree = "<group>"; };
A94C0E8D24DBABA9007F577D /* ICIAPViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ICIAPViewController.h; sourceTree = "<group>"; }; A94C0E8D24DBABA9007F577D /* ICIAPViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ICIAPViewController.h; sourceTree = "<group>"; };
A94C0E9124DBF1B3007F577D /* StatisticsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatisticsViewController.h; sourceTree = "<group>"; };
A94C0E9524DBF1B3007F577D /* StatisticsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatisticsViewController.m; sourceTree = "<group>"; };
A94C0EFA24DBF952007F577D /* AAArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAArea.h; sourceTree = "<group>"; };
A94C0EFB24DBF952007F577D /* AAAreaspline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAAreaspline.m; sourceTree = "<group>"; };
A94C0EFC24DBF952007F577D /* AATitle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AATitle.h; sourceTree = "<group>"; };
A94C0EFD24DBF952007F577D /* AALabels.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AALabels.m; sourceTree = "<group>"; };
A94C0EFE24DBF952007F577D /* AAStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAStyle.h; sourceTree = "<group>"; };
A94C0EFF24DBF952007F577D /* AABar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AABar.h; sourceTree = "<group>"; };
A94C0F0024DBF952007F577D /* AASeries.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AASeries.m; sourceTree = "<group>"; };
A94C0F0124DBF952007F577D /* AAXAxis.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAXAxis.m; sourceTree = "<group>"; };
A94C0F0224DBF952007F577D /* AAPlotOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPlotOptions.m; sourceTree = "<group>"; };
A94C0F0324DBF952007F577D /* AADataLabels.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AADataLabels.m; sourceTree = "<group>"; };
A94C0F0424DBF952007F577D /* AAPlotBandsElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPlotBandsElement.m; sourceTree = "<group>"; };
A94C0F0524DBF952007F577D /* AALine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AALine.m; sourceTree = "<group>"; };
A94C0F0624DBF952007F577D /* AAMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAMarker.h; sourceTree = "<group>"; };
A94C0F0724DBF952007F577D /* AALegend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AALegend.h; sourceTree = "<group>"; };
A94C0F0824DBF952007F577D /* AATooltip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AATooltip.m; sourceTree = "<group>"; };
A94C0F0924DBF952007F577D /* AALabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AALabel.h; sourceTree = "<group>"; };
A94C0F0A24DBF952007F577D /* AAAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAAnimation.h; sourceTree = "<group>"; };
A94C0F0B24DBF952007F577D /* AAYAxis.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAYAxis.m; sourceTree = "<group>"; };
A94C0F0C24DBF952007F577D /* AAShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAShadow.m; sourceTree = "<group>"; };
A94C0F0D24DBF952007F577D /* AACrosshair.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AACrosshair.m; sourceTree = "<group>"; };
A94C0F0E24DBF952007F577D /* AACredits.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AACredits.m; sourceTree = "<group>"; };
A94C0F0F24DBF952007F577D /* AAStates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAStates.m; sourceTree = "<group>"; };
A94C0F1024DBF952007F577D /* AAPie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPie.h; sourceTree = "<group>"; };
A94C0F1124DBF952007F577D /* AASpline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AASpline.h; sourceTree = "<group>"; };
A94C0F1224DBF952007F577D /* AAPane.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPane.m; sourceTree = "<group>"; };
A94C0F1324DBF952007F577D /* AAChart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAChart.h; sourceTree = "<group>"; };
A94C0F1424DBF952007F577D /* AAColumn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAColumn.m; sourceTree = "<group>"; };
A94C0F1524DBF952007F577D /* AALang.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AALang.m; sourceTree = "<group>"; };
A94C0F1624DBF952007F577D /* AAPlotLinesElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPlotLinesElement.m; sourceTree = "<group>"; };
A94C0F1724DBF952007F577D /* AAXAxis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAXAxis.h; sourceTree = "<group>"; };
A94C0F1824DBF952007F577D /* AASeries.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AASeries.h; sourceTree = "<group>"; };
A94C0F1924DBF952007F577D /* AAStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAStyle.m; sourceTree = "<group>"; };
A94C0F1A24DBF952007F577D /* AABar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AABar.m; sourceTree = "<group>"; };
A94C0F1B24DBF952007F577D /* AATitle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AATitle.m; sourceTree = "<group>"; };
A94C0F1C24DBF952007F577D /* AALabels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AALabels.h; sourceTree = "<group>"; };
A94C0F1D24DBF952007F577D /* AAAreaspline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAAreaspline.h; sourceTree = "<group>"; };
A94C0F1E24DBF952007F577D /* AAArea.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAArea.m; sourceTree = "<group>"; };
A94C0F1F24DBF952007F577D /* AAAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAAnimation.m; sourceTree = "<group>"; };
A94C0F2024DBF952007F577D /* AALabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AALabel.m; sourceTree = "<group>"; };
A94C0F2124DBF952007F577D /* AALegend.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AALegend.m; sourceTree = "<group>"; };
A94C0F2224DBF952007F577D /* AATooltip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AATooltip.h; sourceTree = "<group>"; };
A94C0F2324DBF952007F577D /* AAMarker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAMarker.m; sourceTree = "<group>"; };
A94C0F2424DBF952007F577D /* AALine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AALine.h; sourceTree = "<group>"; };
A94C0F2524DBF952007F577D /* AAPlotBandsElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPlotBandsElement.h; sourceTree = "<group>"; };
A94C0F2624DBF952007F577D /* AADataLabels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AADataLabels.h; sourceTree = "<group>"; };
A94C0F2724DBF952007F577D /* AAPlotOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPlotOptions.h; sourceTree = "<group>"; };
A94C0F2824DBF952007F577D /* AAPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPane.h; sourceTree = "<group>"; };
A94C0F2924DBF952007F577D /* AASpline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AASpline.m; sourceTree = "<group>"; };
A94C0F2A24DBF952007F577D /* AAStates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAStates.h; sourceTree = "<group>"; };
A94C0F2B24DBF952007F577D /* AAPie.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPie.m; sourceTree = "<group>"; };
A94C0F2C24DBF952007F577D /* AAShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAShadow.h; sourceTree = "<group>"; };
A94C0F2D24DBF952007F577D /* AACredits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AACredits.h; sourceTree = "<group>"; };
A94C0F2E24DBF952007F577D /* AACrosshair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AACrosshair.h; sourceTree = "<group>"; };
A94C0F2F24DBF952007F577D /* AAYAxis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAYAxis.h; sourceTree = "<group>"; };
A94C0F3024DBF952007F577D /* AAPlotLinesElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPlotLinesElement.h; sourceTree = "<group>"; };
A94C0F3124DBF952007F577D /* AALang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AALang.h; sourceTree = "<group>"; };
A94C0F3224DBF952007F577D /* AAColumn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAColumn.h; sourceTree = "<group>"; };
A94C0F3324DBF952007F577D /* AAChart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAChart.m; sourceTree = "<group>"; };
A94C0F3524DBF952007F577D /* AAJSStringPurer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAJSStringPurer.m; sourceTree = "<group>"; };
A94C0F3624DBF952007F577D /* AAGradientColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAGradientColor.h; sourceTree = "<group>"; };
A94C0F3724DBF952007F577D /* AAColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAColor.h; sourceTree = "<group>"; };
A94C0F3824DBF952007F577D /* AAJSStringPurer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAJSStringPurer.h; sourceTree = "<group>"; };
A94C0F3924DBF952007F577D /* AAColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAColor.m; sourceTree = "<group>"; };
A94C0F3A24DBF952007F577D /* AAGradientColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAGradientColor.m; sourceTree = "<group>"; };
A94C0F3B24DBF952007F577D /* AAJSFiles.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = AAJSFiles.bundle; sourceTree = "<group>"; };
A94C0F3D24DBF952007F577D /* AAOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAOptions.h; sourceTree = "<group>"; };
A94C0F3E24DBF952007F577D /* AAChartView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAChartView.m; sourceTree = "<group>"; };
A94C0F3F24DBF952007F577D /* AAGlobalMacro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAGlobalMacro.h; sourceTree = "<group>"; };
A94C0F4024DBF952007F577D /* AASeriesElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AASeriesElement.h; sourceTree = "<group>"; };
A94C0F4124DBF952007F577D /* AAChartModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAChartModel.m; sourceTree = "<group>"; };
A94C0F4224DBF952007F577D /* AAChartKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAChartKit.h; sourceTree = "<group>"; };
A94C0F4324DBF952007F577D /* AAOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAOptions.m; sourceTree = "<group>"; };
A94C0F4424DBF952007F577D /* AASeriesElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AASeriesElement.m; sourceTree = "<group>"; };
A94C0F4524DBF952007F577D /* AAChartView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAChartView.h; sourceTree = "<group>"; };
A94C0F4624DBF952007F577D /* AAChartModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAChartModel.h; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
...@@ -611,6 +726,7 @@ ...@@ -611,6 +726,7 @@
A94C0D4024DA7043007F577D /* Other */ = { A94C0D4024DA7043007F577D /* Other */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A94C0E8F24DBF1B3007F577D /* AAChartKitLib */,
A94C0D4B24DA7043007F577D /* BatteryCareBluetooth.plist */, A94C0D4B24DA7043007F577D /* BatteryCareBluetooth.plist */,
A94C0D5624DA7043007F577D /* BatteryCareLocation.plist */, A94C0D5624DA7043007F577D /* BatteryCareLocation.plist */,
A94C0D5424DA7043007F577D /* BatteryCareLowPowerMode.plist */, A94C0D5424DA7043007F577D /* BatteryCareLowPowerMode.plist */,
...@@ -947,6 +1063,114 @@ ...@@ -947,6 +1063,114 @@
path = Extension; path = Extension;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
A94C0E8F24DBF1B3007F577D /* AAChartKitLib */ = {
isa = PBXGroup;
children = (
A94C0F3C24DBF952007F577D /* AAChartCreator */,
A94C0F3B24DBF952007F577D /* AAJSFiles.bundle */,
A94C0EF924DBF952007F577D /* AAOptionsModel */,
A94C0F3424DBF952007F577D /* AATool */,
A94C0E9124DBF1B3007F577D /* StatisticsViewController.h */,
A94C0E9524DBF1B3007F577D /* StatisticsViewController.m */,
);
path = AAChartKitLib;
sourceTree = "<group>";
};
A94C0EF924DBF952007F577D /* AAOptionsModel */ = {
isa = PBXGroup;
children = (
A94C0EFA24DBF952007F577D /* AAArea.h */,
A94C0EFB24DBF952007F577D /* AAAreaspline.m */,
A94C0EFC24DBF952007F577D /* AATitle.h */,
A94C0EFD24DBF952007F577D /* AALabels.m */,
A94C0EFE24DBF952007F577D /* AAStyle.h */,
A94C0EFF24DBF952007F577D /* AABar.h */,
A94C0F0024DBF952007F577D /* AASeries.m */,
A94C0F0124DBF952007F577D /* AAXAxis.m */,
A94C0F0224DBF952007F577D /* AAPlotOptions.m */,
A94C0F0324DBF952007F577D /* AADataLabels.m */,
A94C0F0424DBF952007F577D /* AAPlotBandsElement.m */,
A94C0F0524DBF952007F577D /* AALine.m */,
A94C0F0624DBF952007F577D /* AAMarker.h */,
A94C0F0724DBF952007F577D /* AALegend.h */,
A94C0F0824DBF952007F577D /* AATooltip.m */,
A94C0F0924DBF952007F577D /* AALabel.h */,
A94C0F0A24DBF952007F577D /* AAAnimation.h */,
A94C0F0B24DBF952007F577D /* AAYAxis.m */,
A94C0F0C24DBF952007F577D /* AAShadow.m */,
A94C0F0D24DBF952007F577D /* AACrosshair.m */,
A94C0F0E24DBF952007F577D /* AACredits.m */,
A94C0F0F24DBF952007F577D /* AAStates.m */,
A94C0F1024DBF952007F577D /* AAPie.h */,
A94C0F1124DBF952007F577D /* AASpline.h */,
A94C0F1224DBF952007F577D /* AAPane.m */,
A94C0F1324DBF952007F577D /* AAChart.h */,
A94C0F1424DBF952007F577D /* AAColumn.m */,
A94C0F1524DBF952007F577D /* AALang.m */,
A94C0F1624DBF952007F577D /* AAPlotLinesElement.m */,
A94C0F1724DBF952007F577D /* AAXAxis.h */,
A94C0F1824DBF952007F577D /* AASeries.h */,
A94C0F1924DBF952007F577D /* AAStyle.m */,
A94C0F1A24DBF952007F577D /* AABar.m */,
A94C0F1B24DBF952007F577D /* AATitle.m */,
A94C0F1C24DBF952007F577D /* AALabels.h */,
A94C0F1D24DBF952007F577D /* AAAreaspline.h */,
A94C0F1E24DBF952007F577D /* AAArea.m */,
A94C0F1F24DBF952007F577D /* AAAnimation.m */,
A94C0F2024DBF952007F577D /* AALabel.m */,
A94C0F2124DBF952007F577D /* AALegend.m */,
A94C0F2224DBF952007F577D /* AATooltip.h */,
A94C0F2324DBF952007F577D /* AAMarker.m */,
A94C0F2424DBF952007F577D /* AALine.h */,
A94C0F2524DBF952007F577D /* AAPlotBandsElement.h */,
A94C0F2624DBF952007F577D /* AADataLabels.h */,
A94C0F2724DBF952007F577D /* AAPlotOptions.h */,
A94C0F2824DBF952007F577D /* AAPane.h */,
A94C0F2924DBF952007F577D /* AASpline.m */,
A94C0F2A24DBF952007F577D /* AAStates.h */,
A94C0F2B24DBF952007F577D /* AAPie.m */,
A94C0F2C24DBF952007F577D /* AAShadow.h */,
A94C0F2D24DBF952007F577D /* AACredits.h */,
A94C0F2E24DBF952007F577D /* AACrosshair.h */,
A94C0F2F24DBF952007F577D /* AAYAxis.h */,
A94C0F3024DBF952007F577D /* AAPlotLinesElement.h */,
A94C0F3124DBF952007F577D /* AALang.h */,
A94C0F3224DBF952007F577D /* AAColumn.h */,
A94C0F3324DBF952007F577D /* AAChart.m */,
);
path = AAOptionsModel;
sourceTree = "<group>";
};
A94C0F3424DBF952007F577D /* AATool */ = {
isa = PBXGroup;
children = (
A94C0F3524DBF952007F577D /* AAJSStringPurer.m */,
A94C0F3624DBF952007F577D /* AAGradientColor.h */,
A94C0F3724DBF952007F577D /* AAColor.h */,
A94C0F3824DBF952007F577D /* AAJSStringPurer.h */,
A94C0F3924DBF952007F577D /* AAColor.m */,
A94C0F3A24DBF952007F577D /* AAGradientColor.m */,
);
path = AATool;
sourceTree = "<group>";
};
A94C0F3C24DBF952007F577D /* AAChartCreator */ = {
isa = PBXGroup;
children = (
A94C0F3D24DBF952007F577D /* AAOptions.h */,
A94C0F3E24DBF952007F577D /* AAChartView.m */,
A94C0F3F24DBF952007F577D /* AAGlobalMacro.h */,
A94C0F4024DBF952007F577D /* AASeriesElement.h */,
A94C0F4124DBF952007F577D /* AAChartModel.m */,
A94C0F4224DBF952007F577D /* AAChartKit.h */,
A94C0F4324DBF952007F577D /* AAOptions.m */,
A94C0F4424DBF952007F577D /* AASeriesElement.m */,
A94C0F4524DBF952007F577D /* AAChartView.h */,
A94C0F4624DBF952007F577D /* AAChartModel.h */,
);
path = AAChartCreator;
sourceTree = "<group>";
};
BD3C86FD92F309BFDA7C7C1A /* Frameworks */ = { BD3C86FD92F309BFDA7C7C1A /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -1045,6 +1269,7 @@ ...@@ -1045,6 +1269,7 @@
A94C0E2F24DA7044007F577D /* ICBatteryCareMainTextViewCell.xib in Resources */, A94C0E2F24DA7044007F577D /* ICBatteryCareMainTextViewCell.xib in Resources */,
A94C0E7D24DA7044007F577D /* ICContactManageViewCell.xib in Resources */, A94C0E7D24DA7044007F577D /* ICContactManageViewCell.xib in Resources */,
A94C0E2624DA7044007F577D /* BatteryCareNotification.plist in Resources */, A94C0E2624DA7044007F577D /* BatteryCareNotification.plist in Resources */,
A94C0F6724DBF952007F577D /* AAJSFiles.bundle in Resources */,
A94C0E2A24DA7044007F577D /* BatteryCareLowPowerMode.plist in Resources */, A94C0E2A24DA7044007F577D /* BatteryCareLowPowerMode.plist in Resources */,
A94C0E2424DA7044007F577D /* BatteryCareBluetooth.plist in Resources */, A94C0E2424DA7044007F577D /* BatteryCareBluetooth.plist in Resources */,
A94C0CF524DA69B3007F577D /* LaunchScreen.storyboard in Resources */, A94C0CF524DA69B3007F577D /* LaunchScreen.storyboard in Resources */,
...@@ -1118,51 +1343,71 @@ ...@@ -1118,51 +1343,71 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
A94C0F6224DBF952007F577D /* AAPie.m in Sources */,
A94C0E8724DA7044007F577D /* UIColor+StoryBoard.m in Sources */, A94C0E8724DA7044007F577D /* UIColor+StoryBoard.m in Sources */,
A94C0E6B24DA7044007F577D /* ICContactsBackup.m in Sources */, A94C0E6B24DA7044007F577D /* ICContactsBackup.m in Sources */,
A94C0F5024DBF952007F577D /* AAYAxis.m in Sources */,
A94C0F6424DBF952007F577D /* AAJSStringPurer.m in Sources */,
A94C0F6324DBF952007F577D /* AAChart.m in Sources */,
A94C0E3324DA7044007F577D /* ICBatteryProgressView.m in Sources */, A94C0E3324DA7044007F577D /* ICBatteryProgressView.m in Sources */,
A94C0E2924DA7044007F577D /* ICCalenderEventViewController.m in Sources */, A94C0E2924DA7044007F577D /* ICCalenderEventViewController.m in Sources */,
A94C0E5E24DA7044007F577D /* BaseLayout.swift in Sources */, A94C0E5E24DA7044007F577D /* BaseLayout.swift in Sources */,
A94C0E3D24DA7044007F577D /* ICBatteryCareListHeaderViewCell.m in Sources */, A94C0E3D24DA7044007F577D /* ICBatteryCareListHeaderViewCell.m in Sources */,
A94C0F5124DBF952007F577D /* AAShadow.m in Sources */,
A94C0F6124DBF952007F577D /* AASpline.m in Sources */,
A94C0E4A24DA7044007F577D /* ICIPAProductModel.m in Sources */, A94C0E4A24DA7044007F577D /* ICIPAProductModel.m in Sources */,
A94C0E6F24DA7044007F577D /* ICContactRepeatViewController.m in Sources */, A94C0E6F24DA7044007F577D /* ICContactRepeatViewController.m in Sources */,
A94C0E4F24DA7044007F577D /* SCHomeCell.m in Sources */, A94C0E4F24DA7044007F577D /* SCHomeCell.m in Sources */,
A94C0E4724DA7044007F577D /* WKSimilarPhotoViewController.m in Sources */, A94C0E4724DA7044007F577D /* WKSimilarPhotoViewController.m in Sources */,
A94C0F5B24DBF952007F577D /* AATitle.m in Sources */,
A94C0E5B24DA7044007F577D /* MeasurNetTools.m in Sources */, A94C0E5B24DA7044007F577D /* MeasurNetTools.m in Sources */,
A94C0CF424DA69B3007F577D /* AppDelegate.m in Sources */, A94C0CF424DA69B3007F577D /* AppDelegate.m in Sources */,
A94C0E4B24DA7044007F577D /* WKPhotoInfoItem.m in Sources */, A94C0E4B24DA7044007F577D /* WKPhotoInfoItem.m in Sources */,
A94C0F5724DBF952007F577D /* AALang.m in Sources */,
A94C0E6D24DA7044007F577D /* ICContactsTool.m in Sources */, A94C0E6D24DA7044007F577D /* ICContactsTool.m in Sources */,
A94C0E1D24DA7044007F577D /* ICUserManager.m in Sources */, A94C0E1D24DA7044007F577D /* ICUserManager.m in Sources */,
A94C0F4B24DBF952007F577D /* AAPlotOptions.m in Sources */,
A94C0E6724DA7044007F577D /* QJGIFView.m in Sources */, A94C0E6724DA7044007F577D /* QJGIFView.m in Sources */,
A94C0F5224DBF952007F577D /* AACrosshair.m in Sources */,
A94C0E0B24DA7044007F577D /* ICWebViewController.m in Sources */, A94C0E0B24DA7044007F577D /* ICWebViewController.m in Sources */,
A94C0E1C24DA7044007F577D /* WMEventCalendarTool.m in Sources */, A94C0E1C24DA7044007F577D /* WMEventCalendarTool.m in Sources */,
A94C0F6A24DBF952007F577D /* AAOptions.m in Sources */,
A94C0E3224DA7044007F577D /* ICBatteryCareSubTextViewCell.m in Sources */, A94C0E3224DA7044007F577D /* ICBatteryCareSubTextViewCell.m in Sources */,
A94C0E6124DA7044007F577D /* STDebugFoundation.m in Sources */, A94C0E6124DA7044007F577D /* STDebugFoundation.m in Sources */,
A94C0E5724DA7044007F577D /* ICPhotoManageHeaderView.m in Sources */, A94C0E5724DA7044007F577D /* ICPhotoManageHeaderView.m in Sources */,
A94C0E5924DA7044007F577D /* ICBigPhotoViewerCell.m in Sources */, A94C0E5924DA7044007F577D /* ICBigPhotoViewerCell.m in Sources */,
A94C0E6224DA7044007F577D /* STSimplePing.m in Sources */, A94C0E6224DA7044007F577D /* STSimplePing.m in Sources */,
A94C0E7C24DA7044007F577D /* ICContactsBackupHeader.m in Sources */, A94C0E7C24DA7044007F577D /* ICContactsBackupHeader.m in Sources */,
A94C0F5D24DBF952007F577D /* AAAnimation.m in Sources */,
A94C0E4D24DA7044007F577D /* WKSimilarPhotoCell.m in Sources */, A94C0E4D24DA7044007F577D /* WKSimilarPhotoCell.m in Sources */,
A94C0E7024DA7044007F577D /* ICContactsBackupSubController.m in Sources */, A94C0E7024DA7044007F577D /* ICContactsBackupSubController.m in Sources */,
A94C0E1E24DA7044007F577D /* ICCleanDustViewController.m in Sources */, A94C0E1E24DA7044007F577D /* ICCleanDustViewController.m in Sources */,
A94C0E1124DA7044007F577D /* ICDiskKit.m in Sources */, A94C0E1124DA7044007F577D /* ICDiskKit.m in Sources */,
A94C0E1224DA7044007F577D /* ICGetSimilarity.m in Sources */, A94C0E1224DA7044007F577D /* ICGetSimilarity.m in Sources */,
A94C0F4D24DBF952007F577D /* AAPlotBandsElement.m in Sources */,
A94C0E6424DA7044007F577D /* KeychainItemWrapper.m in Sources */, A94C0E6424DA7044007F577D /* KeychainItemWrapper.m in Sources */,
A94C0E5A24DA7044007F577D /* QBTools.m in Sources */, A94C0E5A24DA7044007F577D /* QBTools.m in Sources */,
A94C0E2224DA7044007F577D /* ICNetworkSpeedViewController.m in Sources */, A94C0E2224DA7044007F577D /* ICNetworkSpeedViewController.m in Sources */,
A94C0F5824DBF952007F577D /* AAPlotLinesElement.m in Sources */,
A94C0E4624DA7044007F577D /* ICNormalPhotoViewController.m in Sources */, A94C0E4624DA7044007F577D /* ICNormalPhotoViewController.m in Sources */,
A94C0E2E24DA7044007F577D /* SCNetWorkDashBoardView.swift in Sources */, A94C0E2E24DA7044007F577D /* SCNetWorkDashBoardView.swift in Sources */,
A94C0E2724DA7044007F577D /* ICDbTestViewController.m in Sources */, A94C0E2724DA7044007F577D /* ICDbTestViewController.m in Sources */,
A94C0E7324DA7044007F577D /* ICContactListViewController.m in Sources */, A94C0E7324DA7044007F577D /* ICContactListViewController.m in Sources */,
A94C0E3424DA7044007F577D /* ICBatteryCareMainTextViewCell.m in Sources */, A94C0E3424DA7044007F577D /* ICBatteryCareMainTextViewCell.m in Sources */,
A94C0F5624DBF952007F577D /* AAColumn.m in Sources */,
A94C0CC824DA69B3007F577D /* SCConstants.swift in Sources */, A94C0CC824DA69B3007F577D /* SCConstants.swift in Sources */,
A94C0E5324DA7044007F577D /* ICLocationPhotoListViewCell.m in Sources */, A94C0E5324DA7044007F577D /* ICLocationPhotoListViewCell.m in Sources */,
A94C0F4724DBF952007F577D /* AAAreaspline.m in Sources */,
A94C0E6C24DA7044007F577D /* ICContactListModel.m in Sources */, A94C0E6C24DA7044007F577D /* ICContactListModel.m in Sources */,
A94C0E5524DA7044007F577D /* LXCircle.m in Sources */, A94C0E5524DA7044007F577D /* LXCircle.m in Sources */,
A94C0E7224DA7044007F577D /* ICContactsViewController.m in Sources */, A94C0E7224DA7044007F577D /* ICContactsViewController.m in Sources */,
A94C0F4C24DBF952007F577D /* AADataLabels.m in Sources */,
A94C0E0C24DA7044007F577D /* ICGuideViewController.m in Sources */, A94C0E0C24DA7044007F577D /* ICGuideViewController.m in Sources */,
A94C0F5924DBF952007F577D /* AAStyle.m in Sources */,
A94C0E6824DA7044007F577D /* MBProgressHUD+MJ.m in Sources */, A94C0E6824DA7044007F577D /* MBProgressHUD+MJ.m in Sources */,
A94C0EDA24DBF1B4007F577D /* StatisticsViewController.m in Sources */,
A94C0E1724DA7044007F577D /* GetSimilarity.m in Sources */, A94C0E1724DA7044007F577D /* GetSimilarity.m in Sources */,
A94C0F5524DBF952007F577D /* AAPane.m in Sources */,
A94C0E1A24DA7044007F577D /* ICBasePhotoModel.m in Sources */, A94C0E1A24DA7044007F577D /* ICBasePhotoModel.m in Sources */,
A94C0E8E24DBABA9007F577D /* ICIAPViewController.m in Sources */, A94C0E8E24DBABA9007F577D /* ICIAPViewController.m in Sources */,
A94C0E8224DA7044007F577D /* NSString+LJExtension.m in Sources */, A94C0E8224DA7044007F577D /* NSString+LJExtension.m in Sources */,
...@@ -1176,13 +1421,18 @@ ...@@ -1176,13 +1421,18 @@
A94C0E4124DA7044007F577D /* ICHomeViewController.m in Sources */, A94C0E4124DA7044007F577D /* ICHomeViewController.m in Sources */,
A94C0E7A24DA7044007F577D /* ICContactsIncompleteCell.m in Sources */, A94C0E7A24DA7044007F577D /* ICContactsIncompleteCell.m in Sources */,
A94C0D0724DA69B3007F577D /* main.m in Sources */, A94C0D0724DA69B3007F577D /* main.m in Sources */,
A94C0F4A24DBF952007F577D /* AAXAxis.m in Sources */,
A94C0E7424DA7044007F577D /* ICContactsBackupCell.m in Sources */, A94C0E7424DA7044007F577D /* ICContactsBackupCell.m in Sources */,
A94C0E0924DA7044007F577D /* ICBaseViewController.m in Sources */, A94C0E0924DA7044007F577D /* ICBaseViewController.m in Sources */,
A94C0E1F24DA7044007F577D /* ICBatteryCareViewController.m in Sources */, A94C0E1F24DA7044007F577D /* ICBatteryCareViewController.m in Sources */,
A94C0E1924DA7044007F577D /* BMChineseSort.m in Sources */, A94C0E1924DA7044007F577D /* BMChineseSort.m in Sources */,
A94C0F6024DBF952007F577D /* AAMarker.m in Sources */,
A94C0E5224DA7044007F577D /* GSPregressView.swift in Sources */, A94C0E5224DA7044007F577D /* GSPregressView.swift in Sources */,
A94C0E0D24DA7044007F577D /* ICGuideCollectionViewCell.m in Sources */, A94C0E0D24DA7044007F577D /* ICGuideCollectionViewCell.m in Sources */,
A94C0E4824DA7044007F577D /* ICSettingTableViewController.m in Sources */, A94C0E4824DA7044007F577D /* ICSettingTableViewController.m in Sources */,
A94C0F5E24DBF952007F577D /* AALabel.m in Sources */,
A94C0F6624DBF952007F577D /* AAGradientColor.m in Sources */,
A94C0F6524DBF952007F577D /* AAColor.m in Sources */,
A94C0E1424DA7044007F577D /* ZTNetworkTools.m in Sources */, A94C0E1424DA7044007F577D /* ZTNetworkTools.m in Sources */,
A94C0E3824DA7044007F577D /* ICDbDashboardView.swift in Sources */, A94C0E3824DA7044007F577D /* ICDbDashboardView.swift in Sources */,
A94C0E4024DA7044007F577D /* WKClearPhotoViewController.m in Sources */, A94C0E4024DA7044007F577D /* WKClearPhotoViewController.m in Sources */,
...@@ -1191,6 +1441,8 @@ ...@@ -1191,6 +1441,8 @@
A94C0E3524DA7044007F577D /* ICCalendarEventViewCell.m in Sources */, A94C0E3524DA7044007F577D /* ICCalendarEventViewCell.m in Sources */,
A94C0E1B24DA7044007F577D /* ZTUserInfoModel.m in Sources */, A94C0E1B24DA7044007F577D /* ZTUserInfoModel.m in Sources */,
A94C0E7B24DA7044007F577D /* ICContactsRepeatCell.m in Sources */, A94C0E7B24DA7044007F577D /* ICContactsRepeatCell.m in Sources */,
A94C0F5C24DBF952007F577D /* AAArea.m in Sources */,
A94C0F5A24DBF952007F577D /* AABar.m in Sources */,
A94C0E4924DA7044007F577D /* WKClearPhotoItem.m in Sources */, A94C0E4924DA7044007F577D /* WKClearPhotoItem.m in Sources */,
A94C0E5D24DA7044007F577D /* ContentAlignableLayout.swift in Sources */, A94C0E5D24DA7044007F577D /* ContentAlignableLayout.swift in Sources */,
A94C0E3B24DA7044007F577D /* ICNetworkDashBoard.swift in Sources */, A94C0E3B24DA7044007F577D /* ICNetworkDashBoard.swift in Sources */,
...@@ -1199,9 +1451,12 @@ ...@@ -1199,9 +1451,12 @@
A94C0E5C24DA7044007F577D /* FacebookLayout.swift in Sources */, A94C0E5C24DA7044007F577D /* FacebookLayout.swift in Sources */,
A94C0E1324DA7044007F577D /* AESCipher.m in Sources */, A94C0E1324DA7044007F577D /* AESCipher.m in Sources */,
A94C0E5124DA7044007F577D /* ICDatePickerView.m in Sources */, A94C0E5124DA7044007F577D /* ICDatePickerView.m in Sources */,
A94C0F6B24DBF952007F577D /* AASeriesElement.m in Sources */,
A94C0F4824DBF952007F577D /* AALabels.m in Sources */,
A94C0E6624DA7044007F577D /* Data.m in Sources */, A94C0E6624DA7044007F577D /* Data.m in Sources */,
A94C0E5824DA7044007F577D /* ICPvwPhotoViewerCell.m in Sources */, A94C0E5824DA7044007F577D /* ICPvwPhotoViewerCell.m in Sources */,
A94C0E3E24DA7044007F577D /* ICBatteryCareListViewCell.m in Sources */, A94C0E3E24DA7044007F577D /* ICBatteryCareListViewCell.m in Sources */,
A94C0F5324DBF952007F577D /* AACredits.m in Sources */,
A94C0E6A24DA7044007F577D /* PYHDocument.m in Sources */, A94C0E6A24DA7044007F577D /* PYHDocument.m in Sources */,
A94C0E1824DA7044007F577D /* WKCompressImageTool.m in Sources */, A94C0E1824DA7044007F577D /* WKCompressImageTool.m in Sources */,
A94C0E5F24DA7044007F577D /* DeviceInfo.m in Sources */, A94C0E5F24DA7044007F577D /* DeviceInfo.m in Sources */,
...@@ -1210,14 +1465,21 @@ ...@@ -1210,14 +1465,21 @@
A94C0E2124DA7044007F577D /* ICCalenderReminderController.m in Sources */, A94C0E2124DA7044007F577D /* ICCalenderReminderController.m in Sources */,
A94C0E7F24DA7044007F577D /* ICContactsRepeatHeader.m in Sources */, A94C0E7F24DA7044007F577D /* ICContactsRepeatHeader.m in Sources */,
A94C0E1624DA7044007F577D /* WKClearPhotoManager.m in Sources */, A94C0E1624DA7044007F577D /* WKClearPhotoManager.m in Sources */,
A94C0F4F24DBF952007F577D /* AATooltip.m in Sources */,
A94C0E6024DA7044007F577D /* QiSlider.m in Sources */, A94C0E6024DA7044007F577D /* QiSlider.m in Sources */,
A94C0E7924DA7044007F577D /* ICContactsListCell.m in Sources */, A94C0E7924DA7044007F577D /* ICContactsListCell.m in Sources */,
A94C0E8124DA7044007F577D /* ImageSimilarity.swift in Sources */, A94C0E8124DA7044007F577D /* ImageSimilarity.swift in Sources */,
A94C0E4224DA7044007F577D /* ICPhotoLocationViewController.m in Sources */, A94C0E4224DA7044007F577D /* ICPhotoLocationViewController.m in Sources */,
A94C0F5F24DBF952007F577D /* AALegend.m in Sources */,
A94C0E8524DA7044007F577D /* UIView+HExtension.m in Sources */, A94C0E8524DA7044007F577D /* UIView+HExtension.m in Sources */,
A94C0F6924DBF952007F577D /* AAChartModel.m in Sources */,
A94C0F6824DBF952007F577D /* AAChartView.m in Sources */,
A94C0F4E24DBF952007F577D /* AALine.m in Sources */,
A94C0F4924DBF952007F577D /* AASeries.m in Sources */,
A94C0E1024DA7044007F577D /* ICNavigationController.m in Sources */, A94C0E1024DA7044007F577D /* ICNavigationController.m in Sources */,
A94C0E4E24DA7044007F577D /* WKSimilarPhotoHeadView.m in Sources */, A94C0E4E24DA7044007F577D /* WKSimilarPhotoHeadView.m in Sources */,
A94C0E3F24DA7044007F577D /* ICBatteryTipDetailController.m in Sources */, A94C0E3F24DA7044007F577D /* ICBatteryTipDetailController.m in Sources */,
A94C0F5424DBF952007F577D /* AAStates.m in Sources */,
A94C0E8424DA7044007F577D /* UIColor+HExtension.m in Sources */, A94C0E8424DA7044007F577D /* UIColor+HExtension.m in Sources */,
A94C0E3624DA7044007F577D /* ICBatteryCareImageViewCell.m in Sources */, A94C0E3624DA7044007F577D /* ICBatteryCareImageViewCell.m in Sources */,
); );
......
...@@ -90,8 +90,8 @@ ...@@ -90,8 +90,8 @@
for (ICIPAProductModel *model in self.products) { for (ICIPAProductModel *model in self.products) {
if ([model.productId containsString:@"week"]) { if ([model.productId containsString:@"week"]) {
_currentProduct = model; _currentProduct = model;
break;
} }
break;
} }
[self startPlanAction:_currentProduct]; [self startPlanAction:_currentProduct];
} }
...@@ -104,8 +104,8 @@ ...@@ -104,8 +104,8 @@
for (ICIPAProductModel *model in self.products) { for (ICIPAProductModel *model in self.products) {
if ([model.productId containsString:@"year"]) { if ([model.productId containsString:@"year"]) {
_currentProduct = model; _currentProduct = model;
break;
} }
break;
} }
[self startPlanAction:_currentProduct]; [self startPlanAction:_currentProduct];
} }
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#import "ICPhotoManageViewController.h" #import "ICPhotoManageViewController.h"
#import "ICContactsViewController.h" #import "ICContactsViewController.h"
#import "ICCalendarManageController.h" #import "ICCalendarManageController.h"
#import "StatisticsViewController.h"
@interface ICHomeViewController ()<UICollectionViewDelegate,UICollectionViewDataSource> @interface ICHomeViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>
...@@ -328,6 +329,11 @@ ...@@ -328,6 +329,11 @@
[self.navigationController pushViewController:vc animated:true]; [self.navigationController pushViewController:vc animated:true];
} }
break; break;
case 7:{
StatisticsViewController * statistics = [[StatisticsViewController alloc] init];
[self.navigationController pushViewController:statistics animated:YES];
}
break;
default: default:
break; break;
} }
......
...@@ -293,7 +293,7 @@ static ZTNetworkTools* _tools = nil; ...@@ -293,7 +293,7 @@ static ZTNetworkTools* _tools = nil;
[dict setValue: UIDevice.currentDevice.systemVersion forKey:@"svn"]; [dict setValue: UIDevice.currentDevice.systemVersion forKey:@"svn"];
//appLs //appLs
[dict setValue: @"58be4768aad83b97" forKey: @"appLs"]; [dict setValue: @"71b221c60431edfa" forKey: @"appLs"];
// LANGUAGE //lang=en_US // LANGUAGE //lang=en_US
NSString *language = [[NSLocale preferredLanguages] firstObject]; NSString *language = [[NSLocale preferredLanguages] firstObject];
......
//
// AAChartKit.h
// AAChartKit
//
// Created by An An on 17/3/13.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAChartView.h"
//
// AAChartModel.h
// AAChartKit
//
// Created by An An on 17/1/20.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import "AASeriesElement.h"
#import "AAPlotLinesElement.h"
@class AAScrollablePlotArea;
#define AACHARTKIT_EXTERN extern __attribute__((visibility ("default")))
typedef NS_ENUM(NSInteger,AAChartAnimation) {
AAChartAnimationLinear = 0,
AAChartAnimationEaseInQuad,
AAChartAnimationEaseOutQuad,
AAChartAnimationEaseInOutQuad,
AAChartAnimationEaseInCubic,
AAChartAnimationEaseOutCubic,
AAChartAnimationEaseInOutCubic,
AAChartAnimationEaseInQuart,
AAChartAnimationEaseOutQuart,
AAChartAnimationEaseInOutQuart,
AAChartAnimationEaseInQuint,
AAChartAnimationEaseOutQuint,
AAChartAnimationEaseInOutQuint,
AAChartAnimationEaseInSine,
AAChartAnimationEaseOutSine,
AAChartAnimationEaseInOutSine,
AAChartAnimationEaseInExpo,
AAChartAnimationEaseOutExpo,
AAChartAnimationEaseInOutExpo,
AAChartAnimationEaseInCirc,
AAChartAnimationEaseOutCirc,
AAChartAnimationEaseInOutCirc,
AAChartAnimationEaseOutBounce,
AAChartAnimationEaseInBack,
AAChartAnimationEaseOutBack,
AAChartAnimationEaseInOutBack,
AAChartAnimationElastic,
AAChartAnimationSwingFromTo,
AAChartAnimationSwingFrom,
AAChartAnimationSwingTo,
AAChartAnimationBounce,
AAChartAnimationBouncePast,
AAChartAnimationEaseFromTo,
AAChartAnimationEaseFrom,
AAChartAnimationEaseTo,
};
typedef NSString *AAChartType;
typedef NSString *AAChartLayoutType;
typedef NSString *AAChartAlignType;
typedef NSString *AAChartVerticalAlignType;
typedef NSString *AAChartZoomType;
typedef NSString *AAChartStackingType;
typedef NSString *AAChartSymbolType;
typedef NSString *AAChartSymbolStyleType;
typedef NSString *AAChartFontWeightType;
typedef NSString *AAChartLineDashStyleType;
AACHARTKIT_EXTERN AAChartType const AAChartTypeColumn;
AACHARTKIT_EXTERN AAChartType const AAChartTypeBar;
AACHARTKIT_EXTERN AAChartType const AAChartTypeArea;
AACHARTKIT_EXTERN AAChartType const AAChartTypeAreaspline;
AACHARTKIT_EXTERN AAChartType const AAChartTypeLine;
AACHARTKIT_EXTERN AAChartType const AAChartTypeSpline;
AACHARTKIT_EXTERN AAChartType const AAChartTypeScatter;
AACHARTKIT_EXTERN AAChartType const AAChartTypePie;
AACHARTKIT_EXTERN AAChartType const AAChartTypeBubble;
AACHARTKIT_EXTERN AAChartType const AAChartTypePyramid;
AACHARTKIT_EXTERN AAChartType const AAChartTypeFunnel;
AACHARTKIT_EXTERN AAChartType const AAChartTypeColumnrange;
AACHARTKIT_EXTERN AAChartType const AAChartTypeArearange;
AACHARTKIT_EXTERN AAChartType const AAChartTypeAreasplinerange;
AACHARTKIT_EXTERN AAChartType const AAChartTypeBoxplot;
AACHARTKIT_EXTERN AAChartType const AAChartTypeWaterfall;
AACHARTKIT_EXTERN AAChartType const AAChartTypePolygon;
AACHARTKIT_EXTERN AAChartType const AAChartTypeErrorbar;
AACHARTKIT_EXTERN AAChartType const AAChartTypeGauge;
AACHARTKIT_EXTERN AAChartLayoutType const AAChartLayoutTypeHorizontal;
AACHARTKIT_EXTERN AAChartLayoutType const AAChartLayoutTypeVertical;
AACHARTKIT_EXTERN AAChartAlignType const AAChartAlignTypeLeft;
AACHARTKIT_EXTERN AAChartAlignType const AAChartAlignTypeCenter;
AACHARTKIT_EXTERN AAChartAlignType const AAChartAlignTypeRight;
AACHARTKIT_EXTERN AAChartVerticalAlignType const AAChartVerticalAlignTypeTop;
AACHARTKIT_EXTERN AAChartVerticalAlignType const AAChartVerticalAlignTypeMiddle;
AACHARTKIT_EXTERN AAChartVerticalAlignType const AAChartVerticalAlignTypeBottom;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeNone;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeX;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeY;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeXY;
AACHARTKIT_EXTERN AAChartStackingType const AAChartStackingTypeFalse;
AACHARTKIT_EXTERN AAChartStackingType const AAChartStackingTypeNormal;
AACHARTKIT_EXTERN AAChartStackingType const AAChartStackingTypePercent;
AACHARTKIT_EXTERN AAChartSymbolType const AAChartSymbolTypeCircle;
AACHARTKIT_EXTERN AAChartSymbolType const AAChartSymbolTypeSquare;
AACHARTKIT_EXTERN AAChartSymbolType const AAChartSymbolTypeDiamond;
AACHARTKIT_EXTERN AAChartSymbolType const AAChartSymbolTypeTriangle;
AACHARTKIT_EXTERN AAChartSymbolType const AAChartSymbolTypeTriangle_down;
AACHARTKIT_EXTERN AAChartSymbolStyleType const AAChartSymbolStyleTypeDefault;
AACHARTKIT_EXTERN AAChartSymbolStyleType const AAChartSymbolStyleTypeInnerBlank;
AACHARTKIT_EXTERN AAChartSymbolStyleType const AAChartSymbolStyleTypeBorderBlank;
AACHARTKIT_EXTERN AAChartFontWeightType const AAChartFontWeightTypeThin;
AACHARTKIT_EXTERN AAChartFontWeightType const AAChartFontWeightTypeRegular;
AACHARTKIT_EXTERN AAChartFontWeightType const AAChartFontWeightTypeBold;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeSolid;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDash;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDashDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDashDotDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeDash;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDash;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeDashDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDashDot;
AACHARTKIT_EXTERN AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDashDotDot;
@interface AAChartModel : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, title) //标题内容
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, titleFontSize) //Title label font size
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, titleFontColor) //Title label font color
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, titleFontWeight) //Title label font weight
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, subtitle) //副标题内容
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, subtitleFontSize) //Subtitle label font size
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, subtitleFontColor) //Subtitle label font color
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, subtitleFontWeight) //Subtitle label font weight
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, backgroundColor) //图表背景色(必须为十六进制的颜色色值如红色"#FF0000")
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray *, colorsTheme) //图表主题颜色数组
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray <NSString *>*, categories) //x轴坐标每个点对应的名称(注意:这个不是用来设置 X 轴的值,仅仅是用于设置 X 轴文字内容的而已)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray *, series) //图表的数据列内容
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartAlignType, subtitleAlign) //图表副标题文本水平对齐方式。可选的值有 “left”,”center“和“right”。 默认是:center.
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartType, chartType) //图表类型
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartStackingType, stacking) //堆积样式
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartSymbolType, markerSymbol) //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartSymbolStyleType, markerSymbolStyle)
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartZoomType, zoomType) //缩放类型 AAChartZoomTypeX 表示可沿着 x 轴进行手势缩放
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartAnimation, animationType) //设置图表的渲染动画类型
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, animationDuration) //设置图表的渲染动画时长(动画单位为毫秒)
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, inverted) //x 轴是否垂直,默认为否
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, polar) //是否极化图形(变为雷达图),默认为否
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, dataLabelsEnabled) //是否显示数据,默认为否
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, dataLabelsFontColor) //Datalabel font color
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, dataLabelsFontSize) //Datalabel font size
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, dataLabelsFontWeight) //Datalabel font weight
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, xAxisVisible) //x 轴是否可见(默认可见)
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, xAxisReversed) // x 轴翻转,默认为否
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, xAxisLabelsEnabled) //x 轴是否显示文字
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisLabelsFontSize) //x 轴文字字体大小
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, xAxisLabelsFontColor) //x 轴文字字体颜色
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartFontWeightType, xAxisLabelsFontWeight) //x 轴文字字体粗细
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisGridLineWidth) //x 轴网格线的宽度
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisTickInterval) //x轴刻度点间隔数(设置每隔几个点显示一个 X轴的内容)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisCrosshairWidth) //设置 x 轴准星线的宽度
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, xAxisCrosshairColor) //设置 x 轴准星线的颜色
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartLineDashStyleType, xAxisCrosshairDashStyleType) //设置 x 轴准星线的线条样式类型
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, yAxisVisible) //y 轴是否可见(默认可见)
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, yAxisReversed) //y 轴翻转,默认为否
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, yAxisLabelsEnabled) //y 轴是否显示文字
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisLabelsFontSize) //y 轴文字字体大小
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, yAxisLabelsFontColor) //y 轴文字字体颜色
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, AAChartFontWeightType , yAxisLabelsFontWeight) //y 轴文字字体粗细
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, yAxisTitle) //y 轴标题
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisLineWidth) //y y-axis line width
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisGridLineWidth) //y轴网格线的宽度
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, yAxisAllowDecimals) //是否允许 y 轴显示小数
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray *, yAxisPlotLines) //y 轴标示线🧶的配置
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisMax) //y 轴最大值
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisMin) //y 轴最小值(设置为0就不会有负数)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisTickInterval)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray *, yAxisTickPositions) //自定义 y 轴坐标(如:[@(0), @(25), @(50), @(75) , (100)])
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisCrosshairWidth) //设置 y 轴准星线的宽度
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, yAxisCrosshairColor) //设置 y 轴准星线的颜色
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartLineDashStyleType, yAxisCrosshairDashStyleType) //设置 y 轴准星线的线条样式类型
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, tooltipEnabled) //是否显示浮动提示框(默认显示)
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, tooltipShared)//是否多组数据共享一个浮动提示框
AAPropStatementAndPropSetFuncStatement(copy, AAChartModel, NSString *, tooltipValueSuffix) //浮动提示框单位后缀
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, connectNulls) //设置折线是否断点重连(是否连接空值点)
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL, legendEnabled) //是否显示图例 lengend(图表底部可点按的圆点和文字)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, borderRadius) //柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效)
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, markerRadius) //折线连接点的半径长度
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, AAScrollablePlotArea *, scrollablePlotArea)
@end
//
// AAChartModel.m
// AAChartKit
//
// Created by An An on 17/1/20.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAChartModel.h"
AAChartType const AAChartTypeColumn = @"column";
AAChartType const AAChartTypeBar = @"bar";
AAChartType const AAChartTypeArea = @"area";
AAChartType const AAChartTypeAreaspline = @"areaspline";
AAChartType const AAChartTypeLine = @"line";
AAChartType const AAChartTypeSpline = @"spline";
AAChartType const AAChartTypeScatter = @"scatter";
AAChartType const AAChartTypePie = @"pie";
AAChartType const AAChartTypeBubble = @"bubble";
AAChartType const AAChartTypePyramid = @"pyramid";
AAChartType const AAChartTypeFunnel = @"funnel";
AAChartType const AAChartTypeColumnrange = @"columnrange";
AAChartType const AAChartTypeArearange = @"arearange";
AAChartType const AAChartTypeAreasplinerange = @"areasplinerange";
AAChartType const AAChartTypeBoxplot = @"boxplot";
AAChartType const AAChartTypeWaterfall = @"waterfall";
AAChartType const AAChartTypePolygon = @"polygon";
AAChartType const AAChartTypeErrorbar = @"errorbar";
AAChartType const AAChartTypeGauge = @"gauge";
AAChartLayoutType const AAChartLayoutTypeHorizontal = @"horizontal";
AAChartLayoutType const AAChartLayoutTypeVertical = @"vertical";
AAChartAlignType const AAChartAlignTypeLeft = @"left";
AAChartAlignType const AAChartAlignTypeCenter = @"center";
AAChartAlignType const AAChartAlignTypeRight = @"right";
AAChartVerticalAlignType const AAChartVerticalAlignTypeTop = @"top";
AAChartVerticalAlignType const AAChartVerticalAlignTypeMiddle = @"middle";
AAChartVerticalAlignType const AAChartVerticalAlignTypeBottom = @"bottom";
AAChartZoomType const AAChartZoomTypeNone = @"none";
AAChartZoomType const AAChartZoomTypeX = @"x";
AAChartZoomType const AAChartZoomTypeY = @"y";
AAChartZoomType const AAChartZoomTypeXY = @"xy";
AAChartStackingType const AAChartStackingTypeFalse = @"";
AAChartStackingType const AAChartStackingTypeNormal = @"normal";
AAChartStackingType const AAChartStackingTypePercent = @"percent";
AAChartSymbolType const AAChartSymbolTypeCircle = @"circle";
AAChartSymbolType const AAChartSymbolTypeSquare = @"square";
AAChartSymbolType const AAChartSymbolTypeDiamond = @"diamond";
AAChartSymbolType const AAChartSymbolTypeTriangle = @"triangle";
AAChartSymbolType const AAChartSymbolTypeTriangle_down = @"triangle-down";
AAChartSymbolStyleType const AAChartSymbolStyleTypeDefault = @"default";
AAChartSymbolStyleType const AAChartSymbolStyleTypeInnerBlank = @"innerBlank";
AAChartSymbolStyleType const AAChartSymbolStyleTypeBorderBlank = @"borderBlank";
AAChartFontWeightType const AAChartFontWeightTypeThin = @"thin";
AAChartFontWeightType const AAChartFontWeightTypeRegular = @"regular";
AAChartFontWeightType const AAChartFontWeightTypeBold = @"bold";
AAChartLineDashStyleType const AAChartLineDashStyleTypeSolid = @"Solid";
AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDash = @"ShortDash";
AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDot = @"ShortDot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDashDot = @"ShortDashDot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeShortDashDotDot = @"ShortDashDotDot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeDot = @"Dot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeDash = @"Dash";
AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDash = @"LongDash";
AAChartLineDashStyleType const AAChartLineDashStyleTypeDashDot = @"DashDot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDashDot = @"LongDashDot";
AAChartLineDashStyleType const AAChartLineDashStyleTypeLongDashDotDot = @"LongDashDotDot";
@implementation AAChartModel
- (instancetype)init {
self = [super init];
if (self) {
_title = @"";
_subtitle = @"";
_chartType = AAChartTypeColumn;//默认图表类型为柱状图
_animationType = AAChartAnimationLinear;//默认使用非easing.js中的'linear'线性渐变效果
_animationDuration = @800;//默认动画时长为800毫秒
_subtitleAlign = AAChartAlignTypeLeft;//默认图表副标题居左显示
_stacking = AAChartStackingTypeFalse;//默认不开启图表数据的堆积效果
_zoomType = AAChartZoomTypeNone ;//默认禁用图表的手势缩放功能
_colorsTheme = @[@"#1e90ff",@"#ef476f",@"#ffd066",@"#04d69f",@"#25547c",];//默认颜色主题
_tooltipEnabled = YES;//默认启用浮动提示框
_tooltipShared = YES;//默认多组数据共享一个浮动提示框
_xAxisLabelsEnabled = YES;//默认显示 X轴坐标点文字
_xAxisGridLineWidth = @0; //设置x轴分割线宽度为0个像素,即是隐藏 X轴分割线
_xAxisTickInterval = @1; //x轴坐标点间隔数(默认是1)
_xAxisVisible = YES;//x轴默认可见
_yAxisTitle = @"";
_yAxisVisible = YES;//y轴默认可见
_yAxisLabelsEnabled = YES;
_yAxisLineWidth = @0.5; //y轴轴线的宽度
_yAxisGridLineWidth = @1; //y轴分割线线宽
_legendEnabled = YES;//默认显示图例(图表下方可点击的带有文字的小圆点)
_borderRadius = @0; //柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效,设置为1000时,柱形图或者条形图头部为楔形)
_markerRadius = @5; //折线连接点的半径长度,如果值设置为0,这样就相当于不显示了
_yAxisAllowDecimals = YES;//默认y轴允许显示小数
}
return self;
}
AAPropSetFuncImplementation(AAChartModel, NSString *, title) //标题内容
AAPropSetFuncImplementation(AAChartModel, NSNumber *, titleFontSize) //Title label font size
AAPropSetFuncImplementation(AAChartModel, NSString *, titleFontColor) //Title label font color
AAPropSetFuncImplementation(AAChartModel, NSString *, titleFontWeight) //Title label font weight
AAPropSetFuncImplementation(AAChartModel, NSString *, subtitle) //副标题内容
AAPropSetFuncImplementation(AAChartModel, NSNumber *, subtitleFontSize) //Subtitle label font size
AAPropSetFuncImplementation(AAChartModel, NSString *, subtitleFontColor) //Subtitle label font color
AAPropSetFuncImplementation(AAChartModel, NSString *, subtitleFontWeight) //Subtitle label font weight
AAPropSetFuncImplementation(AAChartModel, NSString *, backgroundColor) //图表背景色(必须为十六进制的颜色色值如红色"#FF0000")
AAPropSetFuncImplementation(AAChartModel, NSArray *, colorsTheme) //图表主题颜色数组
AAPropSetFuncImplementation(AAChartModel, NSArray <NSString *>*, categories) //x轴坐标每个点对应的名称(注意:这个不是用来设置 X 轴的值,仅仅是用于设置 X 轴文字内容的而已)
AAPropSetFuncImplementation(AAChartModel, NSArray *, series) //图表的数据列内容
AAPropSetFuncImplementation(AAChartModel, AAChartAlignType, subtitleAlign) //图表副标题文本水平对齐方式。可选的值有 “left”,”center“和“right”。 默认是:center.
AAPropSetFuncImplementation(AAChartModel, AAChartType, chartType) //图表类型
AAPropSetFuncImplementation(AAChartModel, AAChartStackingType, stacking) //堆积样式
AAPropSetFuncImplementation(AAChartModel, AAChartSymbolType, markerSymbol) //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
AAPropSetFuncImplementation(AAChartModel, AAChartSymbolStyleType, markerSymbolStyle)
AAPropSetFuncImplementation(AAChartModel, AAChartZoomType, zoomType) //缩放类型 AAChartZoomTypeX 表示可沿着 x 轴进行手势缩放
AAPropSetFuncImplementation(AAChartModel, AAChartAnimation, animationType) //设置图表的渲染动画类型
AAPropSetFuncImplementation(AAChartModel, NSNumber *, animationDuration) //设置图表的渲染动画时长(动画单位为毫秒)
AAPropSetFuncImplementation(AAChartModel, BOOL, inverted) //x 轴是否垂直,默认为否
AAPropSetFuncImplementation(AAChartModel, BOOL, polar) //是否极化图形(变为雷达图),默认为否
AAPropSetFuncImplementation(AAChartModel, BOOL, dataLabelsEnabled) //是否显示数据,默认为否
AAPropSetFuncImplementation(AAChartModel, NSString *, dataLabelsFontColor) //Datalabel font color
AAPropSetFuncImplementation(AAChartModel, NSNumber *, dataLabelsFontSize) //Datalabel font size
AAPropSetFuncImplementation(AAChartModel, NSString *, dataLabelsFontWeight) //Datalabel font weight
AAPropSetFuncImplementation(AAChartModel, BOOL, xAxisVisible) //x 轴是否可见(默认可见)
AAPropSetFuncImplementation(AAChartModel, BOOL, xAxisReversed) // x 轴翻转,默认为否
AAPropSetFuncImplementation(AAChartModel, BOOL, xAxisLabelsEnabled) //x 轴是否显示文字
AAPropSetFuncImplementation(AAChartModel, NSNumber *, xAxisLabelsFontSize) //x 轴文字字体大小
AAPropSetFuncImplementation(AAChartModel, NSString *, xAxisLabelsFontColor) //x 轴文字字体颜色
AAPropSetFuncImplementation(AAChartModel, AAChartFontWeightType, xAxisLabelsFontWeight) //x 轴文字字体粗细
AAPropSetFuncImplementation(AAChartModel, NSNumber *, xAxisGridLineWidth) //x 轴网格线的宽度
AAPropSetFuncImplementation(AAChartModel, NSNumber *, xAxisTickInterval) //x轴刻度点间隔数(设置每隔几个点显示一个 X轴的内容)
AAPropSetFuncImplementation(AAChartModel, NSNumber *, xAxisCrosshairWidth)
AAPropSetFuncImplementation(AAChartModel, NSString *, xAxisCrosshairColor)
AAPropSetFuncImplementation(AAChartModel, AAChartLineDashStyleType, xAxisCrosshairDashStyleType)
AAPropSetFuncImplementation(AAChartModel, BOOL, yAxisVisible) //y 轴是否可见(默认可见)
AAPropSetFuncImplementation(AAChartModel, BOOL, yAxisReversed) //y 轴翻转,默认为否
AAPropSetFuncImplementation(AAChartModel, BOOL, yAxisLabelsEnabled) //y 轴是否显示文字
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisLabelsFontSize) //y 轴文字字体大小
AAPropSetFuncImplementation(AAChartModel, NSString *, yAxisLabelsFontColor) //y 轴文字字体颜色
AAPropSetFuncImplementation(AAChartModel, AAChartFontWeightType , yAxisLabelsFontWeight) //y 轴文字字体粗细
AAPropSetFuncImplementation(AAChartModel, NSString *, yAxisTitle) //y 轴标题
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisLineWidth) //y y-axis line width
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisGridLineWidth) //y轴网格线的宽度
AAPropSetFuncImplementation(AAChartModel, BOOL, yAxisAllowDecimals) //是否允许 y 轴显示小数
AAPropSetFuncImplementation(AAChartModel, NSArray *, yAxisPlotLines) //y 轴标示线🧶的配置
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisMax) //y 轴最大值
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisMin) //y 轴最小值(设置为0就不会有负数)
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisTickInterval)
AAPropSetFuncImplementation(AAChartModel, NSArray *, yAxisTickPositions) //自定义 y 轴坐标(如:[@(0), @(25), @(50), @(75) , (100)])
AAPropSetFuncImplementation(AAChartModel, NSNumber *, yAxisCrosshairWidth)
AAPropSetFuncImplementation(AAChartModel, NSString *, yAxisCrosshairColor)
AAPropSetFuncImplementation(AAChartModel, AAChartLineDashStyleType, yAxisCrosshairDashStyleType)
AAPropSetFuncImplementation(AAChartModel, BOOL, tooltipEnabled) //是否显示浮动提示框(默认显示)
AAPropSetFuncImplementation(AAChartModel, BOOL, tooltipShared)//是否多组数据共享一个浮动提示框
AAPropSetFuncImplementation(AAChartModel, NSString *, tooltipValueSuffix) //浮动提示框单位后缀
AAPropSetFuncImplementation(AAChartModel, BOOL, connectNulls) //设置折线是否断点重连(是否连接空值点)
AAPropSetFuncImplementation(AAChartModel, BOOL, legendEnabled) //是否显示图例 lengend(图表底部可点按的圆点和文字)
AAPropSetFuncImplementation(AAChartModel, NSNumber *, borderRadius) //柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效)
AAPropSetFuncImplementation(AAChartModel, NSNumber *, markerRadius) //折线连接点的半径长度
AAPropSetFuncImplementation(AAChartModel, AAScrollablePlotArea *, scrollablePlotArea)
@end
//
// AAChartView.h
// AAChartKit
//
// Created by An An on 17/1/16.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>
#import "AAOptions.h"
@interface AAMoveOverEventMessageModel : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSNumber *x;
@property (nonatomic, strong) NSNumber *y;
@property (nonatomic, copy) NSString *category;
@property (nonatomic, strong) NSDictionary *offset;
@property (nonatomic, assign) NSUInteger index;
@end
@class AAChartView;
@protocol AAChartViewEventDelegate<NSObject>
@optional
/// The delegate method of chart view finish loading
/// @param aaChartView AAChartView object instance
- (void)aaChartViewDidFinishLoad:(AAChartView *)aaChartView;
/// The delegate method of getting move over event message model
/// @param aaChartView The instance object of chart view
/// @param message User finger move over event message model
- (void)aaChartView:(AAChartView *)aaChartView moveOverEventWithMessage:(AAMoveOverEventMessageModel *)message;
/// The delegate method that did receive JavaScript event Message
/// @param aaChartView The instance object of chart view
/// @param message JavaScript event Message
- (void)aaChartView:(AAChartView *)aaChartView didReceiveScriptMessage:(WKScriptMessage *)message;
@end
typedef void(^AADidFinishLoadBlock)(AAChartView *aaChartView);
typedef void(^AAMoveOverEventBlock)(AAChartView *aaChartView, AAMoveOverEventMessageModel *message);
typedef void(^AADidReceiveScriptMessageBlock)(AAChartView *aaChartView, WKScriptMessage *message);
@interface AAChartView:WKWebView
/// The AAChartView did finish load event and move over event delegate
@property (nonatomic, weak) id<AAChartViewEventDelegate> delegate;
/// Configure the behavior of adjustedContentInset.
/// Default is UIScrollViewContentInsetAdjustmentAutomatic.
@property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior API_AVAILABLE(ios(11.0),tvos(11.0));
/// The block method of chart view finish loading
@property (nonatomic, copy) AADidFinishLoadBlock didFinishLoadBlock;
/// The block method of user finger move over event
@property (nonatomic, copy) AAMoveOverEventBlock moveOverEventBlock;
/// The block method that did receive JavaScript event Message
@property (nonatomic, copy) AADidReceiveScriptMessageBlock didReceiveScriptMessageBlock;
/// Set the chart view can scroll or not
@property (nonatomic, assign) BOOL scrollEnabled;
/// Content width of AAChartView
@property (nonatomic, assign) CGFloat contentWidth;
/// Content height of AAChartView
@property (nonatomic, assign) CGFloat contentHeight;
/// Hide chart series content or not
@property (nonatomic, assign) BOOL chartSeriesHidden;
/// Set the chart view background color be clear
@property (nonatomic, assign) BOOL isClearBackgroundColor;
/// Chart view finish loading event handler
/// @param handler event handler
- (void)didFinishLoadHandler:(AADidFinishLoadBlock)handler;
/// Chart view getting moved over event message model
/// @param handler event handler
- (void)moveOverEventHandler:(AAMoveOverEventBlock)handler;
/// Chart view did receive JavaScript event Message
/// @param handler JavaScript event Message
- (void)didReceiveScriptMessageHandler:(AADidReceiveScriptMessageBlock)handler;
#pragma CONFIGURE THE CHART VIEW CONTENT WITH AACHARTMODEL
/// Function of drawing chart view
/// @param chartModel The instance object of AAChartModel
- (void)aa_drawChartWithChartModel:(AAChartModel *)chartModel;
/// Function of only refresh the chart data
/// @param series Series array of AAChartModel instance object
- (void)aa_onlyRefreshTheChartDataWithChartModelSeries:(NSArray<AASeriesElement *> *)series;
/// Function to refresh chart data only
/// @param series Series array of AAOptions instance object
/// @param animation Have animation effect or not
- (void)aa_onlyRefreshTheChartDataWithChartModelSeries:(NSArray<AASeriesElement *> *)series animation:(BOOL)animation;
/// Function of refreshing whole chart view content
/// @param chartModel The instance object of AAChartModel
- (void)aa_refreshChartWithChartModel:(AAChartModel *)chartModel;
#pragma CONFIGURE THE CHART VIEW CONTENT WITH AAOPTIONS
/// Function of drawing chart view
/// @param options The instance object of AAOptions
- (void)aa_drawChartWithOptions:(AAOptions *)options;
/// Function of only refresh the chart data
/// @param series Series array of AAOptions instance object
- (void)aa_onlyRefreshTheChartDataWithOptionsSeries:(NSArray<AASeriesElement *> *)series;
/// Function to refresh chart data only
/// @param series Series array of AAOptions instance object
/// @param animation Have animation effect or not
- (void)aa_onlyRefreshTheChartDataWithOptionsSeries:(NSArray<AASeriesElement *> *)series animation:(BOOL)animation;
/// Function of refreshing whole chart view content
/// @param options The instance object of AAOptions
- (void)aa_refreshChartWithOptions:(AAOptions *)options;
- (void)aa_updateChartWithOptions:(id)options;
/// A common chart update function
/// (you can update any chart element) to open, close, delete, add, resize, reformat, etc. elements in the chart.
/// Refer to https://api.highcharts.com.cn/highcharts#Chart.update
///
/// It should be noted that when updating the array configuration,
/// for example, when updating configuration attributes including arrays such as xAxis, yAxis, series, etc., the updated data will find existing objects based on id and update them. If no id is configured or passed If the id does not find the corresponding object, the first element of the array is updated. Please refer to this example for details.
///
/// In a responsive configuration, the response of the different rules responsive.rules is actually calling chart.update, and the updated content is configured in chartOptions.
///
/// @param options A configuration object for the new chart options as defined in the options section of the API.
/// @param redraw Whether to redraw after updating the chart, the default is true
- (void)aa_updateChartWithOptions:(id)options redraw:(BOOL)redraw;
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options;
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options
shift:(BOOL)shift;
/// Add a new point to the data column after the chart has been rendered.
/// The new point can be the last point, or it can be placed in the corresponding position given the X value (first, middle position, depending on the x value)
/// Refer to https://api.highcharts.com.cn/highcharts#Series.addPoint
///
/// @param elementIndex The specific series element
/// @param options The configuration of the data point can be a single value, indicating the y value of the data point; it can also be an array containing x and y values; it can also be an object containing detailed data point configuration. For detailed configuration, see series.data.
/// @param redraw The default is true, whether to redraw the icon after the operation is completed. When you need to add more than one point, it is highly recommended to set redraw to false and manually call chart.redraw() to redraw the chart after all operations have ended.
/// @param shift The default is false. When this property is true, adding a new point will delete the first point in the data column (that is, keep the total number of data points in the data column unchanged). This property is very useful in the inspection chart
/// @param animation The default is true, which means that when adding a point, it contains the default animation effect. This parameter can also be passed to the object form containing duration and easing. For details, refer to the animation related configuration.
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options
redraw:(BOOL)redraw
shift:(BOOL)shift
animation:(BOOL)animation;
- (void)aa_addPointsToChartSeriesArrayWithOptionsArray:(NSArray *)optionsArr;
/// Add a new group of points to the data column after the chart has been rendered.
///
- (void)aa_addPointsToChartSeriesArrayWithOptionsArray:(NSArray *)optionsArr
shift:(BOOL)shift
animation:(BOOL)animation;
/// Add a new series element to the chart after the chart has been rendered.
/// Refer to https://api.highcharts.com.cn/highcharts#Chart.addSeries
///
/// @param element Chart series element
- (void)aa_addElementToChartSeriesWithElement:(AASeriesElement *)element;
/// Remove a specific series element from the chart after the chart has been rendered.
/// Refer to https://api.highcharts.com.cn/highcharts#Series.remove
///
/// @param elementIndex Chart series element index
- (void)aa_removeElementFromChartSeriesWithElementIndex:(NSUInteger)elementIndex;
/// Show the series element content with index
/// @param elementIndex Chart series element index
- (void)aa_showTheSeriesElementContentWithSeriesElementIndex:(NSUInteger)elementIndex;
/// Hide the series element content with index
/// @param elementIndex Chart series element index
- (void)aa_hideTheSeriesElementContentWithSeriesElementIndex:(NSUInteger)elementIndex;
/// Evaluate the JavaScript string by converting JavaScript string into JavaScript function
/// @param JavaScriptString Valid JavaScript function code
- (void)aa_evaluateJavaScriptStringFunction:(NSString *)JavaScriptString;
/// Update the X axis categories of chart
/// @param categories The X axis categories array
- (void)aa_updateXAxisCategories:(NSArray *)categories;
/// Update the X axis categories of chart
/// @param categories The X axis categories array
/// @param redraw Redraw whole chart or not
- (void)aa_updateXAxisCategories:(NSArray *)categories redraw:(BOOL)redraw;
/// Update the X axis Extremes
/// @param min X axis minimum
/// @param max X axis maximum
- (void)aa_updateXAxisExtremesWithMin:(NSUInteger)min max:(NSUInteger)max;
/// Redraw chart view
/// @param animation Have animation effect or not
- (void)aa_redrawWithAnimation:(BOOL)animation;
/// Set the chart view content be adaptive to screen rotation with default animation effect
- (void)aa_adaptiveScreenRotation;
/// Set the chart view content be adaptive to screen rotation with custom animation effect
/// Refer to https://api.highcharts.com.cn/highcharts#Chart.setSize
///
/// @param animation The instance object of AAAnimation
- (void)aa_adaptiveScreenRotationWithAnimation:(AAAnimation *)animation;
/// Change chart view content size
/// @param width content size width
/// @param height content size height
/// @param animation The instance object of AAAnimation
- (void)aa_changeChartSizeWithWidth:(CGFloat)width
height:(CGFloat)height
animation:(AAAnimation *)animation;
@end
@interface AAJsonConverter : NSObject
/// Convert Object to be Dictionary
/// @param objc object instance
+ (NSDictionary*)dictionaryWithObjectInstance:(id)objc;
/// Get pure options Json string from option instance
/// @param optionsObject Instance object of AAOptions
+ (NSString *)pureOptionsJsonStringWithOptionsInstance:(id)optionsObject;
/// Get pure Json string from Json object
/// @param jsonObjc Instance object of Json object
+ (NSString *)pureJsonStringWithJsonObject:(id)jsonObjc;
@end
//
// AAChartView.m
// AAChartKit
//
// Created by An An on 17/1/16.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* ------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAChartView.h"
#import "AAJSStringPurer.h"
@interface AAWeakProxy : NSProxy
@property (nonatomic, weak, readonly, nullable) id target;
+ (nonnull instancetype)proxyWithTarget:(nonnull id)target;
@end
@implementation AAWeakProxy
- (instancetype)initWithTarget:(id)target {
_target = target;
return self;
}
+ (instancetype)proxyWithTarget:(id)target {
return [[AAWeakProxy alloc] initWithTarget:target];
}
- (id)forwardingTargetForSelector:(SEL)selector {
return _target;
}
- (void)forwardInvocation:(NSInvocation *)invocation {
void *null = NULL;
[invocation setReturnValue:&null];
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector {
return [NSObject instanceMethodSignatureForSelector:@selector(init)];
}
- (BOOL)respondsToSelector:(SEL)aSelector {
return [_target respondsToSelector:aSelector];
}
@end
@implementation AAMoveOverEventMessageModel
@end
/**
* The console output log
*/
#ifdef DEBUG // Debug status, open the LOG function
#define AADetailLog(fmt, ...) NSLog((@"-------> %@ [Line %d] \n"fmt "\n\n"), \
[[NSString stringWithFormat:@"%s",__FILE__] lastPathComponent], __LINE__, ##__VA_ARGS__);
#else // Release status, turn off the LOG function
#define AADetailLog(...)
#endif
static NSString * const kUserContentMessageNameMouseOver = @"mouseover";
static NSString * const kUserContentMessageNameCustomEvent = @"customevent";
@interface AAChartView() <
WKUIDelegate,
WKNavigationDelegate,
WKScriptMessageHandler
> {
NSString *_optionJson;
BOOL _mouseOverEventEnabled;
BOOL _customEventEnabled;
}
@property (nonatomic, strong) AAWeakProxy *weakProxy;
@end
@implementation AAChartView
- (instancetype)initWithFrame:(CGRect)frame {
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.userContentController = [[WKUserContentController alloc] init];
self = [super initWithFrame:frame configuration:config];
if (self) {
self.UIDelegate = self;
self.navigationDelegate = self;
self.backgroundColor = [UIColor whiteColor];
}
return self;
}
#pragma CONFIGURE THE CHART VIEW CONTENT WITH AACHARTMODEL
- (void)aa_drawChartWithChartModel:(AAChartModel *)chartModel {
AAOptions *options = [AAOptionsConstructor configureChartOptionsWithAAChartModel:chartModel];
[self aa_drawChartWithOptions:options];
}
- (void)aa_refreshChartWithChartModel:(AAChartModel *)chartModel {
AAOptions *options = [AAOptionsConstructor configureChartOptionsWithAAChartModel:chartModel];
[self aa_refreshChartWithOptions:options];
}
- (void)aa_onlyRefreshTheChartDataWithChartModelSeries:(NSArray<AASeriesElement *> *)series {
[self aa_onlyRefreshTheChartDataWithOptionsSeries:series];
}
- (void)aa_onlyRefreshTheChartDataWithChartModelSeries:(NSArray<AASeriesElement *> *)series
animation:(BOOL)animation {
[self aa_onlyRefreshTheChartDataWithOptionsSeries:series animation:animation];
}
#pragma CONFIGURE THE CHART VIEW CONTENT WITH AAOPTIONS
- (void)aa_drawChartWithOptions:(AAOptions *)options {
if (!_optionJson) {
[self configureTheOptionsJsonStringWithAAOptions:options];
NSURLRequest *URLRequest = [self getJavaScriptFileURLRequest];
[self loadRequest:URLRequest];
} else {
[self aa_refreshChartWithOptions:options];
}
}
- (void)aa_refreshChartWithOptions:(AAOptions *)options {
[self configureTheOptionsJsonStringWithAAOptions:options];
[self drawChart];
}
- (void)aa_onlyRefreshTheChartDataWithOptionsSeries:(NSArray<AASeriesElement *> *)series {
[self aa_onlyRefreshTheChartDataWithOptionsSeries:series animation:true];
}
- (void)aa_onlyRefreshTheChartDataWithOptionsSeries:(NSArray<AASeriesElement *> *)series
animation:(BOOL)animation {
NSMutableArray *seriesDicArr = [NSMutableArray arrayWithCapacity:series.count];
for (AASeriesElement *aaSeriesElement in series) {
[seriesDicArr addObject:[AAJsonConverter dictionaryWithObjectInstance:aaSeriesElement]];
}
NSString *seriesJsonStr = [AAJsonConverter pureJsonStringWithJsonObject:seriesDicArr];
NSString *jsStr = [NSString stringWithFormat:@"onlyRefreshTheChartDataWithSeries('%@','%d')",
seriesJsonStr,
animation];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_updateChartWithOptions:(id)options {
[self aa_updateChartWithOptions:options redraw:false];
}
- (void)aa_updateChartWithOptions:(id)options redraw:(BOOL)redraw {
BOOL isOptionsClass = [options isKindOfClass:[AAOptions class]];
NSDictionary *optionsDic = [AAJsonConverter dictionaryWithObjectInstance:options];
NSDictionary *finalOptionsDic;
if (isOptionsClass) {
finalOptionsDic = optionsDic;
} else {
NSString *classNameStr = NSStringFromClass([options class]);
classNameStr = [classNameStr stringByReplacingOccurrencesOfString:@"AA"
withString:@""];
//convert fisrt character to be lowercase string
NSString *firstChar = [classNameStr substringToIndex:1];
NSString *lowerFirstChar = [firstChar lowercaseString];
classNameStr = [classNameStr substringFromIndex:1];
NSString *finalClassNameStr = [NSString stringWithFormat:@"%@%@",
lowerFirstChar,
classNameStr];
finalOptionsDic = @{finalClassNameStr:optionsDic};
}
NSString *optionsStr = [AAJsonConverter pureOptionsJsonStringWithOptionsInstance:finalOptionsDic];
NSString *jsStr = [NSString stringWithFormat:@"updateChart('%@','%d')",
optionsStr,
redraw];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options {
[self aa_addPointToChartSeriesElementWithElementIndex:elementIndex
options:options
shift:true];
}
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options
shift:(BOOL)shift {
[self aa_addPointToChartSeriesElementWithElementIndex:elementIndex
options:options
redraw:true
shift:shift
animation:true];
}
- (void)aa_addPointToChartSeriesElementWithElementIndex:(NSUInteger)elementIndex
options:(id)options
redraw:(BOOL)redraw
shift:(BOOL)shift
animation:(BOOL)animation {
NSString *optionsStr;
if ([options isKindOfClass:[NSNumber class]]) {
optionsStr = [NSString stringWithFormat:@"%@",options];
} else if ([options isKindOfClass:[NSArray class]]) {
optionsStr = [AAJsonConverter pureJsonStringWithJsonObject:options];
} else {
NSDictionary *dic = [AAJsonConverter dictionaryWithObjectInstance:options];
optionsStr = [AAJsonConverter pureJsonStringWithJsonObject:dic];
}
NSString *jsStr = [NSString stringWithFormat:@"addPointToChartSeries('%tu','%@','%d','%d','%d')",
elementIndex,
optionsStr,
redraw,
shift,
animation];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_addPointsToChartSeriesArrayWithOptionsArray:(NSArray *)optionsArr {
[self aa_addPointsToChartSeriesArrayWithOptionsArray:optionsArr shift:true animation:true];
}
- (void)aa_addPointsToChartSeriesArrayWithOptionsArray:(NSArray *)optionsArr
shift:(BOOL)shift
animation:(BOOL)animation {
[optionsArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[self aa_addPointToChartSeriesElementWithElementIndex:idx
options:obj
redraw:false
shift:shift
animation:false];
}];
[self aa_redrawWithAnimation:animation];
}
- (void)aa_addElementToChartSeriesWithElement:(AASeriesElement *)element {
NSDictionary * elementDic = [AAJsonConverter dictionaryWithObjectInstance:element];
NSString *elementStr = [AAJsonConverter pureJsonStringWithJsonObject:elementDic];
NSString *jsStr = [NSString stringWithFormat:@"addElementToChartSeriesWithElement('%@')",
elementStr];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_removeElementFromChartSeriesWithElementIndex:(NSUInteger)elementIndex {
NSString *jsStr = [NSString stringWithFormat:@"removeElementFromChartSeriesWithElementIndex('%tu')",
elementIndex];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_showTheSeriesElementContentWithSeriesElementIndex:(NSUInteger)elementIndex {
NSString *jsStr = [NSString stringWithFormat:@"showTheSeriesElementContentWithIndex('%tu')",
elementIndex];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_hideTheSeriesElementContentWithSeriesElementIndex:(NSUInteger)elementIndex {
NSString *jsStr = [NSString stringWithFormat:@"hideTheSeriesElementContentWithIndex('%tu')",
elementIndex];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_evaluateJavaScriptStringFunction:(NSString *)JavaScriptString {
NSString *pureJSFuncStr = [AAJSStringPurer pureJavaScriptFunctionStringWithString:JavaScriptString];
//remove the useless punctuation: the first "((" and the end "))"
NSRange range = NSMakeRange(2, pureJSFuncStr.length - 4);
pureJSFuncStr = [pureJSFuncStr substringWithRange:range];
NSString *jsFunctionNameStr = [NSString stringWithFormat:@"evaluateTheJavaScriptStringFunction('%@')",
pureJSFuncStr];
[self safeEvaluateJavaScriptString:jsFunctionNameStr];
}
- (void)aa_updateXAxisCategories:(NSArray *)categories {
[self aa_updateXAxisCategories:categories redraw:true];
}
- (void)aa_updateXAxisCategories:(NSArray *)categories redraw:(BOOL)redraw {
NSString *originalJsArrStr = @"";
for (NSString *category in categories) {
originalJsArrStr = [originalJsArrStr stringByAppendingFormat:@"'%@',",category];
}
NSString *finalJSArrStr = [NSString stringWithFormat:@"[%@]",originalJsArrStr];
NSString *jsFunctionStr = [NSString stringWithFormat:@"aaGlobalChart.xAxis[0].setCategories(%@,%d)",
finalJSArrStr,
redraw];
[self safeEvaluateJavaScriptString:jsFunctionStr];
}
- (void)aa_updateXAxisExtremesWithMin:(NSUInteger)min max:(NSUInteger)max {
NSString *jsFuntionStr = [NSString stringWithFormat:@"aaGlobalChart.xAxis[0].setExtremes(%lu,%lu)",
min, max];
[self safeEvaluateJavaScriptString:jsFuntionStr];
}
- (void)aa_redrawWithAnimation:(BOOL)animation {
NSString *jsStr = [NSString stringWithFormat:@"redrawWithAnimation('%d')",animation];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)aa_adaptiveScreenRotation {
[self aa_adaptiveScreenRotationWithAnimation:nil];
}
- (void)aa_adaptiveScreenRotationWithAnimation:(AAAnimation *)animation {
__weak __typeof__(self) weakSelf = self;
[[NSNotificationCenter defaultCenter] addObserverForName:UIDeviceOrientationDidChangeNotification
object:nil
queue:nil
usingBlock:^(NSNotification * _Nonnull note) {
[weakSelf handleDeviceOrientationChangeEventWithAnimation:animation];
}];
}
- (void)handleDeviceOrientationChangeEventWithAnimation:(AAAnimation *)animation {
[self aa_changeChartSizeWithWidth:self.frame.size.width
height:self.frame.size.height
animation:animation];
}
- (void)aa_changeChartSizeWithWidth:(CGFloat)width
height:(CGFloat)height
animation:(AAAnimation *)animation {
NSString *animationJsonStr = [AAJsonConverter pureOptionsJsonStringWithOptionsInstance:animation];
NSString *jsFuntionStr = [NSString stringWithFormat:@"changeChartSize('%f','%f','%@')",
width,
height,
animationJsonStr];
[self safeEvaluateJavaScriptString:jsFuntionStr];
}
- (NSURLRequest *)getJavaScriptFileURLRequest {
NSString *resourcePath = [[NSBundle bundleForClass:[self class]] resourcePath];
NSString *bundlePath = [resourcePath stringByAppendingPathComponent:@"/AAChartKitLib.bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
if (!bundle) { //installed manually
bundle = [NSBundle mainBundle];
}
NSString *webPath = [bundle pathForResource:@"AAChartView"
ofType:@"html"
inDirectory:@"AAJSFiles.bundle"];
NSURL *webURL = [NSURL fileURLWithPath:webPath];
if ([[UIDevice currentDevice].systemVersion floatValue] < 9.0) {
webURL = [self localFileURLForBuggyiOS8WKWebViewWithFileURL:webURL];
}
NSURLRequest *URLRequest = [[NSURLRequest alloc] initWithURL:webURL];
return URLRequest;
}
- (NSURL *)localFileURLForBuggyiOS8WKWebViewWithFileURL:(NSURL *)fileURL {
// Create "/tmp/www" directory
NSError *creatDirError = nil;
NSFileManager *fileManager= [NSFileManager defaultManager];
NSURL *tmpWwwDirURL = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"www"];
NSString *htmlFileName = @"AAChartView.html";
NSString *tmpJsFilesDir = [tmpWwwDirURL.absoluteString stringByAppendingString:@"/"];
NSURL *destURL = [NSURL URLWithString:[tmpJsFilesDir stringByAppendingString:htmlFileName]];
BOOL isDir = NO;
BOOL isTmpWwwDirExist = [fileManager fileExistsAtPath:tmpWwwDirURL.path isDirectory:&isDir];
if (isTmpWwwDirExist) {
return destURL;
}
[fileManager createDirectoryAtURL:tmpWwwDirURL
withIntermediateDirectories:YES
attributes:nil
error:&creatDirError];
if (creatDirError) {
AADetailLog("creat directory error%@",creatDirError);
}
NSString *bundleFilesDir = [fileURL.absoluteString stringByReplacingOccurrencesOfString:htmlFileName
withString:@""];
NSArray *array = @[htmlFileName,
@"AAEasing.js",
@"AAFunnel.js",
@"AAHighchartsLib.js",
@"AAHighchartsMore.js",
@"AARoundedCorners.js",
];
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSString *bundleFilePath = [bundleFilesDir stringByAppendingString:obj];
NSString *tmpFilePath = [tmpJsFilesDir stringByAppendingString:obj];
// Now copy bundle files to the temp directory
NSError *copyItemError = nil;
[fileManager copyItemAtURL:[NSURL URLWithString:bundleFilePath]
toURL:[NSURL URLWithString:tmpFilePath]
error:&copyItemError];
if (copyItemError) {
AADetailLog("copy file Error%@",copyItemError);
}
}];
return destURL;
}
- (void)configureTheOptionsJsonStringWithAAOptions:(AAOptions *)aaOptions {
if (self.isClearBackgroundColor) {
aaOptions.chart.backgroundColor = @"rgba(0,0,0,0)";
}
if (_mouseOverEventEnabled == true) {
aaOptions.touchEventEnabled = true;
}
_optionJson = [AAJsonConverter pureOptionsJsonStringWithOptionsInstance:aaOptions];
}
#pragma mark - WKUIDelegate
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"JS WARNING"
message:message
preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:([UIAlertAction actionWithTitle:@"Okay"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {
completionHandler();
}])];
UIViewController *alertHelperController = [[UIViewController alloc]init];
[self addSubview:alertHelperController.view];
[alertHelperController presentViewController:alertController animated:YES completion:nil];
}
#pragma mark - AAChartView Event Handler
- (void)didFinishLoadHandler:(AADidFinishLoadBlock)handler {
self.didFinishLoadBlock = handler;
}
- (void)moveOverEventHandler:(AAMoveOverEventBlock)handler {
self.moveOverEventBlock = handler;
}
- (void)didReceiveScriptMessageHandler:(AADidReceiveScriptMessageBlock)handler {
self.didReceiveScriptMessageBlock = handler;
}
#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
[self drawChart];
if (self.didFinishLoadBlock) {
self.didFinishLoadBlock(self);
return;
}
if (self.delegate) {
if ([self.delegate respondsToSelector:@selector(aaChartViewDidFinishLoad:)]) {
[self.delegate aaChartViewDidFinishLoad:self];
}
}
}
- (void)drawChart {
NSString *jsStr = [NSString stringWithFormat:@"loadTheHighChartView('%@','%f','%f')",
_optionJson,
self.contentWidth,
self.contentHeight ];
[self safeEvaluateJavaScriptString:jsStr];
}
#pragma mark - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController
didReceiveScriptMessage:(WKScriptMessage *)message {
if ([message.name isEqualToString:kUserContentMessageNameMouseOver]) {
AAMoveOverEventMessageModel *eventMessageModel = [self eventMessageModelWithMessageBody:message.body];
if (self.moveOverEventBlock) {
self.moveOverEventBlock(self, eventMessageModel);
return;
}
[self.delegate aaChartView:self moveOverEventWithMessage:eventMessageModel];
} else if ([message.name isEqualToString:kUserContentMessageNameCustomEvent]) {
if (self.didReceiveScriptMessageBlock) {
self.didReceiveScriptMessageBlock(self, message);
return;
}
[self.delegate aaChartView:self didReceiveScriptMessage:message];
}
}
- (AAMoveOverEventMessageModel *)eventMessageModelWithMessageBody:(id)messageBody {
AAMoveOverEventMessageModel *eventMessageModel = AAMoveOverEventMessageModel.new;
eventMessageModel.name = messageBody[@"name"];
eventMessageModel.x = messageBody[@"x"];
eventMessageModel.y = messageBody[@"y"];
eventMessageModel.category = messageBody[@"category"];
eventMessageModel.offset = messageBody[@"offset"];
eventMessageModel.index = [messageBody[@"index"] unsignedIntegerValue];
return eventMessageModel;
}
- (void)safeEvaluateJavaScriptString:(NSString *)functionNameStr {
if (!_optionJson) {
AADetailLog("💀💀💀AAChartView did not finish loading!!!")
return;
}
[self evaluateJavaScript:functionNameStr completionHandler:^(id item, NSError * _Nullable error) {
#if DEBUG
if (!error) return;
NSMutableDictionary *errorDic = [NSMutableDictionary dictionary];
[errorDic setValue:error.domain forKey:@"domain"];
[errorDic setValue:@(error.code) forKey:@"code"];
[errorDic setValue:error.userInfo forKey:@"userInfo"];
NSString *basicErrorInfo = @" \n\
☠️☠️💀☠️☠️WARNING!!!!!!!!!!!!!!!!!! JS ERROR WARNING !!!!!!!!!!!!!!!!!!WARNING☠️☠️💀☠️☠️ \
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩ \
------------------------------------------------------------------------------------------\n\
%@ \
------------------------------------------------------------------------------------------ \
⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧⇧\n\
☠️☠️💀☠️☠️WARNING!!!!!!!!!!!!!!!!!! JS ERROR WARNING !!!!!!!!!!!!!!!!!!WARNING☠️☠️💀☠️☠️";
NSString *errorInfoStr = [NSString stringWithFormat:basicErrorInfo,errorDic];
NSLog(@"%@",errorInfoStr);
#endif
}];
}
#pragma mark -- setter method
- (void)setContentInsetAdjustmentBehavior:(UIScrollViewContentInsetAdjustmentBehavior)contentInsetAdjustmentBehavior {
_contentInsetAdjustmentBehavior = contentInsetAdjustmentBehavior;
self.scrollView.contentInsetAdjustmentBehavior = _contentInsetAdjustmentBehavior;
}
- (void)setScrollEnabled:(BOOL)scrollEnabled {
_scrollEnabled = scrollEnabled;
self.scrollView.scrollEnabled = _scrollEnabled;
}
- (void)setContentWidth:(CGFloat)contentWidth {
_contentWidth = contentWidth;
NSString *jsStr = [NSString stringWithFormat:@"setTheChartViewContentWidth('%f')",
_contentWidth];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)setContentHeight:(CGFloat)contentHeight {
_contentHeight = contentHeight;
NSString *jsStr = [NSString stringWithFormat:@"setTheChartViewContentHeight('%f')",
_contentHeight];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)setChartSeriesHidden:(BOOL)chartSeriesHidden {
_chartSeriesHidden = chartSeriesHidden;
NSString *jsStr = [NSString stringWithFormat:@"setChartSeriesHidden('%d')",
_chartSeriesHidden];
[self safeEvaluateJavaScriptString:jsStr];
}
- (void)setIsClearBackgroundColor:(BOOL)isClearBackgroundColor {
_isClearBackgroundColor = isClearBackgroundColor;
if (_isClearBackgroundColor) {
[self setBackgroundColor:[UIColor clearColor]];
[self setOpaque:NO];
} else {
self.backgroundColor = [UIColor whiteColor];
[self setOpaque:YES];
}
}
- (void)setDelegate:(id<AAChartViewEventDelegate>)delegate {
NSAssert(_optionJson == nil, @"You should set delegate before drawing chart");
_delegate = delegate;
if (self.delegate && ([self.delegate respondsToSelector:@selector(aaChartView:moveOverEventWithMessage:)])) {
_mouseOverEventEnabled = true;
[self addMouseOverEventMessageHandler];
}
if (self.delegate && [self.delegate respondsToSelector:@selector((aaChartView:didReceiveScriptMessage:))]) {
_customEventEnabled = true;
[self addCustomEventMessageHandler];
}
}
-(void)setMoveOverEventBlock:(AAMoveOverEventBlock)moveOverEventBlock {
NSAssert(_optionJson == nil, @"You should set moveOverEventBlock before drawing chart");
_moveOverEventBlock = moveOverEventBlock;
if (self.moveOverEventBlock) {
_mouseOverEventEnabled = true;
[self addMouseOverEventMessageHandler];
}
}
- (void)setDidReceiveScriptMessageBlock:(AADidReceiveScriptMessageBlock)didReceiveScriptMessageBlock {
NSAssert(_optionJson == nil, @"You should set didReceiveScriptMessageBlock before drawing chart");
_didReceiveScriptMessageBlock = didReceiveScriptMessageBlock;
if (self.didReceiveScriptMessageBlock) {
_customEventEnabled = true;
[self addCustomEventMessageHandler];
}
}
- (void)addMouseOverEventMessageHandler {
[self.configuration.userContentController addScriptMessageHandler:(id<WKScriptMessageHandler>)self.weakProxy
name:kUserContentMessageNameMouseOver];
}
- (void)addCustomEventMessageHandler {
[self.configuration.userContentController addScriptMessageHandler:(id<WKScriptMessageHandler>)self.weakProxy
name:kUserContentMessageNameCustomEvent];
}
#pragma mark -- getter method
- (AAWeakProxy *)weakProxy {
if (!_weakProxy) {
_weakProxy = [AAWeakProxy proxyWithTarget:self];
}
return _weakProxy;
}
- (void)dealloc {
[self.configuration.userContentController removeAllUserScripts];
[[NSNotificationCenter defaultCenter] removeObserver:self];
AADetailLog("👻👻👻 AAChartView was destroyed!!!");
}
@end
#import <objc/runtime.h>
@implementation AAJsonConverter
+ (NSDictionary*)dictionaryWithObjectInstance:(id)objc {
unsigned int propsCount;
objc_property_t *props = class_copyPropertyList([objc class], &propsCount);
NSMutableDictionary *propsDic = [NSMutableDictionary dictionaryWithCapacity:propsCount];
for (NSUInteger i = 0; i < propsCount; i++) {
objc_property_t prop = props[i];
NSString *propName = [NSString stringWithUTF8String:property_getName(prop)];
id value = [objc valueForKey:propName];
if (value == nil) {
value = [NSNull null];
continue;
} else {
value = [self getObjectInternal:value];
}
propsDic[propName] = value;
}
free(props);
return propsDic;
}
+ (id)getObjectInternal:(id)objc {
if ( [objc isKindOfClass:[NSString class]]
|| [objc isKindOfClass:[NSNumber class]]
|| [objc isKindOfClass:[NSNull class]] ) {
return objc;
}
if ([objc isKindOfClass:[NSArray class]]) {
NSArray *objcArr = objc;
NSMutableArray *arr = [NSMutableArray arrayWithCapacity:objcArr.count];
for (id element in objcArr) {
[arr addObject:[self getObjectInternal:element]];
}
return arr;
}
if ([objc isKindOfClass:[NSDictionary class]]) {
NSDictionary *objcDic = objc;
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:[objcDic count]];
NSArray *allKeys = objcDic.allKeys;
for (NSString *key in allKeys) {
dic[key] = [self getObjectInternal:objcDic[key]];
}
return dic;
}
return [self dictionaryWithObjectInstance:objc];
}
+ (NSString *)pureOptionsJsonStringWithOptionsInstance:(id)optionsObject {
NSDictionary *dic;
if ([optionsObject isKindOfClass:[NSDictionary class]] ) {
dic = optionsObject;
} else {
dic = [self dictionaryWithObjectInstance:optionsObject];
}
#if DEBUG
[AAJsonConverter printPrettyPrintedJsonStringWithJsonObject:dic];
#endif
return [self pureJsonStringWithJsonObject:dic];
}
+ (NSString*)pureJsonStringWithJsonObject:(id)jsonObject {
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObject
options:kNilOptions
error:&error];
NSString *pureJsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
if (error) {
AADetailLog(@"❌❌❌ pure JSONString with JSONObject serialization failed:%@", error);
return nil;
}
return pureJsonStr;
}
#if DEBUG
+ (NSString*)printPrettyPrintedJsonStringWithJsonObject:(id)jsonObject {
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObject
options:NSJSONWritingPrettyPrinted
error:&error];
NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"----------- console log AAOptions JSON information of AAChartView -----------:\n%@",jsonStr);
if (error) {
NSLog(@"❌❌❌ pretty printed JSONString with JSONObject serialization failed:%@", error);
return nil;
}
return jsonStr;
}
#endif
@end
//
// AAGlobalMacro.h
// AAChartKit
//
// Created by An An on 17/3/13.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#ifndef AAGlobalMacro_h
#define AAGlobalMacro_h
#define AAObject(objectName) [[objectName alloc]init]
#define AARgbaColor(r,g,b,a) [NSString stringWithFormat:@"rgba(%d,%d,%d,%f)",r,g,b,a]
#define AAJSFunc(x) #x
#define AAPropStatementAndPropSetFuncStatement(propertyModifier,className, propertyPointerType, propertyName) \
@property(nonatomic,propertyModifier)propertyPointerType propertyName; \
- (className * (^) (propertyPointerType propertyName)) propertyName##Set;
#define AAPropSetFuncImplementation(className, propertyPointerType, propertyName) \
- (className * (^) (propertyPointerType propertyName))propertyName##Set{ \
return ^(propertyPointerType propertyName) { \
self.propertyName = propertyName; \
return self; \
}; \
}
#endif /* AAGlobalMacro_h */
//
// AAOptions.h
// AAChartKit
//
// Created by An An on 17/1/4.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import "AAChart.h"
#import "AAAnimation.h"
#import "AATitle.h"
#import "AAXAxis.h"
#import "AAYAxis.h"
#import "AAPlotBandsElement.h"
#import "AACrosshair.h"
#import "AALabels.h"
#import "AALabel.h"
#import "AATooltip.h"
#import "AAPlotOptions.h"
#import "AAColumn.h"
#import "AABar.h"
#import "AAArea.h"
#import "AAAreaspline.h"
#import "AALine.h"
#import "AASpline.h"
#import "AAPie.h"
#import "AALegend.h"
#import "AADataLabels.h"
#import "AAStyle.h"
#import "AASeries.h"
#import "AAShadow.h"
#import "AAMarker.h"
#import "AAGradientColor.h"
#import "AAColor.h"
#import "AAStates.h"
#import "AAPane.h"
#import "AACredits.h"
#import "AALang.h"
@interface AAOptions : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AAChart *, chart)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AATitle *, title)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AASubtitle *, subtitle)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AAXAxis *, xAxis)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AAYAxis *, yAxis)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AATooltip *, tooltip)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AAPlotOptions *, plotOptions)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, NSArray *, series)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AALegend *, legend)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AAPane *, pane)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, NSArray *, colors)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AACredits *, credits)
AAPropStatementAndPropSetFuncStatement(strong, AAOptions, AALang *, defaultOptions)
AAPropStatementAndPropSetFuncStatement(assign, AAOptions, BOOL , touchEventEnabled)
@end
#import "AAChartModel.h"
@interface AAOptionsConstructor : NSObject
/**
Configure the chart content and style
@param chartModel The instance object of chart model
@return The instance object of chart options
*/
+ (AAOptions *)configureChartOptionsWithAAChartModel:(AAChartModel *)chartModel;
@end
//
// AAOptions.m
// AAChartKit
//
// Created by An An on 17/1/4.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAOptions.h"
@implementation AAOptions
- (instancetype)init {
self = [super init];
if (self) {
AACredits *aaCreadits = [[AACredits alloc]init];
aaCreadits.enabled = false;
self.credits = aaCreadits;
}
return self;
}
AAPropSetFuncImplementation(AAOptions, AAChart *, chart)
AAPropSetFuncImplementation(AAOptions, AATitle *, title)
AAPropSetFuncImplementation(AAOptions, AASubtitle *, subtitle)
AAPropSetFuncImplementation(AAOptions, AAXAxis *, xAxis)
AAPropSetFuncImplementation(AAOptions, AAYAxis *, yAxis)
AAPropSetFuncImplementation(AAOptions, AATooltip *, tooltip)
AAPropSetFuncImplementation(AAOptions, AAPlotOptions *, plotOptions)
AAPropSetFuncImplementation(AAOptions, NSArray *, series)
AAPropSetFuncImplementation(AAOptions, AALegend *, legend)
AAPropSetFuncImplementation(AAOptions, AAPane *, pane)
AAPropSetFuncImplementation(AAOptions, NSArray *, colors)
AAPropSetFuncImplementation(AAOptions, AACredits *, credits)
AAPropSetFuncImplementation(AAOptions, AALang *, defaultOptions)
AAPropSetFuncImplementation(AAOptions, BOOL , touchEventEnabled)
@end
#define AAFontSizeFormat(fontSize) [self configureFontSize:fontSize]
@implementation AAOptionsConstructor
+ (AAOptions *)configureChartOptionsWithAAChartModel:(AAChartModel *)aaChartModel {
AAChart *aaChart = AAChart.new
.typeSet(aaChartModel.chartType)//绘图类型
.invertedSet(aaChartModel.inverted)//设置是否反转坐标轴,使X轴垂直,Y轴水平。 如果值为 true,则 x 轴默认是 倒置 的。 如果图表中出现条形图系列,则会自动反转
.backgroundColorSet(aaChartModel.backgroundColor)//设置图表的背景色(包含透明度的设置)
.pinchTypeSet(aaChartModel.zoomType)//设置手势缩放方向
.panningSet(true)//设置手势缩放后是否可平移
.polarSet(aaChartModel.polar)
.scrollablePlotAreaSet(aaChartModel.scrollablePlotArea);
AATitle *aaTitle = AATitle.new
.textSet(aaChartModel.title);//标题文本内容
if (![aaChartModel.title isEqualToString:@""]) {
aaTitle.styleSet(AAStyle.new
.colorSet(aaChartModel.titleFontColor)//Title font color
.fontSizeSet(AAFontSizeFormat(aaChartModel.titleFontSize))//Title font size
.fontWeightSet(aaChartModel.titleFontWeight)//Title font weight
);
}
AASubtitle *aaSubtitle;
if (![aaChartModel.subtitle isEqualToString:@""]) {
aaSubtitle = AASubtitle.new
.textSet(aaChartModel.subtitle)//副标题内容
.alignSet(aaChartModel.subtitleAlign)//图表副标题文本水平对齐方式。可选的值有 “left”,”center“和“right”。 默认是:center.
.styleSet(AAStyle.new
.colorSet(aaChartModel.subtitleFontColor)//Subtitle font color
.fontSizeSet(AAFontSizeFormat(aaChartModel.subtitleFontSize))//Subtitle font size
.fontWeightSet(aaChartModel.subtitleFontWeight)//Subtitle font weight
);
}
AATooltip *aaTooltip = AATooltip.new
.enabledSet(aaChartModel.tooltipEnabled)//启用浮动提示框
.sharedSet(aaChartModel.tooltipShared)//多组数据共享一个浮动提示框
.crosshairsSet(true)//启用准星线
.valueSuffixSet(aaChartModel.tooltipValueSuffix);//浮动提示框的单位名称后缀
AAPlotOptions *aaPlotOptions = AAPlotOptions.new
.seriesSet(AASeries.new
.stackingSet(aaChartModel.stacking)
);//设置是否百分比堆叠显示图形
if (aaChartModel.animationType != 0) {
aaPlotOptions.series.animation = (AAAnimation.new
.easingSet(aaChartModel.animationType)
.durationSet(aaChartModel.animationDuration)
);
}
[self configureTheStyleOfConnectNodeWithChartModel:aaChartModel plotOptions:aaPlotOptions];
[self configureTheAAPlotOptionsWithPlotOptions:aaPlotOptions chartModel:aaChartModel];
AALegend *aaLegend = AALegend.new
.enabledSet(aaChartModel.legendEnabled);//是否显示 legend
AAOptions *aaOptions = AAOptions.new
.chartSet(aaChart)
.titleSet(aaTitle)
.subtitleSet(aaSubtitle)
.tooltipSet(aaTooltip)
.plotOptionsSet(aaPlotOptions)
.legendSet(aaLegend)
.seriesSet(aaChartModel.series)
.colorsSet(aaChartModel.colorsTheme);//设置颜色主题
[self configureAxisContentAndStyleWithAAOptions:aaOptions AAChartModel:aaChartModel];
return aaOptions;
}
+ (void)configureTheStyleOfConnectNodeWithChartModel:(AAChartModel *)aaChartModel
plotOptions:(AAPlotOptions *)aaPlotOptions {
AAChartType aaChartType = aaChartModel.chartType;
//数据点标记相关配置,只有折线图、曲线图、折线区域填充图、曲线区域填充图、散点图才有数据点标记
if ( aaChartType == AAChartTypeArea
|| aaChartType == AAChartTypeAreaspline
|| aaChartType == AAChartTypeLine
|| aaChartType == AAChartTypeSpline
|| aaChartType == AAChartTypeScatter
|| aaChartType == AAChartTypeArearange
|| aaChartType == AAChartTypeAreasplinerange
|| aaChartType == AAChartTypePolygon
) {
AAMarker *aaMarker = AAMarker.new
.radiusSet(aaChartModel.markerRadius)//曲线连接点半径,默认是4
.symbolSet(aaChartModel.markerSymbol);//曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleTypeInnerBlank) {
aaMarker.fillColorSet(@"#ffffff")//点的填充色(用来设置折线连接点的填充色)
.lineWidthSet(@(0.4 * aaChartModel.markerRadius.floatValue))//外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
.lineColorSet(@"");//外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)
} else if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleTypeBorderBlank) {
aaMarker.lineWidthSet(@2)
.lineColorSet(aaChartModel.backgroundColor);
}
AASeries *aaSeries = aaPlotOptions.series;
aaSeries.connectNulls = aaChartModel.connectNulls;
aaSeries.marker = aaMarker;
}
}
+ (void)configureTheAAPlotOptionsWithPlotOptions:(AAPlotOptions *)aaPlotOptions
chartModel:(AAChartModel *)aaChartModel {
AAChartType chartType = aaChartModel.chartType;
AADataLabels *aaDataLabels = AADataLabels.new
.enabledSet(aaChartModel.dataLabelsEnabled);
if (aaChartModel.dataLabelsEnabled == true) {
aaDataLabels
.styleSet(AAStyle.new
.colorSet(aaChartModel.dataLabelsFontColor)
.fontSizeSet(AAFontSizeFormat(aaChartModel.dataLabelsFontSize))
.fontWeightSet(aaChartModel.dataLabelsFontWeight)
);
}
if (chartType == AAChartTypeColumn) {
AAColumn *aaColumn = (AAColumn.new
.borderWidthSet(@0)
.borderRadiusSet(aaChartModel.borderRadius)
);
if (aaChartModel.polar == true) {
aaColumn.pointPaddingSet(@0)
.groupPaddingSet(@0.005);
}
aaPlotOptions.columnSet(aaColumn);
} else if (chartType == AAChartTypeBar) {
AABar *aaBar = (AABar.new
.borderWidthSet(@0)
.borderRadiusSet(aaChartModel.borderRadius)
);
if (aaChartModel.polar == true) {
aaBar.pointPaddingSet(@0)
.groupPaddingSet(@0.005);
}
aaPlotOptions.barSet(aaBar);
} else if (chartType == AAChartTypePie) {
AAPie *aaPie = AAPie.new
.allowPointSelectSet(true)
.cursorSet(@"pointer")
.showInLegendSet(true);
if (aaChartModel.dataLabelsEnabled == true) {
aaDataLabels.formatSet(@"<b>{point.name}</b>: {point.percentage:.1f} %");
}
aaPlotOptions.pieSet(aaPie);
} else if (chartType == AAChartTypeColumnrange) {
NSMutableDictionary *columnRangeDic = [[NSMutableDictionary alloc]init];
[columnRangeDic setValue:aaChartModel.borderRadius forKey:@"borderRadius"];//The color of the border surrounding each column or bar
[columnRangeDic setValue:@0 forKey:@"borderWidth"];//The corner radius of the border surrounding each column or bar. default:0.
aaPlotOptions.columnrangeSet(columnRangeDic);
}
aaPlotOptions.series.dataLabelsSet(aaDataLabels);
}
+ (void)configureAxisContentAndStyleWithAAOptions:(AAOptions *)aaOptions
AAChartModel:(AAChartModel *)aaChartModel {
AAChartType aaChartType = aaChartModel.chartType;
if ( aaChartType == AAChartTypeColumn
|| aaChartType == AAChartTypeBar
|| aaChartType == AAChartTypeArea
|| aaChartType == AAChartTypeAreaspline
|| aaChartType == AAChartTypeLine
|| aaChartType == AAChartTypeSpline
|| aaChartType == AAChartTypeScatter
|| aaChartType == AAChartTypeBubble
|| aaChartType == AAChartTypeColumnrange
|| aaChartType == AAChartTypeArearange
|| aaChartType == AAChartTypeAreasplinerange
|| aaChartType == AAChartTypeBoxplot
|| aaChartType == AAChartTypeWaterfall
|| aaChartType == AAChartTypePolygon) {
AAXAxis *aaXAxis = AAXAxis.new
.labelsSet(AALabels.new
.enabledSet(aaChartModel.xAxisLabelsEnabled)//设置 x 轴是否显示文字
.styleSet(AAStyle.new
.colorSet(aaChartModel.xAxisLabelsFontColor)//xAxis Label font color
.fontSizeSet(AAFontSizeFormat(aaChartModel.xAxisLabelsFontSize))//xAxis Label font size
.fontWeightSet(aaChartModel.xAxisLabelsFontWeight)//xAxis Label font weight
)
)
.reversedSet(aaChartModel.xAxisReversed)
.gridLineWidthSet(aaChartModel.xAxisGridLineWidth)//x轴网格线宽度
.categoriesSet(aaChartModel.categories)
.visibleSet(aaChartModel.xAxisVisible)//x轴是否可见
.tickIntervalSet(aaChartModel.xAxisTickInterval);//x轴坐标点间隔数
if ([aaChartModel.xAxisCrosshairWidth doubleValue] > 0) {
aaXAxis.crosshairSet(AACrosshair.new
.widthSet(aaChartModel.xAxisCrosshairWidth)
.colorSet(aaChartModel.xAxisCrosshairColor)
.dashStyleSet(aaChartModel.xAxisCrosshairDashStyleType)
);
}
AAYAxis *aaYAxis = AAYAxis.new
.labelsSet(AALabels.new
.enabledSet(aaChartModel.yAxisLabelsEnabled)//设置 y 轴是否显示数字
.styleSet(AAStyle.new
.colorSet(aaChartModel.yAxisLabelsFontColor)//yAxis Label font color
.fontSizeSet(AAFontSizeFormat(aaChartModel.yAxisLabelsFontSize))//yAxis Label font size
.fontWeightSet(aaChartModel.yAxisLabelsFontWeight)//yAxis Label font weight
)
.formatSet(@"{value:.,0f}")//让y轴的值完整显示 而不是100000显示为100k
)
.minSet(aaChartModel.yAxisMin)//设置 y 轴最小值,最小值等于零就不能显示负值了
.maxSet(aaChartModel.yAxisMax)//y轴最大值
.tickPositionsSet(aaChartModel.yAxisTickPositions)//自定义Y轴坐标
.allowDecimalsSet(aaChartModel.yAxisAllowDecimals)//是否允许显示小数
.plotLinesSet(aaChartModel.yAxisPlotLines) //标示线设置
.reversedSet(aaChartModel.yAxisReversed)
.gridLineWidthSet(aaChartModel.yAxisGridLineWidth)//y轴网格线宽度
.titleSet(AAAxisTitle.new
.textSet(aaChartModel.yAxisTitle))//y 轴标题
.lineWidthSet(aaChartModel.yAxisLineWidth)//设置 y轴轴线的宽度,为0即是隐藏 y轴轴线
.visibleSet(aaChartModel.yAxisVisible)
.tickIntervalSet(aaChartModel.yAxisTickInterval);
if ([aaChartModel.yAxisCrosshairWidth doubleValue] > 0) {
aaYAxis.crosshairSet(AACrosshair.new
.widthSet(aaChartModel.yAxisCrosshairWidth)
.colorSet(aaChartModel.yAxisCrosshairColor)
.dashStyleSet(aaChartModel.yAxisCrosshairDashStyleType)
);
}
aaOptions.xAxis = aaXAxis;
aaOptions.yAxis = aaYAxis;
}
}
+ (NSString *)configureFontSize:(NSNumber *)fontSize {
if (fontSize != nil) {
return [NSString stringWithFormat:@"%@px", fontSize];
}
return nil;
}
@end
//
// AASeriesElement.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAMarker,AADataLabels,AATooltip,AAStates,AAShadow,AAZonesElement,AADataSorting;
@interface AASeriesElement : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, type)
AAPropStatementAndPropSetFuncStatement(assign, AASeriesElement, BOOL , allowPointSelect) //是否允许在点击数据点标记(markers)、柱子(柱形图)、扇区(饼图)时选中该点,选中的点可以通过 Chart.getSelectedPoints 来获取。 默认是:false.
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, name)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSArray *, data)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSString *, color)
AAPropStatementAndPropSetFuncStatement(assign, AASeriesElement, id , colorByPoint) //When using automatic point colors pulled from the options.colors collection, this option determines whether the chart should receive one color per series or one color per point. 默认是:false.
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AAMarker *, marker)
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, stacking)
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, dashStyle)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, threshold)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, lineWidth) //折线图、曲线图、直方折线图、折线填充图、曲线填充图、直方折线填充图的线条宽度
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderWidth)//柱形图、条形图、扇形图等图形的描边宽度
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, borderColor) //柱形图、条形图、扇形图顿号等图形的描边颜色
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderRadius)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderRadiusTopLeft)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderRadiusTopRight)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderRadiusBottomLeft)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, borderRadiusBottomRight)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSString *, fillColor) //折线填充图、曲线填充图、直方折线填充图等填充图类型的填充颜色
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, fillOpacity) //折线填充图、曲线填充图、直方折线填充图等填充图类型的填充颜色透明度
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSString *, negativeColor) // The color for the parts of the graph or points that are below the threshold
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSString *, negativeFillColor)//A separate color for the negative part of the area.
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, innerSize)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, size)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSArray *, keys)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, yAxis)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AADataLabels*, dataLabels)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, id , step) //是否转变为直方折线图
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AAStates *, states)
AAPropStatementAndPropSetFuncStatement(assign, AASeriesElement, BOOL , showInLegend) //Whether to display this particular series or series type in the legend. The default value is true for standalone series, false for linked series. 默认是:true.
AAPropStatementAndPropSetFuncStatement(assign, AASeriesElement, BOOL , visible) //数据列是否显示的状态,可以通过 series.show()、series.hide()、series.setVisible 来改变这个属性
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSArray<AAZonesElement *>*, zones)
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, zoneAxis) //Defines the Axis on which the zones are applied. 默认是:y.
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AAShadow *, shadow) //数据列的阴影效果。从 2.3 开始阴影可以配置成包含 color、offsetX、offsetY、opacity 和 width 属性的对象形式。 默认是:false
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, stack)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AATooltip*, tooltip)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, NSNumber *, zIndex) //层叠,series element 在图表中显示的层叠级别,值越大,显示越向前
AAPropStatementAndPropSetFuncStatement(copy, AASeriesElement, NSString *, pointPlacement)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, id , enableMouseTracking)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, AADataSorting *, dataSorting)
AAPropStatementAndPropSetFuncStatement(strong, AASeriesElement, id , reversed) //Only useful for pyramid chart and funnel chart
@end
@interface AADataElement : NSObject
AAPropStatementAndPropSetFuncStatement(copy , AADataElement, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AADataElement, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(strong, AADataElement, AAMarker *, marker)
AAPropStatementAndPropSetFuncStatement(strong, AADataElement, NSNumber *, y)
@end
@interface AAZonesElement : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAZonesElement, NSNumber *, value)
AAPropStatementAndPropSetFuncStatement(copy, AAZonesElement, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AAZonesElement, NSString *, fillColor)
AAPropStatementAndPropSetFuncStatement(copy, AAZonesElement, NSString *, dashStyle)
@end
@interface AADataSorting : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AADataSorting, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(assign, AADataSorting, BOOL, matchByName)
@end
//
// AASeriesElement.m
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. xAll rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AASeriesElement.h"
@implementation AASeriesElement
- (instancetype)init {
self = [super init];
if (self) {
_allowPointSelect = false;
_showInLegend = true;
_visible = true;
}
return self;
}
AAPropSetFuncImplementation(AASeriesElement, NSString *, type)
AAPropSetFuncImplementation(AASeriesElement, BOOL , allowPointSelect) //是否允许在点击数据点标记(markers)、柱子(柱形图)、扇区(饼图)时选中该点,选中的点可以通过 Chart.getSelectedPoints 来获取。 默认是:false.
AAPropSetFuncImplementation(AASeriesElement, NSString *, name)
AAPropSetFuncImplementation(AASeriesElement, NSArray *, data)
AAPropSetFuncImplementation(AASeriesElement, NSString *, color)
AAPropSetFuncImplementation(AASeriesElement, id , colorByPoint) //When using automatic point colors pulled from the options.colors collection, this option determines whether the chart should receive one color per series or one color per point. 默认是:false.
AAPropSetFuncImplementation(AASeriesElement, AAMarker *, marker)
AAPropSetFuncImplementation(AASeriesElement, NSString *, stacking)
AAPropSetFuncImplementation(AASeriesElement, NSString *, dashStyle)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, threshold)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, lineWidth) //折线图、曲线图、直方折线图、折线填充图、曲线填充图、直方折线填充图的线条宽度
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderWidth)//柱形图、条形图、扇形图等图形的描边宽度
AAPropSetFuncImplementation(AASeriesElement, NSString *, borderColor) //柱形图、条形图、扇形图等图形的描边颜色
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderRadius)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderRadiusTopLeft)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderRadiusTopRight)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderRadiusBottomLeft)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, borderRadiusBottomRight)
AAPropSetFuncImplementation(AASeriesElement, NSString *, fillColor) //折线填充图、曲线填充图、直方折线填充图等填充图类型的填充颜色
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, fillOpacity) //折线填充图、曲线填充图、直方折线填充图等填充图类型的填充颜色透明度
AAPropSetFuncImplementation(AASeriesElement, NSString *, negativeColor) //The color for the parts of the graph or points that are below the threshold
AAPropSetFuncImplementation(AASeriesElement, NSString *, negativeFillColor)//A separate color for the negative part of the area.
AAPropSetFuncImplementation(AASeriesElement, NSString *, innerSize)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, size)
AAPropSetFuncImplementation(AASeriesElement, NSArray *, keys)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, yAxis)
AAPropSetFuncImplementation(AASeriesElement, AADataLabels*, dataLabels)
AAPropSetFuncImplementation(AASeriesElement, id , step) //是否转变为直方折线图
AAPropSetFuncImplementation(AASeriesElement, AAStates *, states)
AAPropSetFuncImplementation(AASeriesElement, BOOL , showInLegend) //Whether to display this particular series or series type in the legend. The default value is true for standalone series, false for linked series. 默认是:true.
AAPropSetFuncImplementation(AASeriesElement, BOOL , visible) //数据列是否显示的状态,可以通过 series.show()、series.hide()、series.setVisible 来改变这个属性
AAPropSetFuncImplementation(AASeriesElement, NSArray<AAZonesElement *>*, zones)
AAPropSetFuncImplementation(AASeriesElement, NSString *, zoneAxis) //Defines the Axis on which the zones are applied. 默认是:y.
AAPropSetFuncImplementation(AASeriesElement, AAShadow *, shadow) //数据列的阴影效果。从 2.3 开始阴影可以配置成包含 color、offsetX、offsetY、opacity 和 width 属性的对象形式。 默认是:false
AAPropSetFuncImplementation(AASeriesElement, NSString *, stack)
AAPropSetFuncImplementation(AASeriesElement, AATooltip*, tooltip)
AAPropSetFuncImplementation(AASeriesElement, NSNumber *, zIndex) //层叠,series element 在图表中显示的层叠级别,值越大,显示越向前
AAPropSetFuncImplementation(AASeriesElement, NSString *, pointPlacement)
AAPropSetFuncImplementation(AASeriesElement, id , enableMouseTracking)
AAPropSetFuncImplementation(AASeriesElement, AADataSorting *, dataSorting)
AAPropSetFuncImplementation(AASeriesElement, id , reversed) //Only useful for pyramid chart and funnel chart
@end
@implementation AADataElement
AAPropSetFuncImplementation(AADataElement, NSString *, color)
AAPropSetFuncImplementation(AADataElement, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AADataElement, AAMarker *, marker)
AAPropSetFuncImplementation(AADataElement, NSNumber *, y)
@end
@implementation AAZonesElement : NSObject
AAPropSetFuncImplementation(AAZonesElement, NSNumber *, value)
AAPropSetFuncImplementation(AAZonesElement, NSString *, color)
AAPropSetFuncImplementation(AAZonesElement, NSString *, fillColor)
AAPropSetFuncImplementation(AAZonesElement, NSString *, dashStyle)
@end
@implementation AADataSorting : NSObject
AAPropSetFuncImplementation(AADataSorting, BOOL, enabled)
AAPropSetFuncImplementation(AADataSorting, BOOL, matchByName)
@end
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 3.0,user-scalable = no,viewport-fit = cover">
<script src="AAHighchartsLib.js"></script>
<script src="AAHighchartsMore.js"></script>
<script src="AAFunnel.js"></script>
<script src="AAEasing.js"></script>
<script src="AARoundedCorners.js"></script>
<!-- <script src="https://code.highcharts.com/highcharts.js"></script>-->
<!-- <script src="https://code.highcharts.com/highcharts-more.js"></script>-->
<!-- <script src="https://code.highcharts.com/modules/funnel.js"></script>-->
<style>
*{ -webkit-user-select: none;
user-select: none; }
</style>
</head>
<body style="margin:0px 0px 0px 0px;">
<div id="container" style="width:100%; height: 100%;">
</div>
<script>
var aaGlobalChart;
function loadTheHighChartView(sender, receivedWidth, receivedHeight) {
var container = document.getElementById('container');
if (receivedWidth != 0) {
container.style.width = receivedWidth;
}
if (receivedHeight != 0) {
container.style.height = receivedHeight;
}
var aaOptions = JSON.parse(sender);
if (aaOptions.defaultOptions) {
Highcharts.setOptions({
lang: aaOptions.defaultOptions
});
}
if (aaOptions.plotOptions) {
configurePlotOptions(aaOptions);
}
configureOptionsJSFunctions(aaOptions);
aaGlobalChart = Highcharts.chart('container', aaOptions);
}
function configurePlotOptions(aaOptions) {
var aaPlotOptions = aaOptions.plotOptions;
if (aaPlotOptions.series && aaPlotOptions.series.animation) {
var animation = aaPlotOptions.series.animation;
var animationEasingType = animation.easing;
animation.easing = configureTheChartAnimationEasingType(animationEasingType);
}
if (aaOptions.touchEventEnabled == true && aaPlotOptions.series) {
configureChartTouchEvent(aaPlotOptions);
}
}
function configureChartTouchEvent(aaPlotOptions) {
var mouseOverFunc = function() {
var message = {
name: this.series.name,
y: this.y,
x: this.x,
category:this.category,
offset: {plotX: this.plotX, plotY: this.plotY},
index: this.index,
};
window.webkit.messageHandlers.mouseover.postMessage(message);
};
var seriesPoint = {
events:{
mouseOver: mouseOverFunc,
}
};
aaPlotOptions.series.point = seriesPoint;
}
function configureOptionsJSFunctions(aaOptions) {
if (aaOptions.tooltip
&& aaOptions.tooltip.formatter) {
aaOptions.tooltip.formatter = eval(aaOptions.tooltip.formatter);
}
if (aaOptions.xAxis
&& aaOptions.xAxis.labels
&& aaOptions.xAxis.labels.formatter) {
aaOptions.xAxis.labels.formatter = eval(aaOptions.xAxis.labels.formatter);
}
if (aaOptions.yAxis
&& aaOptions.yAxis.labels
&& aaOptions.yAxis.labels.formatter) {
aaOptions.yAxis.labels.formatter = eval(aaOptions.yAxis.labels.formatter);
}
if (aaOptions.plotOptions
&& aaOptions.plotOptions.series
) {
if (aaOptions.plotOptions.series.dataLabels
&& aaOptions.plotOptions.series.dataLabels.formatter) {
aaOptions.plotOptions.series.dataLabels.formatter = eval(aaOptions.plotOptions.series.dataLabels.formatter);
}
if (aaOptions.plotOptions.series.events
&& aaOptions.plotOptions.series.events.legendItemClick) {
aaOptions.plotOptions.series.events.legendItemClick = eval(aaOptions.plotOptions.series.events.legendItemClick);
}
}
}
function onlyRefreshTheChartDataWithSeries(receivedSeries, animation) {
var receivedSeriesArr = JSON.parse(receivedSeries);
var seriesArrLength = receivedSeriesArr.length;
for (var i = 0; i < seriesArrLength; i++) {
var receivedSeriesElementData = receivedSeriesArr[i].data;
var seriesElement = aaGlobalChart.series[i];
seriesElement.setData(receivedSeriesElementData, false);
}
var animationBool = (animation == "1") ? true:false;
aaGlobalChart.redraw(animationBool);
}
function updateChart(optionsStr, redraw) {
var options = JSON.parse(optionsStr);
aaGlobalChart.update(options,redraw);
}
function addPointToChartSeries(elementIndex, optionsStr, redraw, shift, animation) {
var options = JSON.parse(optionsStr);
var redrawBool = (redraw == "1") ? true:false;
var shiftBool = (shift == "1") ? true:false;
var animationBool = (animation == "1") ? true:false;
var seriesElement = aaGlobalChart.series[elementIndex];
seriesElement.addPoint(options, redrawBool, shiftBool, animationBool);
}
function redrawWithAnimation(animation) {
var animationBool = (animation == "1") ? true:false;
aaGlobalChart.redraw(animationBool);
}
function setTheChartViewContentWidth(receivedWidth) {
var container = document.getElementById('container');
container.style.width = receivedWidth;
aaGlobalChart.reflow();
}
function setTheChartViewContentHeight(receivedHeight) {
var container = document.getElementById('container');
container.style.height = receivedHeight;
aaGlobalChart.reflow();
}
function setChartSeriesHidden(hidden) {
var seriesLength = aaGlobalChart.series.length;
for (var i = 0; i < seriesLength; i++) {
var seriesElement = aaGlobalChart.series[i];
if (hidden == true) {
seriesElement.hide();
} else {
seriesElement.show();
}
}
}
function showTheSeriesElementContentWithIndex(elementIndex) {
var seriesElement = aaGlobalChart.series[elementIndex];
seriesElement.show();
}
function hideTheSeriesElementContentWithIndex(elementIndex) {
var seriesElement = aaGlobalChart.series[elementIndex];
seriesElement.hide();
}
function addElementToChartSeriesWithElement(elementStr) {
var seriesElement = JSON.parse(elementStr);
aaGlobalChart.addSeries(seriesElement);
}
function removeElementFromChartSeriesWithElementIndex(elementIndex) {
var seriesElement = aaGlobalChart.series[elementIndex];
if (seriesElement) {
seriesElement.remove(true);
}
}
function evaluateTheJavaScriptStringFunction(jsStringFunction) {
eval(jsStringFunction);
}
function changeChartSize(receivedWidth, receivedHeight, receivedAnimation) {
var container = document.getElementById('container');
container.style.width = receivedWidth;
container.style.height = receivedHeight;
var aaAnimation;
if (receivedAnimation) {
aaAnimation = JSON.parse(receivedAnimation);
var animationEasingType = aaAnimation.easing;
aaAnimation.easing = configureTheChartAnimationEasingType(animationEasingType);
}
aaGlobalChart.setSize(receivedWidth, receivedHeight, aaAnimation);
}
</script>
</body>
</html>
function configureTheChartAnimationEasingType(easingType){switch(easingType){case 1:return function(pos){return Math.pow(pos,2)};case 2:return function(pos){return -(Math.pow((pos-1),2)-1)};case 3:return function(pos){if((pos/=0.5)<1){return 0.5*Math.pow(pos,2)}return -0.5*((pos-=2)*pos-2)};case 4:return function(pos){return Math.pow(pos,3)};case 5:return function(pos){return(Math.pow((pos-1),3)+1)};case 6:return function(pos){if((pos/=0.5)<1){return 0.5*Math.pow(pos,3)}return 0.5*(Math.pow((pos-2),3)+2)};case 7:return function(pos){return Math.pow(pos,4)};case 8:return function(pos){return -(Math.pow((pos-1),4)-1)};case 9:return function(pos){if((pos/=0.5)<1){return 0.5*Math.pow(pos,4)}return -0.5*((pos-=2)*Math.pow(pos,3)-2)};case 10:return function(pos){return Math.pow(pos,5)};case 11:return function(pos){return(Math.pow((pos-1),5)+1)};case 12:return function(pos){if((pos/=0.5)<1){return 0.5*Math.pow(pos,5)}return 0.5*(Math.pow((pos-2),5)+2)};case 13:return function(pos){return -Math.cos(pos*(Math.PI/2))+1};case 14:return function(pos){return Math.sin(pos*(Math.PI/2))};case 15:return function(pos){return(-0.5*(Math.cos(Math.PI*pos)-1))};case 16:return function(pos){return(pos===0)?0:Math.pow(2,10*(pos-1))};case 17:return function(pos){return(pos===1)?1:-Math.pow(2,-10*pos)+1};case 18:return function(pos){if(pos===0){return 0}if(pos===1){return 1}if((pos/=0.5)<1){return 0.5*Math.pow(2,10*(pos-1))}return 0.5*(-Math.pow(2,-10*--pos)+2)};case 19:return function(pos){return -(Math.sqrt(1-(pos*pos))-1)};case 20:return function(pos){return Math.sqrt(1-Math.pow((pos-1),2))};case 21:return function(pos){if((pos/=0.5)<1){return -0.5*(Math.sqrt(1-pos*pos)-1)}return 0.5*(Math.sqrt(1-(pos-=2)*pos)+1)};case 22:return function(pos){if((pos)<(1/2.75)){return(7.5625*pos*pos)}else{if(pos<(2/2.75)){return(7.5625*(pos-=(1.5/2.75))*pos+0.75)}else{if(pos<(2.5/2.75)){return(7.5625*(pos-=(2.25/2.75))*pos+0.9375)}else{return(7.5625*(pos-=(2.625/2.75))*pos+0.984375)}}}};case 23:return function(pos){var s=1.70158;return(pos)*pos*((s+1)*pos-s)};case 24:return function(pos){var s=1.70158;return(pos=pos-1)*pos*((s+1)*pos+s)+1};case 25:return function(pos){var s=1.70158;if((pos/=0.5)<1){return 0.5*(pos*pos*(((s*=(1.525))+1)*pos-s))}return 0.5*((pos-=2)*pos*(((s*=(1.525))+1)*pos+s)+2)};case 26:return function(pos){return -1*Math.pow(4,-8*pos)*Math.sin((pos*6-1)*(2*Math.PI)/2)+1};case 27:return function(pos){var s=1.70158;return((pos/=0.5)<1)?0.5*(pos*pos*(((s*=(1.525))+1)*pos-s)):0.5*((pos-=2)*pos*(((s*=(1.525))+1)*pos+s)+2)};case 28:return function(pos){var s=1.70158;return pos*pos*((s+1)*pos-s)};case 29:return function(pos){var s=1.70158;return(pos-=1)*pos*((s+1)*pos+s)+1};case 30:return function(pos){if(pos<(1/2.75)){return(7.5625*pos*pos)}else{if(pos<(2/2.75)){return(7.5625*(pos-=(1.5/2.75))*pos+0.75)}else{if(pos<(2.5/2.75)){return(7.5625*(pos-=(2.25/2.75))*pos+0.9375)}else{return(7.5625*(pos-=(2.625/2.75))*pos+0.984375)}}}};case 31:return function(pos){if(pos<(1/2.75)){return(7.5625*pos*pos)}else{if(pos<(2/2.75)){return 2-(7.5625*(pos-=(1.5/2.75))*pos+0.75)}else{if(pos<(2.5/2.75)){return 2-(7.5625*(pos-=(2.25/2.75))*pos+0.9375)}else{return 2-(7.5625*(pos-=(2.625/2.75))*pos+0.984375)}}}};case 32:return function(pos){if((pos/=0.5)<1){return 0.5*Math.pow(pos,4)}return -0.5*((pos-=2)*Math.pow(pos,3)-2)};case 33:return function(pos){return Math.pow(pos,4)};case 34:return function(pos){return Math.pow(pos,0.25)}}};
/*
Highcharts JS v8.1.0 (2020-05-05)
Highcharts funnel module
(c) 2010-2019 Torstein Honsi
License: www.highcharts.com/license
*/
(function(b){"object"===typeof module&&module.exports?(b["default"]=b,module.exports=b):"function"===typeof define&&define.amd?define("highcharts/modules/funnel",["highcharts"],function(e){b(e);b.Highcharts=e;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function e(b,l,e,B){b.hasOwnProperty(l)||(b[l]=B.apply(null,e))}b=b?b._modules:{};e(b,"modules/funnel.src.js",[b["parts/Globals.js"],b["parts/Utilities.js"]],function(b,l){var e=l.isArray,B=l.pick;l=b.seriesType;var F=
b.seriesTypes,K=b.fireEvent,G=b.addEvent,I=b.noop;l("funnel","pie",{animation:!1,center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",reversed:!1,size:!0,dataLabels:{connectorWidth:1,verticalAlign:"middle"},states:{select:{color:"#cccccc",borderColor:"#000000"}}},{animate:I,translate:function(){function a(b,a){return/%$/.test(b)?a*parseInt(b,10)/100:parseInt(b,10)}var b=0,d=this,g=d.chart,f=d.options,k=f.reversed,c=f.ignoreHiddenPoint,v=g.plotWidth;g=g.plotHeight;var e=
0,l=f.center,h=a(l[0],v),m=a(l[1],g),F=a(f.width,v),r,t=a(f.height,g),y=a(f.neckWidth,v),H=a(f.neckHeight,g),z=m-t/2+t-H;v=d.data;var C,D,G="left"===f.dataLabels.position?1:0,A,n,E,u,p,x,q;d.getWidthAt=function(b){var a=m-t/2;return b>z||t===H?y:y+(F-y)*(1-(b-a)/(t-H))};d.getX=function(b,a,c){return h+(a?-1:1)*(d.getWidthAt(k?2*m-b:b)/2+c.labelDistance)};d.center=[h,m,t];d.centerX=h;v.forEach(function(a){c&&!1===a.visible||(b+=a.y)});v.forEach(function(a){q=null;D=b?a.y/b:0;n=m-t/2+e*t;p=n+D*t;r=
d.getWidthAt(n);A=h-r/2;E=A+r;r=d.getWidthAt(p);u=h-r/2;x=u+r;n>z?(A=u=h-y/2,E=x=h+y/2):p>z&&(q=p,r=d.getWidthAt(z),u=h-r/2,x=u+r,p=z);k&&(n=2*m-n,p=2*m-p,null!==q&&(q=2*m-q));C=[["M",A,n],["L",E,n],["L",x,p]];null!==q&&C.push(["L",x,q],["L",u,q]);C.push(["L",u,p],["Z"]);a.shapeType="path";a.shapeArgs={d:C};a.percentage=100*D;a.plotX=h;a.plotY=(n+(q||p))/2;a.tooltipPos=[h,a.plotY];a.dlBox={x:u,y:n,topWidth:E-A,bottomWidth:x-u,height:Math.abs(B(q,p)-n),width:NaN};a.slice=I;a.half=G;c&&!1===a.visible||
(e+=D)});K(d,"afterTranslate")},sortByAngle:function(a){a.sort(function(a,b){return a.plotY-b.plotY})},drawDataLabels:function(){var a=this.data,b=this.options.dataLabels.distance,d,g=a.length;for(this.center[2]-=2*b;g--;){var f=a[g];var k=(d=f.half)?1:-1;var c=f.plotY;f.labelDistance=B(f.options.dataLabels&&f.options.dataLabels.distance,b);this.maxLabelDistance=Math.max(f.labelDistance,this.maxLabelDistance||0);var e=this.getX(c,d,f);f.labelPosition={natural:{x:0,y:c},"final":{},alignment:d?"right":
"left",connectorPosition:{breakAt:{x:e+(f.labelDistance-5)*k,y:c},touchingSliceAt:{x:e+f.labelDistance*k,y:c}}}}F[this.options.dataLabels.inside?"column":"pie"].prototype.drawDataLabels.call(this)},alignDataLabel:function(a,e,d,g,f){var k=a.series;g=k.options.reversed;var c=a.dlBox||a.shapeArgs,l=d.align,w=d.verticalAlign,J=((k.options||{}).dataLabels||{}).inside,h=k.center[1];k=k.getWidthAt((g?2*h-a.plotY:a.plotY)-c.height/2+e.height);k="middle"===w?(c.topWidth-c.bottomWidth)/4:(k-c.bottomWidth)/
2;h=c.y;var m=c.x;"middle"===w?h=c.y-c.height/2+e.height/2:"top"===w&&(h=c.y-c.height+e.height+d.padding);if("top"===w&&!g||"bottom"===w&&g||"middle"===w)"right"===l?m=c.x-d.padding+k:"left"===l&&(m=c.x+d.padding-k);g={x:m,y:g?h-c.height:h,width:c.bottomWidth,height:c.height};d.verticalAlign="bottom";J&&!a.visible||b.Series.prototype.alignDataLabel.call(this,a,e,d,g,f);J&&(!a.visible&&a.dataLabel&&(a.dataLabel.placed=!1),a.contrastColor&&e.css({color:a.contrastColor}))}});G(b.Chart,"afterHideAllOverlappingLabels",
function(){this.series.forEach(function(a){var b=a.options&&a.options.dataLabels;e(b)&&(b=b[0]);a.is("pie")&&a.placeDataLabels&&b&&!b.inside&&a.placeDataLabels()})});l("pyramid","funnel",{neckWidth:"0%",neckHeight:"0%",reversed:!0});""});e(b,"masters/modules/funnel.src.js",[],function(){})});
//# sourceMappingURL=funnel.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
Highcharts JS v8.1.0 (2020-05-05)
(c) 2009-2018 Torstein Honsi
License: www.highcharts.com/license
*/
(function(c){"object"===typeof module&&module.exports?(c["default"]=c,module.exports=c):"function"===typeof define&&define.amd?define("highcharts/highcharts-more",["highcharts"],function(B){c(B);c.Highcharts=B;return c}):c("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(c){function B(l,a,d,b){l.hasOwnProperty(a)||(l[a]=b.apply(null,d))}c=c?c._modules:{};B(c,"parts-more/Pane.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){function d(g,b,a){return Math.sqrt(Math.pow(g-
a[0],2)+Math.pow(b-a[1],2))<a[2]/2}var b=a.addEvent,r=a.extend,t=a.merge,y=a.pick,c=a.splat,x=l.CenteredSeriesMixin;l.Chart.prototype.collectionsWithUpdate.push("pane");a=function(){function g(g,b){this.options=this.chart=this.center=this.background=void 0;this.coll="pane";this.defaultOptions={center:["50%","50%"],size:"85%",innerSize:"0%",startAngle:0};this.defaultBackgroundOptions={shape:"circle",borderWidth:1,borderColor:"#cccccc",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,
"#ffffff"],[1,"#e6e6e6"]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"};this.init(g,b)}g.prototype.init=function(g,b){this.chart=b;this.background=[];b.pane.push(this);this.setOptions(g)};g.prototype.setOptions=function(g){this.options=t(this.defaultOptions,this.chart.angular?{background:{}}:void 0,g)};g.prototype.render=function(){var g=this.options,b=this.options.background,a=this.chart.renderer;this.group||(this.group=a.g("pane-group").attr({zIndex:g.zIndex||0}).add());
this.updateCenter();if(b)for(b=c(b),g=Math.max(b.length,this.background.length||0),a=0;a<g;a++)b[a]&&this.axis?this.renderBackground(t(this.defaultBackgroundOptions,b[a]),a):this.background[a]&&(this.background[a]=this.background[a].destroy(),this.background.splice(a,1))};g.prototype.renderBackground=function(g,b){var a="animate",k={"class":"highcharts-pane "+(g.className||"")};this.chart.styledMode||r(k,{fill:g.backgroundColor,stroke:g.borderColor,"stroke-width":g.borderWidth});this.background[b]||
(this.background[b]=this.chart.renderer.path().add(this.group),a="attr");this.background[b][a]({d:this.axis.getPlotBandPath(g.from,g.to,g)}).attr(k)};g.prototype.updateCenter=function(g){this.center=(g||this.axis||{}).center=x.getCenter.call(this)};g.prototype.update=function(g,b){t(!0,this.options,g);t(!0,this.chart.options.pane,g);this.setOptions(this.options);this.render();this.chart.axes.forEach(function(g){g.pane===this&&(g.pane=null,g.update({},b))},this)};return g}();l.Chart.prototype.getHoverPane=
function(g){var b=this,a;g&&b.pane.forEach(function(m){var k=g.chartX-b.plotLeft,u=g.chartY-b.plotTop;d(b.inverted?u:k,b.inverted?k:u,m.center)&&(a=m)});return a};b(l.Chart,"afterIsInsidePlot",function(g){this.polar&&(g.isInsidePlot=this.pane.some(function(b){return d(g.x,g.y,b.center)}))});b(l.Pointer,"beforeGetHoverData",function(g){var b=this.chart;b.polar&&(b.hoverPane=b.getHoverPane(g),g.filter=function(a){return a.visible&&!(!g.shared&&a.directTouch)&&y(a.options.enableMouseTracking,!0)&&(!b.hoverPane||
a.xAxis.pane===b.hoverPane)})});b(l.Pointer,"afterGetHoverData",function(g){var b=this.chart;g.hoverPoint&&g.hoverPoint.plotX&&g.hoverPoint.plotY&&b.hoverPane&&!d(g.hoverPoint.plotX,g.hoverPoint.plotY,b.hoverPane.center)&&(g.hoverPoint=void 0)});l.Pane=a;return l.Pane});B(c,"parts-more/HiddenAxis.js",[],function(){return function(){function l(){}l.init=function(a){a.getOffset=function(){};a.redraw=function(){this.isDirty=!1};a.render=function(){this.isDirty=!1};a.createLabelCollector=function(){return function(){}};
a.setScale=function(){};a.setCategories=function(){};a.setTitle=function(){};a.isHidden=!0};return l}()});B(c,"parts-more/RadialAxis.js",[c["parts/Axis.js"],c["parts/Tick.js"],c["parts-more/HiddenAxis.js"],c["parts/Utilities.js"]],function(l,a,d,b){var r=b.addEvent,t=b.correctFloat,y=b.defined,c=b.extend,x=b.fireEvent,g=b.merge,u=b.pick,m=b.pInt,C=b.relativeLength,k=b.wrap;b=function(){function b(){}b.init=function(b){var a=l.prototype;b.setOptions=function(e){e=this.options=g(b.constructor.defaultOptions,
this.defaultPolarOptions,e);e.plotBands||(e.plotBands=[]);x(this,"afterSetOptions")};b.getOffset=function(){a.getOffset.call(this);this.chart.axisOffset[this.side]=0};b.getLinePath=function(e,h,f){e=this.pane.center;var p=this.chart,w=u(h,e[2]/2-this.offset);"undefined"===typeof f&&(f=this.horiz?0:this.center&&-this.center[3]/2);f&&(w+=f);this.isCircular||"undefined"!==typeof h?(h=this.chart.renderer.symbols.arc(this.left+e[0],this.top+e[1],w,w,{start:this.startAngleRad,end:this.endAngleRad,open:!0,
innerR:0}),h.xBounds=[this.left+e[0]],h.yBounds=[this.top+e[1]-w]):(h=this.postTranslate(this.angleRad,w),h=[["M",this.center[0]+p.plotLeft,this.center[1]+p.plotTop],["L",h.x,h.y]]);return h};b.setAxisTranslation=function(){a.setAxisTranslation.call(this);this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):(this.center[2]-this.center[3])/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0)};b.beforeSetTickPositions=
function(){this.autoConnect=this.isCircular&&"undefined"===typeof u(this.userMax,this.options.max)&&t(this.endAngleRad-this.startAngleRad)===t(2*Math.PI);!this.isCircular&&this.chart.inverted&&this.max++;this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)};b.setAxisSize=function(){a.setAxisSize.call(this);if(this.isRadial){this.pane.updateCenter(this);var e=this.center=c([],this.pane.center);if(this.isCircular)this.sector=this.endAngleRad-this.startAngleRad;
else{var h=this.postTranslate(this.angleRad,e[3]/2);e[0]=h.x-this.chart.plotLeft;e[1]=h.y-this.chart.plotTop}this.len=this.width=this.height=(e[2]-e[3])*u(this.sector,1)/2}};b.getPosition=function(e,h){e=this.translate(e);return this.postTranslate(this.isCircular?e:this.angleRad,u(this.isCircular?h:0>e?0:e,this.center[2]/2)-this.offset)};b.postTranslate=function(e,h){var f=this.chart,p=this.center;e=this.startAngleRad+e;return{x:f.plotLeft+p[0]+Math.cos(e)*h,y:f.plotTop+p[1]+Math.sin(e)*h}};b.getPlotBandPath=
function(e,h,f){var p=this.center,w=this.startAngleRad,v=p[2]/2,n=[u(f.outerRadius,"100%"),f.innerRadius,u(f.thickness,10)],g=Math.min(this.offset,0),b=/%$/;var a=this.isCircular;if("polygon"===this.options.gridLineInterpolation)n=this.getPlotLinePath({value:e}).concat(this.getPlotLinePath({value:h,reverse:!0}));else{e=Math.max(e,this.min);h=Math.min(h,this.max);a||(n[0]=this.translate(e),n[1]=this.translate(h));n=n.map(function(f){b.test(f)&&(f=m(f,10)*v/100);return f});if("circle"!==f.shape&&a)e=
w+this.translate(e),h=w+this.translate(h);else{e=-Math.PI/2;h=1.5*Math.PI;var k=!0}n[0]-=g;n[2]-=g;n=this.chart.renderer.symbols.arc(this.left+p[0],this.top+p[1],n[0],n[0],{start:Math.min(e,h),end:Math.max(e,h),innerR:u(n[1],n[0]-n[2]),open:k});a&&(a=(h+e)/2,g=this.left+p[0]+p[2]/2*Math.cos(a),n.xBounds=a>-Math.PI/2&&a<Math.PI/2?[g,this.chart.plotWidth]:[0,g],n.yBounds=[this.top+p[1]+p[2]/2*Math.sin(a)],n.yBounds[0]+=a>-Math.PI&&0>a||a>Math.PI?-10:10)}return n};b.getCrosshairPosition=function(e,h,
f){var p=e.value,w=this.pane.center;if(this.isCircular){if(y(p))e.point&&(v=e.point.shapeArgs||{},v.start&&(p=this.chart.inverted?this.translate(e.point.rectPlotY,!0):e.point.x));else{var v=e.chartX||0;var n=e.chartY||0;p=this.translate(Math.atan2(n-f,v-h)-this.startAngleRad,!0)}e=this.getPosition(p);v=e.x;n=e.y}else y(p)||(v=e.chartX,n=e.chartY),y(v)&&y(n)&&(f=w[1]+this.chart.plotTop,p=this.translate(Math.min(Math.sqrt(Math.pow(v-h,2)+Math.pow(n-f,2)),w[2]/2)-w[3]/2,!0));return[p,v||0,n||0]};b.getPlotLinePath=
function(e){var h=this,f=h.pane.center,p=h.chart,w=p.inverted,v=e.value,n=e.reverse,g=h.getPosition(v),b=h.pane.options.background?h.pane.options.background[0]||h.pane.options.background:{},a=b.innerRadius||"0%",k=b.outerRadius||"100%";b=f[0]+p.plotLeft;var m=f[1]+p.plotTop,q=g.x,d=g.y,u=h.height;g=f[3]/2;var A;e.isCrosshair&&(d=this.getCrosshairPosition(e,b,m),v=d[0],q=d[1],d=d[2]);if(h.isCircular)v=Math.sqrt(Math.pow(q-b,2)+Math.pow(d-m,2)),n="string"===typeof a?C(a,1):a/v,p="string"===typeof k?
C(k,1):k/v,f&&g&&(v=g/v,n<v&&(n=v),p<v&&(p=v)),f=[["M",b+n*(q-b),m-n*(m-d)],["L",q-(1-p)*(q-b),d+(1-p)*(m-d)]];else if((v=h.translate(v))&&(0>v||v>u)&&(v=0),"circle"===h.options.gridLineInterpolation)f=h.getLinePath(0,v,g);else if(f=[],p[w?"yAxis":"xAxis"].forEach(function(f){f.pane===h.pane&&(A=f)}),A)for(b=A.tickPositions,A.autoConnect&&(b=b.concat([b[0]])),n&&(b=b.slice().reverse()),v&&(v+=g),q=0;q<b.length;q++)m=A.getPosition(b[q],v),f.push(q?["L",m.x,m.y]:["M",m.x,m.y]);return f};b.getTitlePosition=
function(){var e=this.center,h=this.chart,f=this.options.title;return{x:h.plotLeft+e[0]+(f.x||0),y:h.plotTop+e[1]-{high:.5,middle:.25,low:0}[f.align]*e[2]+(f.y||0)}};b.createLabelCollector=function(){var e=this;return function(){if(e.isRadial&&e.tickPositions&&!0!==e.options.labels.allowOverlap)return e.tickPositions.map(function(h){return e.ticks[h]&&e.ticks[h].label}).filter(function(h){return!!h})}}};b.compose=function(a,m){r(a,"init",function(e){var h=this.chart,f=h.inverted,p=h.angular,w=h.polar,
v=this.isXAxis,n=this.coll,E=p&&v,k,m=h.options;e=e.userOptions.pane||0;e=this.pane=h.pane&&h.pane[e];if("colorAxis"===n)this.isRadial=!1;else{if(p){if(E?d.init(this):b.init(this),k=!v)this.defaultPolarOptions=b.defaultRadialGaugeOptions}else w&&(b.init(this),this.defaultPolarOptions=(k=this.horiz)?b.defaultCircularOptions:g("xAxis"===n?a.defaultOptions:a.defaultYAxisOptions,b.defaultRadialOptions),f&&"yAxis"===n&&(this.defaultPolarOptions.stackLabels=a.defaultYAxisOptions.stackLabels));p||w?(this.isRadial=
!0,m.chart.zoomType=null,this.labelCollector||(this.labelCollector=this.createLabelCollector()),this.labelCollector&&h.labelCollectors.push(this.labelCollector)):this.isRadial=!1;e&&k&&(e.axis=this);this.isCircular=k}});r(a,"afterInit",function(){var e=this.chart,h=this.options,f=this.pane,p=f&&f.options;e.angular&&this.isXAxis||!f||!e.angular&&!e.polar||(this.angleRad=(h.angle||0)*Math.PI/180,this.startAngleRad=(p.startAngle-90)*Math.PI/180,this.endAngleRad=(u(p.endAngle,p.startAngle+360)-90)*Math.PI/
180,this.offset=h.offset||0)});r(a,"autoLabelAlign",function(e){this.isRadial&&(e.align=void 0,e.preventDefault())});r(a,"destroy",function(){if(this.chart&&this.chart.labelCollectors){var e=this.labelCollector?this.chart.labelCollectors.indexOf(this.labelCollector):-1;0<=e&&this.chart.labelCollectors.splice(e,1)}});r(m,"afterGetPosition",function(e){this.axis.getPosition&&c(e.pos,this.axis.getPosition(this.pos))});r(m,"afterGetLabelPosition",function(e){var h=this.axis,f=this.label;if(f){var p=f.getBBox(),
w=h.options.labels,b=w.y,n=20,g=w.align,a=(h.translate(this.pos)+h.startAngleRad+Math.PI/2)/Math.PI*180%360,k=Math.round(a),m="end",q=0>k?k+360:k,d=q,A=0,r=0,t=null===w.y?.3*-p.height:0;if(h.isRadial){var l=h.getPosition(this.pos,h.center[2]/2+C(u(w.distance,-25),h.center[2]/2,-h.center[2]/2));"auto"===w.rotation?f.attr({rotation:a}):null===b&&(b=h.chart.renderer.fontMetrics(f.styles&&f.styles.fontSize).b-p.height/2);null===g&&(h.isCircular?(p.width>h.len*h.tickInterval/(h.max-h.min)&&(n=0),g=a>n&&
a<180-n?"left":a>180+n&&a<360-n?"right":"center"):g="center",f.attr({align:g}));if("auto"===g&&2===h.tickPositions.length&&h.isCircular){90<q&&180>q?q=180-q:270<q&&360>=q&&(q=540-q);180<d&&360>=d&&(d=360-d);if(h.pane.options.startAngle===k||h.pane.options.startAngle===k+360||h.pane.options.startAngle===k-360)m="start";g=-90<=k&&90>=k||-360<=k&&-270>=k||270<=k&&360>=k?"start"===m?"right":"left":"start"===m?"left":"right";70<d&&110>d&&(g="center");15>q||180<=q&&195>q?A=.3*p.height:15<=q&&35>=q?A="start"===
m?0:.75*p.height:195<=q&&215>=q?A="start"===m?.75*p.height:0:35<q&&90>=q?A="start"===m?.25*-p.height:p.height:215<q&&270>=q&&(A="start"===m?p.height:.25*-p.height);15>d?r="start"===m?.15*-p.height:.15*p.height:165<d&&180>=d&&(r="start"===m?.15*p.height:.15*-p.height);f.attr({align:g});f.translate(r,A+t)}e.pos.x=l.x+w.x;e.pos.y=l.y+b}}});k(m.prototype,"getMarkPath",function(e,h,f,p,g,b,n){var w=this.axis;w.isRadial?(e=w.getPosition(this.pos,w.center[2]/2+p),h=["M",h,f,"L",e.x,e.y]):h=e.call(this,h,
f,p,g,b,n);return h})};b.defaultCircularOptions={gridLineWidth:1,labels:{align:null,distance:15,x:0,y:null,style:{textOverflow:"none"}},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0};b.defaultRadialGaugeOptions={labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2};b.defaultRadialOptions={gridLineInterpolation:"circle",gridLineWidth:1,
labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}};return b}();b.compose(l,a);return b});B(c,"parts-more/AreaRangeSeries.js",[c["parts/Globals.js"],c["parts/Point.js"],c["parts/Utilities.js"]],function(l,a,d){var b=d.defined,r=d.extend,t=d.isArray,y=d.isNumber,c=d.pick;d=d.seriesType;var x=l.seriesTypes,g=l.Series.prototype,u=a.prototype;d("arearange","area",{lineWidth:1,threshold:null,tooltip:{pointFormat:'<span style="color:{series.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0}},{pointArrayMap:["low","high"],pointValKey:"low",deferTranslatePolar:!0,toYData:function(g){return[g.low,g.high]},highToXY:function(g){var b=this.chart,a=this.xAxis.postTranslate(g.rectPlotX,this.yAxis.len-g.plotHigh);g.plotHighX=a.x-b.plotLeft;g.plotHigh=a.y-b.plotTop;g.plotLowX=g.plotX},translate:function(){var g=this,b=g.yAxis,a=!!g.modifyValue;x.area.prototype.translate.apply(g);g.points.forEach(function(k){var d=
k.high,q=k.plotY;k.isNull?k.plotY=null:(k.plotLow=q,k.plotHigh=b.translate(a?g.modifyValue(d,k):d,0,1,0,1),a&&(k.yBottom=k.plotHigh))});this.chart.polar&&this.points.forEach(function(b){g.highToXY(b);b.tooltipPos=[(b.plotHighX+b.plotLowX)/2,(b.plotHigh+b.plotLow)/2]})},getGraphPath:function(g){var b=[],a=[],d,m=x.area.prototype.getGraphPath;var q=this.options;var e=this.chart.polar&&!1!==q.connectEnds,h=q.connectNulls,f=q.step;g=g||this.points;for(d=g.length;d--;){var p=g[d];p.isNull||e||h||g[d+1]&&
!g[d+1].isNull||a.push({plotX:p.plotX,plotY:p.plotY,doCurve:!1});var w={polarPlotY:p.polarPlotY,rectPlotX:p.rectPlotX,yBottom:p.yBottom,plotX:c(p.plotHighX,p.plotX),plotY:p.plotHigh,isNull:p.isNull};a.push(w);b.push(w);p.isNull||e||h||g[d-1]&&!g[d-1].isNull||a.push({plotX:p.plotX,plotY:p.plotY,doCurve:!1})}g=m.call(this,g);f&&(!0===f&&(f="left"),q.step={left:"right",center:"center",right:"left"}[f]);b=m.call(this,b);a=m.call(this,a);q.step=f;q=[].concat(g,b);!this.chart.polar&&a[0]&&"M"===a[0][0]&&
(a[0]=["L",a[0][1],a[0][2]]);this.graphPath=q;this.areaPath=g.concat(a);q.isArea=!0;q.xMap=g.xMap;this.areaPath.xMap=g.xMap;return q},drawDataLabels:function(){var b=this.points,a=b.length,k,d=[],u=this.options.dataLabels,q,e=this.chart.inverted;if(t(u))if(1<u.length){var h=u[0];var f=u[1]}else h=u[0],f={enabled:!1};else h=r({},u),h.x=u.xHigh,h.y=u.yHigh,f=r({},u),f.x=u.xLow,f.y=u.yLow;if(h.enabled||this._hasPointLabels){for(k=a;k--;)if(q=b[k]){var p=h.inside?q.plotHigh<q.plotLow:q.plotHigh>q.plotLow;
q.y=q.high;q._plotY=q.plotY;q.plotY=q.plotHigh;d[k]=q.dataLabel;q.dataLabel=q.dataLabelUpper;q.below=p;e?h.align||(h.align=p?"right":"left"):h.verticalAlign||(h.verticalAlign=p?"top":"bottom")}this.options.dataLabels=h;g.drawDataLabels&&g.drawDataLabels.apply(this,arguments);for(k=a;k--;)if(q=b[k])q.dataLabelUpper=q.dataLabel,q.dataLabel=d[k],delete q.dataLabels,q.y=q.low,q.plotY=q._plotY}if(f.enabled||this._hasPointLabels){for(k=a;k--;)if(q=b[k])p=f.inside?q.plotHigh<q.plotLow:q.plotHigh>q.plotLow,
q.below=!p,e?f.align||(f.align=p?"left":"right"):f.verticalAlign||(f.verticalAlign=p?"bottom":"top");this.options.dataLabels=f;g.drawDataLabels&&g.drawDataLabels.apply(this,arguments)}if(h.enabled)for(k=a;k--;)if(q=b[k])q.dataLabels=[q.dataLabelUpper,q.dataLabel].filter(function(f){return!!f});this.options.dataLabels=u},alignDataLabel:function(){x.column.prototype.alignDataLabel.apply(this,arguments)},drawPoints:function(){var a=this.points.length,d;g.drawPoints.apply(this,arguments);for(d=0;d<a;){var k=
this.points[d];k.origProps={plotY:k.plotY,plotX:k.plotX,isInside:k.isInside,negative:k.negative,zone:k.zone,y:k.y};k.lowerGraphic=k.graphic;k.graphic=k.upperGraphic;k.plotY=k.plotHigh;b(k.plotHighX)&&(k.plotX=k.plotHighX);k.y=k.high;k.negative=k.high<(this.options.threshold||0);k.zone=this.zones.length&&k.getZone();this.chart.polar||(k.isInside=k.isTopInside="undefined"!==typeof k.plotY&&0<=k.plotY&&k.plotY<=this.yAxis.len&&0<=k.plotX&&k.plotX<=this.xAxis.len);d++}g.drawPoints.apply(this,arguments);
for(d=0;d<a;)k=this.points[d],k.upperGraphic=k.graphic,k.graphic=k.lowerGraphic,r(k,k.origProps),delete k.origProps,d++},setStackedPoints:l.noop},{setState:function(){var g=this.state,a=this.series,d=a.chart.polar;b(this.plotHigh)||(this.plotHigh=a.yAxis.toPixels(this.high,!0));b(this.plotLow)||(this.plotLow=this.plotY=a.yAxis.toPixels(this.low,!0));a.stateMarkerGraphic&&(a.lowerStateMarkerGraphic=a.stateMarkerGraphic,a.stateMarkerGraphic=a.upperStateMarkerGraphic);this.graphic=this.upperGraphic;
this.plotY=this.plotHigh;d&&(this.plotX=this.plotHighX);u.setState.apply(this,arguments);this.state=g;this.plotY=this.plotLow;this.graphic=this.lowerGraphic;d&&(this.plotX=this.plotLowX);a.stateMarkerGraphic&&(a.upperStateMarkerGraphic=a.stateMarkerGraphic,a.stateMarkerGraphic=a.lowerStateMarkerGraphic,a.lowerStateMarkerGraphic=void 0);u.setState.apply(this,arguments)},haloPath:function(){var g=this.series.chart.polar,b=[];this.plotY=this.plotLow;g&&(this.plotX=this.plotLowX);this.isInside&&(b=u.haloPath.apply(this,
arguments));this.plotY=this.plotHigh;g&&(this.plotX=this.plotHighX);this.isTopInside&&(b=b.concat(u.haloPath.apply(this,arguments)));return b},destroyElements:function(){["lowerGraphic","upperGraphic"].forEach(function(g){this[g]&&(this[g]=this[g].destroy())},this);this.graphic=null;return u.destroyElements.apply(this,arguments)},isValid:function(){return y(this.low)&&y(this.high)}});""});B(c,"parts-more/AreaSplineRangeSeries.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){a=a.seriesType;
a("areasplinerange","arearange",null,{getPointSpline:l.seriesTypes.spline.prototype.getPointSpline});""});B(c,"parts-more/ColumnRangeSeries.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){var d=a.clamp,b=a.merge,r=a.pick;a=a.seriesType;var t=l.defaultPlotOptions,y=l.noop,c=l.seriesTypes.column.prototype;a("columnrange","arearange",b(t.column,t.arearange,{pointRange:null,marker:null,states:{hover:{halo:!1}}}),{translate:function(){var b=this,g=b.yAxis,a=b.xAxis,m=a.startAngleRad,
t,k=b.chart,l=b.xAxis.isRadial,A=Math.max(k.chartWidth,k.chartHeight)+999,q;c.translate.apply(b);b.points.forEach(function(e){var h=e.shapeArgs,f=b.options.minPointLength;e.plotHigh=q=d(g.translate(e.high,0,1,0,1),-A,A);e.plotLow=d(e.plotY,-A,A);var p=q;var w=r(e.rectPlotY,e.plotY)-q;Math.abs(w)<f?(f-=w,w+=f,p-=f/2):0>w&&(w*=-1,p-=w);l?(t=e.barX+m,e.shapeType="arc",e.shapeArgs=b.polarArc(p+w,p,t,t+e.pointWidth)):(h.height=w,h.y=p,e.tooltipPos=k.inverted?[g.len+g.pos-k.plotLeft-p-w/2,a.len+a.pos-k.plotTop-
h.x-h.width/2,w]:[a.left-k.plotLeft+h.x+h.width/2,g.pos-k.plotTop+p+w/2,w])})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:y,getSymbol:y,crispCol:function(){return c.crispCol.apply(this,arguments)},drawPoints:function(){return c.drawPoints.apply(this,arguments)},drawTracker:function(){return c.drawTracker.apply(this,arguments)},getColumnMetrics:function(){return c.getColumnMetrics.apply(this,arguments)},pointAttribs:function(){return c.pointAttribs.apply(this,arguments)},animate:function(){return c.animate.apply(this,
arguments)},polarArc:function(){return c.polarArc.apply(this,arguments)},translate3dPoints:function(){return c.translate3dPoints.apply(this,arguments)},translate3dShapes:function(){return c.translate3dShapes.apply(this,arguments)}},{setState:c.pointClass.prototype.setState});""});B(c,"parts-more/ColumnPyramidSeries.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){var d=a.clamp,b=a.pick;a=a.seriesType;var r=l.seriesTypes.column.prototype;a("columnpyramid","column",{},{translate:function(){var a=
this,l=a.chart,c=a.options,x=a.dense=2>a.closestPointRange*a.xAxis.transA;x=a.borderWidth=b(c.borderWidth,x?0:1);var g=a.yAxis,u=c.threshold,m=a.translatedThreshold=g.getThreshold(u),C=b(c.minPointLength,5),k=a.getColumnMetrics(),z=k.width,A=a.barW=Math.max(z,1+2*x),q=a.pointXOffset=k.offset;l.inverted&&(m-=.5);c.pointPadding&&(A=Math.ceil(A));r.translate.apply(a);a.points.forEach(function(e){var h=b(e.yBottom,m),f=999+Math.abs(h),p=d(e.plotY,-f,g.len+f);f=e.plotX+q;var w=A/2,v=Math.min(p,h);h=Math.max(p,
h)-v;var n;e.barX=f;e.pointWidth=z;e.tooltipPos=l.inverted?[g.len+g.pos-l.plotLeft-p,a.xAxis.len-f-w,h]:[f+w,p+g.pos-l.plotTop,h];p=u+(e.total||e.y);"percent"===c.stacking&&(p=u+(0>e.y)?-100:100);p=g.toPixels(p,!0);var E=(n=l.plotHeight-p-(l.plotHeight-m))?w*(v-p)/n:0;var k=n?w*(v+h-p)/n:0;n=f-E+w;E=f+E+w;var r=f+k+w;k=f-k+w;var H=v-C;var t=v+h;0>e.y&&(H=v,t=v+h+C);l.inverted&&(r=l.plotWidth-v,n=p-(l.plotWidth-m),E=w*(p-r)/n,k=w*(p-(r-h))/n,n=f+w+E,E=n-2*E,r=f-k+w,k=f+k+w,H=v,t=v+h-C,0>e.y&&(t=v+
h+C));e.shapeType="path";e.shapeArgs={x:n,y:H,width:E-n,height:h,d:[["M",n,H],["L",E,H],["L",r,t],["L",k,t],["Z"]]}})}});""});B(c,"parts-more/GaugeSeries.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){var d=a.clamp,b=a.isNumber,r=a.merge,t=a.pick,c=a.pInt;a=a.seriesType;var D=l.Series,x=l.TrackerMixin;a("gauge","line",{dataLabels:{borderColor:"#cccccc",borderRadius:3,borderWidth:1,crop:!1,defer:!1,enabled:!0,verticalAlign:"top",y:15,zIndex:2},dial:{},pivot:{},tooltip:{headerFormat:""},
showInLegend:!1},{angular:!0,directTouch:!0,drawGraph:l.noop,fixedBox:!0,forceDL:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],translate:function(){var g=this.yAxis,a=this.options,m=g.center;this.generatePoints();this.points.forEach(function(u){var k=r(a.dial,u.dial),l=c(t(k.radius,"80%"))*m[2]/200,A=c(t(k.baseLength,"70%"))*l/100,q=c(t(k.rearLength,"10%"))*l/100,e=k.baseWidth||3,h=k.topWidth||1,f=a.overshoot,p=g.startAngleRad+g.translate(u.y,null,null,null,!0);if(b(f)||!1===a.wrap)f=
b(f)?f/180*Math.PI:0,p=d(p,g.startAngleRad-f,g.endAngleRad+f);p=180*p/Math.PI;u.shapeType="path";u.shapeArgs={d:k.path||[["M",-q,-e/2],["L",A,-e/2],["L",l,-h/2],["L",l,h/2],["L",A,e/2],["L",-q,e/2],["Z"]],translateX:m[0],translateY:m[1],rotation:p};u.plotX=m[0];u.plotY=m[1]})},drawPoints:function(){var g=this,b=g.chart,a=g.yAxis.center,d=g.pivot,k=g.options,l=k.pivot,A=b.renderer;g.points.forEach(function(a){var e=a.graphic,h=a.shapeArgs,f=h.d,p=r(k.dial,a.dial);e?(e.animate(h),h.d=f):a.graphic=A[a.shapeType](h).attr({rotation:h.rotation,
zIndex:1}).addClass("highcharts-dial").add(g.group);if(!b.styledMode)a.graphic[e?"animate":"attr"]({stroke:p.borderColor||"none","stroke-width":p.borderWidth||0,fill:p.backgroundColor||"#000000"})});d?d.animate({translateX:a[0],translateY:a[1]}):(g.pivot=A.circle(0,0,t(l.radius,5)).attr({zIndex:2}).addClass("highcharts-pivot").translate(a[0],a[1]).add(g.group),b.styledMode||g.pivot.attr({"stroke-width":l.borderWidth||0,stroke:l.borderColor||"#cccccc",fill:l.backgroundColor||"#000000"}))},animate:function(a){var b=
this;a||b.points.forEach(function(a){var g=a.graphic;g&&(g.attr({rotation:180*b.yAxis.startAngleRad/Math.PI}),g.animate({rotation:a.shapeArgs.rotation},b.options.animation))})},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);D.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,b){D.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();t(b,!0)&&this.chart.redraw()},
hasData:function(){return!!this.points.length},drawTracker:x&&x.drawTrackerPoint},{setState:function(a){this.state=a}});""});B(c,"parts-more/BoxPlotSeries.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){var d=a.pick;a=a.seriesType;var b=l.noop,r=l.seriesTypes;a("boxplot","column",{threshold:null,tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> <b> {series.name}</b><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>'},
whiskerLength:"50%",fillColor:"#ffffff",lineWidth:1,medianWidth:2,whiskerWidth:2},{pointArrayMap:["low","q1","median","q3","high"],toYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:"high",pointAttribs:function(){return{}},drawDataLabels:b,translate:function(){var a=this.yAxis,b=this.pointArrayMap;r.column.prototype.translate.apply(this);this.points.forEach(function(d){b.forEach(function(b){null!==d[b]&&(d[b+"Plot"]=a.translate(d[b],0,1,0,1))});d.plotHigh=d.highPlot})},drawPoints:function(){var a=
this,b=a.options,r=a.chart,l=r.renderer,g,u,m,c,k,z,A=0,q,e,h,f,p=!1!==a.doQuartiles,w,v=a.options.whiskerLength;a.points.forEach(function(n){var E=n.graphic,I=E?"animate":"attr",L=n.shapeArgs,H={},J={},t={},K={},G=n.color||a.color;"undefined"!==typeof n.plotY&&(q=Math.round(L.width),e=Math.floor(L.x),h=e+q,f=Math.round(q/2),g=Math.floor(p?n.q1Plot:n.lowPlot),u=Math.floor(p?n.q3Plot:n.lowPlot),m=Math.floor(n.highPlot),c=Math.floor(n.lowPlot),E||(n.graphic=E=l.g("point").add(a.group),n.stem=l.path().addClass("highcharts-boxplot-stem").add(E),
v&&(n.whiskers=l.path().addClass("highcharts-boxplot-whisker").add(E)),p&&(n.box=l.path(void 0).addClass("highcharts-boxplot-box").add(E)),n.medianShape=l.path(void 0).addClass("highcharts-boxplot-median").add(E)),r.styledMode||(J.stroke=n.stemColor||b.stemColor||G,J["stroke-width"]=d(n.stemWidth,b.stemWidth,b.lineWidth),J.dashstyle=n.stemDashStyle||b.stemDashStyle||b.dashStyle,n.stem.attr(J),v&&(t.stroke=n.whiskerColor||b.whiskerColor||G,t["stroke-width"]=d(n.whiskerWidth,b.whiskerWidth,b.lineWidth),
t.dashstyle=n.whiskerDashStyle||b.whiskerDashStyle||b.dashStyle,n.whiskers.attr(t)),p&&(H.fill=n.fillColor||b.fillColor||G,H.stroke=b.lineColor||G,H["stroke-width"]=b.lineWidth||0,H.dashstyle=n.boxDashStyle||b.boxDashStyle||b.dashStyle,n.box.attr(H)),K.stroke=n.medianColor||b.medianColor||G,K["stroke-width"]=d(n.medianWidth,b.medianWidth,b.lineWidth),K.dashstyle=n.medianDashStyle||b.medianDashStyle||b.dashStyle,n.medianShape.attr(K)),z=n.stem.strokeWidth()%2/2,A=e+f+z,E=[["M",A,u],["L",A,m],["M",
A,g],["L",A,c]],n.stem[I]({d:E}),p&&(z=n.box.strokeWidth()%2/2,g=Math.floor(g)+z,u=Math.floor(u)+z,e+=z,h+=z,E=[["M",e,u],["L",e,g],["L",h,g],["L",h,u],["L",e,u],["Z"]],n.box[I]({d:E})),v&&(z=n.whiskers.strokeWidth()%2/2,m+=z,c+=z,w=/%$/.test(v)?f*parseFloat(v)/100:v/2,E=[["M",A-w,m],["L",A+w,m],["M",A-w,c],["L",A+w,c]],n.whiskers[I]({d:E})),k=Math.round(n.medianPlot),z=n.medianShape.strokeWidth()%2/2,k+=z,E=[["M",e,k],["L",h,k]],n.medianShape[I]({d:E}))})},setStackedPoints:b});""});B(c,"parts-more/ErrorBarSeries.js",
[c["parts/Globals.js"],c["parts/Utilities.js"]],function(l,a){a=a.seriesType;var d=l.noop,b=l.seriesTypes;a("errorbar","boxplot",{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},whiskerWidth:null},{type:"errorbar",pointArrayMap:["low","high"],toYData:function(b){return[b.low,b.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:b.arearange?function(){var a=this.pointValKey;
b.arearange.prototype.drawDataLabels.call(this);this.data.forEach(function(b){b.y=b[a]})}:d,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||b.column.prototype.getColumnMetrics.call(this)}});""});B(c,"parts-more/WaterfallSeries.js",[c["parts/Globals.js"],c["parts/Point.js"],c["parts/Utilities.js"],c["parts/Stacking.js"]],function(l,a,d,b){var r=d.addEvent,c=d.arrayMax,y=d.arrayMin,D=d.correctFloat,x=d.isNumber,g=d.objectEach,u=d.pick;d=d.seriesType;var m=l.Axis,
C=l.Chart,k=l.Series,z=l.seriesTypes;r(m,"afterInit",function(){this.isXAxis||(this.waterfallStacks={changed:!1})});r(m,"afterBuildStacks",function(){this.waterfallStacks.changed=!1;delete this.waterfallStacks.alreadyChanged});r(C,"beforeRedraw",function(){for(var b=this.axes,a=this.series,e=a.length;e--;)a[e].options.stacking&&(b.forEach(function(h){h.isXAxis||(h.waterfallStacks.changed=!0)}),e=0)});r(m,"afterRender",function(){var b=this.options.stackLabels;b&&b.enabled&&this.waterfallStacks&&this.renderWaterfallStackTotals()});
m.prototype.renderWaterfallStackTotals=function(){var a=this.waterfallStacks,d=this.stacking&&this.stacking.stackTotalGroup,e=new b(this,this.options.stackLabels,!1,0,void 0);this.dummyStackItem=e;g(a,function(h){g(h,function(f){e.total=f.stackTotal;f.label&&(e.label=f.label);b.prototype.render.call(e,d);f.label=e.label;delete e.label})});e.total=null};d("waterfall","column",{dataLabels:{inside:!0},lineWidth:1,lineColor:"#333333",dashStyle:"Dot",borderColor:"#333333",states:{hover:{lineWidthPlus:0}}},
{pointValKey:"y",showLine:!0,generatePoints:function(){var b;z.column.prototype.generatePoints.apply(this);var a=0;for(b=this.points.length;a<b;a++){var e=this.points[a];var h=this.processedYData[a];if(e.isIntermediateSum||e.isSum)e.y=D(h)}},translate:function(){var b=this.options,a=this.yAxis,e,h=u(b.minPointLength,5),f=h/2,p=b.threshold,g=b.stacking,v=a.waterfallStacks[this.stackKey];z.column.prototype.translate.apply(this);var n=e=p;var d=this.points;var k=0;for(b=d.length;k<b;k++){var r=d[k];
var l=this.processedYData[k];var m=r.shapeArgs;var c=[0,l];var t=r.y;if(g){if(v){c=v[k];if("overlap"===g){var G=c.stackState[c.stateIndex--];G=0<=t?G:G-t;Object.hasOwnProperty.call(c,"absolutePos")&&delete c.absolutePos;Object.hasOwnProperty.call(c,"absoluteNeg")&&delete c.absoluteNeg}else 0<=t?(G=c.threshold+c.posTotal,c.posTotal-=t):(G=c.threshold+c.negTotal,c.negTotal-=t,G-=t),!c.posTotal&&Object.hasOwnProperty.call(c,"absolutePos")&&(c.posTotal=c.absolutePos,delete c.absolutePos),!c.negTotal&&
Object.hasOwnProperty.call(c,"absoluteNeg")&&(c.negTotal=c.absoluteNeg,delete c.absoluteNeg);r.isSum||(c.connectorThreshold=c.threshold+c.stackTotal);a.reversed?(l=0<=t?G-t:G+t,t=G):(l=G,t=G-t);r.below=l<=u(p,0);m.y=a.translate(l,0,1,0,1);m.height=Math.abs(m.y-a.translate(t,0,1,0,1))}if(t=a.dummyStackItem)t.x=k,t.label=v[k].label,t.setOffset(this.pointXOffset||0,this.barW||0,this.stackedYNeg[k],this.stackedYPos[k])}else G=Math.max(n,n+t)+c[0],m.y=a.translate(G,0,1,0,1),r.isSum?(m.y=a.translate(c[1],
0,1,0,1),m.height=Math.min(a.translate(c[0],0,1,0,1),a.len)-m.y):r.isIntermediateSum?(0<=t?(l=c[1]+e,t=e):(l=e,t=c[1]+e),a.reversed&&(l^=t,t^=l,l^=t),m.y=a.translate(l,0,1,0,1),m.height=Math.abs(m.y-Math.min(a.translate(t,0,1,0,1),a.len)),e+=c[1]):(m.height=0<l?a.translate(n,0,1,0,1)-m.y:a.translate(n,0,1,0,1)-a.translate(n-l,0,1,0,1),n+=l,r.below=n<u(p,0)),0>m.height&&(m.y+=m.height,m.height*=-1);r.plotY=m.y=Math.round(m.y)-this.borderWidth%2/2;m.height=Math.max(Math.round(m.height),.001);r.yBottom=
m.y+m.height;m.height<=h&&!r.isNull?(m.height=h,m.y-=f,r.plotY=m.y,r.minPointLengthOffset=0>r.y?-f:f):(r.isNull&&(m.width=0),r.minPointLengthOffset=0);m=r.plotY+(r.negative?m.height:0);this.chart.inverted?r.tooltipPos[0]=a.len-m:r.tooltipPos[1]=m}},processData:function(a){var b=this.options,e=this.yData,h=b.data,f=e.length,p=b.threshold||0,g,v,n,d,m;for(m=v=g=n=d=0;m<f;m++){var r=e[m];var c=h&&h[m]?h[m]:{};"sum"===r||c.isSum?e[m]=D(v):"intermediateSum"===r||c.isIntermediateSum?(e[m]=D(g),g=0):(v+=
r,g+=r);n=Math.min(v,n);d=Math.max(v,d)}k.prototype.processData.call(this,a);b.stacking||(this.dataMin=n+p,this.dataMax=d)},toYData:function(a){return a.isSum?"sum":a.isIntermediateSum?"intermediateSum":a.y},updateParallelArrays:function(a,b){k.prototype.updateParallelArrays.call(this,a,b);if("sum"===this.yData[0]||"intermediateSum"===this.yData[0])this.yData[0]=null},pointAttribs:function(a,b){var e=this.options.upColor;e&&!a.options.color&&(a.color=0<a.y?e:null);a=z.column.prototype.pointAttribs.call(this,
a,b);delete a.dashstyle;return a},getGraphPath:function(){return[["M",0,0]]},getCrispPath:function(){var a=this.data,b=this.yAxis,e=a.length,h=Math.round(this.graph.strokeWidth())%2/2,f=Math.round(this.borderWidth)%2/2,p=this.xAxis.reversed,g=this.yAxis.reversed,v=this.options.stacking,n=[],d;for(d=1;d<e;d++){var k=a[d].shapeArgs;var m=a[d-1];var r=a[d-1].shapeArgs;var c=b.waterfallStacks[this.stackKey];var l=0<m.y?-r.height:0;c&&r&&k&&(c=c[d-1],v?(c=c.connectorThreshold,l=Math.round(b.translate(c,
0,1,0,1)+(g?l:0))-h):l=r.y+m.minPointLengthOffset+f-h,n.push(["M",(r.x||0)+(p?0:r.width||0),l],["L",(k.x||0)+(p?k.width||0:0),l]));!v&&n.length&&r&&(0>m.y&&!g||0<m.y&&g)&&(n[n.length-2][2]+=r.height,n[n.length-1][2]+=r.height)}return n},drawGraph:function(){k.prototype.drawGraph.call(this);this.graph.attr({d:this.getCrispPath()})},setStackedPoints:function(){function a(f,h,a,b){if(x)for(a;a<x;a++)t.stackState[a]+=b;else t.stackState[0]=f,x=t.stackState.length;t.stackState.push(t.stackState[x-1]+h)}
var b=this.options,e=this.yAxis.waterfallStacks,h=b.threshold,f=h||0,p=f,g=this.stackKey,v=this.xData,n=v.length,d,k,m;this.yAxis.stacking.usePercentage=!1;var r=k=m=f;if(this.visible||!this.chart.options.chart.ignoreHiddenSeries){var c=e.changed;(d=e.alreadyChanged)&&0>d.indexOf(g)&&(c=!0);e[g]||(e[g]={});d=e[g];for(var l=0;l<n;l++){var u=v[l];if(!d[u]||c)d[u]={negTotal:0,posTotal:0,stackTotal:0,threshold:0,stateIndex:0,stackState:[],label:c&&d[u]?d[u].label:void 0};var t=d[u];var y=this.yData[l];
0<=y?t.posTotal+=y:t.negTotal+=y;var C=b.data[l];u=t.absolutePos=t.posTotal;var z=t.absoluteNeg=t.negTotal;t.stackTotal=u+z;var x=t.stackState.length;C&&C.isIntermediateSum?(a(m,k,0,m),m=k,k=h,f^=p,p^=f,f^=p):C&&C.isSum?(a(h,r,x),f=h):(a(f,y,0,r),C&&(r+=y,k+=y));t.stateIndex++;t.threshold=f;f+=t.stackTotal}e.changed=!1;e.alreadyChanged||(e.alreadyChanged=[]);e.alreadyChanged.push(g)}},getExtremes:function(){var a=this.options.stacking;if(a){var b=this.yAxis;b=b.waterfallStacks;var e=this.stackedYNeg=
[];var h=this.stackedYPos=[];"overlap"===a?g(b[this.stackKey],function(f){e.push(y(f.stackState));h.push(c(f.stackState))}):g(b[this.stackKey],function(f){e.push(f.negTotal+f.threshold);h.push(f.posTotal+f.threshold)});return{dataMin:y(e),dataMax:c(h)}}return{dataMin:this.dataMin,dataMax:this.dataMax}}},{getClassName:function(){var b=a.prototype.getClassName.call(this);this.isSum?b+=" highcharts-sum":this.isIntermediateSum&&(b+=" highcharts-intermediate-sum");return b},isValid:function(){return x(this.y)||
this.isSum||!!this.isIntermediateSum}});""});B(c,"parts-more/PolygonSeries.js",[c["parts/Globals.js"],c["mixins/legend-symbol.js"],c["parts/Utilities.js"]],function(c,a,d){d=d.seriesType;var b=c.Series,r=c.seriesTypes;d("polygon","scatter",{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:""},trackByArea:!0},{type:"polygon",getGraphPath:function(){for(var a=b.prototype.getGraphPath.call(this),d=a.length+1;d--;)(d===a.length||"M"===a[d][0])&&0<
d&&a.splice(d,0,["Z"]);return this.areaPath=a},drawGraph:function(){this.options.fillColor=this.color;r.area.prototype.drawGraph.call(this)},drawLegendSymbol:a.drawRectangle,drawTracker:b.prototype.drawTracker,setStackedPoints:c.noop});""});B(c,"parts-more/BubbleLegend.js",[c["parts/Globals.js"],c["parts/Color.js"],c["parts/Legend.js"],c["parts/Utilities.js"]],function(c,a,d,b){"";var r=a.parse;a=b.addEvent;var l=b.arrayMax,y=b.arrayMin,D=b.isNumber,x=b.merge,g=b.objectEach,u=b.pick,m=b.stableSort,
C=b.wrap,k=c.Series,z=c.Chart,A=c.noop,q=c.setOptions;q({legend:{bubbleLegend:{borderColor:void 0,borderWidth:2,className:void 0,color:void 0,connectorClassName:void 0,connectorColor:void 0,connectorDistance:60,connectorWidth:1,enabled:!1,labels:{className:void 0,allowOverlap:!1,format:"",formatter:void 0,align:"right",style:{fontSize:10,color:void 0},x:0,y:0},maxSize:60,minSize:10,legendIndex:0,ranges:{value:void 0,borderColor:void 0,color:void 0,connectorColor:void 0},sizeBy:"area",sizeByAbsoluteValue:!1,
zIndex:1,zThreshold:0}}});q=function(){function a(a,f){this.options=this.symbols=this.visible=this.ranges=this.movementX=this.maxLabel=this.legendSymbol=this.legendItemWidth=this.legendItemHeight=this.legendItem=this.legendGroup=this.legend=this.fontMetrics=this.chart=void 0;this.setState=A;this.init(a,f)}a.prototype.init=function(a,f){this.options=a;this.visible=!0;this.chart=f.chart;this.legend=f};a.prototype.addToLegend=function(a){a.splice(this.options.legendIndex,0,this)};a.prototype.drawLegendSymbol=
function(a){var f=this.chart,h=this.options,b=u(a.options.itemDistance,20),e=h.ranges;var g=h.connectorDistance;this.fontMetrics=f.renderer.fontMetrics(h.labels.style.fontSize.toString()+"px");e&&e.length&&D(e[0].value)?(m(e,function(f,a){return a.value-f.value}),this.ranges=e,this.setOptions(),this.render(),f=this.getMaxLabelSize(),e=this.ranges[0].radius,a=2*e,g=g-e+f.width,g=0<g?g:0,this.maxLabel=f,this.movementX="left"===h.labels.align?g:0,this.legendItemWidth=a+g+b,this.legendItemHeight=a+this.fontMetrics.h/
2):a.options.bubbleLegend.autoRanges=!0};a.prototype.setOptions=function(){var a=this.ranges,f=this.options,b=this.chart.series[f.seriesIndex],e=this.legend.baseline,g={"z-index":f.zIndex,"stroke-width":f.borderWidth},n={"z-index":f.zIndex,"stroke-width":f.connectorWidth},d=this.getLabelStyles(),k=b.options.marker.fillOpacity,c=this.chart.styledMode;a.forEach(function(h,p){c||(g.stroke=u(h.borderColor,f.borderColor,b.color),g.fill=u(h.color,f.color,1!==k?r(b.color).setOpacity(k).get("rgba"):b.color),
n.stroke=u(h.connectorColor,f.connectorColor,b.color));a[p].radius=this.getRangeRadius(h.value);a[p]=x(a[p],{center:a[0].radius-a[p].radius+e});c||x(!0,a[p],{bubbleStyle:x(!1,g),connectorStyle:x(!1,n),labelStyle:d})},this)};a.prototype.getLabelStyles=function(){var a=this.options,f={},b="left"===a.labels.align,e=this.legend.options.rtl;g(a.labels.style,function(a,b){"color"!==b&&"fontSize"!==b&&"z-index"!==b&&(f[b]=a)});return x(!1,f,{"font-size":a.labels.style.fontSize,fill:u(a.labels.style.color,
"#000000"),"z-index":a.zIndex,align:e||b?"right":"left"})};a.prototype.getRangeRadius=function(a){var f=this.options;return this.chart.series[this.options.seriesIndex].getRadius.call(this,f.ranges[f.ranges.length-1].value,f.ranges[0].value,f.minSize,f.maxSize,a)};a.prototype.render=function(){var a=this.chart.renderer,f=this.options.zThreshold;this.symbols||(this.symbols={connectors:[],bubbleItems:[],labels:[]});this.legendSymbol=a.g("bubble-legend");this.legendItem=a.g("bubble-legend-item");this.legendSymbol.translateX=
0;this.legendSymbol.translateY=0;this.ranges.forEach(function(a){a.value>=f&&this.renderRange(a)},this);this.legendSymbol.add(this.legendItem);this.legendItem.add(this.legendGroup);this.hideOverlappingLabels()};a.prototype.renderRange=function(a){var f=this.options,b=f.labels,e=this.chart.renderer,h=this.symbols,g=h.labels,d=a.center,k=Math.abs(a.radius),c=f.connectorDistance||0,m=b.align,r=b.style.fontSize;c=this.legend.options.rtl||"left"===m?-c:c;b=f.connectorWidth;var l=this.ranges[0].radius||
0,u=d-k-f.borderWidth/2+b/2;r=r/2-(this.fontMetrics.h-r)/2;var t=e.styledMode;"center"===m&&(c=0,f.connectorDistance=0,a.labelStyle.align="center");m=u+f.labels.y;var q=l+c+f.labels.x;h.bubbleItems.push(e.circle(l,d+((u%1?1:.5)-(b%2?0:.5)),k).attr(t?{}:a.bubbleStyle).addClass((t?"highcharts-color-"+this.options.seriesIndex+" ":"")+"highcharts-bubble-legend-symbol "+(f.className||"")).add(this.legendSymbol));h.connectors.push(e.path(e.crispLine([["M",l,u],["L",l+c,u]],f.connectorWidth)).attr(t?{}:
a.connectorStyle).addClass((t?"highcharts-color-"+this.options.seriesIndex+" ":"")+"highcharts-bubble-legend-connectors "+(f.connectorClassName||"")).add(this.legendSymbol));a=e.text(this.formatLabel(a),q,m+r).attr(t?{}:a.labelStyle).addClass("highcharts-bubble-legend-labels "+(f.labels.className||"")).add(this.legendSymbol);g.push(a);a.placed=!0;a.alignAttr={x:q,y:m+r}};a.prototype.getMaxLabelSize=function(){var a,f;this.symbols.labels.forEach(function(b){f=b.getBBox(!0);a=a?f.width>a.width?f:a:
f});return a||{}};a.prototype.formatLabel=function(a){var f=this.options,e=f.labels.formatter;f=f.labels.format;var h=this.chart.numberFormatter;return f?b.format(f,a):e?e.call(a):h(a.value,1)};a.prototype.hideOverlappingLabels=function(){var a=this.chart,f=this.symbols;!this.options.labels.allowOverlap&&f&&(a.hideOverlappingLabels(f.labels),f.labels.forEach(function(a,b){a.newOpacity?a.newOpacity!==a.oldOpacity&&f.connectors[b].show():f.connectors[b].hide()}))};a.prototype.getRanges=function(){var a=
this.legend.bubbleLegend,f=a.options.ranges,b,e=Number.MAX_VALUE,g=-Number.MAX_VALUE;a.chart.series.forEach(function(f){f.isBubble&&!f.ignoreSeries&&(b=f.zData.filter(D),b.length&&(e=u(f.options.zMin,Math.min(e,Math.max(y(b),!1===f.options.displayNegative?f.options.zThreshold:-Number.MAX_VALUE))),g=u(f.options.zMax,Math.max(g,l(b)))))});var n=e===g?[{value:g}]:[{value:e},{value:(e+g)/2},{value:g,autoRanges:!0}];f.length&&f[0].radius&&n.reverse();n.forEach(function(a,b){f&&f[b]&&(n[b]=x(!1,f[b],a))});
return n};a.prototype.predictBubbleSizes=function(){var a=this.chart,f=this.fontMetrics,b=a.legend.options,e="horizontal"===b.layout,g=e?a.legend.lastLineHeight:0,n=a.plotSizeX,d=a.plotSizeY,k=a.series[this.options.seriesIndex];a=Math.ceil(k.minPxSize);var c=Math.ceil(k.maxPxSize);k=k.options.maxSize;var m=Math.min(d,n);if(b.floating||!/%$/.test(k))f=c;else if(k=parseFloat(k),f=(m+g-f.h/2)*k/100/(k/100+1),e&&d-f>=n||!e&&n-f>=d)f=c;return[a,Math.ceil(f)]};a.prototype.updateRanges=function(a,f){var b=
this.legend.options.bubbleLegend;b.minSize=a;b.maxSize=f;b.ranges=this.getRanges()};a.prototype.correctSizes=function(){var a=this.legend,f=this.chart.series[this.options.seriesIndex];1<Math.abs(Math.ceil(f.maxPxSize)-this.options.maxSize)&&(this.updateRanges(this.options.minSize,f.maxPxSize),a.render())};return a}();a(d,"afterGetAllItems",function(a){var b=this.bubbleLegend,f=this.options,e=f.bubbleLegend,g=this.chart.getVisibleBubbleSeriesIndex();b&&b.ranges&&b.ranges.length&&(e.ranges.length&&
(e.autoRanges=!!e.ranges[0].autoRanges),this.destroyItem(b));0<=g&&f.enabled&&e.enabled&&(e.seriesIndex=g,this.bubbleLegend=new c.BubbleLegend(e,this),this.bubbleLegend.addToLegend(a.allItems))});z.prototype.getVisibleBubbleSeriesIndex=function(){for(var a=this.series,b=0;b<a.length;){if(a[b]&&a[b].isBubble&&a[b].visible&&a[b].zData.length)return b;b++}return-1};d.prototype.getLinesHeights=function(){var a=this.allItems,b=[],f=a.length,g,d=0;for(g=0;g<f;g++)if(a[g].legendItemHeight&&(a[g].itemHeight=
a[g].legendItemHeight),a[g]===a[f-1]||a[g+1]&&a[g]._legendItemPos[1]!==a[g+1]._legendItemPos[1]){b.push({height:0});var v=b[b.length-1];for(d;d<=g;d++)a[d].itemHeight>v.height&&(v.height=a[d].itemHeight);v.step=g}return b};d.prototype.retranslateItems=function(a){var b,f,e,g=this.options.rtl,d=0;this.allItems.forEach(function(h,p){b=h.legendGroup.translateX;f=h._legendItemPos[1];if((e=h.movementX)||g&&h.ranges)e=g?b-h.options.maxSize/2:b+e,h.legendGroup.attr({translateX:e});p>a[d].step&&d++;h.legendGroup.attr({translateY:Math.round(f+
a[d].height/2)});h._legendItemPos[1]=f+a[d].height/2})};a(k,"legendItemClick",function(){var a=this.chart,b=this.visible,f=this.chart.legend;f&&f.bubbleLegend&&(this.visible=!b,this.ignoreSeries=b,a=0<=a.getVisibleBubbleSeriesIndex(),f.bubbleLegend.visible!==a&&(f.update({bubbleLegend:{enabled:a}}),f.bubbleLegend.visible=a),this.visible=b)});C(z.prototype,"drawChartBox",function(a,b,f){var e=this.legend,h=0<=this.getVisibleBubbleSeriesIndex();if(e&&e.options.enabled&&e.bubbleLegend&&e.options.bubbleLegend.autoRanges&&
h){var d=e.bubbleLegend.options;h=e.bubbleLegend.predictBubbleSizes();e.bubbleLegend.updateRanges(h[0],h[1]);d.placed||(e.group.placed=!1,e.allItems.forEach(function(a){a.legendGroup.translateY=null}));e.render();this.getMargins();this.axes.forEach(function(a){a.visible&&a.render();d.placed||(a.setScale(),a.updateNames(),g(a.ticks,function(a){a.isNew=!0;a.isNewLabel=!0}))});d.placed=!0;this.getMargins();a.call(this,b,f);e.bubbleLegend.correctSizes();e.retranslateItems(e.getLinesHeights())}else a.call(this,
b,f),e&&e.options.enabled&&e.bubbleLegend&&(e.render(),e.retranslateItems(e.getLinesHeights()))});c.BubbleLegend=q;return c.BubbleLegend});B(c,"parts-more/BubbleSeries.js",[c["parts/Globals.js"],c["parts/Color.js"],c["parts/Point.js"],c["parts/Utilities.js"]],function(c,a,d,b){var r=a.parse,l=b.arrayMax,y=b.arrayMin,D=b.clamp,x=b.extend,g=b.isNumber,u=b.pick,m=b.pInt;a=b.seriesType;b=c.Axis;var C=c.noop,k=c.Series,z=c.seriesTypes;a("bubble","scatter",{dataLabels:{formatter:function(){return this.point.z},
inside:!0,verticalAlign:"middle"},animationLimit:250,marker:{lineColor:null,lineWidth:1,fillOpacity:.5,radius:null,states:{hover:{radiusPlus:0}},symbol:"circle"},minSize:8,maxSize:"20%",softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"},{pointArrayMap:["y","z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],specialGroup:"group",bubblePadding:!0,zoneAxis:"z",directTouch:!0,
isBubble:!0,pointAttribs:function(a,b){var e=this.options.marker.fillOpacity;a=k.prototype.pointAttribs.call(this,a,b);1!==e&&(a.fill=r(a.fill).setOpacity(e).get("rgba"));return a},getRadii:function(a,b,e){var g=this.zData,f=this.yData,p=e.minPxSize,d=e.maxPxSize,v=[];var n=0;for(e=g.length;n<e;n++){var k=g[n];v.push(this.getRadius(a,b,p,d,k,f[n]))}this.radii=v},getRadius:function(a,b,e,h,f,p){var d=this.options,v="width"!==d.sizeBy,n=d.zThreshold,k=b-a,c=.5;if(null===p||null===f)return null;if(g(f)){d.sizeByAbsoluteValue&&
(f=Math.abs(f-n),k=Math.max(b-n,Math.abs(a-n)),a=0);if(f<a)return e/2-1;0<k&&(c=(f-a)/k)}v&&0<=c&&(c=Math.sqrt(c));return Math.ceil(e+c*(h-e))/2},animate:function(a){!a&&this.points.length<this.options.animationLimit&&this.points.forEach(function(a){var b=a.graphic;if(b&&b.width){var g={x:b.x,y:b.y,width:b.width,height:b.height};b.attr({x:a.plotX,y:a.plotY,width:1,height:1});b.animate(g,this.options.animation)}},this)},hasData:function(){return!!this.processedXData.length},translate:function(){var a,
b=this.data,e=this.radii;z.scatter.prototype.translate.call(this);for(a=b.length;a--;){var h=b[a];var f=e?e[a]:0;g(f)&&f>=this.minPxSize/2?(h.marker=x(h.marker,{radius:f,width:2*f,height:2*f}),h.dlBox={x:h.plotX-f,y:h.plotY-f,width:2*f,height:2*f}):h.shapeArgs=h.plotY=h.dlBox=void 0}},alignDataLabel:z.column.prototype.alignDataLabel,buildKDTree:C,applyZones:C},{haloPath:function(a){return d.prototype.haloPath.call(this,0===a?0:(this.marker?this.marker.radius||0:0)+a)},ttBelow:!1});b.prototype.beforePadding=
function(){var a=this,b=this.len,e=this.chart,h=0,f=b,p=this.isXAxis,d=p?"xData":"yData",k=this.min,n={},c=Math.min(e.plotWidth,e.plotHeight),r=Number.MAX_VALUE,t=-Number.MAX_VALUE,C=this.max-k,x=b/C,z=[];this.series.forEach(function(f){var b=f.options;!f.bubblePadding||!f.visible&&e.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,z.push(f),p&&(["minSize","maxSize"].forEach(function(a){var f=b[a],e=/%$/.test(f);f=m(f);n[a]=e?c*f/100:f}),f.minPxSize=n.minSize,f.maxPxSize=Math.max(n.maxSize,
n.minSize),f=f.zData.filter(g),f.length&&(r=u(b.zMin,D(y(f),!1===b.displayNegative?b.zThreshold:-Number.MAX_VALUE,r)),t=u(b.zMax,Math.max(t,l(f))))))});z.forEach(function(b){var e=b[d],n=e.length;p&&b.getRadii(r,t,b);if(0<C)for(;n--;)if(g(e[n])&&a.dataMin<=e[n]&&e[n]<=a.max){var v=b.radii?b.radii[n]:0;h=Math.min((e[n]-k)*x-v,h);f=Math.max((e[n]-k)*x+v,f)}});z.length&&0<C&&!this.logarithmic&&(f-=b,x*=(b+Math.max(0,h)-Math.min(f,b))/b,[["min","userMin",h],["max","userMax",f]].forEach(function(f){"undefined"===
typeof u(a.options[f[0]],a[f[1]])&&(a[f[0]]+=f[2]/x)}))};""});B(c,"modules/networkgraph/integrations.js",[c["parts/Globals.js"]],function(c){c.networkgraphIntegrations={verlet:{attractiveForceFunction:function(a,d){return(d-a)/a},repulsiveForceFunction:function(a,d){return(d-a)/a*(d>a?1:0)},barycenter:function(){var a=this.options.gravitationalConstant,d=this.barycenter.xFactor,b=this.barycenter.yFactor;d=(d-(this.box.left+this.box.width)/2)*a;b=(b-(this.box.top+this.box.height)/2)*a;this.nodes.forEach(function(a){a.fixedPosition||
(a.plotX-=d/a.mass/a.degree,a.plotY-=b/a.mass/a.degree)})},repulsive:function(a,d,b){d=d*this.diffTemperature/a.mass/a.degree;a.fixedPosition||(a.plotX+=b.x*d,a.plotY+=b.y*d)},attractive:function(a,d,b){var c=a.getMass(),l=-b.x*d*this.diffTemperature;d=-b.y*d*this.diffTemperature;a.fromNode.fixedPosition||(a.fromNode.plotX-=l*c.fromNode/a.fromNode.degree,a.fromNode.plotY-=d*c.fromNode/a.fromNode.degree);a.toNode.fixedPosition||(a.toNode.plotX+=l*c.toNode/a.toNode.degree,a.toNode.plotY+=d*c.toNode/
a.toNode.degree)},integrate:function(a,d){var b=-a.options.friction,c=a.options.maxSpeed,l=(d.plotX+d.dispX-d.prevX)*b;b*=d.plotY+d.dispY-d.prevY;var y=Math.abs,D=y(l)/(l||1);y=y(b)/(b||1);l=D*Math.min(c,Math.abs(l));b=y*Math.min(c,Math.abs(b));d.prevX=d.plotX+d.dispX;d.prevY=d.plotY+d.dispY;d.plotX+=l;d.plotY+=b;d.temperature=a.vectorLength({x:l,y:b})},getK:function(a){return Math.pow(a.box.width*a.box.height/a.nodes.length,.5)}},euler:{attractiveForceFunction:function(a,d){return a*a/d},repulsiveForceFunction:function(a,
d){return d*d/a},barycenter:function(){var a=this.options.gravitationalConstant,d=this.barycenter.xFactor,b=this.barycenter.yFactor;this.nodes.forEach(function(c){if(!c.fixedPosition){var l=c.getDegree();l*=1+l/2;c.dispX+=(d-c.plotX)*a*l/c.degree;c.dispY+=(b-c.plotY)*a*l/c.degree}})},repulsive:function(a,d,b,c){a.dispX+=b.x/c*d/a.degree;a.dispY+=b.y/c*d/a.degree},attractive:function(a,d,b,c){var l=a.getMass(),r=b.x/c*d;d*=b.y/c;a.fromNode.fixedPosition||(a.fromNode.dispX-=r*l.fromNode/a.fromNode.degree,
a.fromNode.dispY-=d*l.fromNode/a.fromNode.degree);a.toNode.fixedPosition||(a.toNode.dispX+=r*l.toNode/a.toNode.degree,a.toNode.dispY+=d*l.toNode/a.toNode.degree)},integrate:function(a,d){d.dispX+=d.dispX*a.options.friction;d.dispY+=d.dispY*a.options.friction;var b=d.temperature=a.vectorLength({x:d.dispX,y:d.dispY});0!==b&&(d.plotX+=d.dispX/b*Math.min(Math.abs(d.dispX),a.temperature),d.plotY+=d.dispY/b*Math.min(Math.abs(d.dispY),a.temperature))},getK:function(a){return Math.pow(a.box.width*a.box.height/
a.nodes.length,.3)}}}});B(c,"modules/networkgraph/QuadTree.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(c,a){a=a.extend;var d=c.QuadTreeNode=function(a){this.box=a;this.boxSize=Math.min(a.width,a.height);this.nodes=[];this.body=this.isInternal=!1;this.isEmpty=!0};a(d.prototype,{insert:function(a,c){this.isInternal?this.nodes[this.getBoxPosition(a)].insert(a,c-1):(this.isEmpty=!1,this.body?c?(this.isInternal=!0,this.divideBox(),!0!==this.body&&(this.nodes[this.getBoxPosition(this.body)].insert(this.body,
c-1),this.body=!0),this.nodes[this.getBoxPosition(a)].insert(a,c-1)):(c=new d({top:a.plotX,left:a.plotY,width:.1,height:.1}),c.body=a,c.isInternal=!1,this.nodes.push(c)):(this.isInternal=!1,this.body=a))},updateMassAndCenter:function(){var a=0,d=0,c=0;this.isInternal?(this.nodes.forEach(function(b){b.isEmpty||(a+=b.mass,d+=b.plotX*b.mass,c+=b.plotY*b.mass)}),d/=a,c/=a):this.body&&(a=this.body.mass,d=this.body.plotX,c=this.body.plotY);this.mass=a;this.plotX=d;this.plotY=c},divideBox:function(){var a=
this.box.width/2,c=this.box.height/2;this.nodes[0]=new d({left:this.box.left,top:this.box.top,width:a,height:c});this.nodes[1]=new d({left:this.box.left+a,top:this.box.top,width:a,height:c});this.nodes[2]=new d({left:this.box.left+a,top:this.box.top+c,width:a,height:c});this.nodes[3]=new d({left:this.box.left,top:this.box.top+c,width:a,height:c})},getBoxPosition:function(a){var b=a.plotY<this.box.top+this.box.height/2;return a.plotX<this.box.left+this.box.width/2?b?0:3:b?1:2}});c=c.QuadTree=function(a,
c,l,y){this.box={left:a,top:c,width:l,height:y};this.maxDepth=25;this.root=new d(this.box,"0");this.root.isInternal=!0;this.root.isRoot=!0;this.root.divideBox()};a(c.prototype,{insertNodes:function(a){a.forEach(function(a){this.root.insert(a,this.maxDepth)},this)},visitNodeRecursive:function(a,d,c){var b;a||(a=this.root);a===this.root&&d&&(b=d(a));!1!==b&&(a.nodes.forEach(function(a){if(a.isInternal){d&&(b=d(a));if(!1===b)return;this.visitNodeRecursive(a,d,c)}else a.body&&d&&d(a.body);c&&c(a)},this),
a===this.root&&c&&c(a))},calculateMassAndCenter:function(){this.visitNodeRecursive(null,null,function(a){a.updateMassAndCenter()})}})});B(c,"modules/networkgraph/layouts.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(c,a){var d=a.addEvent,b=a.clamp,l=a.defined,t=a.extend,y=a.isFunction,D=a.pick,x=a.setAnimation;a=c.Chart;c.layouts={"reingold-fruchterman":function(){}};t(c.layouts["reingold-fruchterman"].prototype,{init:function(a){this.options=a;this.nodes=[];this.links=[];this.series=
[];this.box={x:0,y:0,width:0,height:0};this.setInitialRendering(!0);this.integration=c.networkgraphIntegrations[a.integration];this.enableSimulation=a.enableSimulation;this.attractiveForce=D(a.attractiveForce,this.integration.attractiveForceFunction);this.repulsiveForce=D(a.repulsiveForce,this.integration.repulsiveForceFunction);this.approximation=a.approximation},updateSimulation:function(a){this.enableSimulation=D(a,this.options.enableSimulation)},start:function(){var a=this.series,b=this.options;
this.currentStep=0;this.forces=a[0]&&a[0].forces||[];this.chart=a[0]&&a[0].chart;this.initialRendering&&(this.initPositions(),a.forEach(function(a){a.finishedAnimating=!0;a.render()}));this.setK();this.resetSimulation(b);this.enableSimulation&&this.step()},step:function(){var a=this,b=this.series;a.currentStep++;"barnes-hut"===a.approximation&&(a.createQuadTree(),a.quadTree.calculateMassAndCenter());a.forces.forEach(function(b){a[b+"Forces"](a.temperature)});a.applyLimits(a.temperature);a.temperature=
a.coolDown(a.startTemperature,a.diffTemperature,a.currentStep);a.prevSystemTemperature=a.systemTemperature;a.systemTemperature=a.getSystemTemperature();a.enableSimulation&&(b.forEach(function(a){a.chart&&a.render()}),a.maxIterations--&&isFinite(a.temperature)&&!a.isStable()?(a.simulation&&c.win.cancelAnimationFrame(a.simulation),a.simulation=c.win.requestAnimationFrame(function(){a.step()})):a.simulation=!1)},stop:function(){this.simulation&&c.win.cancelAnimationFrame(this.simulation)},setArea:function(a,
b,d,c){this.box={left:a,top:b,width:d,height:c}},setK:function(){this.k=this.options.linkLength||this.integration.getK(this)},addElementsToCollection:function(a,b){a.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})},removeElementFromCollection:function(a,b){a=b.indexOf(a);-1!==a&&b.splice(a,1)},clear:function(){this.nodes.length=0;this.links.length=0;this.series.length=0;this.resetSimulation()},resetSimulation:function(){this.forcedStop=!1;this.systemTemperature=0;this.setMaxIterations();this.setTemperature();
this.setDiffTemperature()},setMaxIterations:function(a){this.maxIterations=D(a,this.options.maxIterations)},setTemperature:function(){this.temperature=this.startTemperature=Math.sqrt(this.nodes.length)},setDiffTemperature:function(){this.diffTemperature=this.startTemperature/(this.options.maxIterations+1)},setInitialRendering:function(a){this.initialRendering=a},createQuadTree:function(){this.quadTree=new c.QuadTree(this.box.left,this.box.top,this.box.width,this.box.height);this.quadTree.insertNodes(this.nodes)},
initPositions:function(){var a=this.options.initialPositions;y(a)?(a.call(this),this.nodes.forEach(function(a){l(a.prevX)||(a.prevX=a.plotX);l(a.prevY)||(a.prevY=a.plotY);a.dispX=0;a.dispY=0})):"circle"===a?this.setCircularPositions():this.setRandomPositions()},setCircularPositions:function(){function a(b){b.linksFrom.forEach(function(b){r[b.toNode.id]||(r[b.toNode.id]=!0,l.push(b.toNode),a(b.toNode))})}var b=this.box,d=this.nodes,c=2*Math.PI/(d.length+1),k=d.filter(function(a){return 0===a.linksTo.length}),
l=[],r={},q=this.options.initialPositionRadius;k.forEach(function(b){l.push(b);a(b)});l.length?d.forEach(function(a){-1===l.indexOf(a)&&l.push(a)}):l=d;l.forEach(function(a,h){a.plotX=a.prevX=D(a.plotX,b.width/2+q*Math.cos(h*c));a.plotY=a.prevY=D(a.plotY,b.height/2+q*Math.sin(h*c));a.dispX=0;a.dispY=0})},setRandomPositions:function(){function a(a){a=a*a/Math.PI;return a-=Math.floor(a)}var b=this.box,d=this.nodes,c=d.length+1;d.forEach(function(g,d){g.plotX=g.prevX=D(g.plotX,b.width*a(d));g.plotY=
g.prevY=D(g.plotY,b.height*a(c+d));g.dispX=0;g.dispY=0})},force:function(a){this.integration[a].apply(this,Array.prototype.slice.call(arguments,1))},barycenterForces:function(){this.getBarycenter();this.force("barycenter")},getBarycenter:function(){var a=0,b=0,d=0;this.nodes.forEach(function(g){b+=g.plotX*g.mass;d+=g.plotY*g.mass;a+=g.mass});return this.barycenter={x:b,y:d,xFactor:b/a,yFactor:d/a}},barnesHutApproximation:function(a,b){var g=this.getDistXY(a,b),d=this.vectorLength(g);if(a!==b&&0!==
d)if(b.isInternal)if(b.boxSize/d<this.options.theta&&0!==d){var c=this.repulsiveForce(d,this.k);this.force("repulsive",a,c*b.mass,g,d);var l=!1}else l=!0;else c=this.repulsiveForce(d,this.k),this.force("repulsive",a,c*b.mass,g,d);return l},repulsiveForces:function(){var a=this;"barnes-hut"===a.approximation?a.nodes.forEach(function(b){a.quadTree.visitNodeRecursive(null,function(g){return a.barnesHutApproximation(b,g)})}):a.nodes.forEach(function(b){a.nodes.forEach(function(g){if(b!==g&&!b.fixedPosition){var d=
a.getDistXY(b,g);var c=a.vectorLength(d);if(0!==c){var l=a.repulsiveForce(c,a.k);a.force("repulsive",b,l*g.mass,d,c)}}})})},attractiveForces:function(){var a=this,b,d,c;a.links.forEach(function(g){g.fromNode&&g.toNode&&(b=a.getDistXY(g.fromNode,g.toNode),d=a.vectorLength(b),0!==d&&(c=a.attractiveForce(d,a.k),a.force("attractive",g,c,b,d)))})},applyLimits:function(){var a=this;a.nodes.forEach(function(b){b.fixedPosition||(a.integration.integrate(a,b),a.applyLimitBox(b,a.box),b.dispX=0,b.dispY=0)})},
applyLimitBox:function(a,d){var g=a.radius;a.plotX=b(a.plotX,d.left+g,d.width-g);a.plotY=b(a.plotY,d.top+g,d.height-g)},coolDown:function(a,b,d){return a-b*d},isStable:function(){return.00001>Math.abs(this.systemTemperature-this.prevSystemTemperature)||0>=this.temperature},getSystemTemperature:function(){return this.nodes.reduce(function(a,b){return a+b.temperature},0)},vectorLength:function(a){return Math.sqrt(a.x*a.x+a.y*a.y)},getDistR:function(a,b){a=this.getDistXY(a,b);return this.vectorLength(a)},
getDistXY:function(a,b){var d=a.plotX-b.plotX;a=a.plotY-b.plotY;return{x:d,y:a,absX:Math.abs(d),absY:Math.abs(a)}}});d(a,"predraw",function(){this.graphLayoutsLookup&&this.graphLayoutsLookup.forEach(function(a){a.stop()})});d(a,"render",function(){function a(a){a.maxIterations--&&isFinite(a.temperature)&&!a.isStable()&&!a.enableSimulation&&(a.beforeStep&&a.beforeStep(),a.step(),d=!1,b=!0)}var b=!1;if(this.graphLayoutsLookup){x(!1,this);for(this.graphLayoutsLookup.forEach(function(a){a.start()});!d;){var d=
!0;this.graphLayoutsLookup.forEach(a)}b&&this.series.forEach(function(a){a&&a.layout&&a.render()})}});d(a,"beforePrint",function(){this.graphLayoutsLookup.forEach(function(a){a.updateSimulation(!1)});this.redraw()});d(a,"afterPrint",function(){this.graphLayoutsLookup.forEach(function(a){a.updateSimulation()});this.redraw()})});B(c,"modules/networkgraph/draggable-nodes.js",[c["parts/Globals.js"],c["parts/Utilities.js"]],function(c,a){var d=a.addEvent;a=c.Chart;c.dragNodesMixin={onMouseDown:function(a,
d){d=this.chart.pointer.normalize(d);a.fixedPosition={chartX:d.chartX,chartY:d.chartY,plotX:a.plotX,plotY:a.plotY};a.inDragMode=!0},onMouseMove:function(a,d){if(a.fixedPosition&&a.inDragMode){var b=this.chart,c=b.pointer.normalize(d);d=a.fixedPosition.chartX-c.chartX;c=a.fixedPosition.chartY-c.chartY;if(5<Math.abs(d)||5<Math.abs(c))d=a.fixedPosition.plotX-d,c=a.fixedPosition.plotY-c,b.isInsidePlot(d,c)&&(a.plotX=d,a.plotY=c,a.hasDragged=!0,this.redrawHalo(a),this.layout.simulation?this.layout.resetSimulation():
(this.layout.setInitialRendering(!1),this.layout.enableSimulation?this.layout.start():this.layout.setMaxIterations(1),this.chart.redraw(),this.layout.setInitialRendering(!0)))}},onMouseUp:function(a,d){a.fixedPosition&&a.hasDragged&&(this.layout.enableSimulation?this.layout.start():this.chart.redraw(),a.inDragMode=a.hasDragged=!1,this.options.fixedDraggable||delete a.fixedPosition)},redrawHalo:function(a){a&&this.halo&&this.halo.attr({d:a.haloPath(this.options.states.hover.halo.size)})}};d(a,"load",
function(){var a=this,c,l,y;a.container&&(c=d(a.container,"mousedown",function(b){var c=a.hoverPoint;c&&c.series&&c.series.hasDraggableNodes&&c.series.options.draggable&&(c.series.onMouseDown(c,b),l=d(a.container,"mousemove",function(a){return c&&c.series&&c.series.onMouseMove(c,a)}),y=d(a.container.ownerDocument,"mouseup",function(a){l();y();return c&&c.series&&c.series.onMouseUp(c,a)}))}));d(a,"destroy",function(){c()})})});B(c,"parts-more/PackedBubbleSeries.js",[c["parts/Globals.js"],c["parts/Color.js"],
c["parts/Point.js"],c["parts/Utilities.js"]],function(c,a,d,b){var l=a.parse,t=b.addEvent,y=b.clamp,D=b.defined,x=b.extend;a=b.extendClass;var g=b.fireEvent,u=b.isArray,m=b.isNumber,C=b.merge,k=b.pick;b=b.seriesType;var z=c.Series,A=c.Chart,q=c.layouts["reingold-fruchterman"],e=c.seriesTypes.bubble.prototype.pointClass,h=c.dragNodesMixin;c.networkgraphIntegrations.packedbubble={repulsiveForceFunction:function(a,b,e,c){return Math.min(a,(e.marker.radius+c.marker.radius)/2)},barycenter:function(){var a=
this,b=a.options.gravitationalConstant,e=a.box,c=a.nodes,h,d;c.forEach(function(f){a.options.splitSeries&&!f.isParentNode?(h=f.series.parentNode.plotX,d=f.series.parentNode.plotY):(h=e.width/2,d=e.height/2);f.fixedPosition||(f.plotX-=(f.plotX-h)*b/(f.mass*Math.sqrt(c.length)),f.plotY-=(f.plotY-d)*b/(f.mass*Math.sqrt(c.length)))})},repulsive:function(a,b,e,c){var f=b*this.diffTemperature/a.mass/a.degree;b=e.x*f;e=e.y*f;a.fixedPosition||(a.plotX+=b,a.plotY+=e);c.fixedPosition||(c.plotX-=b,c.plotY-=
e)},integrate:c.networkgraphIntegrations.verlet.integrate,getK:c.noop};c.layouts.packedbubble=a(q,{beforeStep:function(){this.options.marker&&this.series.forEach(function(a){a&&a.calculateParentRadius()})},setCircularPositions:function(){var a=this,b=a.box,e=a.nodes,c=2*Math.PI/(e.length+1),h,d,g=a.options.initialPositionRadius;e.forEach(function(f,e){a.options.splitSeries&&!f.isParentNode?(h=f.series.parentNode.plotX,d=f.series.parentNode.plotY):(h=b.width/2,d=b.height/2);f.plotX=f.prevX=k(f.plotX,
h+g*Math.cos(f.index||e*c));f.plotY=f.prevY=k(f.plotY,d+g*Math.sin(f.index||e*c));f.dispX=0;f.dispY=0})},repulsiveForces:function(){var a=this,b,e,c,h=a.options.bubblePadding;a.nodes.forEach(function(f){f.degree=f.mass;f.neighbours=0;a.nodes.forEach(function(d){b=0;f===d||f.fixedPosition||!a.options.seriesInteraction&&f.series!==d.series||(c=a.getDistXY(f,d),e=a.vectorLength(c)-(f.marker.radius+d.marker.radius+h),0>e&&(f.degree+=.01,f.neighbours++,b=a.repulsiveForce(-e/Math.sqrt(f.neighbours),a.k,
f,d)),a.force("repulsive",f,b*d.mass,c,d,e))})})},applyLimitBox:function(a){if(this.options.splitSeries&&!a.isParentNode&&this.options.parentNodeLimit){var f=this.getDistXY(a,a.series.parentNode);var b=a.series.parentNodeRadius-a.marker.radius-this.vectorLength(f);0>b&&b>-2*a.marker.radius&&(a.plotX-=.01*f.x,a.plotY-=.01*f.y)}q.prototype.applyLimitBox.apply(this,arguments)}});b("packedbubble","bubble",{minSize:"10%",maxSize:"50%",sizeBy:"area",zoneAxis:"y",crisp:!1,tooltip:{pointFormat:"Value: {point.value}"},
draggable:!0,useSimulation:!0,dataLabels:{formatter:function(){return this.point.value},parentNodeFormatter:function(){return this.name},parentNodeTextPath:{enabled:!0},padding:0,style:{transition:"opacity 2000ms"}},layoutAlgorithm:{initialPositions:"circle",initialPositionRadius:20,bubblePadding:5,parentNodeLimit:!1,seriesInteraction:!0,dragBetweenSeries:!1,parentNodeOptions:{maxIterations:400,gravitationalConstant:.03,maxSpeed:50,initialPositionRadius:100,seriesInteraction:!0,marker:{fillColor:null,
fillOpacity:1,lineWidth:1,lineColor:null,symbol:"circle"}},enableSimulation:!0,type:"packedbubble",integration:"packedbubble",maxIterations:1E3,splitSeries:!1,maxSpeed:5,gravitationalConstant:.01,friction:-.981}},{hasDraggableNodes:!0,forces:["barycenter","repulsive"],pointArrayMap:["value"],pointValKey:"value",isCartesian:!1,requireSorting:!1,directTouch:!0,axisTypes:[],noSharedTooltip:!0,searchPoint:c.noop,accumulateAllPoints:function(a){var f=a.chart,b=[],e,c;for(e=0;e<f.series.length;e++)if(a=
f.series[e],a.visible||!f.options.chart.ignoreHiddenSeries)for(c=0;c<a.yData.length;c++)b.push([null,null,a.yData[c],a.index,c,{id:c,marker:{radius:0}}]);return b},init:function(){z.prototype.init.apply(this,arguments);t(this,"updatedData",function(){this.chart.series.forEach(function(a){a.type===this.type&&(a.isDirty=!0)},this)});return this},render:function(){var a=[];z.prototype.render.apply(this,arguments);this.options.dataLabels.allowOverlap||(this.data.forEach(function(b){u(b.dataLabels)&&b.dataLabels.forEach(function(b){a.push(b)})}),
this.options.useSimulation&&this.chart.hideOverlappingLabels(a))},setVisible:function(){var a=this;z.prototype.setVisible.apply(a,arguments);a.parentNodeLayout&&a.graph?a.visible?(a.graph.show(),a.parentNode.dataLabel&&a.parentNode.dataLabel.show()):(a.graph.hide(),a.parentNodeLayout.removeElementFromCollection(a.parentNode,a.parentNodeLayout.nodes),a.parentNode.dataLabel&&a.parentNode.dataLabel.hide()):a.layout&&(a.visible?a.layout.addElementsToCollection(a.points,a.layout.nodes):a.points.forEach(function(b){a.layout.removeElementFromCollection(b,
a.layout.nodes)}))},drawDataLabels:function(){var a=this.options.dataLabels.textPath,b=this.points;z.prototype.drawDataLabels.apply(this,arguments);this.parentNode&&(this.parentNode.formatPrefix="parentNode",this.points=[this.parentNode],this.options.dataLabels.textPath=this.options.dataLabels.parentNodeTextPath,z.prototype.drawDataLabels.apply(this,arguments),this.points=b,this.options.dataLabels.textPath=a)},seriesBox:function(){var a=this.chart,b=Math.max,e=Math.min,c,d=[a.plotLeft,a.plotLeft+
a.plotWidth,a.plotTop,a.plotTop+a.plotHeight];this.data.forEach(function(a){D(a.plotX)&&D(a.plotY)&&a.marker.radius&&(c=a.marker.radius,d[0]=e(d[0],a.plotX-c),d[1]=b(d[1],a.plotX+c),d[2]=e(d[2],a.plotY-c),d[3]=b(d[3],a.plotY+c))});return m(d.width/d.height)?d:null},calculateParentRadius:function(){var a=this.seriesBox();this.parentNodeRadius=y(Math.sqrt(2*this.parentNodeMass/Math.PI)+20,20,a?Math.max(Math.sqrt(Math.pow(a.width,2)+Math.pow(a.height,2))/2+20,20):Math.sqrt(2*this.parentNodeMass/Math.PI)+
20);this.parentNode&&(this.parentNode.marker.radius=this.parentNode.radius=this.parentNodeRadius)},drawGraph:function(){if(this.layout&&this.layout.options.splitSeries){var a=this.chart,b=this.layout.options.parentNodeOptions.marker;b={fill:b.fillColor||l(this.color).brighten(.4).get(),opacity:b.fillOpacity,stroke:b.lineColor||this.color,"stroke-width":b.lineWidth};var e=this.visible?"inherit":"hidden";this.parentNodesGroup||(this.parentNodesGroup=this.plotGroup("parentNodesGroup","parentNode",e,
.1,a.seriesGroup),this.group.attr({zIndex:2}));this.calculateParentRadius();e=C({x:this.parentNode.plotX-this.parentNodeRadius,y:this.parentNode.plotY-this.parentNodeRadius,width:2*this.parentNodeRadius,height:2*this.parentNodeRadius},b);this.parentNode.graphic||(this.graph=this.parentNode.graphic=a.renderer.symbol(b.symbol).add(this.parentNodesGroup));this.parentNode.graphic.attr(e)}},createParentNodes:function(){var a=this,b=a.chart,c=a.parentNodeLayout,d,h=a.parentNode;a.parentNodeMass=0;a.points.forEach(function(b){a.parentNodeMass+=
Math.PI*Math.pow(b.marker.radius,2)});a.calculateParentRadius();c.nodes.forEach(function(b){b.seriesIndex===a.index&&(d=!0)});c.setArea(0,0,b.plotWidth,b.plotHeight);d||(h||(h=(new e).init(this,{mass:a.parentNodeRadius/2,marker:{radius:a.parentNodeRadius},dataLabels:{inside:!1},dataLabelOnNull:!0,degree:a.parentNodeRadius,isParentNode:!0,seriesIndex:a.index})),a.parentNode&&(h.plotX=a.parentNode.plotX,h.plotY=a.parentNode.plotY),a.parentNode=h,c.addElementsToCollection([a],c.series),c.addElementsToCollection([h],
c.nodes))},addSeriesLayout:function(){var a=this.options.layoutAlgorithm,b=this.chart.graphLayoutsStorage,e=this.chart.graphLayoutsLookup,d=C(a,a.parentNodeOptions,{enableSimulation:this.layout.options.enableSimulation});var h=b[a.type+"-series"];h||(b[a.type+"-series"]=h=new c.layouts[a.type],h.init(d),e.splice(h.index,0,h));this.parentNodeLayout=h;this.createParentNodes()},addLayout:function(){var a=this.options.layoutAlgorithm,b=this.chart.graphLayoutsStorage,e=this.chart.graphLayoutsLookup,d=
this.chart.options.chart;b||(this.chart.graphLayoutsStorage=b={},this.chart.graphLayoutsLookup=e=[]);var h=b[a.type];h||(a.enableSimulation=D(d.forExport)?!d.forExport:a.enableSimulation,b[a.type]=h=new c.layouts[a.type],h.init(a),e.splice(h.index,0,h));this.layout=h;this.points.forEach(function(a){a.mass=2;a.degree=1;a.collisionNmb=1});h.setArea(0,0,this.chart.plotWidth,this.chart.plotHeight);h.addElementsToCollection([this],h.series);h.addElementsToCollection(this.points,h.nodes)},deferLayout:function(){var a=
this.options.layoutAlgorithm;this.visible&&(this.addLayout(),a.splitSeries&&this.addSeriesLayout())},translate:function(){var a=this.chart,b=this.data,e=this.index,c,h=this.options.useSimulation;this.processedXData=this.xData;this.generatePoints();D(a.allDataPoints)||(a.allDataPoints=this.accumulateAllPoints(this),this.getPointRadius());if(h)var d=a.allDataPoints;else d=this.placeBubbles(a.allDataPoints),this.options.draggable=!1;for(c=0;c<d.length;c++)if(d[c][3]===e){var k=b[d[c][4]];var l=d[c][2];
h||(k.plotX=d[c][0]-a.plotLeft+a.diffX,k.plotY=d[c][1]-a.plotTop+a.diffY);k.marker=x(k.marker,{radius:l,width:2*l,height:2*l});k.radius=l}h&&this.deferLayout();g(this,"afterTranslate")},checkOverlap:function(a,b){var f=a[0]-b[0],e=a[1]-b[1];return-.001>Math.sqrt(f*f+e*e)-Math.abs(a[2]+b[2])},positionBubble:function(a,b,e){var f=Math.sqrt,c=Math.asin,d=Math.acos,h=Math.pow,g=Math.abs;f=f(h(a[0]-b[0],2)+h(a[1]-b[1],2));d=d((h(f,2)+h(e[2]+b[2],2)-h(e[2]+a[2],2))/(2*(e[2]+b[2])*f));c=c(g(a[0]-b[0])/f);
a=(0>a[1]-b[1]?0:Math.PI)+d+c*(0>(a[0]-b[0])*(a[1]-b[1])?1:-1);return[b[0]+(b[2]+e[2])*Math.sin(a),b[1]-(b[2]+e[2])*Math.cos(a),e[2],e[3],e[4]]},placeBubbles:function(a){var b=this.checkOverlap,f=this.positionBubble,e=[],c=1,d=0,h=0;var g=[];var k;a=a.sort(function(a,b){return b[2]-a[2]});if(a.length){e.push([[0,0,a[0][2],a[0][3],a[0][4]]]);if(1<a.length)for(e.push([[0,0-a[1][2]-a[0][2],a[1][2],a[1][3],a[1][4]]]),k=2;k<a.length;k++)a[k][2]=a[k][2]||1,g=f(e[c][d],e[c-1][h],a[k]),b(g,e[c][0])?(e.push([]),
h=0,e[c+1].push(f(e[c][d],e[c][0],a[k])),c++,d=0):1<c&&e[c-1][h+1]&&b(g,e[c-1][h+1])?(h++,e[c].push(f(e[c][d],e[c-1][h],a[k])),d++):(d++,e[c].push(g));this.chart.stages=e;this.chart.rawPositions=[].concat.apply([],e);this.resizeRadius();g=this.chart.rawPositions}return g},resizeRadius:function(){var a=this.chart,b=a.rawPositions,e=Math.min,c=Math.max,d=a.plotLeft,h=a.plotTop,g=a.plotHeight,k=a.plotWidth,l,m,q;var r=l=Number.POSITIVE_INFINITY;var t=m=Number.NEGATIVE_INFINITY;for(q=0;q<b.length;q++){var u=
b[q][2];r=e(r,b[q][0]-u);t=c(t,b[q][0]+u);l=e(l,b[q][1]-u);m=c(m,b[q][1]+u)}q=[t-r,m-l];e=e.apply([],[(k-d)/q[0],(g-h)/q[1]]);if(1e-10<Math.abs(e-1)){for(q=0;q<b.length;q++)b[q][2]*=e;this.placeBubbles(b)}else a.diffY=g/2+h-l-(m-l)/2,a.diffX=k/2+d-r-(t-r)/2},calculateZExtremes:function(){var a=this.options.zMin,b=this.options.zMax,e=Infinity,c=-Infinity;if(a&&b)return[a,b];this.chart.series.forEach(function(a){a.yData.forEach(function(a){D(a)&&(a>c&&(c=a),a<e&&(e=a))})});a=k(a,e);b=k(b,c);return[a,
b]},getPointRadius:function(){var a=this,b=a.chart,e=a.options,c=e.useSimulation,d=Math.min(b.plotWidth,b.plotHeight),h={},g=[],k=b.allDataPoints,l,m,q,r;["minSize","maxSize"].forEach(function(a){var b=parseInt(e[a],10),f=/%$/.test(e[a]);h[a]=f?d*b/100:b*Math.sqrt(k.length)});b.minRadius=l=h.minSize/Math.sqrt(k.length);b.maxRadius=m=h.maxSize/Math.sqrt(k.length);var t=c?a.calculateZExtremes():[l,m];(k||[]).forEach(function(b,e){q=c?y(b[2],t[0],t[1]):b[2];r=a.getRadius(t[0],t[1],l,m,q);0===r&&(r=null);
k[e][2]=r;g.push(r)});a.radii=g},redrawHalo:h.redrawHalo,onMouseDown:h.onMouseDown,onMouseMove:h.onMouseMove,onMouseUp:function(a){if(a.fixedPosition&&!a.removed){var b,e,c=this.layout,f=this.parentNodeLayout;f&&c.options.dragBetweenSeries&&f.nodes.forEach(function(f){a&&a.marker&&f!==a.series.parentNode&&(b=c.getDistXY(a,f),e=c.vectorLength(b)-f.marker.radius-a.marker.radius,0>e&&(f.series.addPoint(C(a.options,{plotX:a.plotX,plotY:a.plotY}),!1),c.removeElementFromCollection(a,c.nodes),a.remove()))});
h.onMouseUp.apply(this,arguments)}},destroy:function(){this.chart.graphLayoutsLookup&&this.chart.graphLayoutsLookup.forEach(function(a){a.removeElementFromCollection(this,a.series)},this);this.parentNode&&(this.parentNodeLayout.removeElementFromCollection(this.parentNode,this.parentNodeLayout.nodes),this.parentNode.dataLabel&&(this.parentNode.dataLabel=this.parentNode.dataLabel.destroy()));c.Series.prototype.destroy.apply(this,arguments)},alignDataLabel:c.Series.prototype.alignDataLabel},{destroy:function(){this.series.layout&&
this.series.layout.removeElementFromCollection(this,this.series.layout.nodes);return d.prototype.destroy.apply(this,arguments)}});t(A,"beforeRedraw",function(){this.allDataPoints&&delete this.allDataPoints});""});B(c,"parts-more/Polar.js",[c["parts/Globals.js"],c["parts/Utilities.js"],c["parts-more/Pane.js"]],function(c,a,d){var b=a.addEvent,l=a.animObject,t=a.defined,y=a.find,D=a.isNumber,x=a.pick,g=a.splat,u=a.uniqueKey,m=a.wrap,C=c.Series,k=c.seriesTypes,z=C.prototype,A=c.Pointer.prototype;z.searchPointByAngle=
function(a){var b=this.chart,e=this.xAxis.pane.center;return this.searchKDTree({clientX:180+-180/Math.PI*Math.atan2(a.chartX-e[0]-b.plotLeft,a.chartY-e[1]-b.plotTop)})};z.getConnectors=function(a,b,c,d){var e=d?1:0;var f=0<=b&&b<=a.length-1?b:0>b?a.length-1+b:0;b=0>f-1?a.length-(1+e):f-1;e=f+1>a.length-1?e:f+1;var h=a[b];e=a[e];var g=h.plotX;h=h.plotY;var k=e.plotX;var p=e.plotY;e=a[f].plotX;f=a[f].plotY;g=(1.5*e+g)/2.5;h=(1.5*f+h)/2.5;k=(1.5*e+k)/2.5;var l=(1.5*f+p)/2.5;p=Math.sqrt(Math.pow(g-e,
2)+Math.pow(h-f,2));var m=Math.sqrt(Math.pow(k-e,2)+Math.pow(l-f,2));g=Math.atan2(h-f,g-e);l=Math.PI/2+(g+Math.atan2(l-f,k-e))/2;Math.abs(g-l)>Math.PI/2&&(l-=Math.PI);g=e+Math.cos(l)*p;h=f+Math.sin(l)*p;k=e+Math.cos(Math.PI+l)*m;l=f+Math.sin(Math.PI+l)*m;e={rightContX:k,rightContY:l,leftContX:g,leftContY:h,plotX:e,plotY:f};c&&(e.prevPointCont=this.getConnectors(a,b,!1,d));return e};z.toXY=function(a){var b=this.chart,e=this.xAxis;var c=this.yAxis;var d=a.plotX,g=a.plotY,k=a.series,l=b.inverted,m=
a.y,q=l?d:c.len-g;l&&k&&!k.isRadialBar&&(a.plotY=g="number"===typeof m?c.translate(m)||0:0);a.rectPlotX=d;a.rectPlotY=g;c.center&&(q+=c.center[3]/2);c=l?c.postTranslate(g,q):e.postTranslate(d,q);a.plotX=a.polarPlotX=c.x-b.plotLeft;a.plotY=a.polarPlotY=c.y-b.plotTop;this.kdByAngle?(b=(d/Math.PI*180+e.pane.options.startAngle)%360,0>b&&(b+=360),a.clientX=b):a.clientX=a.plotX};k.spline&&(m(k.spline.prototype,"getPointSpline",function(a,b,c,d){this.chart.polar?d?(a=this.getConnectors(b,d,!0,this.connectEnds),
a=["C",a.prevPointCont.rightContX,a.prevPointCont.rightContY,a.leftContX,a.leftContY,a.plotX,a.plotY]):a=["M",c.plotX,c.plotY]:a=a.call(this,b,c,d);return a}),k.areasplinerange&&(k.areasplinerange.prototype.getPointSpline=k.spline.prototype.getPointSpline));b(C,"afterTranslate",function(){var a=this.chart;if(a.polar&&this.xAxis){(this.kdByAngle=a.tooltip&&a.tooltip.shared)?this.searchPoint=this.searchPointByAngle:this.options.findNearestPointBy="xy";if(!this.preventPostTranslate)for(var d=this.points,
f=d.length;f--;)this.toXY(d[f]),!a.hasParallelCoordinates&&!this.yAxis.reversed&&d[f].y<this.yAxis.min&&(d[f].isNull=!0);this.hasClipCircleSetter||(this.hasClipCircleSetter=!!this.eventsToUnbind.push(b(this,"afterRender",function(){if(a.polar){var b=this.yAxis.pane.center;this.clipCircle?this.clipCircle.animate({x:b[0],y:b[1],r:b[2]/2,innerR:b[3]/2}):this.clipCircle=a.renderer.clipCircle(b[0],b[1],b[2]/2,b[3]/2);this.group.clip(this.clipCircle);this.setClip=c.noop}})))}},{order:2});m(z,"getGraphPath",
function(a,b){var e=this,c;if(this.chart.polar){b=b||this.points;for(c=0;c<b.length;c++)if(!b[c].isNull){var d=c;break}if(!1!==this.options.connectEnds&&"undefined"!==typeof d){this.connectEnds=!0;b.splice(b.length,0,b[d]);var h=!0}b.forEach(function(a){"undefined"===typeof a.polarPlotY&&e.toXY(a)})}c=a.apply(this,[].slice.call(arguments,1));h&&b.pop();return c});var q=function(a,b){var e=this,d=this.chart,h=this.options.animation,g=this.group,k=this.markerGroup,m=this.xAxis.center,q=d.plotLeft,r=
d.plotTop,t,u,z,y;if(d.polar)if(e.isRadialBar)b||(e.startAngleRad=x(e.translatedThreshold,e.xAxis.startAngleRad),c.seriesTypes.pie.prototype.animate.call(e,b));else{if(d.renderer.isSVG)if(h=l(h),e.is("column")){if(!b){var A=m[3]/2;e.points.forEach(function(a){t=a.graphic;z=(u=a.shapeArgs)&&u.r;y=u&&u.innerR;t&&u&&(t.attr({r:A,innerR:A}),t.animate({r:z,innerR:y},e.options.animation))})}}else b?(a={translateX:m[0]+q,translateY:m[1]+r,scaleX:.001,scaleY:.001},g.attr(a),k&&k.attr(a)):(a={translateX:q,
translateY:r,scaleX:1,scaleY:1},g.animate(a,h),k&&k.animate(a,h))}else a.call(this,b)};m(z,"animate",q);k.column&&(C=k.arearange.prototype,k=k.column.prototype,k.polarArc=function(a,b,c,d){var e=this.xAxis.center,f=this.yAxis.len,h=e[3]/2;b=f-b+h;a=f-x(a,f)+h;this.yAxis.reversed&&(0>b&&(b=h),0>a&&(a=h));return{x:e[0],y:e[1],r:b,innerR:a,start:c,end:d}},m(k,"animate",q),m(k,"translate",function(b){var c=this.options,e=c.stacking,d=this.chart,g=this.xAxis,k=this.yAxis,l=k.reversed,m=k.center,q=g.startAngleRad,
r=g.endAngleRad-q;this.preventPostTranslate=!0;b.call(this);if(g.isRadial){b=this.points;g=b.length;var u=k.translate(k.min);var z=k.translate(k.max);c=c.threshold||0;if(d.inverted&&D(c)){var y=k.translate(c);t(y)&&(0>y?y=0:y>r&&(y=r),this.translatedThreshold=y+q)}for(;g--;){c=b[g];var x=c.barX;var A=c.x;var C=c.y;c.shapeType="arc";if(d.inverted){c.plotY=k.translate(C);if(e&&k.stacking){if(C=k.stacking.stacks[(0>C?"-":"")+this.stackKey],this.visible&&C&&C[A]&&!c.isNull){var B=C[A].points[this.getStackIndicator(void 0,
A,this.index).key];var F=k.translate(B[0]);B=k.translate(B[1]);t(F)&&(F=a.clamp(F,0,r))}}else F=y,B=c.plotY;F>B&&(B=[F,F=B][0]);if(!l)if(F<u)F=u;else if(B>z)B=z;else{if(B<u||F>z)F=B=0}else if(B>u)B=u;else if(F<z)F=z;else if(F>u||B<z)F=B=r;k.min>k.max&&(F=B=l?r:0);F+=q;B+=q;m&&(c.barX=x+=m[3]/2);A=Math.max(x,0);C=Math.max(x+c.pointWidth,0);c.shapeArgs={x:m&&m[0],y:m&&m[1],r:C,innerR:A,start:F,end:B};c.opacity=F===B?0:void 0;c.plotY=(t(this.translatedThreshold)&&(F<this.translatedThreshold?F:B))-q}else F=
x+q,c.shapeArgs=this.polarArc(c.yBottom,c.plotY,F,F+c.pointWidth);this.toXY(c);d.inverted?(x=k.postTranslate(c.rectPlotY,x+c.pointWidth/2),c.tooltipPos=[x.x-d.plotLeft,x.y-d.plotTop]):c.tooltipPos=[c.plotX,c.plotY];m&&(c.ttBelow=c.plotY>m[1])}}}),k.findAlignments=function(a,b){null===b.align&&(b.align=20<a&&160>a?"left":200<a&&340>a?"right":"center");null===b.verticalAlign&&(b.verticalAlign=45>a||315<a?"bottom":135<a&&225>a?"top":"middle");return b},C&&(C.findAlignments=k.findAlignments),m(k,"alignDataLabel",
function(a,b,c,d,g,k){var e=this.chart,f=x(d.inside,!!this.options.stacking);e.polar?(a=b.rectPlotX/Math.PI*180,e.inverted?(this.forceDL=e.isInsidePlot(b.plotX,Math.round(b.plotY),!1),f&&b.shapeArgs?(g=b.shapeArgs,g=this.yAxis.postTranslate((g.start+g.end)/2-this.xAxis.startAngleRad,b.barX+b.pointWidth/2),g={x:g.x-e.plotLeft,y:g.y-e.plotTop}):b.tooltipPos&&(g={x:b.tooltipPos[0],y:b.tooltipPos[1]}),d.align=x(d.align,"center"),d.verticalAlign=x(d.verticalAlign,"middle")):this.findAlignments&&(d=this.findAlignments(a,
d)),z.alignDataLabel.call(this,b,c,d,g,k),this.isRadialBar&&b.shapeArgs&&b.shapeArgs.start===b.shapeArgs.end&&c.hide(!0)):a.call(this,b,c,d,g,k)}));m(A,"getCoordinates",function(a,b){var c=this.chart,e={xAxis:[],yAxis:[]};c.polar?c.axes.forEach(function(a){var d=a.isXAxis,f=a.center;if("colorAxis"!==a.coll){var g=b.chartX-f[0]-c.plotLeft;f=b.chartY-f[1]-c.plotTop;e[d?"xAxis":"yAxis"].push({axis:a,value:a.translate(d?Math.PI-Math.atan2(g,f):Math.sqrt(Math.pow(g,2)+Math.pow(f,2)),!0)})}}):e=a.call(this,
b);return e});c.SVGRenderer.prototype.clipCircle=function(a,b,c,d){var e=u(),f=this.createElement("clipPath").attr({id:e}).add(this.defs);a=d?this.arc(a,b,c,d,0,2*Math.PI).add(f):this.circle(a,b,c).add(f);a.id=e;a.clipPath=f;return a};b(c.Chart,"getAxes",function(){this.pane||(this.pane=[]);g(this.options.pane).forEach(function(a){new d(a,this)},this)});b(c.Chart,"afterDrawChartBox",function(){this.pane.forEach(function(a){a.render()})});b(c.Series,"afterInit",function(){var a=this.chart;a.inverted&&
a.polar&&(this.isRadialSeries=!0,this.is("column")&&(this.isRadialBar=!0))});m(c.Chart.prototype,"get",function(a,b){return y(this.pane,function(a){return a.options.id===b})||a.call(this,b)})});B(c,"masters/highcharts-more.src.js",[],function(){})});
//# sourceMappingURL=highcharts-more.js.map
\ No newline at end of file
(function(factory){if(typeof module==="object"&&module.exports){module.exports=factory}else{factory(Highcharts)}}(function(H){var rel=H.relativeLength;H.wrap(H.seriesTypes.column.prototype,"translate",function(proceed){var options=this.options,topMargin=options.topMargin||0,bottomMargin=options.bottomMargin||0;proceed.call(this);H.each(this.points,function(point){var shapeArgs=point.shapeArgs,w=shapeArgs.width,h=shapeArgs.height,x=shapeArgs.x,y=shapeArgs.y;var rTopLeft=rel(options.borderRadiusTopLeft||0,w),rTopRight=rel(options.borderRadiusTopRight||0,w),rBottomRight=rel(options.borderRadiusBottomRight||0,w),rBottomLeft=rel(options.borderRadiusBottomLeft||0,w);if(rTopLeft||rTopRight||rBottomRight||rBottomLeft){var maxR=Math.min(w,h)/2;if(rTopLeft>maxR){rTopLeft=maxR}if(rTopRight>maxR){rTopRight=maxR}if(rBottomRight>maxR){rBottomRight=maxR}if(rBottomLeft>maxR){rBottomLeft=maxR}point.dlBox=point.shapeArgs;point.shapeType="path";point.shapeArgs={d:["M",x+rTopLeft,y+topMargin,"L",x+w-rTopRight,y+topMargin,"C",x+w-rTopRight/2,y,x+w,y+rTopRight/2,x+w,y+rTopRight,"L",x+w,y+h-rBottomRight,"C",x+w,y+h-rBottomRight/2,x+w-rBottomRight/2,y+h,x+w-rBottomRight,y+h+bottomMargin,"L",x+rBottomLeft,y+h+bottomMargin,"C",x+rBottomLeft/2,y+h,x,y+h-rBottomLeft/2,x,y+h-rBottomLeft,"L",x,y+rTopLeft,"C",x,y+rTopLeft/2,x+rTopLeft/2,y,x+rTopLeft,y,"Z"]}}})})}));
//
// AAAnimation.h
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@interface AAAnimation : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAAnimation, NSNumber *, duration)
AAPropStatementAndPropSetFuncStatement(assign, AAAnimation, NSInteger , easing)
@end
//
// AAAnimation.m
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAAnimation.h"
@implementation AAAnimation
AAPropSetFuncImplementation(AAAnimation, NSNumber *, duration)
AAPropSetFuncImplementation(AAAnimation, NSInteger , easing)
@end
//
// AAArea.h
// AAChartKit
//
// Created by An An on 17/3/15.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels;
@interface AAArea : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAArea, AADataLabels *, dataLabels)
@end
//
// AAArea.m
// AAChartKit
//
// Created by An An on 17/3/15.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAArea.h"
@implementation AAArea
AAPropSetFuncImplementation(AAArea, AADataLabels *, dataLabels)
@end
//
// AAAreaspline.h
// AAChartKit
//
// Created by An An on 17/3/15.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels;
@interface AAAreaspline : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAAreaspline, AADataLabels *, dataLabels)
@end
//
// AAAreaspline.m
// AAChartKit
//
// Created by An An on 17/3/15.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAAreaspline.h"
@implementation AAAreaspline
AAPropSetFuncImplementation(AAAreaspline, AADataLabels *, dataLabels)
@end
//
// AABar.h
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels;
@interface AABar : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AABar, NSNumber *, pointPadding)
AAPropStatementAndPropSetFuncStatement(strong, AABar, NSNumber *, groupPadding)
AAPropStatementAndPropSetFuncStatement(strong, AABar, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(assign, AABar, BOOL, colorByPoint) //对每个不同的点设置颜色(当图表类型为 column 时,设置为 column 对象的属性,当图表类型为 bar 时,应该设置为 bar 对象的属性才有效)
AAPropStatementAndPropSetFuncStatement(strong, AABar, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(strong, AABar, NSNumber *, borderRadius)
@end
//
// AABar.m
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AABar.h"
@implementation AABar
AAPropSetFuncImplementation(AABar, NSNumber *, pointPadding)
AAPropSetFuncImplementation(AABar, NSNumber *, groupPadding)
AAPropSetFuncImplementation(AABar, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AABar, BOOL , colorByPoint)
AAPropSetFuncImplementation(AABar, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AABar, NSNumber *, borderRadius)
@end
//
// AAChart.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import "AAGlobalMacro.h"
@class AAAnimation, AAScrollablePlotArea;
@interface AAChart : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAChart, NSString *, type)
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSString *, backgroundColor)
AAPropStatementAndPropSetFuncStatement(copy, AAChart, NSString *, plotBackgroundImage) //指定绘图区背景图片的地址。如果需要设置整个图表的背景,请通过 CSS 来给容器元素(div)设置背景图。另外如果需要在导出图片中包含这个背景图,要求这个地址是公网可以访问的地址(包含可以访问且是绝对路径)。
AAPropStatementAndPropSetFuncStatement(copy, AAChart, NSString *, pinchType)
AAPropStatementAndPropSetFuncStatement(assign, AAChart, BOOL, panning)
//AAPropStatementAndPropSetFuncStatement(copy, AAChart, NSString *, panKey)
AAPropStatementAndPropSetFuncStatement(assign, AAChart, BOOL, polar)
AAPropStatementAndPropSetFuncStatement(strong, AAChart, AAAnimation *, animation) //设置启用动画的时间和类型
AAPropStatementAndPropSetFuncStatement(assign, AAChart, BOOL, inverted)
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSArray *, margin)// 图表外边缘和绘图区域之间的边距。 数组中的数字分别表示顶部,右侧,底部和左侧 ([👆,👉,👇,👈])。 也可以使用 marginTop,marginRight,marginBottom 和 marginLeft 来设置某一个方向的边距。
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSNumber *, marginTop) //👆
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSNumber *, marginRight) //👉
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSNumber *, marginBottom) //👇
AAPropStatementAndPropSetFuncStatement(strong, AAChart, NSNumber *, marginLeft) //👈
AAPropStatementAndPropSetFuncStatement(strong, AAChart, AAScrollablePlotArea *, scrollablePlotArea)
@end
@interface AAScrollablePlotArea : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAScrollablePlotArea, NSNumber *, minHeight)
AAPropStatementAndPropSetFuncStatement(strong, AAScrollablePlotArea, NSNumber *, minWidth)
AAPropStatementAndPropSetFuncStatement(strong, AAScrollablePlotArea, NSNumber *, opacity)
AAPropStatementAndPropSetFuncStatement(strong, AAScrollablePlotArea, NSNumber *, scrollPositionX)
AAPropStatementAndPropSetFuncStatement(strong, AAScrollablePlotArea, NSNumber *, scrollPositionY)
@end
//
// AAChart.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAChart.h"
@implementation AAChart
AAPropSetFuncImplementation(AAChart, NSString *, type)
AAPropSetFuncImplementation(AAChart, NSString *, backgroundColor)
AAPropSetFuncImplementation(AAChart, NSString *, plotBackgroundImage) //指定绘图区背景图片的地址。如果需要设置整个图表的背景,请通过 CSS 来给容器元素(div)设置背景图。另外如果需要在导出图片中包含这个背景图,要求这个地址是公网可以访问的地址(包含可以访问且是绝对路径)。
AAPropSetFuncImplementation(AAChart, NSString *, pinchType)
AAPropSetFuncImplementation(AAChart, BOOL , panning)
//AAPropSetFuncImplementation(AAChart, NSString *, panKey)
AAPropSetFuncImplementation(AAChart, BOOL , polar)
AAPropSetFuncImplementation(AAChart, AAAnimation *, animation)
AAPropSetFuncImplementation(AAChart, BOOL , inverted)
AAPropSetFuncImplementation(AAChart, NSArray *, margin)// 图表外边缘和绘图区域之间的边距。 数组中的数字分别表示顶部,右侧,底部和左侧。 也可以使用 marginTop,marginRight,marginBottom 和 marginLeft 来设置某一个方向的边距。
AAPropSetFuncImplementation(AAChart, NSNumber *, marginTop)
AAPropSetFuncImplementation(AAChart, NSNumber *, marginRight)
AAPropSetFuncImplementation(AAChart, NSNumber *, marginBottom)
AAPropSetFuncImplementation(AAChart, NSNumber *, marginLeft)
AAPropSetFuncImplementation(AAChart, AAScrollablePlotArea *, scrollablePlotArea)
@end
@implementation AAScrollablePlotArea
AAPropSetFuncImplementation(AAScrollablePlotArea, NSNumber *, minHeight)
AAPropSetFuncImplementation(AAScrollablePlotArea, NSNumber *, minWidth)
AAPropSetFuncImplementation(AAScrollablePlotArea, NSNumber *, opacity)
AAPropSetFuncImplementation(AAScrollablePlotArea, NSNumber *, scrollPositionX)
AAPropSetFuncImplementation(AAScrollablePlotArea, NSNumber *, scrollPositionY)
@end
//
// AAColumn.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels;
@interface AAColumn : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAColumn, NSString *, name)
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSArray *, data)
AAPropStatementAndPropSetFuncStatement(copy, AAColumn, NSString *, color)
AAPropStatementAndPropSetFuncStatement(assign, AAColumn, BOOL, grouping) //Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other. 默认是:true.
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, pointPadding) //Padding between each column or bar, in x axis units. 默认是:0.1.
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, pointPlacement) //Padding between each column or bar, in x axis units. 默认是:0.1.
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, groupPadding) //Padding between each value groups, in x axis units. 默认是:0.2.
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(assign, AAColumn, BOOL, colorByPoint) //对每个不同的点设置颜色(当图表类型为 AAColumn 时,设置为 AAColumn 对象的属性,当图表类型为 bar 时,应该设置为 bar 对象的属性才有效)
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(copy, AAColumn, NSString *, stacking)
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, borderRadius)
AAPropStatementAndPropSetFuncStatement(strong, AAColumn, NSNumber *, yAxis)
@end
//
// AAColumn.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAColumn.h"
@implementation AAColumn
- (instancetype)init {
self = [super init];
if (self) {
_grouping = true;
}
return self;
}
AAPropSetFuncImplementation(AAColumn, NSString *, name)
AAPropSetFuncImplementation(AAColumn, NSArray *, data)
AAPropSetFuncImplementation(AAColumn, NSString *, color)
AAPropSetFuncImplementation(AAColumn, BOOL, grouping)
AAPropSetFuncImplementation(AAColumn, NSNumber *, pointPadding)
AAPropSetFuncImplementation(AAColumn, NSNumber *, pointPlacement)
AAPropSetFuncImplementation(AAColumn, NSNumber *, groupPadding)
AAPropSetFuncImplementation(AAColumn, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AAColumn, BOOL , colorByPoint)
AAPropSetFuncImplementation(AAColumn, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AAColumn, NSString *, stacking)
AAPropSetFuncImplementation(AAColumn, NSNumber *, borderRadius)
AAPropSetFuncImplementation(AAColumn, NSNumber *, yAxis)
@end
//
// AACredits.h
// AAChartKitDemo
//
// Created by AnAn on 2020/7/17.
// Copyright © 2020 AnAn. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class AAPosition,AAStyle;
@interface AACredits : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AACredits, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(copy, AACredits, NSString *, href)
AAPropStatementAndPropSetFuncStatement(strong, AACredits, AAPosition *, position)
AAPropStatementAndPropSetFuncStatement(strong, AACredits, AAStyle *, style)
AAPropStatementAndPropSetFuncStatement(copy, AACredits, NSString *, text)
@end
@interface AAPosition : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAPosition, NSString *, align)
AAPropStatementAndPropSetFuncStatement(copy, AAPosition, NSString *, verticalAlign)
AAPropStatementAndPropSetFuncStatement(strong, AAPosition, NSNumber *, x)
AAPropStatementAndPropSetFuncStatement(strong, AAPosition, NSNumber *, y)
@end
NS_ASSUME_NONNULL_END
//
// AACredits.m
// AAChartKitDemo
//
// Created by AnAn on 2020/7/17.
// Copyright © 2020 AnAn. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AACredits.h"
@implementation AACredits
AAPropSetFuncImplementation(AACredits, BOOL, enabled)
AAPropSetFuncImplementation(AACredits, NSString *, href)
AAPropSetFuncImplementation(AACredits, AAPosition *, position)
AAPropSetFuncImplementation(AACredits, AAStyle *, style)
AAPropSetFuncImplementation(AACredits, NSString *, text)
@end
@implementation AAPosition
AAPropSetFuncImplementation(AAPosition, NSString *, align)
AAPropSetFuncImplementation(AAPosition, NSString *, verticalAlign)
AAPropSetFuncImplementation(AAPosition, NSNumber *, x)
AAPropSetFuncImplementation(AAPosition, NSNumber *, y)
@end
//
// AAXAxis.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@interface AACrosshair : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AACrosshair, NSString *, dashStyle) //准星线样式
AAPropStatementAndPropSetFuncStatement(copy, AACrosshair, NSString *, color) //准星线颜色
AAPropStatementAndPropSetFuncStatement(strong, AACrosshair, NSNumber *, width) //准星线宽度
AAPropStatementAndPropSetFuncStatement(strong, AACrosshair, NSNumber *, zIndex) //准星线的层叠值, 增大层叠值可以让准星线显示在数据里或网格线的上方。 默认是:2.
@end
//
// AAXAxis.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AACrosshair.h"
@implementation AACrosshair
AAPropSetFuncImplementation(AACrosshair, NSString *, dashStyle) //准星线样式
AAPropSetFuncImplementation(AACrosshair, NSString *, color) //准星线颜色
AAPropSetFuncImplementation(AACrosshair, NSNumber *, width) //准星线宽度
AAPropSetFuncImplementation(AACrosshair, NSNumber *, zIndex) //准星线的层叠值, 增大层叠值可以让准星线显示在数据里或网格线的上方。 默认是:2.
@end
//
// AADataLabels.h
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAStyle;
@interface AADataLabels : NSObject
//https://api.hcharts.cn/highcharts#plotOptions.area.dataLabels.align
//align: 水平对齐
//allowOverlap: 允许重叠
//backgroundColor: 背景颜色
//borderColor: 边框颜色
//borderRadius: 边框圆角
//borderWidth: 边框宽度
//className: 类名
//color: 颜色
//crop: 裁剪
//defer: 延迟显示
//enabled: 开关
//format: 格式化字符串
//formatter: 格式化函数
//inside: 显示在内部
//overflow: 溢出处理
//padding: 内边距
//rotation: 旋转角度
//shadow: 阴影
//shape: 箭头形状
//style: 样式
//useHTML: HTML 渲染
//verticalAlign: 竖直对齐方式
//x: 水平偏移
//y: 竖直偏移
//zIndex
//https://api.hcharts.cn/highcharts#plotOptions.pie.dataLabels.connectorPadding
//backgroundColor: undefined
//borderColor: undefined
//borderRadius: 0
//borderWidth: 0
//className: undefined
//color: undefined
//connectorColor: "{point.color}"
//connectorPadding: 5
//connectorWidth: 1
//crop: true
//defer: true
//distance: 30
//enabled: true
//format: "{y}"
//formatter: undefined
//inside: undefined
//overflow: "justify"
//padding: 5
//rotation: 0
//shadow: false
//shape: "square"
//softConnector: true
//style: {"color": "contrast", "fontSize": "11px", "fontWeight": "bold", "textOutline": "1px 1px contrast" }
//useHTML: false
//verticalAlign: undefined
//x: 0
//y: -6
//zIndex
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , enabled)
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, NSString *, align)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, AAStyle *, style)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, format)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, formatter)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSNumber *, rotation)
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , allowOverlap)
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , useHTML)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSNumber *, distance)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, verticalAlign)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSNumber *, x)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSNumber *, y)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, color)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, backgroundColor)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSNumber *, borderRadius)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, shape)
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , crop)
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , inside)
AAPropStatementAndPropSetFuncStatement(copy, AADataLabels, NSString *, overflow)//该参数用于处理当数据标签超出绘图区时处理方式,默认值是 justify,即将超过绘图区的数据标签对齐绘图区内,对于柱形,也就意味着数据标签将会被移动到柱子内部。通过设置 crop 为 false 及 overflow 为"none" 可以让数据标签显示在绘图区的外面。 默认是:justify.
AAPropStatementAndPropSetFuncStatement(assign, AADataLabels, BOOL , softConnector)//Whether to render the connector as a soft arc or a line with sharp break. Only useful for pie, pyramid and funnel chart
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSDictionary *, textPath)
AAPropStatementAndPropSetFuncStatement(strong, AADataLabels, NSDictionary *, filter)
@end
//
// AADataLabels.m
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AADataLabels.h"
#import "AAJSStringPurer.h"
@implementation AADataLabels
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
_softConnector = true;
}
return self;
}
AAPropSetFuncImplementation(AADataLabels, BOOL , enabled)
AAPropSetFuncImplementation(AADataLabels, NSString *, align)
AAPropSetFuncImplementation(AADataLabels, AAStyle *, style)
AAPropSetFuncImplementation(AADataLabels, NSString *, format)
//AAPropSetFuncImplementation(AADataLabels, NSString *, formatter)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, rotation)
AAPropSetFuncImplementation(AADataLabels, BOOL , allowOverlap)
AAPropSetFuncImplementation(AADataLabels, BOOL , useHTML)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, distance)
AAPropSetFuncImplementation(AADataLabels, NSString *, verticalAlign)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, x)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, y)
AAPropSetFuncImplementation(AADataLabels, NSString *, color)
AAPropSetFuncImplementation(AADataLabels, NSString *, backgroundColor)
AAPropSetFuncImplementation(AADataLabels, NSString *, borderColor)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, borderRadius)
AAPropSetFuncImplementation(AADataLabels, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AADataLabels, NSString *, shape)
AAPropSetFuncImplementation(AADataLabels, BOOL , crop)
AAPropSetFuncImplementation(AADataLabels, BOOL , inside)
AAPropSetFuncImplementation(AADataLabels, NSString *, overflow)
AAPropSetFuncImplementation(AADataLabels, BOOL , softConnector)//Whether to render the connector as a soft arc or a line with sharp break. Only useful for pie, pyramid and funnel chart
AAPropSetFuncImplementation(AADataLabels, NSDictionary *, textPath)
AAPropSetFuncImplementation(AADataLabels, NSDictionary *, filter);
- (void)setFormatter:(NSString *)formatter {
_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
}
- (AADataLabels * (^) (NSString * formatter))formatterSet {
return ^(NSString * formatter) {
self->_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
return self;
};
}
@end
//
// AALabel.h
// AAChartKitDemo
//
// Created by AnAn on 2018/12/30.
// Copyright © 2018 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAStyle;
NS_ASSUME_NONNULL_BEGIN
@interface AALabel : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AALabel, NSString *, align)//标签的对齐方式,可用的值有 "left"、"center" 及 "right"。默认值是根据坐标轴的位置(在图表中的位置)即标签的旋转角度进行智能判断的。 默认是:center.
AAPropStatementAndPropSetFuncStatement(strong, AALabel, NSNumber *, rotation)//标签的旋转角度 默认是:0.
AAPropStatementAndPropSetFuncStatement(copy, AALabel, NSString *, text)//文字
AAPropStatementAndPropSetFuncStatement(copy, AALabel, NSString *, textAlign)//文字对齐
AAPropStatementAndPropSetFuncStatement(assign, AALabel, BOOL , useHTML)//HTML渲染
AAPropStatementAndPropSetFuncStatement(copy, AALabel, NSString *, verticalAlign)//竖直对齐
AAPropStatementAndPropSetFuncStatement(strong, AALabel, AAStyle *, style)//轴标签的 CSS 样式
AAPropStatementAndPropSetFuncStatement(strong, AALabel, NSNumber *, x)//水平偏移
AAPropStatementAndPropSetFuncStatement(strong, AALabel, NSNumber *, y)// 竖直偏移
@end
NS_ASSUME_NONNULL_END
//
// AALabel.m
// AAChartKitDemo
//
// Created by AnAn on 2018/12/30.
// Copyright © 2018 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AALabel.h"
@implementation AALabel
AAPropSetFuncImplementation(AALabel, NSString *, align)//标签的对齐方式,可用的值有 "left"、"center" 及 "right"。默认值是根据坐标轴的位置(在图表中的位置)即标签的旋转角度进行智能判断的。 默认是:center.
AAPropSetFuncImplementation(AALabel, NSNumber *, rotation)//标签的旋转角度 默认是:0.
AAPropSetFuncImplementation(AALabel, NSString *, text)//文字
AAPropSetFuncImplementation(AALabel, NSString *, textAlign)//文字对齐
AAPropSetFuncImplementation(AALabel, BOOL , useHTML)//HTML渲染
AAPropSetFuncImplementation(AALabel, NSString *, verticalAlign)//竖直对齐
AAPropSetFuncImplementation(AALabel, AAStyle *, style)//轴标签的 CSS 样式
AAPropSetFuncImplementation(AALabel, NSNumber *, x)//水平偏移
AAPropSetFuncImplementation(AALabel, NSNumber *, y)// 竖直偏移
@end
//
// AALabels.h
// AAChartKit
//
// Created by An An on 17/3/1.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAStyle,AAJSStringPurer;
@interface AALabels : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AALabels, NSString *, align)//轴标签的对齐方式,可用的值有 "left"、"center" 及 "right"。默认值是根据坐标轴的位置(在图表中的位置)即标签的旋转角度进行智能判断的。 默认是:center.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, id , autoRotation)//只针对水平轴有效,允许在防止轴标签重叠时自动旋转轴标签的角度。当空间足够时,轴标签不会被旋转。当图表变小时(主要是宽度变小) ,轴标签开始旋转对应的角度,然后会依次删除间隔的轴标签并尝试旋转数组中的角度。可以通过将此参数设置为 false 来关闭轴标签旋转(这将导致标签自动换行)。 默认是:[-45].
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, autoRotationLimit)//当每个分类的宽度比该参数的值大很多(像素)时,轴标签将不会被自动旋转,而是以换行的形式展示轴标签。 当轴标签包含多个短词时换行展示轴标签可以使得轴标签有足够的空间,所以设置合理的自动旋转下限是非常有意义的。 默认是:80.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, distance)//只针对极地图有效,定义周标签与绘图区边缘的距离。 默认是:15.
AAPropStatementAndPropSetFuncStatement(assign, AALabels, BOOL , enabled)//是否显示坐标轴标签 默认是:true.
AAPropStatementAndPropSetFuncStatement(copy, AALabels, NSString *, format)//坐标轴格式化字符串。 默认是:{value}.
AAPropStatementAndPropSetFuncStatement(copy, AALabels, NSString *, formatter)//坐标轴格式化字符串。 默认是:{value}.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, padding)//轴标签的内间距,作用是保证轴标签之间有空隙。 默认是:5.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, rotation)//轴标签的旋转角度 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, staggerLines)//只针对水平轴有效,定义轴标签显示行数。
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, step)//显示 n 的倍数标签,例如设置为 2 则表示标签间隔一个轴标签显示。默认情况下,为了避免轴标签被覆盖,该参数会根据情况自动计算。可以通过设置此参数为 1 来阻止自动计算。
AAPropStatementAndPropSetFuncStatement(strong, AALabels, AAStyle *, style)//轴标签的 CSS 样式
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, x)//相对于坐标轴刻度线的水平偏移。 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AALabels, NSNumber *, y)//相对于坐标轴刻度线的垂直平偏移。 默认是:null.
AAPropStatementAndPropSetFuncStatement(assign, AALabels, BOOL , useHTML)//HTML渲染
@end
//
// AALabels.m
// AAChartKit
//
// Created by An An on 17/3/1.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AALabels.h"
#import "AAJSStringPurer.h"
@implementation AALabels
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
}
return self;
}
AAPropSetFuncImplementation(AALabels, NSString *, align)//轴标签的对齐方式,可用的值有 "left"、"center" 及 "right"。默认值是根据坐标轴的位置(在图表中的位置)即标签的旋转角度进行智能判断的。 默认是:center.
AAPropSetFuncImplementation(AALabels, id , autoRotation)//只针对水平轴有效,允许在防止轴标签重叠时自动旋转轴标签的角度。当空间足够时,轴标签不会被旋转。当图表变小时(主要是宽度变小) ,轴标签开始旋转对应的角度,然后会依次删除间隔的轴标签并尝试旋转数组中的角度。可以通过将此参数设置为 false 来关闭轴标签旋转(这将导致标签自动换行)。 默认是:[-45].
AAPropSetFuncImplementation(AALabels, NSNumber *, autoRotationLimit)//当每个分类的宽度比该参数的值大很多(像素)时,轴标签将不会被自动旋转,而是以换行的形式展示轴标签。 当轴标签包含多个短词时换行展示轴标签可以使得轴标签有足够的空间,所以设置合理的自动旋转下限是非常有意义的。 默认是:80.
AAPropSetFuncImplementation(AALabels, NSNumber *, distance)//只针对极地图有效,定义周标签与绘图区边缘的距离。 默认是:15.
AAPropSetFuncImplementation(AALabels, BOOL , enabled)//是否显示坐标轴标签 默认是:true.
AAPropSetFuncImplementation(AALabels, NSString *, format)//坐标轴格式化字符串。 默认是:{value}.
//AAPropSetFuncImplementation(AALabels, NSString *, formatter)//坐标轴格式化字符串。 默认是:{value}.
AAPropSetFuncImplementation(AALabels, NSNumber *, padding)//轴标签的内间距,作用是保证轴标签之间有空隙。 默认是:5.
AAPropSetFuncImplementation(AALabels, NSNumber *, rotation)//轴标签的旋转角度 默认是:0.
AAPropSetFuncImplementation(AALabels, NSNumber *, staggerLines)//只针对水平轴有效,定义轴标签显示行数。
AAPropSetFuncImplementation(AALabels, NSNumber *, step)//显示 n 的倍数标签,例如设置为 2 则表示标签间隔一个轴标签显示。默认情况下,为了避免轴标签被覆盖,该参数会根据情况自动计算。可以通过设置此参数为 1 来阻止自动计算。
AAPropSetFuncImplementation(AALabels, AAStyle *, style)//轴标签的 CSS 样式
AAPropSetFuncImplementation(AALabels, NSNumber *, x)//相对于坐标轴刻度线的水平偏移。 默认是:0.
AAPropSetFuncImplementation(AALabels, NSNumber *, y)//相对于坐标轴刻度线的垂直平偏移。 默认是:null.
AAPropSetFuncImplementation(AALabels, BOOL , useHTML)//HTML渲染
- (void)setFormatter:(NSString *)formatter {
_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
}
- (AALabels * (^) (NSString * formatter))formatterSet {
return ^(NSString * formatter) {
self->_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
return self;
};
}
@end
//
// AALang.h
// AAChartKitDemo
//
// Created by AnAn on 2020/7/17.
// Copyright © 2020 AnAn. All rights reserved.
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AALang : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AALang, NSString *, resetZoom)
AAPropStatementAndPropSetFuncStatement(copy, AALang, NSString *, thousandsSep)
@end
NS_ASSUME_NONNULL_END
//
// AALang.m
// AAChartKitDemo
//
// Created by AnAn on 2020/7/17.
// Copyright © 2020 AnAn. All rights reserved.
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AALang.h"
@implementation AALang
AAPropSetFuncImplementation(AALang, NSString *, resetZoom)
AAPropSetFuncImplementation(AALang, NSString *, thousandsSep)
@end
//
// AALegend.h
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import "AAChartModel.h"
@class AAItemStyle;
@interface AALegend : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AALegend, AAChartLayoutType, layout) //图例数据项的布局。布局类型: "horizontal" 或 "vertical" 即水平布局和垂直布局 默认是:horizontal.
AAPropStatementAndPropSetFuncStatement(copy, AALegend, AAChartAlignType, align) //设定图例在图表区中的水平对齐方式,合法值有left,center 和 right。
AAPropStatementAndPropSetFuncStatement(copy, AALegend, AAChartVerticalAlignType, verticalAlign) //设定图例在图表区中的垂直对齐方式,合法值有 top,middle 和 bottom。垂直位置可以通过 y 选项做进一步设定。
AAPropStatementAndPropSetFuncStatement(assign, AALegend, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(copy, AALegend, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, itemMarginTop) //图例的每一项的顶部外边距,单位px。 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, itemMarginBottom)//图例项底边距 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AALegend, AAItemStyle *, itemStyle)
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, symbolHeight)//标志高度
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, symbolPadding)//标志后距
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, symbolRadius)//图标圆角
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, symbolWidth)//图标宽度
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, x)
AAPropStatementAndPropSetFuncStatement(strong, AALegend, NSNumber *, y)
AAPropStatementAndPropSetFuncStatement(assign, AALegend, BOOL, floating)
@end
@interface AAItemStyle : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAItemStyle, NSString *, color)
AAPropStatementAndPropSetFuncStatement(copy, AAItemStyle, NSString *, cursor)
AAPropStatementAndPropSetFuncStatement(copy, AAItemStyle, NSString *, pointer)
AAPropStatementAndPropSetFuncStatement(copy, AAItemStyle, NSString *, fontSize)
AAPropStatementAndPropSetFuncStatement(copy, AAItemStyle, NSString *, fontWeight)
@end
//
// AALegend.m
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AALegend.h"
@implementation AALegend
AAPropSetFuncImplementation(AALegend, AAChartLayoutType, layout)
AAPropSetFuncImplementation(AALegend, AAChartAlignType, align)
AAPropSetFuncImplementation(AALegend, AAChartVerticalAlignType, verticalAlign)
AAPropSetFuncImplementation(AALegend, BOOL, enabled)
AAPropSetFuncImplementation(AALegend, NSString *, borderColor)
AAPropSetFuncImplementation(AALegend, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AALegend, NSNumber *, itemMarginTop)
AAPropSetFuncImplementation(AALegend, NSNumber *, itemMarginBottom)
AAPropSetFuncImplementation(AALegend, AAItemStyle *, itemStyle)
AAPropSetFuncImplementation(AALegend, NSNumber *, symbolHeight)//标志高度
AAPropSetFuncImplementation(AALegend, NSNumber *, symbolPadding)//标志后距
AAPropSetFuncImplementation(AALegend, NSNumber *, symbolRadius)//图标圆角
AAPropSetFuncImplementation(AALegend, NSNumber *, symbolWidth)//图标宽度
AAPropSetFuncImplementation(AALegend, NSNumber *, x)
AAPropSetFuncImplementation(AALegend, NSNumber *, y)
AAPropSetFuncImplementation(AALegend, BOOL, floating)
@end
@implementation AAItemStyle
AAPropSetFuncImplementation(AAItemStyle, NSString *, color)
AAPropSetFuncImplementation(AAItemStyle, NSString *, cursor)
AAPropSetFuncImplementation(AAItemStyle, NSString *, pointer)
AAPropSetFuncImplementation(AAItemStyle, NSString *, fontSize)
AAPropSetFuncImplementation(AAItemStyle, NSString *, fontWeight)
@end
//
// AALine.h
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels, AAStates;
@interface AALine : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AALine, NSNumber *, lineWidth) //设置折线的宽度
AAPropStatementAndPropSetFuncStatement(strong, AALine, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(copy, AALine, NSString *, dashStyle) //折线的样式类型
AAPropStatementAndPropSetFuncStatement(strong, AALine, AAStates *, states)
@end
//
// AALine.m
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AALine.h"
@implementation AALine
AAPropSetFuncImplementation(AALine, NSNumber *, lineWidth)
AAPropSetFuncImplementation(AALine, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AALine, NSString *, dashStyle)
AAPropSetFuncImplementation(AALine, AAStates *, states)
@end
//
// AAMarker.h
// AAChartKit
//
// Created by An An on 17/1/20.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAMarkerStates, AAMarkerHover;
@interface AAMarker : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AAMarker, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(strong, AAMarker, NSNumber *, radius)
AAPropStatementAndPropSetFuncStatement(copy, AAMarker, NSString *, symbol)
AAPropStatementAndPropSetFuncStatement(copy, AAMarker, NSString *, fillColor) //点的填充色(用来设置折线连接点的填充色)
AAPropStatementAndPropSetFuncStatement(strong, AAMarker, NSNumber *, lineWidth) //外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
AAPropStatementAndPropSetFuncStatement(copy, AAMarker, NSString *, lineColor) //外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色。)
AAPropStatementAndPropSetFuncStatement(strong, AAMarker, AAMarkerStates *, states)
@end
@interface AAMarkerStates : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAMarkerStates, AAMarkerHover *, hover)
@end
@interface AAMarkerHover : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AAMarkerHover, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(copy, AAMarkerHover, NSString *, fillColor)
AAPropStatementAndPropSetFuncStatement(copy, AAMarkerHover, NSString *, lineColor)
AAPropStatementAndPropSetFuncStatement(strong, AAMarkerHover, NSNumber *, lineWidth)
AAPropStatementAndPropSetFuncStatement(strong, AAMarkerHover, NSNumber *, lineWidthPlus)
AAPropStatementAndPropSetFuncStatement(strong, AAMarkerHover, NSNumber *, radius)
AAPropStatementAndPropSetFuncStatement(strong, AAMarkerHover, NSNumber *, radiusPlus)
@end
//
// AAMarker.m
// AAChartKit
//
// Created by An An on 17/1/20.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAMarker.h"
@implementation AAMarker
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
}
return self;
}
AAPropSetFuncImplementation(AAMarker, BOOL, enabled)
AAPropSetFuncImplementation(AAMarker, NSNumber *, radius)
AAPropSetFuncImplementation(AAMarker, NSString *, symbol)//曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
AAPropSetFuncImplementation(AAMarker, NSString *, fillColor) //点的填充色(用来设置折线连接点的填充色)
AAPropSetFuncImplementation(AAMarker, NSNumber *, lineWidth) //外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
AAPropSetFuncImplementation(AAMarker, NSString *, lineColor) //外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色。)
AAPropSetFuncImplementation(AAMarker, AAMarkerStates *, states)
@end
@implementation AAMarkerStates
AAPropSetFuncImplementation(AAMarkerStates, AAMarkerHover *, hover)
@end
@implementation AAMarkerHover
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
}
return self;
}
AAPropSetFuncImplementation(AAMarkerHover, BOOL, enabled)
AAPropSetFuncImplementation(AAMarkerHover, NSString *, fillColor)
AAPropSetFuncImplementation(AAMarkerHover, NSString *, lineColor)
AAPropSetFuncImplementation(AAMarkerHover, NSNumber *, lineWidth)
AAPropSetFuncImplementation(AAMarkerHover, NSNumber *, lineWidthPlus)
AAPropSetFuncImplementation(AAMarkerHover, NSNumber *, radius)
AAPropSetFuncImplementation(AAMarkerHover, NSNumber *, radiusPlus)
@end
//
// AAPane.h
// AAChartKitDemo
//
// Created by AnAn on 2020/5/9.
// Copyright © 2020 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AABackground;
NS_ASSUME_NONNULL_BEGIN
@interface AAPane : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAPane, AABackground *, background)
AAPropStatementAndPropSetFuncStatement(strong, AAPane, NSArray *, center)
AAPropStatementAndPropSetFuncStatement(strong, AAPane, NSNumber *, endAngle)
AAPropStatementAndPropSetFuncStatement(strong, AAPane, NSNumber *, size)
AAPropStatementAndPropSetFuncStatement(strong, AAPane, NSNumber *, startAngle)
@end
@interface AABackground : NSObject
AAPropStatementAndPropSetFuncStatement(copy , AABackground, NSString *, backgroundColor)
AAPropStatementAndPropSetFuncStatement(copy , AABackground, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(strong, AABackground, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(copy , AABackground, NSString *, className)
AAPropStatementAndPropSetFuncStatement(strong, AABackground, NSNumber *, innerRadius)
AAPropStatementAndPropSetFuncStatement(strong, AABackground, NSNumber *, outerRadius)
AAPropStatementAndPropSetFuncStatement(copy , AABackground, NSString *, shape)
@end
NS_ASSUME_NONNULL_END
//
// AAPane.m
// AAChartKitDemo
//
// Created by AnAn on 2020/5/9.
// Copyright © 2020 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAPane.h"
@implementation AAPane
AAPropSetFuncImplementation(AAPane, AABackground *, background)
AAPropSetFuncImplementation(AAPane, NSArray *, center)
AAPropSetFuncImplementation(AAPane, NSNumber *, endAngle)
AAPropSetFuncImplementation(AAPane, NSNumber *, size)
AAPropSetFuncImplementation(AAPane, NSNumber *, startAngle)
@end
@implementation AABackground
AAPropSetFuncImplementation(AABackground, NSString *, backgroundColor)
AAPropSetFuncImplementation(AABackground, NSString *, borderColor)
AAPropSetFuncImplementation(AABackground, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AABackground, NSString *, className)
AAPropSetFuncImplementation(AABackground, NSNumber *, innerRadius)
AAPropSetFuncImplementation(AABackground, NSNumber *, outerRadius)
AAPropSetFuncImplementation(AABackground, NSString *, shape)
@end
//
// AAPie.h
// AAChartKit
//
// Created by An An on 17/1/9.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels;
@interface AAPie : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAPie, NSNumber *, size)
AAPropStatementAndPropSetFuncStatement(assign, AAPie, BOOL, allowPointSelect)
AAPropStatementAndPropSetFuncStatement(copy, AAPie, NSString *, cursor)
AAPropStatementAndPropSetFuncStatement(strong, AAPie, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(assign, AAPie, BOOL, showInLegend)
AAPropStatementAndPropSetFuncStatement(strong, AAPie, NSNumber *, startAngle)
AAPropStatementAndPropSetFuncStatement(strong, AAPie, NSNumber *, endAngle)
AAPropStatementAndPropSetFuncStatement(strong, AAPie, NSNumber *, depth)
AAPropStatementAndPropSetFuncStatement(strong, AAPie, NSArray *, center)
@end
//
// AAPie.m
// AAChartKit
//
// Created by An An on 17/1/9.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAPie.h"
@implementation AAPie
AAPropSetFuncImplementation(AAPie, NSNumber *, size)
AAPropSetFuncImplementation(AAPie, BOOL, allowPointSelect)
AAPropSetFuncImplementation(AAPie, NSString *, cursor)
AAPropSetFuncImplementation(AAPie, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AAPie, BOOL, showInLegend)
AAPropSetFuncImplementation(AAPie, NSNumber *, startAngle)
AAPropSetFuncImplementation(AAPie, NSNumber *, endAngle)
AAPropSetFuncImplementation(AAPie, NSNumber *, depth)
AAPropSetFuncImplementation(AAPie, NSArray *, center)
@end
//
// AAPlotBandsElement.h
// AAChartKitDemo
//
// Created by AnAn on 2018/12/23.
// Copyright © 2018 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
//borderColor: null
//borderWidth: 边框宽度
//className: 类名
//color: 样式
//events: 事件
//from: 开始值
//id: 编号
//innerRadius: null
//label: {标签}
//outerRadius: 100%
//thickness: 10
//to: 结束值
//zIndex
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AAPlotBandsElement : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAPlotBandsElement, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotBandsElement, NSNumber *, borderWidth)
AAPropStatementAndPropSetFuncStatement(copy, AAPlotBandsElement, NSString *, className)
AAPropStatementAndPropSetFuncStatement(copy, AAPlotBandsElement, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotBandsElement, NSNumber *, from)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotBandsElement, NSDictionary *, label)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotBandsElement, NSNumber *, to)
AAPropStatementAndPropSetFuncStatement(assign, AAPlotBandsElement, NSUInteger , zIndex)
@end
NS_ASSUME_NONNULL_END
//
// AAPlotBandsElement.m
// AAChartKitDemo
//
// Created by AnAn on 2018/12/23.
// Copyright © 2018 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAPlotBandsElement.h"
@implementation AAPlotBandsElement
AAPropSetFuncImplementation(AAPlotBandsElement, NSString *, borderColor)
AAPropSetFuncImplementation(AAPlotBandsElement, NSNumber *, borderWidth)
AAPropSetFuncImplementation(AAPlotBandsElement, NSString *, className)
AAPropSetFuncImplementation(AAPlotBandsElement, NSString *, color)
AAPropSetFuncImplementation(AAPlotBandsElement, NSNumber *, from)
AAPropSetFuncImplementation(AAPlotBandsElement, NSDictionary *, label)
AAPropSetFuncImplementation(AAPlotBandsElement, NSNumber *, to)
AAPropSetFuncImplementation(AAPlotBandsElement, NSUInteger , zIndex)
@end
//
// AAPlotLinesElement.h
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AALabel;
@interface AAPlotLinesElement : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAPlotLinesElement, NSString *, color) //基线颜色
AAPropStatementAndPropSetFuncStatement(copy, AAPlotLinesElement, NSString *, dashStyle) //基线样式Dash,Dot,Solid,默认Solid
AAPropStatementAndPropSetFuncStatement(strong, AAPlotLinesElement, NSNumber *, width) //基线宽度
AAPropStatementAndPropSetFuncStatement(strong, AAPlotLinesElement, NSNumber *, value) //显示位置
AAPropStatementAndPropSetFuncStatement(strong, AAPlotLinesElement, NSNumber *, zIndex)//层叠,标示线在图表中显示的层叠级别,值越大,显示越向前,默认标示线显示在数据线之后
AAPropStatementAndPropSetFuncStatement(strong, AAPlotLinesElement, AALabel *, label) //标示线的文字标签,用来描述标示线
@end
//
// AAPlotLinesElement.m
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAPlotLinesElement.h"
@implementation AAPlotLinesElement
AAPropSetFuncImplementation(AAPlotLinesElement, NSString *, color) //基线颜色
AAPropSetFuncImplementation(AAPlotLinesElement, NSString *, dashStyle) //基线样式Dash,Dot,Solid,默认Solid
AAPropSetFuncImplementation(AAPlotLinesElement, NSNumber *, width) //基线宽度
AAPropSetFuncImplementation(AAPlotLinesElement, NSNumber *, value) //显示位置
AAPropSetFuncImplementation(AAPlotLinesElement, NSNumber *, zIndex) //层叠,标示线在图表中显示的层叠级别,值越大,显示越向前,默认标示线显示在数据线之后
AAPropSetFuncImplementation(AAPlotLinesElement, AALabel *, label) //标示线的文字标签,用来描述标示线
@end
//
// AAPlotOptions.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAColumn,AABar,AALine,AASpline,AAArea,AAAreaspline,AAPie,AASeries;
@interface AAPlotOptions : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AAColumn *, column)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AALine *, line)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AAPie *, pie)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AABar *, bar)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AASpline *, spline)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AASeries *, series)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AAArea *, area)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, AAAreaspline *, areaspline)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, NSObject *, columnrange)
AAPropStatementAndPropSetFuncStatement(strong, AAPlotOptions, NSObject *, arearange)
@end
//
// AAPlotOptions.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAPlotOptions.h"
@implementation AAPlotOptions
AAPropSetFuncImplementation(AAPlotOptions, AAColumn *, column)
AAPropSetFuncImplementation(AAPlotOptions, AALine *, line)
AAPropSetFuncImplementation(AAPlotOptions, AAPie *, pie)
AAPropSetFuncImplementation(AAPlotOptions, AABar *, bar)
AAPropSetFuncImplementation(AAPlotOptions, AASpline *, spline)
AAPropSetFuncImplementation(AAPlotOptions, AASeries *, series)
AAPropSetFuncImplementation(AAPlotOptions, AAArea *, area)
AAPropSetFuncImplementation(AAPlotOptions, AAAreaspline *, areaspline)
AAPropSetFuncImplementation(AAPlotOptions, NSObject *, columnrange)
AAPropSetFuncImplementation(AAPlotOptions, NSObject *, arearange)
@end
//
// AASeries.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAMarker,AAAnimation,AAShadow,AADataLabels,AAEvents,AAStates;
@interface AASeries : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSNumber *, borderRadius)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AAMarker *, marker)
AAPropStatementAndPropSetFuncStatement(copy, AASeries, NSString *, stacking)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AAAnimation *, animation)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSArray *, keys)
//colorByPoint 决定了图表是否给每个数据列或每个点分配一个颜色,默认值是 false, 即默认是给每个数据类分配颜色,
//AAPropStatementAndPropSetFuncStatement(assign, AASeries, BOOL , colorByPoint) //设置为 true 则是给每个点分配颜色。
//plotOptions.series.connectNulls
//https://www.zhihu.com/question/24173311
AAPropStatementAndPropSetFuncStatement(assign, AASeries, BOOL , connectNulls) //设置折线是否断点重连
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AAEvents *, events)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AAShadow *, shadow)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AADataLabels *, dataLabels)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, AAStates *, states)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSNumber *, borderRadiusTopLeft)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSNumber *, borderRadiusTopRight)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSNumber *, borderRadiusBottomLeft)
AAPropStatementAndPropSetFuncStatement(strong, AASeries, NSNumber *, borderRadiusBottomRight)
@end
@interface AAEvents : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAEvents, NSString *, legendItemClick)
@end
//
// AASeries.m
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
//
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AASeries.h"
#import "AAJSStringPurer.h"
@implementation AASeries
AAPropSetFuncImplementation(AASeries, NSNumber *, borderRadius)
AAPropSetFuncImplementation(AASeries, AAMarker *, marker)
AAPropSetFuncImplementation(AASeries, NSString *, stacking)
AAPropSetFuncImplementation(AASeries, AAAnimation *, animation)
AAPropSetFuncImplementation(AASeries, NSArray *, keys)
//AAPropSetFuncImplementation(AASeries, BOOL , colorByPoint) //设置为 true 则是给每个点分配颜色。
AAPropSetFuncImplementation(AASeries, BOOL , connectNulls)
AAPropSetFuncImplementation(AASeries, AAEvents *, events)
AAPropSetFuncImplementation(AASeries, AAShadow *, shadow)
AAPropSetFuncImplementation(AASeries, AADataLabels *, dataLabels)
AAPropSetFuncImplementation(AASeries, AAStates *, states)
AAPropSetFuncImplementation(AASeries, NSNumber *, borderRadiusTopLeft)
AAPropSetFuncImplementation(AASeries, NSNumber *, borderRadiusTopRight)
AAPropSetFuncImplementation(AASeries, NSNumber *, borderRadiusBottomLeft)
AAPropSetFuncImplementation(AASeries, NSNumber *, borderRadiusBottomRight)
@end
@implementation AAEvents
//AAPropSetFuncImplementation(AAEvents, NSString *, legendItemClick)
- (void)setLegendItemClick:(NSString *)legendItemClick {
_legendItemClick = [AAJSStringPurer pureJavaScriptFunctionStringWithString:legendItemClick];
}
- (AAEvents * (^) (NSString * legendItemClick))legendItemClickSet {
return ^(NSString * legendItemClick) {
self->_legendItemClick = [AAJSStringPurer pureJavaScriptFunctionStringWithString:legendItemClick];
return self;
};
}
@end
//
// AAShadow.h
// AAChartKit-ProDemo
//
// Created by AnAn on 2020/7/16.
// Copyright © 2020 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AAShadow : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAShadow, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AAShadow, NSNumber *, offsetX)
AAPropStatementAndPropSetFuncStatement(strong, AAShadow, NSNumber *, offsetY)
AAPropStatementAndPropSetFuncStatement(strong, AAShadow, NSNumber *, opacity)
AAPropStatementAndPropSetFuncStatement(strong, AAShadow, NSNumber *, width)
@end
NS_ASSUME_NONNULL_END
//
// AAShadow.m
// AAChartKit-ProDemo
//
// Created by AnAn on 2020/7/16.
// Copyright © 2020 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAShadow.h"
@implementation AAShadow : NSObject
AAPropSetFuncImplementation(AAShadow, NSString *, color)
AAPropSetFuncImplementation(AAShadow, NSNumber *, offsetX)
AAPropSetFuncImplementation(AAShadow, NSNumber *, offsetY)
AAPropSetFuncImplementation(AAShadow, NSNumber *, opacity)
AAPropSetFuncImplementation(AAShadow, NSNumber *, width)
@end
//
// AASpline.h
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AADataLabels, AAStates;
@interface AASpline : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AASpline, AADataLabels *, dataLabels)
//AAPropStatementAndPropSetFuncStatement(assign, AASpline, BOOL, enableMouseTracking)
AAPropStatementAndPropSetFuncStatement(strong, AASpline, AAStates *, states)
@end
//
// AASpline.m
// AAChartKit
//
// Created by An An on 17/1/19.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AASpline.h"
@implementation AASpline
AAPropSetFuncImplementation(AASpline, AADataLabels *, dataLabels)
//AAPropSetFuncImplementation(AASpline, BOOL , enableMouseTracking)
AAPropSetFuncImplementation(AASpline, AAStates *, states)
@end
//
// AAStates.h
// AAChartKitDemo
//
// Created by AnAn on 2020/1/6.
// Copyright © 2020 Danny boy. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class AAHover,AASelect,AAHalo,AAInactive;
@interface AAStates : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAStates, AAHover *, hover)
AAPropStatementAndPropSetFuncStatement(strong, AAStates, AASelect *, select)
AAPropStatementAndPropSetFuncStatement(strong, AAStates, AAInactive *, inactive)
@end
@interface AAHover : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AAHover, BOOL , enabled)
AAPropStatementAndPropSetFuncStatement(copy, AAHover, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(strong, AAHover, NSNumber *, brightness)
AAPropStatementAndPropSetFuncStatement(copy, AAHover, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AAHover, AAHalo *, halo)
AAPropStatementAndPropSetFuncStatement(strong, AAHover, NSNumber *, lineWidth)
AAPropStatementAndPropSetFuncStatement(strong, AAHover, NSNumber *, lineWidthPlus)
@end
@interface AASelect : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AASelect, NSString *, borderColor)
AAPropStatementAndPropSetFuncStatement(copy, AASelect, NSString *, color)
AAPropStatementAndPropSetFuncStatement(strong, AASelect, AAHalo *, halo)
@end
@interface AAHalo : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAHalo, NSDictionary *, attributes)//A collection of SVG attributes to override the appearance of the halo, for example fill, stroke and stroke-width.
AAPropStatementAndPropSetFuncStatement(strong, AAHalo, NSNumber *, opacity)//Opacity for the halo unless a specific fill is overridden using the attributes setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats. Default Value:0.25.
AAPropStatementAndPropSetFuncStatement(strong, AAHalo, NSNumber *, size)
@end
@interface AAInactive : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AAInactive, BOOL , enabled)
AAPropStatementAndPropSetFuncStatement(strong, AAInactive, NSNumber *, opacity)
@end
NS_ASSUME_NONNULL_END
//
// AAStates.m
// AAChartKitDemo
//
// Created by AnAn on 2020/1/6.
// Copyright © 2020 Danny boy. All rights reserved.
//
#import "AAStates.h"
@implementation AAStates
AAPropSetFuncImplementation(AAStates, AAHover *, hover)
AAPropSetFuncImplementation(AAStates, AASelect *, select)
AAPropSetFuncImplementation(AAStates, AAInactive *, inactive)
@end
@implementation AAHover
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
}
return self;
}
AAPropSetFuncImplementation(AAHover, BOOL , enabled)
AAPropSetFuncImplementation(AAHover, NSString *, borderColor)
AAPropSetFuncImplementation(AAHover, NSNumber *, brightness)
AAPropSetFuncImplementation(AAHover, NSString *, color)
AAPropSetFuncImplementation(AAHover, AAHalo *, halo)
AAPropSetFuncImplementation(AAHover, NSNumber *, lineWidth)
AAPropSetFuncImplementation(AAHover, NSNumber *, lineWidthPlus)
@end
@implementation AASelect
AAPropSetFuncImplementation(AASelect, NSString *, borderColor)
AAPropSetFuncImplementation(AASelect, NSString *, color)
AAPropSetFuncImplementation(AASelect, AAHalo *, halo)
@end
@implementation AAHalo
AAPropSetFuncImplementation(AAHalo, NSDictionary *, attributes)
AAPropSetFuncImplementation(AAHalo, NSNumber *, opacity)
AAPropSetFuncImplementation(AAHalo, NSNumber *, size)
@end
@implementation AAInactive
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
}
return self;
}
AAPropSetFuncImplementation(AAInactive, BOOL , enabled)
AAPropSetFuncImplementation(AAInactive, NSNumber *, opacity)
@end
//
// AAStyle.h
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@interface AAStyle : NSObject
//Styles for the label. 默认是:{"color": "contrast", "fontSize": "11px", "fontWeight": "bold", "textOutline": "1px 1px contrast" }.
AAPropStatementAndPropSetFuncStatement(copy, AAStyle, NSString *, color) //设置文字的颜色,可修改为 #ff00ff 任意的这种十六进制字符串
AAPropStatementAndPropSetFuncStatement(copy, AAStyle, NSString *, fontSize) //文字大小
AAPropStatementAndPropSetFuncStatement(copy, AAStyle, NSString *, fontWeight) //可选的值有 bold, regular和 thin 三种,分别对应的是加粗字体,常规字体和纤细字体
AAPropStatementAndPropSetFuncStatement(copy, AAStyle, NSString *, textOutline) //文字轮廓描边
@end
//
// AAStyle.m
// AAChartKit
//
// Created by An An on 17/1/6.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAStyle.h"
@implementation AAStyle
//Styles for the label. 默认是:{"color": "contrast", "fontSize": "11px", "fontWeight": "bold", "textOutline": "1px 1px contrast" }.
AAPropSetFuncImplementation(AAStyle, NSString *, color) //设置文字的颜色,可修改为 #ff00ff 任意的这种十六进制字符串
AAPropSetFuncImplementation(AAStyle, NSString *, fontSize) //文字大小
AAPropSetFuncImplementation(AAStyle, NSString *, fontWeight) //可选的值有 bold, regular和 thin 三种,分别对应的是加粗字体,常规字体和纤细字体
AAPropSetFuncImplementation(AAStyle, NSString *, textOutline) //文字轮廓描边
@end
//
// AATitle.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAStyle;
@interface AATitle : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AATitle, NSString *, text)
AAPropStatementAndPropSetFuncStatement(strong, AATitle, AAStyle *, style)
AAPropStatementAndPropSetFuncStatement(copy, AATitle, NSString *, align)
AAPropStatementAndPropSetFuncStatement(copy, AATitle, NSString *, verticalAlign)
AAPropStatementAndPropSetFuncStatement(strong, AATitle, NSNumber *, x)//标题相对于水平对齐的偏移量,取值范围为:图表左边距到图表右边距,可以是负值,单位px。 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AATitle, NSNumber *, y) //标题相对于垂直对齐的偏移量,取值范围:图表的上边距(chart.spacingTop )到图表的下边距(chart.spacingBottom),可以是负值,单位是px。默认值和字体大小有关。
AAPropStatementAndPropSetFuncStatement(assign, AATitle, BOOL , useHTML) //是否 使用HTML渲染标题。 默认是:false.
@end
@class AAStyle;
@interface AASubtitle : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AASubtitle, NSString *, text)
AAPropStatementAndPropSetFuncStatement(copy, AASubtitle, NSString *, align)
AAPropStatementAndPropSetFuncStatement(strong, AASubtitle, AAStyle *, style)
@end
//
// AATitle.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AATitle.h"
@implementation AATitle
AAPropSetFuncImplementation(AATitle, NSString *, text)
AAPropSetFuncImplementation(AATitle, AAStyle *, style)
AAPropSetFuncImplementation(AATitle, NSString *, align)
AAPropSetFuncImplementation(AATitle, NSString *, verticalAlign)
AAPropSetFuncImplementation(AATitle, NSNumber *, x) //标题相对于水平对齐的偏移量,取值范围为:图表左边距到图表右边距,可以是负值,单位px。 默认是:0.
AAPropSetFuncImplementation(AATitle, NSNumber *, y) //标题相对于垂直对齐的偏移量,取值范围:图表的上边距(chart.spacingTop )到图表的下边距(chart.spacingBottom),可以是负值,单位是px。默认值和字体大小有关。
AAPropSetFuncImplementation(AATitle, BOOL , useHTML) //是否 使用HTML渲染标题。 默认是:false.
@end
@implementation AASubtitle
AAPropSetFuncImplementation(AASubtitle, NSString *, text)
AAPropSetFuncImplementation(AASubtitle, NSString *, align)
AAPropSetFuncImplementation(AASubtitle, AAStyle *, style)
@end
//
// AATooltip.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAStyle;
@interface AATooltip : NSObject
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, animation) //是否启用动画是否启用动画(设置 animation == false,禁用 tooltip 动画能够在一定程度上节省程序的计算资源,提高运行效率)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, backgroundColor) //背景色
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, borderColor) //边框颜色
AAPropStatementAndPropSetFuncStatement(strong, AATooltip, NSNumber *, borderRadius) //边框的圆角半径
AAPropStatementAndPropSetFuncStatement(strong, AATooltip, NSNumber *, borderWidth) //边框宽度
AAPropStatementAndPropSetFuncStatement(strong, AATooltip, AAStyle *, style) //为提示框添加CSS样式。提示框同样能够通过 CSS 类 .highcharts-tooltip 来设定样式。 默认是:@{@"color":@"#333333",@"cursor":@"default",@"fontSize":@"12px",@"pointerEvents":@"none",@"whiteSpace":@"nowrap" }
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, enabled)
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, useHTML)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, formatter)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, headerFormat)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, pointFormat)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, footerFormat)
AAPropStatementAndPropSetFuncStatement(strong, AATooltip, NSNumber *, valueDecimals) //设置取值精确到小数点后几位
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, shared)
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, crosshairs)
AAPropStatementAndPropSetFuncStatement(copy, AATooltip, NSString *, valueSuffix)
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, followTouchMove) //在触摸设备上,tooltip.followTouchMove选项为true(默认)时,平移需要两根手指。若要允许用一根手指平移,请将followTouchMove设置为false。
AAPropStatementAndPropSetFuncStatement(assign, AATooltip, BOOL, shadow)
@end
//
// AATooltip.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AATooltip.h"
#import "AAJSStringPurer.h"
@implementation AATooltip
- (instancetype)init {
self = [super init];
if (self) {
_enabled = true;
_animation = true;
_shared = true;
_crosshairs = true;
_followTouchMove = true;
_shadow = true;
}
return self;
}
AAPropSetFuncImplementation(AATooltip, BOOL, animation) //是否启用动画是否启用动画(设置 animation == false,禁用 tooltip 动画能够在一定程度上节省程序的计算资源,提高运行效率)
AAPropSetFuncImplementation(AATooltip, NSString *, backgroundColor) //背景色
AAPropSetFuncImplementation(AATooltip, NSString *, borderColor) //边框颜色
AAPropSetFuncImplementation(AATooltip, NSNumber *, borderRadius) //边框的圆角半径
AAPropSetFuncImplementation(AATooltip, NSNumber *, borderWidth) //边框宽度
AAPropSetFuncImplementation(AATooltip, AAStyle *, style) //为提示框添加CSS样式。提示框同样能够通过 CSS 类 .highcharts-tooltip 来设定样式。 默认是:@{@"color":@"#ffffff",@"cursor":@"default",@"fontSize":@"12px",@"pointerEvents":@"none",@"whiteSpace":@"nowrap" }
AAPropSetFuncImplementation(AATooltip, BOOL, enabled)
AAPropSetFuncImplementation(AATooltip, BOOL, useHTML)
//AAPropSetFuncImplementation(AATooltip, NSString *, formatter)
AAPropSetFuncImplementation(AATooltip, NSString *, headerFormat)
AAPropSetFuncImplementation(AATooltip, NSString *, pointFormat)
AAPropSetFuncImplementation(AATooltip, NSString *, footerFormat)
AAPropSetFuncImplementation(AATooltip, NSNumber *, valueDecimals) //设置取值精确到小数点后几位
AAPropSetFuncImplementation(AATooltip, BOOL, shared)
AAPropSetFuncImplementation(AATooltip, BOOL, crosshairs)
AAPropSetFuncImplementation(AATooltip, NSString *, valueSuffix)
AAPropSetFuncImplementation(AATooltip, BOOL, followTouchMove)
AAPropSetFuncImplementation(AATooltip, BOOL, shadow)
- (void)setFormatter:(NSString *)formatter {
_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
}
- (AATooltip * (^) (NSString * formatter))formatterSet {
return ^(NSString * formatter) {
self->_formatter = [AAJSStringPurer pureJavaScriptFunctionStringWithString:formatter];
return self;
};
}
@end
//
// AAXAxis.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AALabels,AACrosshair,AAPlotBandsElement,AAPlotLinesElement;
@interface AAXAxis : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, type)
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSArray<AAPlotBandsElement *>*, plotBands)
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSArray<AAPlotLinesElement *>*, plotLines)
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSArray *, categories)
AAPropStatementAndPropSetFuncStatement(assign, AAXAxis, BOOL, reversed)
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, lineWidth) //x轴轴线宽度
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, lineColor) //x轴轴线线颜色
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, linkedTo)
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, max) //x轴最大值
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, min) //x轴最小值
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, gridLineWidth) //x轴网格线宽度
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, gridLineColor) //x轴网格线颜色
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, gridLineDashStyle) //x轴网格线样式
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, offset) //x轴垂直偏移
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, AALabels *, labels) //用于设置 x 轴文字相关的
AAPropStatementAndPropSetFuncStatement(assign, AAXAxis, BOOL , visible) //用于设置 x 轴以及 x 轴文字是否显示
AAPropStatementAndPropSetFuncStatement(assign, AAXAxis, BOOL, opposite) //是否将坐标轴显示在对立面,默认情况下 x 轴是在图表的下方显示,y 轴是在左方,坐标轴显示在对立面后,x 轴是在上方显示,y 轴是在右方显示(即坐标轴会显示在对立面)。该配置一般是用于多坐标轴区分展示,另外在 Highstock 中,y 轴默认是在对立面显示的。 默认是:false.
AAPropStatementAndPropSetFuncStatement(assign, AAXAxis, BOOL , startOnTick) //Whether to force the axis to start on a tick. Use this option with the minPadding option to control the axis start. 默认是:false.
AAPropStatementAndPropSetFuncStatement(assign, AAXAxis, BOOL , endOnTick) //是否强制将坐标轴结束于刻度线,可以通过本属性及 maxPadding 来控制坐标轴的结束位置。 默认是:false.
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, AACrosshair *, crosshair) //准星线样式设置
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, tickColor) //x轴轴线下方刻度线颜色
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, tickInterval) //x轴刻度点间隔数(设置每隔几个点显示一个 X轴的内容)
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, tickmarkPlacement) //本参数只对分类轴有效。 当值为 on 时刻度线将在分类上方显示;当值为 between 时,刻度线将在两个分类中间显示。当 tickInterval 为 1 时,默认是 between,其他情况默认是 on。 默认是:null.
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, tickWidth) //坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber *, tickLength)//坐标轴刻度线的长度。 默认是:10.
AAPropStatementAndPropSetFuncStatement(copy, AAXAxis, NSString *, tickPosition) //刻度线相对于轴线的位置,可用的值有 inside 和 outside,分别表示在轴线的内部和外部。 默认是:outside.
AAPropStatementAndPropSetFuncStatement(strong, AAXAxis, NSNumber * , minRange)
@end
//
// AAXAxis.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAXAxis.h"
@implementation AAXAxis
- (instancetype)init {
self = [super init];
if (self) {
_visible = true;
_tickmarkPlacement = @"on";//本参数只对分类轴有效。 当值为 on 时刻度线将在分类上方显示;当值为 between 时,刻度线将在两个分类中间显示。当 tickInterval 为 1 时,highcharts官方默认是 between,我这里手动将其改为 on
}
return self;
}
AAPropSetFuncImplementation(AAXAxis, NSString *, type)
AAPropSetFuncImplementation(AAXAxis, NSArray<AAPlotBandsElement *>*, plotBands)
AAPropSetFuncImplementation(AAXAxis, NSArray<AAPlotLinesElement *>*, plotLines)
AAPropSetFuncImplementation(AAXAxis, NSArray *, categories)
AAPropSetFuncImplementation(AAXAxis, BOOL , reversed)
AAPropSetFuncImplementation(AAXAxis, NSNumber *, lineWidth) //x轴轴线宽度
AAPropSetFuncImplementation(AAXAxis, NSString *, lineColor) //x轴轴线线颜色
AAPropSetFuncImplementation(AAXAxis, NSNumber *, linkedTo)
AAPropSetFuncImplementation(AAXAxis, NSNumber *, max) //x轴最大值
AAPropSetFuncImplementation(AAXAxis, NSNumber *, min) //x轴最小值(设置为0就不会有负数)
AAPropSetFuncImplementation(AAXAxis, NSNumber *, gridLineWidth) //x轴网格线宽度
AAPropSetFuncImplementation(AAXAxis, NSString *, gridLineColor) //x轴网格线颜色
AAPropSetFuncImplementation(AAXAxis, NSString *, gridLineDashStyle) //x轴网格线样式
AAPropSetFuncImplementation(AAXAxis, NSNumber *, offset) //x轴垂直偏移
AAPropSetFuncImplementation(AAXAxis, AALabels *, labels)
AAPropSetFuncImplementation(AAXAxis, BOOL , visible)
AAPropSetFuncImplementation(AAXAxis, BOOL, opposite) //是否将坐标轴显示在对立面,默认情况下 x 轴是在图表的下方显示,y 轴是在左方,坐标轴显示在对立面后,x 轴是在上方显示,y 轴是在右方显示(即坐标轴会显示在对立面)。该配置一般是用于多坐标轴区分展示,另外在 Highstock 中,y 轴默认是在对立面显示的。 默认是:false.
AAPropSetFuncImplementation(AAXAxis, BOOL , startOnTick) //Whether to force the axis to start on a tick. Use this option with the minPadding option to control the axis start. 默认是:false.
AAPropSetFuncImplementation(AAXAxis, BOOL , endOnTick) //是否强制将坐标轴结束于刻度线,可以通过本属性及 maxPadding 来控制坐标轴的结束位置。 默认是:false.
AAPropSetFuncImplementation(AAXAxis, AACrosshair*, crosshair) //准星线样式设置
AAPropSetFuncImplementation(AAXAxis, NSString *, tickColor) //x轴轴线下方刻度线颜色
AAPropSetFuncImplementation(AAXAxis, NSNumber *, tickInterval) //x轴刻度点间隔数(设置每隔几个点显示一个 X轴的内容)
AAPropSetFuncImplementation(AAXAxis, NSString *, tickmarkPlacement) //本参数只对分类轴有效。 当值为 on 时刻度线将在分类上方显示;当值为 between 时,刻度线将在两个分类中间显示。当 tickInterval 为 1 时,默认是 between,其他情况默认是 on。 默认是:null.
AAPropSetFuncImplementation(AAXAxis, NSNumber *, tickWidth) //坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
AAPropSetFuncImplementation(AAXAxis, NSNumber *, tickLength)//坐标轴刻度线的长度。 默认是:10.
AAPropSetFuncImplementation(AAXAxis, NSString *, tickPosition) //刻度线相对于轴线的位置,可用的值有 inside 和 outside,分别表示在轴线的内部和外部。 默认是:outside.
AAPropSetFuncImplementation(AAXAxis, NSNumber * , minRange)
@end
//
// AAYAxis.h
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
@class AAAxisTitle,AALabels,AACrosshair,AAStyle,AAPlotBandsElement,AAPlotLinesElement;
typedef NSString *AAYAxisGridLineInterpolation;
static AAYAxisGridLineInterpolation const AAYAxisGridLineInterpolationCircle = @"circle";//圆形
static AAYAxisGridLineInterpolation const AAYAxisGridLineInterpolationPolygon = @"polygon";//多边形
@interface AAYAxis : NSObject
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, AAAxisTitle *, title)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSArray<AAPlotBandsElement *>*, plotBands)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSArray<AAPlotLinesElement *>*, plotLines)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSArray *, categories)
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL, reversed)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, gridLineWidth) // y 轴网格线宽度
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, gridLineColor) // y 轴网格线颜色
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, gridLineDashStyle) //网格线线条样式,所有可用的线条样式参考:Highcharts线条样式
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, alternateGridColor) //backcolor of every other grid line area
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, AAYAxisGridLineInterpolation, gridLineInterpolation) //Polar charts only. Whether the grid lines should draw as a polygon with straight lines between categories, or as circles. Can be either circle or polygon. 默认是:null.
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, AALabels *, labels) //用于设置 y 轴文字相关的
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, lineWidth) // y 轴线宽度
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, lineColor) // y 轴线颜色
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, offset) // y 轴线水平偏移
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL, allowDecimals) //y轴是否允许显示小数
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, NSNumber *, max) //y轴最大值
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, NSNumber *, min) //y轴最小值(设置为0就不会有负数)
//AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, NSNumber *, minPadding) //Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. 默认是:0.05.
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, NSNumber *, minRange)
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL, visible) //y轴是否允许显示
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL, opposite) //是否将坐标轴显示在对立面,默认情况下 x 轴是在图表的下方显示,y 轴是在左方,坐标轴显示在对立面后,x 轴是在上方显示,y 轴是在右方显示(即坐标轴会显示在对立面)。该配置一般是用于多坐标轴区分展示,另外在 Highstock 中,y 轴默认是在对立面显示的。 默认是:false.
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL , startOnTick) //Whether to force the axis to start on a tick. Use this option with the minPadding option to control the axis start. 默认是:false.
AAPropStatementAndPropSetFuncStatement(assign, AAYAxis, BOOL , endOnTick) //是否强制将坐标轴结束于刻度线,可以通过本属性及 maxPadding 来控制坐标轴的结束位置。 默认是:false.
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, AACrosshair*, crosshair) //准星线样式设置
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, AALabels *, stackLabels)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, tickAmount)//刻度总数
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, tickColor) // 刻度线颜色
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, tickInterval)
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, tickWidth) //坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSNumber *, tickLength)//坐标轴刻度线的长度。 默认是:10.
AAPropStatementAndPropSetFuncStatement(copy, AAYAxis, NSString *, tickPosition) //刻度线相对于轴线的位置,可用的值有 inside 和 outside,分别表示在轴线的内部和外部。 默认是:outside.
AAPropStatementAndPropSetFuncStatement(strong, AAYAxis, NSArray *, tickPositions) //自定义Y轴坐标(如:[@(0), @(25), @(50), @(75) , (100)])
@end
@interface AAAxisTitle : NSObject
AAPropStatementAndPropSetFuncStatement(copy, AAAxisTitle, NSString *, align)
AAPropStatementAndPropSetFuncStatement(copy, AAAxisTitle, NSString *, margin)
AAPropStatementAndPropSetFuncStatement(strong, AAAxisTitle, NSNumber *, offset)
AAPropStatementAndPropSetFuncStatement(strong, AAAxisTitle, NSNumber *, rotation)
AAPropStatementAndPropSetFuncStatement(strong, AAAxisTitle, AAStyle *, style)
AAPropStatementAndPropSetFuncStatement(copy, AAAxisTitle, NSString *, text)
AAPropStatementAndPropSetFuncStatement(strong, AAAxisTitle, NSNumber *, x) //标题相对于水平对齐的偏移量,取值范围为:图表左边距到图表右边距,可以是负值,单位px。 默认是:0.
AAPropStatementAndPropSetFuncStatement(strong, AAAxisTitle, NSNumber *, y) //标题相对于垂直对齐的偏移量,取值范围:图表的上边距(chart.spacingTop )到图表的下边距(chart.spacingBottom),可以是负值,单位是px。默认值和字体大小有关。
@end
//
// AAYAxis.m
// AAChartKit
//
// Created by An An on 17/1/5.
// Copyright © 2017年 An An. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAYAxis.h"
@implementation AAYAxis
- (instancetype)init {
self = [super init];
if (self) {
_visible = true;
}
return self;
}
AAPropSetFuncImplementation(AAYAxis, AAAxisTitle *, title)
AAPropSetFuncImplementation(AAYAxis, NSArray<AAPlotBandsElement *>*, plotBands)
AAPropSetFuncImplementation(AAYAxis, NSArray<AAPlotLinesElement *>*, plotLines)
AAPropSetFuncImplementation(AAYAxis, NSArray *, categories)
AAPropSetFuncImplementation(AAYAxis, BOOL, reversed)
AAPropSetFuncImplementation(AAYAxis, NSNumber *, gridLineWidth)
AAPropSetFuncImplementation(AAYAxis, NSString *, gridLineColor)
AAPropSetFuncImplementation(AAYAxis, NSString *, gridLineDashStyle) //网格线线条样式,所有可用的线条样式参考:Highcharts线条样式
AAPropSetFuncImplementation(AAYAxis, NSString *, alternateGridColor)
AAPropSetFuncImplementation(AAYAxis, AAYAxisGridLineInterpolation, gridLineInterpolation)
AAPropSetFuncImplementation(AAYAxis, AALabels *, labels)
AAPropSetFuncImplementation(AAYAxis, NSNumber *, lineWidth) //y轴线宽度
AAPropSetFuncImplementation(AAYAxis, NSString *, lineColor) // y 轴线颜色
AAPropSetFuncImplementation(AAYAxis, NSNumber *, offset) // y 轴线水平偏移
AAPropSetFuncImplementation(AAYAxis, BOOL, allowDecimals) //y轴是否允许显示小数
AAPropSetFuncImplementation(AAYAxis, NSNumber *, max) //y轴最大值
AAPropSetFuncImplementation(AAYAxis, NSNumber *, min) //y轴最小值(设置为0就不会有负数)
//AAPropSetFuncImplementation(AAYAxis, NSNumber *, minPadding) //Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. 默认是:0.05.
AAPropSetFuncImplementation(AAYAxis, NSNumber *, minRange)
AAPropSetFuncImplementation(AAYAxis, BOOL, visible) //y轴是否允许显示
AAPropSetFuncImplementation(AAYAxis, BOOL, opposite) //是否将坐标轴显示在对立面,默认情况下 x 轴是在图表的下方显示,y 轴是在左方,坐标轴显示在对立面后,x 轴是在上方显示,y 轴是在右方显示(即坐标轴会显示在对立面)。该配置一般是用于多坐标轴区分展示,另外在 Highstock 中,y 轴默认是在对立面显示的。 默认是:false.
AAPropSetFuncImplementation(AAYAxis, BOOL , startOnTick) //Whether to force the axis to start on a tick. Use this option with the minPadding option to control the axis start. 默认是:false.
AAPropSetFuncImplementation(AAYAxis, BOOL , endOnTick) //是否强制将坐标轴结束于刻度线,可以通过本属性及 maxPadding 来控制坐标轴的结束位置。 默认是:false.
AAPropSetFuncImplementation(AAYAxis, AACrosshair*, crosshair) //准星线样式设置
AAPropSetFuncImplementation(AAYAxis, AALabels *, stackLabels)
AAPropSetFuncImplementation(AAYAxis, NSNumber *, tickAmount)//刻度总数
AAPropSetFuncImplementation(AAYAxis, NSString *, tickColor) // 刻度线颜色
AAPropSetFuncImplementation(AAYAxis, NSNumber *, tickInterval)
AAPropSetFuncImplementation(AAYAxis, NSNumber *, tickWidth) //坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
AAPropSetFuncImplementation(AAYAxis, NSNumber *, tickLength)//坐标轴刻度线的长度。 默认是:10.
AAPropSetFuncImplementation(AAYAxis, NSString *, tickPosition) //刻度线相对于轴线的位置,可用的值有 inside 和 outside,分别表示在轴线的内部和外部。 默认是:outside.
AAPropSetFuncImplementation(AAYAxis, NSArray *, tickPositions) //自定义Y轴坐标(如:[@(0), @(25), @(50), @(75) , (100)])
@end
@implementation AAAxisTitle
AAPropSetFuncImplementation(AAAxisTitle, NSString *, align)
AAPropSetFuncImplementation(AAAxisTitle, NSString *, margin)
AAPropSetFuncImplementation(AAAxisTitle, NSNumber *, offset)
AAPropSetFuncImplementation(AAAxisTitle, NSNumber *, rotation)
AAPropSetFuncImplementation(AAAxisTitle, AAStyle *, style)
AAPropSetFuncImplementation(AAAxisTitle, NSString *, text)
AAPropSetFuncImplementation(AAAxisTitle, NSNumber *, x) //标题相对于水平对齐的偏移量,取值范围为:图表左边距到图表右边距,可以是负值,单位px。 默认是:0.
AAPropSetFuncImplementation(AAAxisTitle, NSNumber *, y) //标题相对于垂直对齐的偏移量,取值范围:图表的上边距(chart.spacingTop )到图表的下边距(chart.spacingBottom),可以是负值,单位是px。默认值和字体大小有关。
@end
//
// AAColor.h
// AAChartKitDemo
//
// Created by AnAn on 2018/11/19.
// Copyright © 2018 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
NS_ASSUME_NONNULL_BEGIN
@interface AAColor : NSObject
// Some convenience methods to create colors. These colors will be as calibrated as possible
@property (class, nonatomic, readonly) NSString *blackColor; // 0.0 white
@property (class, nonatomic, readonly) NSString *darkGrayColor; // 0.333 white
@property (class, nonatomic, readonly) NSString *lightGrayColor; // 0.667 white
@property (class, nonatomic, readonly) NSString *whiteColor; // 1.0 white
@property (class, nonatomic, readonly) NSString *grayColor; // 0.5 white
@property (class, nonatomic, readonly) NSString *redColor; // 1.0, 0.0, 0.0 RGB
@property (class, nonatomic, readonly) NSString *greenColor; // 0.0, 1.0, 0.0 RGB
@property (class, nonatomic, readonly) NSString *blueColor; // 0.0, 0.0, 1.0 RGB
@property (class, nonatomic, readonly) NSString *cyanColor; // 0.0, 1.0, 1.0 RGB
@property (class, nonatomic, readonly) NSString *yellowColor; // 1.0, 1.0, 0.0 RGB
@property (class, nonatomic, readonly) NSString *magentaColor; // 1.0, 0.0, 1.0 RGB
@property (class, nonatomic, readonly) NSString *orangeColor; // 1.0, 0.5, 0.0 RGB
@property (class, nonatomic, readonly) NSString *purpleColor; // 0.5, 0.0, 0.5 RGB
@property (class, nonatomic, readonly) NSString *brownColor; // 0.6, 0.4, 0.2 RGB
@property (class, nonatomic, readonly) NSString *clearColor; // 0.0 white, 0.0 alpha
// Convenience methods for creating rgba color
+ (NSString *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
@end
NS_ASSUME_NONNULL_END
//
// AAColor.m
// AAChartKitDemo
//
// Created by AnAn on 2018/11/19.
// Copyright © 2018 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAColor.h"
@implementation AAColor
+ (NSString *)blackColor {
return @"black";
};
+ (NSString *)darkGrayColor {
return @"darkGray";
};
+ (NSString *)lightGrayColor {
return @"lightGray";
};
+ (NSString *)whiteColor {
return @"white";
};
+ (NSString *)grayColor {
return @"gray";
};
+ (NSString *)redColor {
return @"red";
};
+ (NSString *)greenColor {
return @"green";
};
+ (NSString *)blueColor {
return @"blue";
};
+ (NSString *)cyanColor {
return @"cyan";
};
+ (NSString *)yellowColor {
return @"yellow";
};
+ (NSString *)magentaColor {
return @"magenta";
};
+ (NSString *)orangeColor {
return @"orange";
};
+ (NSString *)purpleColor {
return @"purple";
};
+ (NSString *)brownColor {
return @"brown";
};
+ (NSString *)clearColor {
return @"#00000000";
};
+ (NSString *)colorWithRed:(CGFloat)red
green:(CGFloat)green
blue:(CGFloat)blue
alpha:(CGFloat)alpha {
return [NSString stringWithFormat:@"rgba(%f,%f,%f,%f)", red, green, blue, alpha];
}
@end
//
// AAGradientColor.h
// AAChartKitDemo
//
// Created by AnAn on 2018/11/18.
// Copyright © 2018 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, AALinearGradientDirection) {
AALinearGradientDirectionToTop = 0, //⇧⇧⇧⇧⇧⇧
AALinearGradientDirectionToBottom, //⇩⇩⇩⇩⇩⇩
AALinearGradientDirectionToLeft, //⇦⇦⇦⇦⇦⇦
AALinearGradientDirectionToRight, //⇨⇨⇨⇨⇨⇨
AALinearGradientDirectionToTopLeft, //⇖⇖⇖⇖⇖⇖
AALinearGradientDirectionToTopRight, //⇗⇗⇗⇗⇗⇗
AALinearGradientDirectionToBottomLeft, //⇙⇙⇙⇙⇙⇙
AALinearGradientDirectionToBottomRight, //⇘⇘⇘⇘⇘⇘
};
@interface AAGradientColor : NSObject
- (AAGradientColor * (^) (AALinearGradientDirection direction))directionSet;
- (AAGradientColor * (^) (NSString *startColor))startColorSet;
- (AAGradientColor * (^) (NSString *endColor))endColorSet;
- (AAGradientColor * (^) (NSArray *stopsArray))stopsArraySet;
// Some convenience methods to create gradient colors.
@property (class, nonatomic, readonly) NSDictionary *oceanBlueColor;
@property (class, nonatomic, readonly) NSDictionary *sanguineColor;
@property (class, nonatomic, readonly) NSDictionary *lusciousLimeColor;
@property (class, nonatomic, readonly) NSDictionary *purpleLakeColor;
@property (class, nonatomic, readonly) NSDictionary *freshPapayaColor;
@property (class, nonatomic, readonly) NSDictionary *ultramarineColor;
@property (class, nonatomic, readonly) NSDictionary *pinkSugarColor;
@property (class, nonatomic, readonly) NSDictionary *lemonDrizzleColor;
@property (class, nonatomic, readonly) NSDictionary *victoriaPurpleColor;
@property (class, nonatomic, readonly) NSDictionary *springGreensColor;
@property (class, nonatomic, readonly) NSDictionary *mysticMauveColor;
@property (class, nonatomic, readonly) NSDictionary *reflexSilverColor;
@property (class, nonatomic, readonly) NSDictionary *neonGlowColor;
@property (class, nonatomic, readonly) NSDictionary *berrySmoothieColor;
@property (class, nonatomic, readonly) NSDictionary *newLeafColor;
@property (class, nonatomic, readonly) NSDictionary *cottonCandyColor;
@property (class, nonatomic, readonly) NSDictionary *pixieDustColor;
@property (class, nonatomic, readonly) NSDictionary *fizzyPeachColor;
@property (class, nonatomic, readonly) NSDictionary *sweetDreamColor;
@property (class, nonatomic, readonly) NSDictionary *firebrickColor;
@property (class, nonatomic, readonly) NSDictionary *wroughtIronColor;
@property (class, nonatomic, readonly) NSDictionary *deepSeaColor;
@property (class, nonatomic, readonly) NSDictionary *coastalBreezeColor;
@property (class, nonatomic, readonly) NSDictionary *eveningDelightColor;
+ (NSDictionary *)oceanBlueColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)sanguineColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)lusciousLimeColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)purpleLakeColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)freshPapayaColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)ultramarineColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)pinkSugarColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)lemonDrizzleColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)victoriaPurpleColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)springGreensColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)mysticMauveColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)reflexSilverColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)neonGlowColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)berrySmoothieColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)newLeafColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)cottonCandyColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)pixieDustColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)fizzyPeachColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)sweetDreamColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)firebrickColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)wroughtIronColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)deepSeaColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)coastalBreezeColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)eveningDelightColorWithDirection:(AALinearGradientDirection)direction;
+ (NSDictionary *)gradientColorWithStartColorString:(NSString *)startColorStr
endColorString:(NSString *)endColorStr;
+ (NSDictionary *)gradientColorWithDirection:(AALinearGradientDirection)direction
startColorString:(NSString *)startColorStr
endColorString:(NSString *)endColorStr;
+ (NSDictionary *)gradientColorWithDirection:(AALinearGradientDirection)direction
stopsArray:(NSArray *)stopsArray;
@end
NS_ASSUME_NONNULL_END
//
// AAGradientColor.m
// AAChartKitDemo
//
// Created by AnAn on 2018/11/18.
// Copyright © 2018 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAGradientColor.h"
@interface AAGradientColor()
@property (nonatomic, strong) NSDictionary *linearGradient;
@property (nonatomic, strong) NSMutableArray *stops;
@end
@implementation AAGradientColor
- (AAGradientColor * (^) (AALinearGradientDirection direction))directionSet {
return ^(AALinearGradientDirection direction) {
self->_linearGradient = [AAGradientColor linearGradientDictionaryWithDirection:direction];
return self;
};
}
- (AAGradientColor * (^) (NSString *startColor))startColorSet {
return ^(NSString *startColor) {
self->_stops = [NSMutableArray arrayWithCapacity:2];
[self->_stops addObject:@[@(0),startColor]];
return self;
};
}
- (AAGradientColor * (^) (NSString *endColor))endColorSet {
return ^(NSString *endColor) {
NSAssert(self->_stops != nil, @"You should set startColor before setting endColor");
[self->_stops addObject:@[@(1),endColor]];
return self;
};
}
- (AAGradientColor * (^) (NSArray *stopsArray))stopsArraySet {
return ^(NSArray *stopsArray) {
self->_stops = (NSMutableArray *)stopsArray;
return self;
};
}
+ (NSDictionary *)oceanBlueColor {
return [self oceanBlueColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)sanguineColor {
return [self sanguineColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)lusciousLimeColor {
return [self lusciousLimeColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)purpleLakeColor {
return [self purpleLakeColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)freshPapayaColor {
return [self freshPapayaColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)ultramarineColor {
return [self ultramarineColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)pinkSugarColor {
return [self pinkSugarColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)lemonDrizzleColor {
return [self lemonDrizzleColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)victoriaPurpleColor {
return [self victoriaPurpleColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)springGreensColor {
return [self springGreensColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)mysticMauveColor {
return [self mysticMauveColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)reflexSilverColor {
return [self reflexSilverColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)neonGlowColor {
return [self neonGlowColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)berrySmoothieColor {
return [self berrySmoothieColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)newLeafColor {
return [self newLeafColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)cottonCandyColor {
return [self cottonCandyColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)pixieDustColor {
return [self pixieDustColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)fizzyPeachColor {
return [self fizzyPeachColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)sweetDreamColor {
return [self sweetDreamColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)firebrickColor {
return [self firebrickColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)wroughtIronColor {
return [self wroughtIronColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)deepSeaColor {
return [self deepSeaColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)coastalBreezeColor {
return [self coastalBreezeColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)eveningDelightColor {
return [self eveningDelightColorWithDirection:AALinearGradientDirectionToTop];
}
+ (NSDictionary *)oceanBlueColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#2E3192"
endColorString:@"#1BFFFF"];
}
+ (NSDictionary *)sanguineColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#D4145A"
endColorString:@"#FBB03B"];
}
+ (NSDictionary *)lusciousLimeColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#009245"
endColorString:@"#FCEE21"];
}
+ (NSDictionary *)purpleLakeColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#662D8C"
endColorString:@"#ED1E79"];
}
+ (NSDictionary *)freshPapayaColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#ED1C24"
endColorString:@"#FCEE21"];
}
+ (NSDictionary *)ultramarineColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#00A8C5"
endColorString:@"#FFFF7E"];
}
+ (NSDictionary *)pinkSugarColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#D74177"
endColorString:@"#FFE98A"];
}
+ (NSDictionary *)lemonDrizzleColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#FB872B"
endColorString:@"#D9E021"];
}
+ (NSDictionary *)victoriaPurpleColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#312A6C"
endColorString:@"#852D91"];
}
+ (NSDictionary *)springGreensColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#009E00"
endColorString:@"#FFFF96"];
}
+ (NSDictionary *)mysticMauveColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#B066FE"
endColorString:@"#63E2FF"];
}
+ (NSDictionary *)reflexSilverColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#808080"
endColorString:@"#E6E6E6"];
}
+ (NSDictionary *)neonGlowColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#00FFA1"
endColorString:@"#00FFFF"];
}
+ (NSDictionary *)berrySmoothieColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#8E78FF"
endColorString:@"#FC7D7B"];
}
+ (NSDictionary *)newLeafColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#00537E"
endColorString:@"#3AA17E"];
}
+ (NSDictionary *)cottonCandyColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#FCA5F1"
endColorString:@"#B5FFFF"];
}
+ (NSDictionary *)pixieDustColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#D585FF"
endColorString:@"#00FFEE"];
}
+ (NSDictionary *)fizzyPeachColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#F24645"
endColorString:@"#EBC08D"];
}
+ (NSDictionary *)sweetDreamColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#3A3897"
endColorString:@"#A3A1FF"];
}
+ (NSDictionary *)firebrickColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#45145A"
endColorString:@"#FF5300"];
}
+ (NSDictionary *)wroughtIronColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#333333"
endColorString:@"#5A5454"];
}
+ (NSDictionary *)deepSeaColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#4F00BC"
endColorString:@"#29ABE2"];
}
+ (NSDictionary *)coastalBreezeColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#00B7FF"
endColorString:@"#FFFFC7"];
}
+ (NSDictionary *)eveningDelightColorWithDirection:(AALinearGradientDirection)direction {
return [self gradientColorWithDirection:direction
startColorString:@"#93278F"
endColorString:@"#00A99D"];
}
+ (NSDictionary *)gradientColorWithStartColorString:(NSString *)startColorStr
endColorString:(NSString *)endColorStr {
return [self gradientColorWithDirection:AALinearGradientDirectionToTop
startColorString:startColorStr
endColorString:endColorStr];
}
+ (NSDictionary *)gradientColorWithDirection:(AALinearGradientDirection)direction
startColorString:(NSString *)startColorStr
endColorString:(NSString *)endColorStr {
NSArray *stopsArr = @[
@[@(0),startColorStr],
@[@(1),endColorStr]
];
return [self gradientColorWithDirection:direction stopsArray:stopsArr];
}
+ (NSDictionary *)gradientColorWithDirection:(AALinearGradientDirection)direction
stopsArray:(NSArray *)stopsArray {
return @{
@"linearGradient":[self linearGradientDictionaryWithDirection:direction],
@"stops":stopsArray
};
}
/**
(0,0) ----------- (1,0)
| |
| |
| |
| |
| |
(0,1) ----------- (1,1)
*/
+ (NSDictionary *)linearGradientDictionaryWithDirection:(AALinearGradientDirection)direction {
switch (direction) {
case AALinearGradientDirectionToTop:
return @{@"x1":@(0), @"y1":@(1), @"x2":@(0), @"y2":@(0)};
case AALinearGradientDirectionToBottom:
return @{@"x1":@(0), @"y1":@(0), @"x2":@(0), @"y2":@(1)};
case AALinearGradientDirectionToLeft:
return @{@"x1":@(1), @"y1":@(0), @"x2":@(0), @"y2":@(0)};
case AALinearGradientDirectionToRight:
return @{@"x1":@(0), @"y1":@(0), @"x2":@(1), @"y2":@(0)};
case AALinearGradientDirectionToTopLeft:
return @{@"x1":@(1), @"y1":@(1), @"x2":@(0), @"y2":@(0)};
case AALinearGradientDirectionToTopRight:
return @{@"x1":@(0), @"y1":@(1), @"x2":@(1), @"y2":@(0)};
case AALinearGradientDirectionToBottomLeft:
return @{@"x1":@(1), @"y1":@(0), @"x2":@(0), @"y2":@(1)};
case AALinearGradientDirectionToBottomRight:
return @{@"x1":@(0), @"y1":@(0), @"x2":@(1), @"y2":@(1)};
}
}
@end
//
// AAJSStringPurer.h
// AAChartKitDemo
//
// Created by AnAn on 2019/7/17.
// Copyright © 2019 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AAJSStringPurer : NSObject
+ (NSString *)pureJavaScriptFunctionStringWithString:(NSString *)jsString;
@end
NS_ASSUME_NONNULL_END
//
// AAJSStringPurer.m
// AAChartKitDemo
//
// Created by AnAn on 2019/7/17.
// Copyright © 2019 Danny boy. All rights reserved.
//*************** ...... SOURCE CODE ...... ***************
//***...................................................***
//*** https://github.com/AAChartModel/AAChartKit ***
//*** https://github.com/AAChartModel/AAChartKit-Swift ***
//***...................................................***
//*************** ...... SOURCE CODE ...... ***************
/*
* -------------------------------------------------------------------------------
*
* 🌕 🌖 🌗 🌘 ❀❀❀ WARM TIPS!!! ❀❀❀ 🌑 🌒 🌓 🌔
*
* Please contact me on GitHub,if there are any problems encountered in use.
* GitHub Issues : https://github.com/AAChartModel/AAChartKit/issues
* -------------------------------------------------------------------------------
* And if you want to contribute for this project, please contact me as well
* GitHub : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/7842508/codeforu
* JianShu : https://www.jianshu.com/u/f1e6753d4254
* SegmentFault : https://segmentfault.com/u/huanghunbieguan
*
* -------------------------------------------------------------------------------
*/
#import "AAJSStringPurer.h"
@implementation AAJSStringPurer
+ (NSString *)pureJavaScriptFunctionStringWithString:(NSString *)jsString {
//https://stackoverflow.com/questions/34334232/why-does-function-not-work-but-function-does-chrome-devtools-node
NSString *finalJSFunc = [NSString stringWithFormat:@"(%@)",jsString];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"'" withString:@"\""];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\0" withString:@""];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\n" withString:@""];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\r" withString:@"\\r"];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\f" withString:@"\\f"];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\u2028" withString:@"\\u2028"];
finalJSFunc = [finalJSFunc stringByReplacingOccurrencesOfString:@"\u2029" withString:@"\\u2029"];
return finalJSFunc;
}
@end
//
// StatisticsViewController.h
// IntelligentRepaymentButler
//
// Created by ymtx on 2019/5/7.
// Copyright © 2019年 lmj. All rights reserved.
//
#import "ICBaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface StatisticsViewController : ICBaseViewController
@end
NS_ASSUME_NONNULL_END
//
// StatisticsViewController.m
// IntelligentRepaymentButler
//
// Created by ymtx on 2019/5/7.
// Copyright © 2019年 lmj. All rights reserved.
//
#import "StatisticsViewController.h"
#import "AAChartKit.h"
#import "AAChartModel.h"
#import "WKClearPhotoManager.h"
@interface StatisticsViewController ()<AAChartViewEventDelegate>
@property (nonatomic, assign) AAChartModel *aaChartModel;
@property (nonatomic, strong) AAChartView *aaChartView;
@end
@implementation StatisticsViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.title = @"图片统计";
[MBProgressHUD showMessage:@"加载中..." delayTime:1.f toView:nil];
[self setUpTheChartView:AAChartTypePie];
}
- (void)setUpTheChartView:(AAChartType)chartType {
CGRect chartViewFrame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
self.aaChartView = [[AAChartView alloc]initWithFrame:chartViewFrame];
self.view.backgroundColor = [UIColor whiteColor];
self.aaChartView.scrollEnabled = NO;
[self.view addSubview:self.aaChartView];
self.aaChartModel = [self configureTheChartModel:chartType];
[self.aaChartView aa_drawChartWithChartModel:_aaChartModel];
}
- (WKClearPhotoManager *)photoMgr {
if (!_photoMgr) {
_photoMgr = [WKClearPhotoManager shareManager];
}
return _photoMgr;
}
- (void)loadPhotoData: (BOOL)isFirstLoad {
[MBProgressHUD showLoading:@"正在查询,请稍后..." toView:self.view];
if (self.photoMgr.currentIndex <= 0) {
self.photoMgr.pauseAction = false;
__weak typeof(self) weakSelf = self;
[self.photoMgr loadPhotoWithProcess:^(NSInteger current, NSInteger total) {
NSInteger similarLiveCount = 0;
for (NSArray *items in self.photoMgr.similarLiveArray) {
similarLiveCount += items.count;
}
NSInteger similarCount = 0;
for (NSArray *items in self.photoMgr.similarArray) {
similarCount += items.count;
}
CGFloat f = (similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) != 0 ? similarCount/(float)(similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) : 0;
CGFloat ff = (similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) != 0 ? similarLiveCount/(float)(similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) : 0;
ICContactManageViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:0 inSection:0]];
cell.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.snapshotArray.count];
ICContactManageViewCell *cell1 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:4 inSection:0]];
cell1.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarLiveCount];
cell1.progressView.strokeStart = ff;
ICContactManageViewCell *cell2 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:2 inSection:0]];
cell2.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarCount];
cell2.progressView.strokeStart = f;
ICContactManageViewCell *cell3 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:1 inSection:0]];
cell3.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.locationArray.count];
} completionHandler:^(BOOL success, NSError *error) {
// [weakSelf configData];
PHAsset *asset = self.photoMgr.fetchResult.lastObject;
if (asset) {
[self.headerView.startTimeButton setTitle:[self stringWithDate: asset.creationDate] forState:UIControlStateNormal];
}
// self.assetArr = self.photoMgr.assetArr;
ICContactManageViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:0 inSection:0]];
ICContactManageViewCell *cell1 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:2 inSection:0]];
ICContactManageViewCell *cell2 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:4 inSection:0]];
cell.progressView.strokeStart = 1;
cell1.progressView.strokeStart = 1;
cell2.progressView.strokeStart = 1;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
cell.progressView.strokeStart = 0;
cell1.progressView.strokeStart = 0;
cell2.progressView.strokeStart = 0;
});
self.screenshotArray = self.photoMgr.snapshotArray;
self.similarPhotoArray = self.photoMgr.similarArray;
self.similarLiveArray = self.photoMgr.similarLiveArray;
[MBProgressHUD hideHUDForView:self.view];
[self loadLocationAssets];
[self.tableView reloadData];
}];
} else if (self.photoMgr.currentIndex >= self.photoMgr.fetchResult.count-3) {
PHAsset *asset = self.photoMgr.fetchResult.lastObject;
if (asset) {
[self.headerView.startTimeButton setTitle:[self stringWithDate: asset.creationDate] forState:UIControlStateNormal];
}
if (self.photoMgr.similarLiveArray.count) {
}
if (self.photoMgr.similarArray.count) {
}
ICContactManageViewCell *cell = [self.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:0 inSection:0]];
cell.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.snapshotArray.count];
NSInteger similarLiveCount = 0;
for (NSArray *items in self.photoMgr.similarLiveArray) {
similarLiveCount += items.count;
}
ICContactManageViewCell *cell1 = [self.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:4 inSection:0]];
cell1.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarLiveCount];
NSInteger similarCount = 0;
for (NSArray *items in self.photoMgr.similarArray) {
similarCount += items.count;
}
ICContactManageViewCell *cell2 = [self.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:2 inSection:0]];
cell2.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarCount];
ICContactManageViewCell *cell3 = [self.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:1 inSection:0]];
cell3.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.locationArray.count];
self.screenshotArray = self.photoMgr.snapshotArray;
self.similarPhotoArray = self.photoMgr.similarArray;
self.similarLiveArray = self.photoMgr.similarLiveArray;
[MBProgressHUD hideHUDForView:self.view];
[self loadLocationAssets];
[self.tableView reloadData];
return;
} else {
self.photoMgr.pauseAction = true;
__weak typeof(self) weakSelf = self;
[self.photoMgr loadPhotoWithProcess:^(NSInteger current, NSInteger total) {
PHAsset *asset = self.photoMgr.fetchResult.lastObject;
if (asset) {
[self.headerView.startTimeButton setTitle:[self stringWithDate: asset.creationDate] forState:UIControlStateNormal];
}
NSInteger similarLiveCount = 0;
for (NSArray *items in self.photoMgr.similarLiveArray) {
similarLiveCount += items.count;
}
NSInteger similarCount = 0;
for (NSArray *items in self.photoMgr.similarArray) {
similarCount += items.count;
}
CGFloat f = (similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) != 0 ? similarCount/(float)(similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) : 0;
CGFloat ff = (similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) != 0 ? similarLiveCount/(float)(similarCount+similarLiveCount+self.photoMgr.snapshotArray.count+self.photoMgr.locationArray.count) : 0;
ICContactManageViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:0 inSection:0]];
cell.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.snapshotArray.count];
ICContactManageViewCell *cell1 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:4 inSection:0]];
cell1.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarLiveCount];
cell1.progressView.strokeStart = ff;
ICContactManageViewCell *cell2 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:2 inSection:0]];
cell2.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)similarCount];
cell2.progressView.strokeStart = f;
ICContactManageViewCell *cell3 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:1 inSection:0]];
cell3.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)self.photoMgr.locationArray.count];
} completionHandler:^(BOOL success, NSError *error) {
PHAsset *asset = self.photoMgr.fetchResult.lastObject;
if (asset) {
[self.headerView.startTimeButton setTitle:[self stringWithDate: asset.creationDate] forState:UIControlStateNormal];
}
// self.assetArr = self.photoMgr.assetArr;
ICContactManageViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:0 inSection:0]];
ICContactManageViewCell *cell1 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:2 inSection:0]];
ICContactManageViewCell *cell2 = [weakSelf.tableView cellForRowAtIndexPath:[ NSIndexPath indexPathForRow:4 inSection:0]];
cell.progressView.strokeStart = 1;
cell1.progressView.strokeStart = 1;
cell2.progressView.strokeStart = 1;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
cell.progressView.strokeStart = 0;
cell1.progressView.strokeStart = 0;
cell2.progressView.strokeStart = 0;
});
self.screenshotArray = self.photoMgr.snapshotArray;
self.similarPhotoArray = self.photoMgr.similarArray;
self.similarLiveArray = self.photoMgr.similarLiveArray;
[MBProgressHUD hideHUDForView:self.view];
[self loadLocationAssets];
[self.tableView reloadData];
}];
}
}
- (AAChartModel *)configureTheChartModel:(NSString *)chartType {
NSMutableArray * counts = [NSMutableArray new];
for (int x = 0; x < 12; x++){
int f = (random()%30)+1;
int ff = (random()%f);
NSArray * count = @[[NSNumber numberWithDouble:f/1.0-(random()%10)/10.0], [NSNumber numberWithDouble:ff-10+(random()%10)/10.0]];
[counts addObject:count];
}
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
NSMutableArray * months = [NSMutableArray new];
for (NSInteger x = 12-comps.month-1; x <= 12 ; x++) {
NSString * month = [NSString stringWithFormat:@"去年%@", [self month:x]];
[months addObject:month];
}
for (NSInteger x = 1; x <= comps.month ; x++) {
[months addObject:[self month:x]];
}
AASeriesElement *element = AASeriesElement.new
.nameSet(@"语言热度值")
.innerSizeSet(@"20%")//内部圆环半径大小占比
.sizeSet(@200)//尺寸大小
.borderWidthSet(@0)//描边的宽度
.allowPointSelectSet(true)//是否允许在点击数据点标记(扇形图点击选中的块发生位移)
.statesSet(AAStates.new
.hoverSet(AAHover.new
.enabledSet(false)//禁用点击区块之后出现的半透明遮罩层
))
.dataSet(@[
@[@"Firefox", @3336.2],
@[@"IE", @26.8],
@{@"sliced": @true,
@"selected": @true,
@"name": @"Chrome",
@"y": @666.8, },
@[@"Safari", @88.5],
@[@"Opera", @46.0],
@[@"Others", @223.0],
]);
return AAChartModel.new
.chartTypeSet(AAChartTypePie)
.colorsThemeSet(@[@"#0c9674",@"#7dffc0",@"#ff3333",@"#facd32",@"#ffffa0",@"#EA007B"])
.dataLabelsEnabledSet(true)//是否直接显示扇形图数据
.yAxisTitleSet(@"摄氏度")
.seriesSet(@[element])
;
}
@end
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#import "ICIAPViewController.h" #import "ICIAPViewController.h"
#import "ICNavigationController.h" #import "ICNavigationController.h"
#import "AAGlobalMacro.h"
// 这里存放的是所有的请求的URL // 这里存放的是所有的请求的URL
// 服务器域名 (测试/正式) // 服务器域名 (测试/正式)
...@@ -57,6 +59,10 @@ ...@@ -57,6 +59,10 @@
#define KScaleWidth(width) ((width)*(KScreenWidth/375.f)) #define KScaleWidth(width) ((width)*(KScreenWidth/375.f))
#define KScaleHeight(height) ((height)*(KScreenHeight/667.f)) #define KScaleHeight(height) ((height)*(KScreenHeight/667.f))
#define kNavHeight ([[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 64 : 84)
#define kBottomSafeBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 34 : 0)
#define ICLocalized(name) [NSString stringWithFormat:@"%@",NSLocalizedString(name, nil)] #define ICLocalized(name) [NSString stringWithFormat:@"%@",NSLocalizedString(name, nil)]
// 正常打印(包括方法名和代码所在的行数) // 正常打印(包括方法名和代码所在的行数)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment