I have a problem when I want to edit events in the scheduler. I am getting the error that says: "Uncaught TypeError: Cannot read property 'RecurrenceRule' of undefined".
I didn't define the recurrence rule, because my every event is unique.
</style>
<script>
import Vue from "vue";
import moment from 'moment';
import { DataManager, UrlAdaptor } from '@syncfusion/ej2-data';
import { SchedulePlugin, Day, Week, WorkWeek, Month, View } from "@syncfusion/ej2-vue-schedule";
import { extend } from '@syncfusion/ej2-base';
import { DropDownList } from '@syncfusion/ej2-dropdowns';
import { DateTimePicker } from '@syncfusion/ej2-calendars';
import { PopupOpenEventArgs, EventRenderedArgs } from '@syncfusion/ej2-vue-schedule';
import editortemplate from './template';
Vue.use(SchedulePlugin);
class SerialNoAdaptor extends UrlAdaptor {
beforeSend(a, b, ajax) {
ajax.successHandler = function (data) {
if (this.onSuccess) {
console.log('odgovor');
console.log(data);
// here you can check whether the data is valid or not
console.log(this.httpRequest.response);
this.onSuccess(data, this);
}
return data;
}
super.beforeSend.call(this, a, b, ajax)
}
processResponse() {
let original = super.processResponse.apply(this, arguments);
for (var i = 0; i < original.length; i++) {
var persons = JSON.parse(original[i].PERSONS_ON_EVENT);
original[i].PERSONS_ON_EVENT = [];
for (var j = 0; j < persons.length; j++) {
original[i].PERSONS_ON_EVENT.push(persons[j].PERSONS_ID);
}
}
return original;
}
processQuery() {
let original = super.processQuery.apply(this, arguments);
var parametri = JSON.parse(original.data).params;
parametri['officeID'] = 15;
for (var index in parametri) {
if (index.toLowerCase().indexOf('date') >= 0) {
parametri[index] = moment(parametri[index]
).format('YYYY-MM-DD');
}
};
original.data = JSON.stringify(parametri);
return original;
}
insert() {
let original = super.insert.apply(this, arguments);
var parametri = JSON.parse(original.data);
console.log(parametri.value);
for (var index in parametri.value) {
if (index.toLowerCase().indexOf('date') >= 0) {
parametri.value[index] = moment(parametri.value[index]
).format('YYYY-MM-DD HH:mm:SS');
}
};
parametri.value.CASES_ID = document.getElementById('CASES_ID_hidden').value;
console.log(parametri.value);
original.data = JSON.stringify(parametri);
console.log('insert');
return original;
}
update() {
console.log('update');
let original = super.insert.apply(this, arguments);
var parametri = JSON.parse(original.data);
console.log(parametri.table);
for (var index in parametri.table) {
if (index.toLowerCase().indexOf('date') >= 0) {
parametri.table[index] = moment(parametri.table[index]
).format('YYYY-MM-DD HH:mm:SS');
}
};
original.data = JSON.stringify(parametri);
console.log(original);
return original;
}
}
//var dataManger = new DataManager({
// url: '/api/persons/getDataScheduler',
// insertUrl: '/api/persons/insertEventScheduler',
// updateUrl: '/api/persons/updateEventScheduler',
// adaptor: new SerialNoAdaptor,
// requestType: 'json',
// crossDomain: true
//});
var dataManger = [
{
"EVENT_ID": 30155,
"DATE": "2018-09-25T03:00:00",
"DATE_TO": "2018-09-25T04:00:00",
"DESCRIPTION": "Test 6",
},
{
"EVENT_ID": 30155,
"DATE": "2018-09-26T13:00:00",
"DATE_TO": "2018-09-26T14:00:00",
"DESCRIPTION": "Test 6",
},
{
"EVENT_ID": 30155,
"DATE": "2018-09-25T13:10:00",
"DATE_TO": "2018-09-25T14:00:00",
"DESCRIPTION": "Test 6",
},
{
"EVENT_ID": 30155,
"DATE": "2018-09-26T03:00:00",
"DATE_TO": "2018-09-26T04:00:00",
"DESCRIPTION": "Test 6",
},
]
export default Vue.extend({
data: function () {
return {
selectedDate: new Date(),
currentView: 'Week',
eventSettings: {
dataSource: dataManger,
fields: {
id: { name: 'EVENT_ID' },
subject: { name: 'DESCRIPTION' },
startTime: { name: 'DATE' },
endTime: { name: 'DATE_TO' },
}
},
locale: this.$store.state.app.scLang,
showQuickInfo: false,
editorTemplate: function () {
return { template: editortemplate }
},
}
},
provide: {
schedule: [Day, Week, WorkWeek, Month]
},
methods: {
onPopupOpen: function (args) {
if (args.type === 'Editor') {
}
},
onActionBegin: function (args) {
let scheduleObj = document.getElementById('Schedule').ej2_instances[0];
if (args.requestType === 'eventCreate') {
let data = args.data;
if (!scheduleObj.isSlotAvailable(data.StartTime, data.EndTime)) {
args.cancel = true;
}
}
},
}
});
</script>