Prechádzať zdrojové kódy

Support axesTextColor and remove useless properties for AAChartModel

An An 5 rokov pred
rodič
commit
177e68e61b

+ 1 - 0
.idea/modules.xml

@@ -3,6 +3,7 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/AAChartCore-Kotlin.iml" filepath="$PROJECT_DIR$/AAChartCore-Kotlin.iml" />
+      <module fileurl="file://$PROJECT_DIR$/app/AAChartCore-Kotlin.app.iml" filepath="$PROJECT_DIR$/app/AAChartCore-Kotlin.app.iml" />
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
     </modules>
   </component>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 31 - 0
app/AAChartCore-Kotlin.app.iml


+ 59 - 57
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAChartConfiger/AAChartModel.kt

@@ -103,7 +103,7 @@ enum class AAChartSymbolType(val value: String) {
     Square         ("square"),
     Diamond        ("diamond"),
     Triangle       ("triangle"),
-    TriangleDown  ("triangle-down"),
+    TriangleDown   ("triangle-down"),
 }
 
 enum class AAChartSymbolStyleType(val value: String) {
@@ -145,22 +145,23 @@ enum class AAChartLineDashSyleType(val value: String) {
 
 class AAChartModel {
 
-    var animationType: String? = null         //动画类型
-    var animationDuration: Int? = null        //动画时间
-    var title: String? = null                 //标题内容
-    var titleFontColor: String? = null        //标题字体颜色
-    var titleFontSize: Float? = null          //标题字体大小
-    var titleFontWeight: String? = null       //标题字体粗细
-    var subtitle: String? = null              //副标题内容
+    var animationType: String? = null          //动画类型
+    var animationDuration: Int? = null         //动画时间
+    var title: String? = null                  //标题内容
+    var titleFontColor: String? = null         //标题字体颜色
+    var titleFontSize: Float? = null           //标题字体大小
+    var titleFontWeight: String? = null        //标题字体粗细
+    var subtitle: String? = null               //副标题内容
     var subtitleAlign: String? = null
-    var subtitleFontColor: String? = null     //副标题字体颜色
-    var subtitleFontSize: Float? = null       //副标题字体大小
-    var subtitleFontWeight: String? = null    //副标题字体粗细
-    var chartType: String? = null             //图表类型
-    var stacking: String? = null              //堆积样式
-    var markerSymbol: String? = null          //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
+    var subtitleFontColor: String? = null      //副标题字体颜色
+    var subtitleFontSize: Float? = null        //副标题字体大小
+    var subtitleFontWeight: String? = null     //副标题字体粗细
+    var axesTextColor: String? = null          //x 轴和 y 轴文字颜色
+    var chartType: String? = null              //图表类型
+    var stacking: String? = null               //堆积样式
+    var markerSymbol: String? = null           //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
     var markerSymbolStyle: String? = null
-    var zoomType: String? = null              //缩放类型 AAChartZoomTypeX表示可沿着 x 轴进行手势缩放
+    var zoomType: String? = null               //缩放类型 AAChartZoomTypeX表示可沿着 x 轴进行手势缩放
     var pointHollow: Boolean? = null           //折线或者曲线的连接点是否为空心的
     var inverted: Boolean? = null              //x 轴是否翻转(垂直)
     var xAxisReversed: Boolean? = null         //x 轴翻转
@@ -172,13 +173,13 @@ class AAChartModel {
     var polar: Boolean? = null                 //是否极化图形(变为雷达图)
     var marginLeft: Float? = null
     var marginRight: Float? = null
-    var dataLabelsEnabled: Boolean? = null      //是否显示数据
+    var dataLabelsEnabled: Boolean? = null     //是否显示数据
     var dataLabelsFontColor: String? = null
     var dataLabelsFontSize: Float? = null
     var dataLabelsFontWeight: String? = null
     var xAxisLabelsEnabled: Boolean? = null    //x轴是否显示数据
     var xAxisTickInterval: Int? = null
-    var categories: Array<String>? = null            //x轴是否显示数据
+    var categories: Array<String>? = null      //x轴是否显示数据
     var xAxisGridLineWidth: Float? = null      //x轴网格线的宽度
     var xAxisVisible: Boolean? = null          //x 轴是否显示
     var yAxisVisible: Boolean? = null          //y 轴是否显示
@@ -189,15 +190,12 @@ class AAChartModel {
     var yAxisMax: Float? = null
     var yAxisAllowDecimals: Boolean? = null
     var yAxisGridLineWidth: Float? = null      //y轴网格线的宽度
-    var colorsTheme: Array<Any>? = null           //图表主题颜色数组
+    var colorsTheme: Array<Any>? = null        //图表主题颜色数组
     var legendEnabled: Boolean? = null         //是否显示图例
     var backgroundColor: Any ? = null          //图表背景色
     var borderRadius: Float? = null            //柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效)
     var markerRadius: Float? = null            //折线连接点的半径长度
     var series: Array<AASeriesElement>? = null
-    var titleColor: String? = null             //标题颜色
-    var subTitleColor: String? = null          //副标题颜色
-    var axisColor: String? = null              //x 轴和 y 轴文字颜色
     var touchEventEnabled: Boolean? = null     //是否支持用户触摸事件
 
 
@@ -256,6 +254,11 @@ class AAChartModel {
         return this
     }
 
+    fun axesTextColor(prop: String): AAChartModel {
+        axesTextColor = prop
+        return this
+    }
+
     fun chartType(prop: AAChartType): AAChartModel {
         chartType = prop.value
         return this
@@ -453,42 +456,41 @@ class AAChartModel {
     }
 
      init {
-        chartType = AAChartType.Line.value
-        animationDuration = 500//以毫秒为单位
-        animationType = AAChartAnimationType.Linear.value
-        pointHollow = false
-        inverted = false
-        stacking = AAChartStackingType.False.value
-        xAxisReversed = false
-        yAxisReversed = false
-        zoomType = "x"
-        dataLabelsEnabled = false
-        markerSymbolStyle = AAChartSymbolStyleType.Normal.value
-        //        colorsTheme = new String[]{"#b5282a","#e7a701","#50c18d","#fd4800","#f1c6c5"};
-        colorsTheme = arrayOf("#fe117c", "#ffc069", "#06caf4", "#7dffc0")//默认的颜色数组(必须要添加默认数组,否则就会出错)
-        tooltipCrosshairs = true
-        gradientColorEnable = false
-        polar = false
-        xAxisLabelsEnabled = true
-        xAxisGridLineWidth = 0f
-        yAxisLabelsEnabled = true
-        yAxisGridLineWidth = 1f
-        legendEnabled = true
-        backgroundColor = "#ffffff"
-        borderRadius = 0f//柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效,设置为1000时,柱形图或者条形图头部为楔形)
-        markerRadius = 6f//折线连接点的半径长度,如果值设置为0,这样就相当于不显示了
-        touchEventEnabled = true
-        titleFontColor = "#000000"//标题字体颜色为黑色
-        titleFontWeight = "regular"//常规字体
-        titleFontSize = 11f
-        subtitleFontColor = "#000000"//副标题字体颜色为黑色
-        subtitleFontWeight = "regular"//常规字体
-        subtitleFontSize = 9f
-        dataLabelsFontColor = "#000000"//数据标签默认颜色为黑色
-        dataLabelsFontWeight = "bold"//图表的数据字体为粗体
-        dataLabelsFontSize = 10f
-
-    }
+         chartType            = AAChartType.Line.value
+         animationDuration    = 500 //以毫秒为单位
+         animationType        = AAChartAnimationType.Linear.value
+         pointHollow          = false
+         inverted             = false
+         stacking             = AAChartStackingType.False.value
+         xAxisReversed        = false
+         yAxisReversed        = false
+         zoomType             = "x"
+         dataLabelsEnabled    = false
+         markerSymbolStyle    = AAChartSymbolStyleType.Normal.value
+         colorsTheme          = arrayOf("#fe117c", "#ffc069", "#06caf4", "#7dffc0")
+         tooltipCrosshairs    = true
+         gradientColorEnable  = false
+         polar                = false
+         xAxisLabelsEnabled   = true
+         xAxisGridLineWidth   = 0f
+         yAxisLabelsEnabled   = true
+         yAxisGridLineWidth   = 1f
+         legendEnabled        = true
+         backgroundColor      = "#ffffff"
+         borderRadius         = 0f//柱状图长条图头部圆角半径(可用于设置头部的形状,仅对条形图,柱状图有效,设置为1000时,柱形图或者条形图头部为楔形)
+         markerRadius         = 6f//折线连接点的半径长度,如果值设置为0,这样就相当于不显示了
+         touchEventEnabled    = true
+         titleFontColor       = "#000000" //标题字体颜色为黑色
+         titleFontWeight      = "regular" //常规字体
+         titleFontSize        = 11f
+         subtitleFontColor    = "#000000" //副标题字体颜色为黑色
+         subtitleFontWeight   = "regular" //常规字体
+         subtitleFontSize     = 9f
+         dataLabelsFontColor  = "#000000" //数据标签默认颜色为黑色
+         dataLabelsFontWeight = "bold" //图表的数据字体为粗体
+         dataLabelsFontSize   = 10f
+
+     }
 
 
 }

+ 86 - 61
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAChartConfiger/AAOptionsConstructor.kt

@@ -42,41 +42,41 @@ object AAOptionsConstructor {
         aaChartModel:AAChartModel
     ):AAOptions {
         val aaChart = AAChart()
-            .type(aaChartModel.chartType)//绘图类型
-            .inverted(aaChartModel.inverted)//设置是否反转坐标轴,使X轴垂直,Y轴水平。 如果值为 true,则 x 轴默认是 倒置 的。 如果图表中出现条形图系列,则会自动反转
-            .backgroundColor(aaChartModel.backgroundColor)//设置图表的背景色(包含透明度的设置)
-            .pinchType(aaChartModel.zoomType)//设置手势缩放方向
-            .panning(true)//设置手势缩放后是否可平移
-            .polar(aaChartModel.polar)//是否极化图表(开启极坐标模式)
-            .marginLeft(aaChartModel.marginLeft)//图表左边距
-            .marginRight(aaChartModel.marginRight)//图表右边距
+            .type(aaChartModel.chartType) //绘图类型
+            .inverted(aaChartModel.inverted) //设置是否反转坐标轴,使X轴垂直,Y轴水平。 如果值为 true,则 x 轴默认是 倒置 的。 如果图表中出现条形图系列,则会自动反转
+            .backgroundColor(aaChartModel.backgroundColor) //设置图表的背景色(包含透明度的设置)
+            .pinchType(aaChartModel.zoomType) //设置手势缩放方向
+            .panning(true) //设置手势缩放后是否可平移
+            .polar(aaChartModel.polar) //是否极化图表(开启极坐标模式)
+            .marginLeft(aaChartModel.marginLeft) //图表左边距
+            .marginRight(aaChartModel.marginRight) //图表右边距
 
         val aaTitle = AATitle()
-            .text(aaChartModel.title)//标题文本内容
+            .text(aaChartModel.title) //标题文本内容
             .style(AAStyle()
-                .color(aaChartModel.titleFontColor)//Title font color
-                .fontSize(aaChartModel.titleFontSize)//Title font size
-                .fontWeight(aaChartModel.titleFontWeight)//Title font weight
+                .color(aaChartModel.titleFontColor) //Title font color
+                .fontSize(aaChartModel.titleFontSize) //Title font size
+                .fontWeight(aaChartModel.titleFontWeight) //Title font weight
             )
 
         val aaSubtitle = AASubtitle()
-            .text(aaChartModel.subtitle)//副标题内容
-            .align(aaChartModel.subtitleAlign)//图表副标题文本水平对齐方式。可选的值有 “left”,”center“和“right”。 默认是:center.
+            .text(aaChartModel.subtitle) //副标题内容
+            .align(aaChartModel.subtitleAlign) //图表副标题文本水平对齐方式。可选的值有 “left”,”center“和“right”。 默认是:center.
             .style(AAStyle()
-                .color(aaChartModel.subtitleFontColor)//Subtitle font color
-                .fontSize(aaChartModel.subtitleFontSize)//Subtitle font size
-                .fontWeight(aaChartModel.subtitleFontWeight)//Subtitle font weight
+                .color(aaChartModel.subtitleFontColor) //Subtitle font color
+                .fontSize(aaChartModel.subtitleFontSize) //Subtitle font size
+                .fontWeight(aaChartModel.subtitleFontWeight) //Subtitle font weight
             )
 
         val aaTooltip = AATooltip()
-            .enabled(aaChartModel.tooltipEnabled)//启用浮动提示框
-            .shared(true)//多组数据共享一个浮动提示框
-            .crosshairs(true)//启用准星线
-            .valueSuffix(aaChartModel.tooltipValueSuffix)//浮动提示框的单位名称后缀
+            .enabled(aaChartModel.tooltipEnabled) //启用浮动提示框
+            .shared(true) //多组数据共享一个浮动提示框
+            .crosshairs(true) //启用准星线
+            .valueSuffix(aaChartModel.tooltipValueSuffix) //浮动提示框的单位名称后缀
 
         val aaPlotOptions = AAPlotOptions()
             .series(AASeries()
-                .stacking(aaChartModel.stacking)//设置是否百分比堆叠显示图形
+                .stacking(aaChartModel.stacking) //设置是否百分比堆叠显示图形
             )
 
         if (aaChartModel.animationType != AAChartAnimationType.Linear.value) {
@@ -91,7 +91,11 @@ object AAOptionsConstructor {
         configureAAPlotOptionsDataLabels(aaPlotOptions, aaChartModel)
 
         val aaLegend = AALegend()
-            .enabled(aaChartModel.legendEnabled)//是否显示 legend
+            .enabled(aaChartModel.legendEnabled) //是否显示 legend
+            .itemStyle(
+                AAItemStyle()
+                    .color(aaChartModel.axesTextColor)
+            )
 
         val aaOptions = AAOptions()
             .chart(aaChart)
@@ -101,17 +105,18 @@ object AAOptionsConstructor {
             .plotOptions(aaPlotOptions)
             .legend(aaLegend)
             .series(aaChartModel.series)
-            .colors(aaChartModel.colorsTheme)//设置颜色主题
-            .touchEventEnabled(aaChartModel.touchEventEnabled)//是否支持点击事件
+            .colors(aaChartModel.colorsTheme) //设置颜色主题
+            .touchEventEnabled(aaChartModel.touchEventEnabled) //是否支持点击事件
 
         configureAxisContentAndStyle(aaOptions, aaChartModel)
 
         return aaOptions
     }
 
-    private fun configureAAPlotOptionsMarkerStyle(aaChartModel: AAChartModel,
-                                                  aaPlotOptions: AAPlotOptions
-    ): AAPlotOptions {
+    private fun configureAAPlotOptionsMarkerStyle(
+        aaChartModel: AAChartModel,
+        aaPlotOptions: AAPlotOptions
+    ) {
         val chartType = aaChartModel.chartType
         //数据点标记相关配置,只有线性图(折线图、曲线图、折线区域填充图、曲线区域填充图,散点图)才有数据点标记
         if (chartType == AAChartType.Area.value
@@ -120,12 +125,12 @@ object AAOptionsConstructor {
             || chartType == AAChartType.Spline.value
             || chartType == AAChartType.Scatter.value) {
             val aaMarker = AAMarker()
-                .radius(aaChartModel.markerRadius)//曲线连接点半径,默认是4
-                .symbol(aaChartModel.markerSymbol)//曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
+                .radius(aaChartModel.markerRadius) //曲线连接点半径,默认是4
+                .symbol(aaChartModel.markerSymbol) //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
             if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.InnerBlank.value) {
-                aaMarker.fillColor("#ffffff")//点的填充色(用来设置折线连接点的填充色)
-                    .lineWidth(2f)//外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
-                    .lineColor("")//外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)
+                aaMarker.fillColor("#ffffff") //点的填充色(用来设置折线连接点的填充色)
+                    .lineWidth(2f) //外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
+                    .lineColor("") //外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)
             } else if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.BorderBlank.value) {
                 aaMarker.lineWidth(2f)
                     .lineColor(aaChartModel.backgroundColor)
@@ -133,15 +138,13 @@ object AAOptionsConstructor {
             val aaSeries = aaPlotOptions.series
             aaSeries?.marker(aaMarker)
         }
-        return aaPlotOptions
     }
 
 
     private fun configureAAPlotOptionsDataLabels(
         aaPlotOptions: AAPlotOptions,
         aaChartModel: AAChartModel
-    ): AAPlotOptions {
-
+    ) {
         val chartType = aaChartModel.chartType
 
         var aaDataLabels = AADataLabels()
@@ -194,8 +197,8 @@ object AAOptionsConstructor {
             }
             AAChartType.Columnrange.value -> {
                 val aaColumnrange = AAColumnrange()
-                    .borderRadius(0f)//The color of the border surrounding each column or bar
-                    .borderWidth(0f)//The corner radius of the border surrounding each column or bar. default:0
+                    .borderRadius(0f) //The color of the border surrounding each column or bar
+                    .borderWidth(0f) //The corner radius of the border surrounding each column or bar. default:0
                     .dataLabels(aaDataLabels)
                 aaPlotOptions.columnrange(aaColumnrange)
             }
@@ -205,42 +208,64 @@ object AAOptionsConstructor {
                 aaPlotOptions.arearange(aaArearange)
             }
         }
-        return aaPlotOptions
     }
 
 
-    private fun configureAxisContentAndStyle(aaOptions: AAOptions,
-                                             aaChartModel: AAChartModel) {
-        if (aaChartModel.chartType != AAChartType.Pie.value
-            && aaChartModel.chartType != AAChartType.Pyramid.value
-            && aaChartModel.chartType != AAChartType.Funnel.value) {
-            val aaXAxis = AAXAxis()
-                .labels(AALabels()
-                    .enabled(aaChartModel.xAxisLabelsEnabled)//设置 x 轴是否显示文字
+    private fun configureAxisContentAndStyle(
+        aaOptions: AAOptions,
+        aaChartModel: AAChartModel
+    ) {
+        val chartType = aaChartModel.chartType
+        //x 轴和 Y 轴的相关配置,扇形图、金字塔图和漏斗图则不需要设置 X 轴和 Y 轴的相关内容
+        if (   chartType != AAChartType.Pie.value
+            && chartType != AAChartType.Pyramid.value
+            && chartType != AAChartType.Funnel.value) {
+            val aaXAxisLabelsEnabled = aaChartModel.xAxisLabelsEnabled
+            val aaXAxisLabels = AALabels()
+                .enabled(aaXAxisLabelsEnabled) //设置 x 轴是否显示文字
+            if (aaXAxisLabelsEnabled!!) {
+                aaXAxisLabels.style(
+                    AAStyle()
+                        .color(aaChartModel.axesTextColor)
                 )
+            }
+
+            val aaXAxis = AAXAxis()
+                .labels(aaXAxisLabels) //设置 x 轴是否显示文字
                 .reversed(aaChartModel.xAxisReversed)
-                .gridLineWidth(aaChartModel.xAxisGridLineWidth)//x轴网格线宽度
+                .gridLineWidth(aaChartModel.xAxisGridLineWidth) //x轴网格线宽度
                 .categories(aaChartModel.categories)
-                .visible(aaChartModel.xAxisVisible)//x轴是否可见
+                .visible(aaChartModel.xAxisVisible) //x轴是否可见
                 .tickInterval(aaChartModel.xAxisTickInterval) //x轴坐标点间隔数
 
+            val aaYAxisLabelsEnabled = aaChartModel.yAxisLabelsEnabled
+            val aaYAxisLabels = AALabels()
+                .enabled(aaChartModel.yAxisLabelsEnabled)
+            if (aaYAxisLabelsEnabled!!) {
+                aaYAxisLabels.style(
+                    AAStyle()
+                        .color(aaChartModel.axesTextColor)
+                )
+            }
 
             val aaYAxis = AAYAxis()
-                .labels(AALabels()
-                    .enabled(aaChartModel.yAxisLabelsEnabled)
-                )//设置 y 轴是否显示数字
-                .min(aaChartModel.yAxisMin)//设置 y 轴最小值,最小值等于零就不能显示负值了
-                .max(aaChartModel.yAxisMax)//y轴最大值
-                .allowDecimals(aaChartModel.yAxisAllowDecimals)//是否允许显示小数
+                .labels(aaYAxisLabels) //设置 y 轴是否显示数字
+                .min(aaChartModel.yAxisMin) //设置 y 轴最小值,最小值等于零就不能显示负值了
+                .max(aaChartModel.yAxisMax) //y轴最大值
+                .allowDecimals(aaChartModel.yAxisAllowDecimals) //是否允许显示小数
                 .reversed(aaChartModel.yAxisReversed)
-                .gridLineWidth(aaChartModel.yAxisGridLineWidth)//y轴网格线宽度
-                .title(AATitle()
-                    .text(aaChartModel.yAxisTitle)
-                )//y 轴标题
-                .lineWidth(aaChartModel.yAxisLineWidth)//设置 y轴轴线的宽度,为0即是隐藏 y轴轴线
+                .gridLineWidth(aaChartModel.yAxisGridLineWidth) //y轴网格线宽度
+                .title(
+                    AATitle()
+                        .text(aaChartModel.yAxisTitle)
+                        .style(
+                            AAStyle()
+                                .color(aaChartModel.axesTextColor)
+                        )
+                ) //y 轴标题
+                .lineWidth(aaChartModel.yAxisLineWidth) //设置 y轴轴线的宽度,为0即是隐藏 y轴轴线
                 .visible(aaChartModel.yAxisVisible)
 
-
             aaOptions.xAxis(aaXAxis)
                 .yAxis(aaYAxis)
         }

+ 6 - 6
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AALegend.kt

@@ -86,28 +86,28 @@ class AAItemStyle {
     private var fontWeight: String? = null
 
 
-    fun color(prop: String): AAItemStyle {
-        this.color = prop
+    fun color(prop: String?): AAItemStyle {
+        color = prop
         return this
     }
 
     fun cursor(prop: String): AAItemStyle {
-        this.cursor = prop
+        cursor = prop
         return this
     }
 
     fun pointer(prop: String): AAItemStyle {
-        this.pointer = prop
+        pointer = prop
         return this
     }
 
     fun fontSize(prop: Float?): AAItemStyle {
-        this.fontSize = prop!!.toString() + "px"
+        fontSize = prop!!.toString() + "px"
         return this
     }
 
     fun fontWeight(prop: String): AAItemStyle {
-        this.fontWeight = prop
+        fontWeight = prop
         return this
     }
 }

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov