Sherzod Posted May 29, 2023 Share Posted May 29, 2023 2 hours ago, Luciano França said: Up You are in a hurry, and do not want to analyze the solutions that I gave, this mainly concerns optimization and the "guaranteed" call "_setBGColor"... Answer to your "Up" 1. procedure TMainForm.UniCalendarPanel1DateChange(Sender: TUniCalendarPanel; AStartDate, AViewStart, AViewEnd: TDateTime); begin //Sender.JSInterface.JSCall('_setBGColor', []); end; procedure TMainForm.UniCalendarPanel1ViewChange(Sender: TUniCalendarPanel; CurrentView: TUniCalendarViewType); begin //if CurrentView = cvMonth then begin // Sender.JSInterface.JSCall('_setBGColor', []); //end; end; 2. Some modifications, including a "guaranteed" call "_setBGColor" procedure TMainForm.UniFormCreate(Sender: TObject); Var E: TUniCalendarEvent; begin E := UniCalendarPanel1.Events.Add; E.CalendarId := 1; E.Title := 'Teste'; E.StartDate := Date + 5; E.EndDate := Date + 5; E.IsAllDay := True; With UniCalendarPanel1 do Begin ClientEvents.UniEvents.Values['beforeInit'] := 'function beforeInit(sender, config) {' + 'sender._setBGColor = function () {' + ' if (sender.getView() && sender.getView().activeView.xtype == "calendar-month") {' + ' sender.el.select(''.x-calendar-weeks-cell'').elements.forEach(function(el){el.style[''background-color'']=""});' + ' sender.el.select(''.x-calendar-weeks-overflow-cell'').elements.forEach(function(el){el.style[''background-color'']=""});' + ' sender.store.eventSource.each(function(ev) {' + ' dataEl = sender.el.select(''.x-calendar-weeks-cell[data-date="''+ Ext.Date.format(ev.data.startDate, ''Y-m-d'') +''"]''); ' + ' if (dataEl.elements[0]) { ' + ' dataEl.elements[0].style[''background-color'']="yellowgreen"' + ' }' + ' });' + ' sender.el.select(''.x-calendar-weeks-overflow-cell'').elements.forEach(function(el){el.style[''background-color'']="yellowgreen"});' + ' }' + '}}'; //ClientEvents.ExtEvents.Values['calendarStore.load'] := 'function calendarStore.load(sender, records, successful, operation, eOpts) {' + // 'Ext.defer(function(){' + JSName + '._setBGColor()}, 1000);}'; ClientEvents.ExtEvents.Values['afterrender'] := 'function afterrender(sender, eOpts) '+ '{ '+ ' sender.getEl().dom.addEventListener("DOMNodeInserted", function (ev) {'+ ' sender._setBGColor(); '+ ' }, false); '+ '}'; End; end; 1 Quote Link to comment Share on other sites More sharing options...
Luciano França Posted May 29, 2023 Share Posted May 29, 2023 8 hours ago, Sherzod said: You are in a hurry, and do not want to analyze the solutions that I gave, this mainly concerns optimization and the "guaranteed" call "_setBGColor"... Answer to your "Up" 1. procedure TMainForm.UniCalendarPanel1DateChange(Sender: TUniCalendarPanel; AStartDate, AViewStart, AViewEnd: TDateTime); begin //Sender.JSInterface.JSCall('_setBGColor', []); end; procedure TMainForm.UniCalendarPanel1ViewChange(Sender: TUniCalendarPanel; CurrentView: TUniCalendarViewType); begin //if CurrentView = cvMonth then begin // Sender.JSInterface.JSCall('_setBGColor', []); //end; end; 2. Some modifications, including a "guaranteed" call "_setBGColor" procedure TMainForm.UniFormCreate(Sender: TObject); Var E: TUniCalendarEvent; begin E := UniCalendarPanel1.Events.Add; E.CalendarId := 1; E.Title := 'Teste'; E.StartDate := Date + 5; E.EndDate := Date + 5; E.IsAllDay := True; With UniCalendarPanel1 do Begin ClientEvents.UniEvents.Values['beforeInit'] := 'function beforeInit(sender, config) {' + 'sender._setBGColor = function () {' + ' if (sender.getView() && sender.getView().activeView.xtype == "calendar-month") {' + ' sender.el.select(''.x-calendar-weeks-cell'').elements.forEach(function(el){el.style[''background-color'']=""});' + ' sender.el.select(''.x-calendar-weeks-overflow-cell'').elements.forEach(function(el){el.style[''background-color'']=""});' + ' sender.store.eventSource.each(function(ev) {' + ' dataEl = sender.el.select(''.x-calendar-weeks-cell[data-date="''+ Ext.Date.format(ev.data.startDate, ''Y-m-d'') +''"]''); ' + ' if (dataEl.elements[0]) { ' + ' dataEl.elements[0].style[''background-color'']="yellowgreen"' + ' }' + ' });' + ' sender.el.select(''.x-calendar-weeks-overflow-cell'').elements.forEach(function(el){el.style[''background-color'']="yellowgreen"});' + ' }' + '}}'; //ClientEvents.ExtEvents.Values['calendarStore.load'] := 'function calendarStore.load(sender, records, successful, operation, eOpts) {' + // 'Ext.defer(function(){' + JSName + '._setBGColor()}, 1000);}'; ClientEvents.ExtEvents.Values['afterrender'] := 'function afterrender(sender, eOpts) '+ '{ '+ ' sender.getEl().dom.addEventListener("DOMNodeInserted", function (ev) {'+ ' sender._setBGColor(); '+ ' }, false); '+ '}'; End; end; Master of the Wizards Much obliged. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.