In templates and selected design elements we use a template programming language called D-Sharp. D-Sharp is a simple and fast script language invented to be used in templates. The language is used to define the exact content to be presented and how it is being presented, for instance in accordance with culture. D-Sharp behaves like the well-known language C# aka. C-Sharp from MicrosoftTM in such a way, that properties behave in identical ways. This is because D-Sharp is written in C#. D-Sharp started out as a simple hobby project, but has grown to perform fast, being robust and error-tolerant.
About the booking system it is vital to understand, most bookings operations mostly work with booking details rather than individual bookings (see below). A booking may contain recurring events, and each will be referred to as a booking detail – for instance, the global property CurrentBooking returns a booking detail from a booking, which could contain a detail for every single day.
- Context: In views, context is referred to as a general delimitation:
- Calendar conditional: For example, is a meeting room screen or check-in stand. A calendar is referred to in this guide as Resource.
- Location conditional: For example, is a local design of all*) resources in one location. A location is referred to in this guide as Location. A location can have its own time zone.
- Global: For example, is an overview of all*) accessible calendars and locations.
*) The context of summary views can be further filtered on cues, also referred to as tags.
- Tags: Tags are often used as an opportunity to filter. For example, all meeting rooms at the top floor could be marked with the tag penthouse. This means that I can limit a local view to only display bookings for rooms (calendars) sharing the penthouse tag.
- Client: A client covers a person, organizer, customer, or other person in the booking system. A client is typically associated with a booking but can also stand alone. It is also possible to associate tags on clients that can be used for additional filtering. For example, management or kitchen staff.
- Booking detail: (Formally referred to as Booking) A booking detail is limited to a single event within a booking. A booking can contain multiple booking details- but by far the most bookings consist of a single event - in templates there is rarely a need to deal with the overall nature of recurring events.
- Booking: (The actual booking however rarely mentioned) A booking is generally an appointment with at least one event. This means that a booking may contain recurring events but referring to this collection of events is rarely interesting in a template. For example, to access a major guiding property on a booking, you can type CurrentBooking.Booking.Subject. CurrentBooking.Booking is the real booking which returns the parent booking of the event detail. However, an appointment can contain multiple booking details – and in each case, the subject can potentially be overridden in such way that a single booking detail has its own specialized subject. Therefore, in this case the correct way to get subject, would be to refer to CurrentBooking.Subject.
The design- and printer templates have certain properties in common:
- Screen: Contains the display properties.
- Workgroup: Contains the organization profile for the account.
- CurrentBookings: Contains all due booking details.
- CurrentBooking: Contains the first current booking detail. This property is only available when the design is bound to a specific calendar, that is, on meeting room screens and the like.
- NextBooking: Contains the subsequent booking, if any. This property is only available when the design is bound to a specific calendar, that is, on meeting room screens and the like.
- EssentialCurrentBooking: I similar to CurrentBooking but can be ahead of time.
- AdhocStatus: Used only on adhoc meeting room displays and contains 3 properties AdhocStatus.CanBook, AdhocStatus.CanEnd and AdhocStatus.CanConfirm, each of which provides whether it is (right now) possible to (adhoc) book, to end an ongoing booking event or to confirm a booking event about to start.
- WeeklyBookings: Used to put together a matrix of days on one line and either booking clients or calendars on the other. See examples at the bottom of this guide.
- SignupDomains: Used in enterprise solutions to sign up email domain names associated with clients signifying superior responsibility. For example, if an employee wants to sign up to the authority at their business, they can sign up with an email address associated with the authoritative domain.
- CurrentClient: Used in RFID (access) card solutions to identify a client associated with the recently scanned RFID card.
- RfidStatus: Is the number code of the most recently scanned RFID card. If CurrentClient is not also available, this means that the code is not recognized.
- TimeZone: Exposes the time zone that is current for the view. All times in the booking system are in a neutral time format (UTC) which is converted on the fly. So, if an event is set up in Greenland and is to be displayed on a screen in Copenhagen, the info screen in Copenhagen does not need to know anything about the time zone in Greenland to express the time according to the time zone in Copenhagen.
- Culture: Exposes the culture that is current to the view. Culture is important when displaying numbers and dates in particular.
Lists can typically be used in loops that display multiple items or rows of data. The following lists are often used:
- Bookings: (List of Booking) All available*) events limited within the preferences of the view. This could reflect events set to start a number of days before or after the date today.
Notice: On most designs, All-Day-Bookings is usually disabled, which means the lists here and below will naturally filter away booking events no longer due.
- BookingsToday: (List of Booking) All available*) events limited within the current day.
- CurrentBookings: (List of Booking) All ongoing events occurring in the selected context.
- BookingsTodayByLocation(Location): (List of Booking) All available*) events within a specific location.
- BookingsTodayByResource(Resource): (List of Booking) All available*) events within a specific calendar (In back-end, a resource is a calendar).
- MatchedLocations: (List of Location) Are all locations available within the view (limited by context and optional location tag filters).
- MatchedResources: (List of Resource) Are all calendars available within the view (limited by context and optional calendar tag filters).
- Menus: (Menu List) For use in catering solutions.
*) Does not include events marked as deleted.