My Gantt config is like this:
<
ganttdatasource
ref
=
"ganttdatasource1"
:transport-read
=
"ganttRead"
:transport-update
=
"ganttUpdate"
:transport-create
=
"ganttCreate"
:transport-destroy
=
"ganttDestroy"
:transport-parameter-map
=
"parameterMap"
:transport-submit
=
"ganttSubmit"
schema-model-id
=
"id"
:schema-model-fields
=
"fields"
>
</
ganttdatasource
>
<
ganttdependencydatasource
ref
=
"ganttdependencydatasource1"
:transport-read
=
"dependRead"
:transport-update
=
"dependUpdate"
:transport-create
=
"dependCreate"
:transport-destroy
=
"dependDestroy"
:transport-parameter-map
=
"parameterMap"
schema-model-id
=
"id"
:schema-model-fields
=
"dependencyFields"
>
</
ganttdependencydatasource
>
<
gantt
ref
=
"kendogantt"
id
=
"gantt"
:height
=
"500"
:editable-create
=
"true"
data-source-ref
=
"ganttdatasource1"
dependencies-data-source-ref
=
"ganttdependencydatasource1"
:assignments
=
"assignments"
:resources
=
"resources"
>
</
gantt
>
Then methods:
methods: {
dependRead: async
function
(options) {
console.log(
"dependRead!"
, options)
try
{
const links = await
this
.$axios.$get(................)
options.success(links)
}
catch
(ex) {
options.error(ex)
}
},
All works fine except that I get spurious calls to dependRead, in the console I see two or three logs for 'dependRead' every time the gantt loads.
If I remove the async/await code then I see only one call to dependRead as expected - so my question is, should I be using blocking or non-blocking handlers for this? async handlers are the correct approach by my thinking...
[Interestingly ganttRead uses exactly the same async mechanism but that is only ever called once]
I have some additional info that I want to capture when creating a new task for the Gantt eg. task owner, status etc. so obviously I will need a custom screen to capture the extra info, I was thinking along these lines:
- Have a custom 'add task button' & hide the built-in one
- The button will open my custom screen which mimics the builtin one, but with some additional fields
- On save, the screen directly updates that backend and then refresh the gantt
Is this the best way to do this and/or is there any flaw with this approach?
If ok, then how would I refresh the gannt? would I have to rebind it or is it better/possible to add the new task to the datasource and then sync?
Hello,
I have a problem with the datePicker of recurrenceRule.
As you can see in the picture, the datetimepicker of "start" uses a custom date format as dd/MM/yyyy and the culture "fr-BE".
If I understand correctly how the datepicker of recurrence rule works, this one picks the date of "start". But the problem is the datepicker doesn't understand the custom format so it shows me an error
Uncaught TypeError: Cannot read property 'getFullYear' of null
If I delete the custom format and the culture, all works perfectly but if I set a custom format it doesn't work.
Is there a solution to set globally the format of a date ? or how can I set a custom date format to the datepicker of recurrence rule ?
Thank you for the help.
Hello,
I would like to call a component that contains only the custom edit template (to create a new task or edit) for my scheduler.
I followed this solution but the edit window just displays "[Object object]"
The code of scheduler
<kendo-scheduler id=
"scheduler"
:data-source=
"localDataSource"
:event-template=
"eventTemplate"
:editable=
"{template:editTemplate}"
>
The code of the method editTemplate()
methods: {
editTemplate:
function
(){
return
{
template: Vue.component(CustomEditTemplate.name, CustomEditTemplate),
}
}
},
The code of the component that contains the custom template
<template>
<div class=
"k-edit-form-container"
>
<p> Titre <input type=
"text"
/> </p>
<p>
<span >Start <input data-role=
"datetimepicker"
name=
"start"
/> </span>
<span >End <input data-role=
"datetimepicker"
name=
"end"
/> </span>
</p>
</div>
</template>
<script>
export
default
{
name:
"CustomEditTemplate"
,
}
</script>
I think the problem comes from the method editTemplate but I don't undestand why.
Anyone can help me ?
Thanks.
I have config like this:
<
ganttdatasource
ref
=
"ganttdatasource1"
:transport-read
=
"ganttRead"
:transport-update
=
"ganttUpdate"
:transport-create
=
"ganttCreate"
:transport-destroy
=
"ganttDestroy"
:transport-parameter-map
=
"parameterMap"
:transport-submit
=
"ganttSubmit"
schema-model-id
=
"id"
:schema-model-fields
=
"fields"
>
</
ganttdatasource
>
From what I can tell from the docs if transport-submit is defined then the create/update/destroy functions should not be fired and all should be batched up into a single call to transport-submit, but this does not happen: transport-submit is never called and transport-update etc. are all called as normal.
Is this a bug or do I misunderstand the operation?
If possible, please point me to a working example of this using remote data source. My config as below:
<ganttdatasource ref="ganttdatasource1"
:transport-read="ganttRead"
:transport-update="ganttUpdate"
:transport-create="ganttCreate"
:transport-destroy="ganttDestroy"
:transport-parameter-map="parameterMap"
:transport-batch="true"
schema-model-id="id"
:schema-model-fields="fields">
</ganttdatasource>
<gantt
ref="kendogantt"
id="gantt"
:height="500"
:editable-create="true"
data-source-ref="ganttdatasource1"
:assignments="assignments"
:resources="resources"
>
</gantt>
I'm using the gantt with remote data with custom functions (I use axios, not Telerik gantt data source built-in features). When the gantt first loads it gets it's tasks from 'transport-read', task resource assignments from 'assignments' prop, and resources from 'resources' prop. All works just fine.
Now when a task's assignment is updated, it triggers my custom function 'ganttUpdate', it passes in a data object with all the task data + a .resources. property that has all the assignments for the task and I can update my backend ok.
What I don't understand is what I need to return from 'ganttUpdate' - I mean there are now two places where the task resource assignments are kept (1) on the task itself in the .resources property, and (2) on the gantt in the 'assignments' prop (which has all the assignments for all tasks). It is very confusing.
As we are working vue3 with typescript, we are facing a lot of issues implementing the wrapper components as all the demos are available in JS.
Can anyone provide a sample demo of notification (using as a toaster) with typescript.
Find the attached SS of error.
I have a simple gantt linked to local datasource (there is no backend api), when adding a task I want to handle the onAdd event and mutate the local datasource.
It seems to work ok except that the id of the new task in onAdd is set to 0 (console.log(e.task) in on Add) - am I supposed to set this id value manually?
We are trying to use native grid component and following the official demo documentation along with StackBlitz example.
In StackBlitz, it's throwing an Maximum call stack size exceeded. Please find the attachment.
Link: https://fmdsao--run.stackblitz.io/
Can anyone help us to resolve this issue as grid is our primary component to leverage.
There is a way to block appointments in hours.
Example in the image