You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by GitBox <gi...@apache.org> on 2019/10/29 08:47:34 UTC

[GitHub] [incubator-echarts] Ovilia commented on a change in pull request #11479: fix(time): bar bandWidth with time axis #11145

Ovilia commented on a change in pull request #11479: fix(time): bar bandWidth with time axis #11145
URL: https://github.com/apache/incubator-echarts/pull/11479#discussion_r339948921
 
 

 ##########
 File path: src/layout/barGrid.js
 ##########
 @@ -87,16 +87,95 @@ export function prepareLayoutBarSeries(seriesType, ecModel) {
     return seriesModels;
 }
 
+
+/**
+ * Map from axis.index to min gap of two adjacent values.
+ * This works for time axes, value axes, and log axes.
+ * For a single time axis, return value is in the form like
+ * [[1000000]].
+ * The value of 1000000 is in milliseconds.
+ */
+function getValueAxesMinGaps(barSeries) {
+    /**
+     * Map from axis.index to values.
+     * For a single time axis, axisValues is in the form like
+     * [[1495555200000, 1495641600000, 1495728000000]].
+     * Items in axisValues[x], e.g. 1495555200000, are time values of all
+     * series.
+     */
+    var axisValues = [];
+    zrUtil.each(barSeries, function (seriesModel) {
+        var cartesian = seriesModel.coordinateSystem;
+        var baseAxis = cartesian.getBaseAxis();
+        if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {
+            return;
+        }
+
+        var data = seriesModel.getData();
+        var axisId = baseAxis.index;
+        for (var i = 0, cnt = data.count(); i < cnt; ++i) {
+            var value = data.get(baseAxis.dim, i);
+            if (!axisValues[axisId]) {
+                // No previous data for the axis
+                axisValues[axisId] = [value];
+            }
+            else {
+                // No value in previous series
+                axisValues[axisId].push(value);
+            }
+            // Ignore duplicated time values in the same axis
+        }
+    });
+
+    var axisMinGaps = [];
+    for (var i = 0; i < axisValues.length; ++i) {
+        if (axisValues[i]) {
+            // Sort axis values into ascending order to calculate gaps
+            axisValues[i].sort(function (a, b) {
+                return a - b;
+            });
+
+            var min = Number.MAX_VALUE;
+            for (var j = 1; j < axisValues[i].length; ++j) {
+                var delta = axisValues[i][j] - axisValues[i][j - 1];
+                if (delta > 0) {
+                    // Ignore 0 delta because they are of the same axis value
+                    min = Math.min(min, delta);
+                }
+            }
+            // Set to null if only have one data
+            axisMinGaps[i] = min === Number.MAX_VALUE ? null : min;
 
 Review comment:
   Using `axisValues[i].length <= 1` may not be correct because `axisValues[i]` may contain duplicate values. For example, if `axisValues[i]` is `[100, 100]`, it's the same as `[100]`.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org