B4A Library [B4X] [XUI] AS Scheduler 📅 - MonthView, DayView (Week), AgendaView and CalendarView [Payware]

vfafou

Well-Known Member
Licensed User
Longtime User
I have no words to say!!!
You're a fabulous collaborator!!!
Thank you so much!
You saved me days of work!
 

Alexander Stolte

Expert
Licensed User
Longtime User
Version 2.0 is coming soon, this version is then the 1st stable version and has green light for productive use from me (MonthView and DayView).

Also a new view will be added, here a small Sneak Preview:

Like the DayView and MonthView, this view will work seamlessly with the API and have the familiar handling.
Can also be combined with a calendar, as a one day display function will also be available.
 

vfafou

Well-Known Member
Licensed User
Longtime User
With this new view you give me the impression that you're on my mind! I have started to do something similar to put it under the main calendar of my app. It seems that I'll stop it and wait for the v2.0...
Thank you again for at least 1 week work!
 

Alexander Stolte

Expert
Licensed User
Longtime User
With this new view you give me the impression that you're on my mind! I have started to do something similar to put it under the main calendar of my app. It seems that I'll stop it and wait for the v2.0...
Then tell me what else you have in your head, planned are another 2 views for this scheduler lib. , but only one of them is for mobile devices.
I just need to test it on the mobile devices and add a few properties, then I can release.
Thank you again for at least 1 week work!
No problem
 

vfafou

Well-Known Member
Licensed User
Longtime User
Then tell me what else you have in your head
Well, it would be very nice to have a drag & drop function on the Day View to change the event time (I know it's a bit difficult to implement such functionality).
Another one I was thinking of, is to have the option to set the time slices as we need, for example to 15 minutes and not 30.
 

vfafou

Well-Known Member
Licensed User
Longtime User
Then tell me what else you have in your head
Hello Alexander!
I forgot to give you one more functionality for the DayView:
Give properties to determine the working hours and give to non working hours another color. If we determine the working hours range, the DayView will scroll automatically at the first working hour after initialization or after refresh, so we will see only the range we need!
 
Last edited:

Alexander Stolte

Expert
Licensed User
Longtime User
This Update is the first stable version of the Scheduler.
Update
  • 2.00
    • DayView
      • The list now always scrolls automatically to the current time, so that it is always visible by default and the user does not have to scroll first
      • Add Type ASScheduler_DayView_WorkingProperties
        • StartHour - When to start work
          • 8
        • EndHour -When closing time
          • 17
        • NonWorkingDays
          • Array As Int(ASSchedulerUtils.WeekDay_Saturday,ASSchedulerUtils.WeekDay_Sunday)
        • Color - The color of the blocks that is not working time
        • Active
          • Default: False
    • MonthView
      • BugFixes
    • AgendaView
      • A new type of view
      • Lists all appointments
DayView - Working Hours
You can now set working hours.
B4X:
ASScheduler_DayView1.WorkingProperties.Active = True
ASScheduler_DayView1.WorkingProperties.StartHour = 8
ASScheduler_DayView1.WorkingProperties.EndHour = 17
ASScheduler_DayView1.WorkingProperties.NonWorkingDays = Array As Int(ASSchedulerUtils.WeekDay_Saturday,ASSchedulerUtils.WeekDay_Sunday)

AgendaView
The Agenda View is a new view with which it is possible to scroll through your appointments.

The view has some interesting events, with which it is possible to add your own layout.
Example
B4X:
Private Sub ASScheduler_AgendaView1_CustomDrawMonth (StartDate As Long,BackgroundPanel As B4XView)
    
    'Here you can add whatever you want
    'For example a ImageView with seasons pictures of the current month
    'Or a button
    'Or a complete layout
    
    'The BackgroundPanel already has a label
    Dim xlbl_CurrentMonth As B4XView = BackgroundPanel.GetView(0) 'The default label which shows the current month
    xlbl_CurrentMonth.Text = xlbl_CurrentMonth.Text
    
    'Add a custom item
    Dim lbl As Label
    lbl.Initialize("")
    Dim xlbl As B4XView = lbl
    xlbl.Text = "This is a Custom Text " & DateUtils.TicksToString(StartDate)
    xlbl.As(B4XView).TextColor = xui.Color_White
    BackgroundPanel.AddView(xlbl,0,BackgroundPanel.Height - 20dip,BackgroundPanel.Width,20dip)
    
End Sub
Result:

Be creative and add pictures for each season.
Appointment Display Options
B4X:
ASScheduler_AgendaView1.AppointmentProperties.ShowDuration = True
ASScheduler_AgendaView1.AppointmentProperties.ShowStartEndTime = True
B4X:
ASScheduler_AgendaView1.AppointmentProperties.ShowDuration = False
ASScheduler_AgendaView1.AppointmentProperties.ShowStartEndTime = True

B4X:
ASScheduler_AgendaView1.AppointmentProperties.ShowDuration = True
ASScheduler_AgendaView1.AppointmentProperties.ShowStartEndTime = False

and more...
 

vfafou

Well-Known Member
Licensed User
Longtime User
Awesome new view and new functionality!!!
Thank you so much, Alexander!
 

Alexander Stolte

Expert
Licensed User
Longtime User
Update
  • 2.01
    • AgendaView
      • B4J Resize BugFix
      • BugFixes
      • Add RebuildScheduler - Clears the list and rebuilds it
        • If you Delete Appointments, then call this function
        • The function does not remember which day the scheduler is currently on
          • So set the ASScheduler_AgendaView1.StartDate = DateTime.Now property if you want to spawn to a special date and not on the start date
    • Utils
      • InitializeAPI removed
        • The code is now in the getAPI function
    • API
      • Add UpdateAppointment - The function can be used to update an already existing appointment
        • Dont forget to call RefreshScheduler in the views to update it visual
 

Alexander Stolte

Expert
Licensed User
Longtime User
Update
  • 2.02
    • API
      • Add dt_SpecialDays
      • Add CRUD functions for the new table dt_SpecialDays
    • Utils
      • Add Type ASScheduler_SpecialDay
    • CalendarView
      • A new type of view
      • Divided into 2 new views
        • ASScheduler_CalendarViewMonth
          • Monthly overview
          • Fast navigation option if you click on the header
      • ASScheduler_CalendarViewWeek
        • Week overview
CalendarView - Month and Week

The month view is 1 to 1 the AS_DatePicker, adapted so that the view fits to the scheduler.
You can navigate fast to your date if you click on the header.

The week view is just a WeekView , without the option to navigating fast to a date.
SpecialDays
The special days are currently only visible in CalendarView.
B4X:
'Creates a special day as recurring special day on every sunday
Dim OneSunday As Long = DateUtils.SetDate(2022,5,8)
ASScheduler_CalendarViewMonth1.API.CreateSpecialDay(ASSchedulerUtils.CreateASScheduler_SpecialDayRecurring(0,"sunday",OneSunday,True,ASSchedulerUtils.Recurring_Week,1,True))
 

Cableguy

Expert
Licensed User
Longtime User
Hi Alexander,

Magnificent view indeed...

May I be so bold as to propose you a new functionality to your API (!?)

Create functions to both Export and Import appointment collections...
The usage case for such a fucntion would be backoffice appointment creation/pushing to android device, for say a field tec.
 

Alexander Stolte

Expert
Licensed User
Longtime User
Create functions to both Export and Import appointment collections...
Why don't you build a loop to get the collection into the API? I wouldn't do anything else with an import function, except that you have more freedom here.
And what should an export look like? The API is a simple SQlite DB, I can add a function where you can address the SQL directly, then you can do with the data what you want.
The usage case for such a fucntion would be backoffice appointment creation/pushing to android device, for say a field tec.
I don't quite understand how an import function can help?
 

Cableguy

Expert
Licensed User
Longtime User
I don't quite understand how an import function can help?
Imagine an B4J app acting like a backoffice shceduller for field tecs... The BackOffice operator creates a planning (schedule) for each field tec, wich at a given time is exported to a cloud location (firebase storage maybe?) and in the field tec Android app, a few minutes after the B4J export, the B4A app would try to import the next day shcedulle... but hey, this is just an Idea... I haven't even downloaded your lib yet...
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…