The current examples available online to implement an ImageBrowserController by extending EditorImageBrowserController do not work. Is there any documentation available for hooking this up for .NET Core?
Thank you.
Hello Telerik community,
In the application I'm building I am trying to implement the Telerik UI Editor. While the size and position of the editor itself is completely fine, I seem to get some problems when trying to open some of it's tools which are connected to dropdown sections. These happen when using the tools 'formatting' and also when accesing the three-dotted "more tools" button.
I found online that it could maybe be caused by the jQuery version I'm using, so I tried updating to jQuery 3.3.1, but without luck unfortunately.
I am only getting this problem with Internet Explorer 11. Chrome or even simulating IE 10 seem to work fine.
I'm using ASP.NET Core 2.1. jQuery version 3.3.1. Kendo UI for ASP.NET Core.
I tried the implementation of the demo given here: https://demos.telerik.com/aspnet-core/editor/index.
I have tried both turning 'Resizable' true or false.
I also read that the positioning is caused by the scrollbar, which is true for me. However I don't know how to solve this, since the solution was to upgrade jQuery.
For my lay-out I'm using CSS Grid in combination with Flexbox.
Here's the code snippet of the Telerik editor implementation.
@(Html.Kendo().Editor()
.Name("editor")
.HtmlAttributes(new {style = "height:440px", aria_label = "editor"})
.Resizable(resizable => resizable.Toolbar(true).Content(true))
.ImageBrowser(imageBrowser => imageBrowser
.Image("~/images/{0}")
.Read("Read", "ImageBrowser")
.Create("Create", "ImageBrowser")
.Destroy("Destroy", "ImageBrowser")
.Upload("Upload", "ImageBrowser")
)
.Value(@<
text
>
<
p
>
Kendo UI Editor allows your users to edit HTML in a familiar, user-friendly way.<
br
/>
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists,
and image handling. The widget <
strong
>outputs identical HTML</
strong
> across all major browsers, follows
accessibility standards and provides API for content manipulation.
</
p
>
<
p
>Features include:</
p
>
<
ul
>
<
li
>Text formatting & alignment</
li
>
<
li
>Bulleted and numbered lists</
li
>
<
li
>Hyperlink and image dialogs</
li
>
<
li
>Cross-browser support</
li
>
<
li
>Identical HTML output across browsers</
li
>
<
li
>Gracefully degrades to a <
code
>textarea</
code
> when JavaScript is turned off</
li
>
</
ul
>
<
p
>
Read <
a
href
=
"http://docs.telerik.com/kendo-ui"
>more details</
a
> or send us your
<
a
href
=
"http://www.telerik.com/forums"
>feedback</
a
>!
</
p
>
</
text
>)
)
Here are some screenshot of the problem:
Hi,
I have a async upload control as shown below. It's on a razor page. I also have a couple of dropdownlists. When my SaveTraitFiles function is called, I need the bound value of the dropdown's selected value in my function. Right now it's always zero because of the async on the upload. If I remove the asyc and just process uploaded files on a submit, I get the desired value from the dropdown's bound property. Is there some magic sauce that I need to pour on this to get the async upload to get receive bound values of other controls?
Thanks ... Ed
@(Html.Kendo().Upload()
.Name("traitFiles")
.Async(a => a
.SaveUrl("/Admin/UploadCertFiles?handler=SaveTraitFiles")
.RemoveUrl("/Admin/UploadCertFiles?handler=RemoveTraitFiles")
.AutoUpload(true))
.Validation(v => v.AllowedExtensions(new string[] { ".pdf", ".jpg" }))
)
NetCore 3.0.0-preview3-27503-5
Telerik.UI.for.AspNet.Core Nuget package v2019.1.412-internal
Visual Studio 2019 v16.0.1
I have a view with multiple line charts, bar charts and pie charts. I have a view model that contains the data for each graph as well as labels and colours. I am using DataSource read and passing an extra parameter which is a date from a kendo date picker control. The controller function is correctly called and the view model populated and returned. I can see from the visual studio output window that there are no errors and using the Network tab in Chrome developer tools the data is correctly returned with a status 200. However when i change the date to a month where i have no data the graph is refreshed once when the date picker is closed and once again when i think it should be populated with the updated view model returned from the read. However the graph shows the previous data. Again using the Network tab I can see that the data is nulls as expected. I have included my code below. Looking at the examples, mostly which are for the Grid control, they return a list from the controller function and use the ToDataSourceResult() function. I have tried return Json(new [] {vm}.ToDataSourceResult()); with no success. Could you explain where I am going wrong
The attached image shows the data returned for March but the partial graph still showing the data for April
<!-- view snippet -->
<div class="row">
<div class="col-12 col-sm-4 col-md-3 col-md-2">
<div id="month" class="k-content">
<h5 style="margin-top: 2em;">Select month:</h5>
@(Html.Kendo().DatePicker()
.Name("monthpicker")
.Start(CalendarView.Year)
.Depth(CalendarView.Year)
.Format("MMMM yyyy")
.Events(e => e.Change("monthpickerChange"))
.Max(DateTime.Now)
.Value(value)
.Footer(false)
.HtmlAttributes(new { style = "width: 100%", title = "monthpicker" })
)
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-12">
<div class="k-content wide">
@(Html.Kendo().Chart<CustomerSurveyViewModel>()
.Name("chartMonthlyRatings")
.Title($"Ratings for {DateTime.Now.ToString("MMMM, yyyy")}")
.Legend(legend => legend
.Position(ChartLegendPosition.Bottom)
)
.DataSource(datasource =>
{
datasource.Read(read =>
{
read.Action("GetRatingsForMonth", "Home").Data("getMonthDate");
});
})
.ChartArea(chartArea => chartArea
.Background("transparent")
)
.SeriesDefaults(seriesDefaults =>
seriesDefaults.Line().Style(ChartLineStyle.Smooth)
)
.Series(series =>
{
series.Line(Model.MonthRatings1).Name(Model.Names[0]);
series.Line(Model.MonthRatings2).Name(Model.Names[1]);
series.Line(Model.MonthRatings3).Name(Model.Names[2]);
series.Line(Model.MonthRatings4).Name(Model.Names[3]);
series.Line(Model.MonthRatings5).Name(Model.Names[4]);
})
.SeriesColors(Model.Colours.ToArray<string>())
.CategoryAxis(axis => axis
.Categories("01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
"31")
.MajorGridLines(lines => lines.Visible(false))
)
.ValueAxis(axis => axis
.Numeric().Labels(labels => labels.Format("{0}"))
.Line(line => line.Visible(false))
.AxisCrossingValue(0)
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Format("{0}")
)
)
</div>
</div>
</div>
[HttpPost]
public async Task<IActionResult> GetRatingsForMonth(DateTime dateSelected)
{
int daysInMonth = DateTime.DaysInMonth(dateSelected.Year, dateSelected.Month);
var existingEntries = await firebaseClient.Child("CustomerSurveys")
.OrderByKey()
.OnceAsync<CustomerSurvey>();
var data = existingEntries.Where(x => (x.Object.TimeStamp.Month == dateSelected.Month &&
x.Object.TimeStamp.Year == dateSelected.Year))
.Select(x => x.Object);
CustomerSurveyViewModel vm = new CustomerSurveyViewModel();
for (int i = 1; i <= daysInMonth; i++)
{
var count = data.Where(x => (x.Rating == 1 && (int)x.TimeStamp.Day == i)).Select(x => x).Count();
if (count > 0)
vm.MonthRatings1.Add(count);
else
vm.MonthRatings1.Add(null);
}
for (int i = 1; i <= daysInMonth; i++)
{
var count = data.Where(x => (x.Rating == 2 && (int)x.TimeStamp.Day == i)).Select(x => x).Count();
if (count > 0)
vm.MonthRatings2.Add(count);
else
vm.MonthRatings2.Add(null);
}
for (int i = 1; i <= daysInMonth; i++)
{
var count = data.Where(x => (x.Rating == 3 && (int)x.TimeStamp.Day == i)).Select(x => x).Count();
if (count > 0)
vm.MonthRatings3.Add(count);
else
vm.MonthRatings3.Add(null);
}
for (int i = 1; i <= daysInMonth; i++)
{
var count = data.Where(x => (x.Rating == 4 && (int)x.TimeStamp.Day == i)).Select(x => x).Count();
if (count > 0)
vm.MonthRatings4.Add(count);
else
vm.MonthRatings4.Add(null);
}
for (int i = 1; i <= daysInMonth; i++)
{
var count = data.Where(x => (x.Rating == 5 && (int)x.TimeStamp.Day == i)).Select(x => x).Count();
if (count > 0)
vm.MonthRatings5.Add(count);
else
vm.MonthRatings5.Add(null);
}
return Json(vm);
}
// View Model
public class CustomerSurveyViewModel
{
public List<int> BeginningOfTime { get; set; } = new List<int>();
public List<int?> ThisWeeksRatings1 { get; set; } = new List<int?>();
public List<int?> ThisWeeksRatings2 { get; set; } = new List<int?>();
public List<int?> ThisWeeksRatings3 { get; set; } = new List<int?>();
public List<int?> ThisWeeksRatings4 { get; set; } = new List<int?>();
public List<int?> ThisWeeksRatings5 { get; set; } = new List<int?>();
public List<int?> LastWeeksRatings1 { get; set; } = new List<int?>();
public List<int?> LastWeeksRatings2 { get; set; } = new List<int?>();
public List<int?> LastWeeksRatings3 { get; set; } = new List<int?>();
public List<int?> LastWeeksRatings4 { get; set; } = new List<int?>();
public List<int?> LastWeeksRatings5 { get; set; } = new List<int?>();
public List<int?> DateRatings1 { get; set; } = new List<int?>();
public List<int?> DateRatings2 { get; set; } = new List<int?>();
public List<int?> DateRatings3 { get; set; } = new List<int?>();
public List<int?> DateRatings4 { get; set; } = new List<int?>();
public List<int?> DateRatings5 { get; set; } = new List<int?>();
public List<int?> MonthRatings1 { get; set; } = new List<int?>();
public List<int?> MonthRatings2 { get; set; } = new List<int?>();
public List<int?> MonthRatings3 { get; set; } = new List<int?>();
public List<int?> MonthRatings4 { get; set; } = new List<int?>();
public List<int?> MonthRatings5 { get; set; } = new List<int?>();
public List<int?> YearRatings1 { get; set; } = new List<int?>();
public List<int?> YearRatings2 { get; set; } = new List<int?>();
public List<int?> YearRatings3 { get; set; } = new List<int?>();
public List<int?> YearRatings4 { get; set; } = new List<int?>();
public List<int?> YearRatings5 { get; set; } = new List<int?>();
public List<string> Categories { get; set; } = new List<string>();
// colours
public List<string> Colours { get; set; } = new List<string>();
// names
public List<string> Names { get; set; } = new List<string>();
public CustomerSurveyViewModel()
{
Colours.Add("#E21E2B");
Colours.Add("#F4572E");
Colours.Add("#FCB040");
Colours.Add("#91CA61");
Colours.Add("#3DB449");
Names.Add("Extremely Disatisfied");
Names.Add("Not Happy");
Names.Add("Neutral");
Names.Add("Happy");
Names.Add("Very Happy");
}
}
function monthpickerChange(e) {
var date = this.value();
var chart = $("#chartMonthlyRatings").data("kendoChart");
chart.setOptions({
title: {
text: "Ratings for " + moment(date).format("MMMM, YYYY")
}
});
chart.dataSource.read();
chart.dataSource.refresh(); // not sure if i need refresh or if read is enough
}
function getMonthDate() {
var datepicker = $("#monthpicker").data("kendoDatePicker");
var date = datepicker.value();
return { dateSelected: date.toISOString() };
}
when moving the mouse above the datapoint of the chart,the tooltip will be display in the right or up position,
and then if moving mouse to the right or up,if the mouse is above the tooltip area,
the mouse can't perceivel the next datapoint of chart,unless the mouse leave the tooltip area.
if the tooltip area don't effect the mouse check the other datapoint,so that switch to the other tooltip info,
it will be better.
I know this has been asked before and referenced in regard to jquery (https://www.telerik.com/forums/different-color-for-each-bar-in-bar-chart-for-a-single-series-) as well as others but I can't seem to figure out how to do it in Core. I have a simple Column chart from bound sql datasource. Is it possible to set the category columns to different colors? Note that the number of categories is variable.
Here is my controller action:
public ActionResult AttributeSummary_Read(int? id)
{
{
var assessmentId = new SqlParameter("@assessmentId", id);
var data = _context.Reports.FromSql("rpt_AttributeSummaryBySite @assessmentId", assessmentId).AsNoTracking().ToList();
List<
Report_AttributeSummaryVM
> AttributeSummaryList = data.Select(x => new Report_AttributeSummaryVM
{
AttributeName = x.AttributeName,
SumAssessmentValue = x.SumAssessmentValue,
AssessmentYear = x.AssessmentYear
}).ToList();
return Json(AttributeSummaryList);
}
As an example with 3 categories, my stored proc produces this data:
OutcomeName | AssessmentYear | AvgOutcomeValue
Best Practices in Ministry 2019 5.16
Leadership Development 2019 6
Strategic Alignment of Ministries 2019 4.59
Here is the Razor View
<
div
class
=
"container w-75"
>
<
div
class
=
"demo-section k-content wide"
>
@(Html.Kendo().Chart<
ICPCore.Models.Reports
>()
.Name("chartOutcomeSummary")
.Title("Outcomes Summary by Site")
.Legend(legend => legend
.Position(ChartLegendPosition.Top)
)
.DataSource(ds => ds.Read(read => read.Action("OutcomeAreaSummary_Read", "Reports").Data("curId")))
.Series(series =>
{
series.Column(model => model.AvgOutcomeValue).Name("AvgOutcomeValue").CategoryField("OutcomeName");
})
.CategoryAxis(axis => axis
.Categories(model=>model.OutcomeName)
.Labels(labels => labels.Rotation(0))
.MajorGridLines(lines => lines.Visible(false))
)
.ValueAxis(axis => axis.Numeric()
.Labels(labels => labels.Format("{0:N0}"))
.MajorUnit(1)
.Max(10)
.Min(1)
.Line(line => line.Visible(false))
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Format("{0:N0}")
)
.AutoBind(true)
)
</
div
>
</
div
>
Hello,
I would like use kendo asp.net core on Rider installed on Ubuntu.
is possible ? if no, a version is planned ?
Thanks for answer
Using this link: https://docs.telerik.com/aspnet-mvc/helpers/chart/how-to/create-dynamic-series#create-view-model-bound-dynamic-series
I managed to get a working chart with multiple series, but I can't get the category names at the same time. From the link it appears that I should be able to provide an IEnumerable (or something?) to give the list of category names (see the commented part in the code I provide below) but when I do this I just get [object] as the result. The data type is a List<string>.
@(Html.Kendo().Chart(Model.ApplicationStepsByDayResults.ValuesForLineChart)
.Name("applicationStepsByDay")
.Legend(legend => legend.Visible(true))
.SeriesDefaults(seriesDefaults =>
seriesDefaults.Line().Style(ChartLineStyle.Smooth)
)
.CategoryAxis(axis => axis
.Categories(Model.ApplicationStepsByDayResults.CategoryNames) // <- from example looks like I can add names here
.MajorGridLines(lines => lines.Visible(false))
)
.Series(series =>
{
foreach(var s in Model.ApplicationStepsByDayResults.ValuesForLineChart)
{
series.Line(s.Points).Name(s.Name);
}
})
.ValueAxis(axis => axis.Numeric()
.Labels(labels => labels.Format("{0}"))
.Line(lines => lines.Visible(false))
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Shared(true)
.Format("{0}")
)
)
I am not sure how to use the .Categories(a => a.Categories.... to insert the category names when they are dynamic.
As a side note I can get the category names to appear is I create a field for it for each series point and use the .CategoryField(xxx) function when setting up the series but then I lose the data points.
One last question, I would love to be able to see the docs for these functions. Visual studio indicates there are overloads but the UI does not provide them and I can't find any docs on the telerik site. It would be easier to sort this out on my own if there was documentation for the MVC helper methods.
Thanks,
Brian
Is there anyway to force the text to wrap inside of a chart tool tip? I want to display a system message that is several lines long.
I cant add line break inside the template because i am only displaying one large message.
Placing it inside of a div with a defined width did not change anything.
See dataitem.SystemMessage-
<
kendo-chart
>
<
tooltip
template="<div
style
=
'word-wrap:break-word;width:auto;word-break:break-all;'
>#=dataItem.SystemMessage#</
div
>" visible="true">
</
tooltip
>
</
kendo-chart
>
Example:
https://dojo.telerik.com/umEGOBes/4