Jump to content

Schedule


rtalmeida

Recommended Posts

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;

 

  • Like 1
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...