Dear staff,
I am working extensively with Kendo UI Drawing API, specifically with drawDOM and exportPDF methods. I encountered a strange issue, which leads to the generation of corrupt PDF files.
After several attempts to analyze the problem, I found a small piece of code that allows to systematically reproduce the issue. You can find the code as attached.
Opening the example page with Chrome browser I got a corrupted PDF file, while Internet Explorer seems to generate a valid PDF file starting from the same source page.
Checking with an online PDF validator, the file generated by Chrome exploits this validation error:
“The content stream contains an invalid operator.
The operator has an invalid number of operands.”
I’m not skilled with PDF internals, but comparing the valid file of IE and the invalid file of Chrome, I noticed that an “infinite” value appears in the invalid PDF.
The row in the valid PDF is “1 0 0 -1 -9494.7900391 -9965.5996094 cm“, while the same row in the invalid PDF is “1 0 0 -1 Infinity Infinity cm”.
I noticed that the presence of an “Infinite” value is the common behavior whenever the corrupt PDF problem occurs.
Hello.
When I tried your framework, I found a lot of positive and useful components, but unfortunately in our conditions I can not fully use the components with virtualization, because they can not work without counting the number of records. I have a lot of data and any scrolling, page selection, components such as combobox, dropdownlist, pager, grid, etc., every time i have to count the total number, and the queries are complex, not just select * from. Performance drops immediately, imagine i'm scrolling through a combobox, where there are 6 million records, where on every page Iihave to do select count(*) from table .. join...join... where .... and add to that another 100 users that all scroll the same combobox, for example. It would be great to be able to simply load data page by page without counting the total, but remove invisible elements from the DOM if the number of pages loaded is greater than a certain number.
Some other commercial frameworks have similar things.
I would not like to look for other alternatives, because you have done a very good and high-quality work. Maybe there are workarounds to this problem?
I'm not just talking about the grid, such controls combobox, dropdown do not have the functionality of endless scrolling. I'd like to see something like
https://github.com/ElemeFE/vue-infinite-scroll
And you can find out when the interface should finish scrolling by an empty response from the server, when there is no more data.
Why not just scroll through the list, adding a portion of data without a total, if the next portion is empty, then finished.
You have even the library train sewn count number when calling ToDataSourceResult on IQueryable
https://github.com/kendo-labs/dlinq-helpers/blob/master/Kendo.DynamicLinq/QueryableExtensions.cs
Counting the number of rows on complex queries is a rather expensive operation.
I would very much like to see such functionality on your widgets
PS: I have already talked on this topic with your developers
Ticket details
Create a sample Export to PDF for multiple grids. You have sample code for multiple Grids to Excel, but not PDF. You have a nice sample of exporting two kendo charts and a grid, but I need to export a DIV with some panels/etc, then also about 4 grids. Similar to your example, but not sure about the jquery/Draw/Progress/Deferred code. Thanks
Since the "workbook.columns[0].width" exists when exporting to Excel AND that the mix of cell.colSpan and cell.wrap doesn't change the row height automatically when the text wrap (it only works when colSpan = 1) I'd like the ability to change the row height manually : rows[0].height = 50 Of course the best implementation for us would be the automatic row height calculation when text wrap with colSpan > 1. Thank you !
An error occurs on components' initialization when using a custom Kendo UI build which includes PDFviewer
<!DOCTYPE html>
<html>
<head>
<style>
html {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
}
</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.2.514/styles/kendo.default-v2.min.css" />
<script src="https://kendo.cdn.telerik.com/2019.2.514/js/jquery.min.js"></script>
<script src="./kendo.custom.min.js"></script>
</head>
<body>
<div id="example">
<div id="grid"></div>
<script>
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: {
type: "odata",
transport: {
read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Customers"
},
pageSize: 20
},
height: 550,
groupable: true,
sortable: true,
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5
},
columns: [{
template: "<div class='customer-name'>#: ContactName #</div>",
field: "ContactName",
title: "Contact Name",
width: 240
}, {
field: "ContactTitle",
title: "Contact Title"
}, {
field: "CompanyName",
title: "Company Name"
}, {
field: "Country",
width: 150
}]
});
});
</script>
</div>
</body>
</html>
A Grid should be initialized properly and without errors if a custom build is including the PDFviewer
Often, working with the Kendo events is difficult, because the events lack any kind of context. For example, the Change event should also pass back OldValue and NewValue, in case you need to do any additional comparative work on your own, without having to figure out how to get back to the DataItem and figure it out for yourself. Also, if you are handling a Grid row changed event, or cell changed event, at the very least you should be passing the Uid of the row that changed, so I can get it from the data source.
When a text with background color set is made bold and copy/pasted, the background color is not being preserved.
The issue can be reproduced on the following Dojo example.
Steps to reproduce:
A difference between kendo.culture.ar.min.js:
pattern: ["-n %","n %"],
and other Arabic cultures, e.g. kendo.culture.ar-AE.min.js:
pattern: ["-n%","n%"],
A space is present in between the %
symbol and the number and the position of the percent symbol differs.
Format consistency.
Bug report
Almost all formatting tools such as fontName, fontSize, backColor, foreColor, bold, italic, etc. do not change bullets in unnumbered lists and numbers in numbered lists. Please see the sample below:
Best regards,
Dmitry Kostochko
I would like there to be a simple input field that allows a datasource to be attached. This would support update database operations to be sent as JSON to the desired URL, much like grid or gantt do.
Seems a bit of an oversite that you don't have this on, given the width and breadth of your other controls.
We reaally need to use the overlay animation, our client is driving us nuts with it. They are showing us the examples in Jquery mobile panel (http://demos.jquerymobile.com/1.3.0/docs/widgets/panels/) and asking us why we are using Kendo if we cant deliver this animations. Please help us voting for this animatiosn.
...
_destroy:
function
() {
if
(
this
.resizing) {
this
.resizing.destroy();
}
if
(
this
.dragging) {
this
.dragging.destroy();
}
this
.wrapper.off(NS).children(KWINDOWCONTENT).off(NS).end().find(
'.k-resize-handle,.k-window-titlebar'
).off(NS);
$(window).off(
'resize'
+ NS +
this
._marker);
$(window).off(MODAL_NS);
$(window).off(NS);
clearTimeout(
this
._loadingIconTimeout);
Widget.fn.destroy.call(
this
);
this
.unbind(undefined);
kendo.destroy(
this
.wrapper);
this
._removeOverlay(
true
);
},
destroy:
function
() {
this
._destroy();
this
.wrapper.empty().remove();
this
.wrapper =
this
.appendTo =
this
.element = $();
},
...
...
destroy:
function
() {
var
that =
this
;
that._destroy();
Widget.fn.destroy.call(that);
that.wrapper.remove();
that.wrapper = that.element = $();
},
_destroy:
function
() {
var
that =
this
;
var
ns =
'.'
+ NS;
that.wrapper.off(ns);
that.element.off(ns);
that.wrapper.find(KICONCLOSE +
','
+ KBUTTONGROUP +
' > '
+ KBUTTON).off(ns);
that._stopCenterOnResize();
},
...
It would be nice to have a built in PDF viewer control in the Kendo UI and Kendo UI Mobile. Especially Mobile so we do not have to search the net for decent controls that may or may not work for the different devices.
In the Wizard to create or update an MVC project, and possibly other wizards, please add support for choosing which cultures that you want to include.
This could be done by adding checkboxes in a tree where you could at first level choose language and then expand and choose country/region, since the files follow the format:
<language code>-<country/region code>.
Most people probably only use English and/or their native language, so please make this a choice in the wizard.
As an example. In one of the latest versions of the framework, the folders for cultures and messages contain 1786 files in total. Out of those we only need 2, the ones for our native language.
Slowly installing and then manually deleting 1784 files in Visual Studio for every time you run the MVC wizards, is a complete waste of time for such a common scenario where you know whihc languages that the app should support.
Dear Telerik,
Please check this example. The single difference than the original one from the demos section, is that I deleted the tasksDataSource.schema.model.fields.parentId.defaultValue". Now the default value of the parentId will be 0 instead of null. If you try to add a new task, the logic will break because of inifinity loop caused by the new task with id=0 and parent=the same task(parentId=0).
I checked the documentation at https://docs.telerik.com/kendo-ui/api/javascript/data/ganttdatasource/configuration/schema and this obligation is missing. It is something small that can save an hour to someone else.
Best Regards, Boyan.
Does Kendo.Ooxml.Workbook have a setter for which sheet opens after the workbook is saved as an excel, similar to activeSheet in Kendo.spreadsheet?
(Note: using Kendo MVC ver 2017.3.913.545 - it's not on the list below)
https://demos.telerik.com/aspnet-mvc/spreadsheet/server-side-import-export
Saving large data to xlsx takes longer time to complete.
Evaluate optimizing the value setting and the usage of CellSelection.
Video: https://www.youtube.com/watch?v=8pnFjgzdaJ8&feature=youtu.be
1. Navigate to: https://dojo.telerik.com/@milena/uZaGuZol (open the dojo sample in edit mode, but not in FullScreen)
2. Scroll Grid to the last item.
3. Open for editing ProductName cell.
4. Open for editing Discontinued cell.
Result: 'Discontinued' cell of the second item will be opened for editing.
Expected: 'Discontinued' cell of the last item should be opened for editing.