Как привязать ряды к определенной оси в диаграмме kendoUI-mvc? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть метод контроллера, который возвращает данные для отображения на графике kendo-mvc. Количество серий, которые я хочу показать, определяется на стороне сервера. Я хочу показать несколько графиков на графике, что мне удалось, но чего я не могу сделать, так это привязать определенные серии к определенной оси. Например: у меня есть 3 ряда со значениями во времени: температура 1 и температура 2, которые должны быть привязаны к левой вертикальной оси, которая показывает значение температуры, и ряд давления, который показывает значение на правой вертикальной оси давления. Ниже мой код, который показывает серии, но без привязки к конкретным осям. Серии всегда привязаны к первым осям.

На самом деле мне удалось сделать это с помощью модели представления на уровне представления, но при использовании источника данных, как в следующем примере, мне не удалось выполнить требуемое. Для меня было бы наиболее логичным, если бы метод Line () имел бы аргумент оси рядом с категорией и значением, но это не так.

@(Html.Kendo().Chart<Novolyze.VOD.WebUI.Models.SeriesValue<object, DateTime>>()
                .Name("telemetryChart")
                .Title("")
                .Transitions(false)
                .DataSource(ds => ds.Read(read => read.Action("GetTelemetryTimeSeriesJson", "Equipment", new { equipmentId = Model.EquipmentId }))
                    .Group(g => g.Add(v => v.Series)))
                .Legend(legend => legend
                    .Position(ChartLegendPosition.Bottom))
                .Series(series =>
                {
                    series
                    .Line(value => value.Value, category => category.Category)
                    .Markers(false)
                    .Name("#:group.value#");
                })
                .CategoryAxis(axis => axis
                    .Date()
                    .BaseUnit(ChartAxisBaseUnit.Seconds)
                    .AxisCrossingValue(Model.ValueAxes.Select(x => x.AxisCrossingValue).ToArray())
                    .Labels(labels => labels
                        .Rotation("auto")
                        .Step(60))
                    .MajorGridLines(majorGridLines => majorGridLines
                        .Step(3600))
                )
                .ValueAxis(axis =>
                {
                    foreach (var valueAxis in Model.ValueAxes)
                    {
                        axis
                        .Numeric(valueAxis.Name)
                        .Labels(labels => labels
                            .Format("{0}" + " " + valueAxis.Unit));
                    }
                })
                .PersistSeriesVisibility(true)
            )
...