La première étape de la gestion des événements récurrents dans Telerik Scheduler pour Blazor consiste à gérer les plannings. Voici comment votre utilisateur peut modifier (ou supprimer) un horaire.
Interface utilisateur Progress Telerik pour Planificateur Blazor vous permet de créer des applications dans lesquelles votre utilisateur peut à la fois générer un calendrier d’événements récurrents et gérer des événements individuels dans ce calendrier.
Dans un message précédentj’ai parcouru la configuration du planificateur et la définition de l’objet événement dont vous aurez besoin pour travailler avec le planificateur. Dans cet article, je vais voir comment permettre à l’utilisateur de modifier un planning et ses occurrences associées (événements générés à partir du planning).
Pour travailler avec Scheduler, vous devez définir un objet événement avec une propriété de chaîne pour conserver la planification. Format RFC5545. Vous avez également besoin d’une liste de ces objets que vous pouvez lier à la propriété Data du planificateur.
Voici un code qui définirait ces objets de données :
List<BillingPlan> DataList = new List<BillingPlan>();
public class BillingPlan: Appointment
{
public BillingPlan()
{
Id = Guid.NewGuid();
}
public string RecurrenceRuleString { get; set; } = string.Empty;
}
Et voici comment le planificateur doit être configuré pour utiliser cette liste et prendre en charge les modifications apportées au calendrier généré à partir de tout ce qui se trouve dans le RecurrenceRuleString
:
<TelerikScheduler Height="600px"
Data="DataList"
RecurrenceRuleField="RecurrenceRuleString"
AllowUpdate="true"
Permettre à l’utilisateur de modifier un planning ou une exception nécessite d’attribuer une méthode au planificateur OnUpdate
propriété, comme ceci :
<TelerikScheduler Height="600px"
Data="DataList"
RecurrenceRuleField="RecurrenceRuleString"
AllowUpdate="true"
OnUpdate="@UpdateExceptionSched">
Interface utilisateur du planificateur : modification des horaires
Un utilisateur commence à modifier un planning en double-cliquant sur l’une des occurrences régulièrement programmées du planning affichées dans le Planificateur. Lorsqu’un utilisateur double-clique sur l’une des occurrences régulièrement planifiées d’une planification, il a le choix entre mettre à jour l’occurrence elle-même ou la planification à partir de laquelle elle a été générée.
Si l’utilisateur choisit de mettre à jour la série/le calendrier, une version du formulaire d’événement du planificateur lui est présentée qui affiche toutes les informations du calendrier actuel afin que l’utilisateur puisse le modifier.
Une fois que l’utilisateur clique sur le bouton Enregistrer du formulaire Événement, votre OnUpdate
la méthode est appelée.
Ton OnUpdate
la méthode recevra un paramètre avec un Item
propriété qui contient un objet avec toutes les données du formulaire Événement. Vous devrez d’abord convertir cet objet en votre objet événement (dans mon cas, un BillingPlan
objet) afin que vous puissiez accéder aux propriétés de l’objet.
Une fois que vous avez lancé le Item
objet, vous pouvez trouver l’objet de planification correspondant dans le Data
la liste de la propriété, supprimez cet objet de la liste de données et remplacez-le par le Item
objet. Cependant, parce que le Item
L’objet contient uniquement les données du formulaire d’événement, vous souhaiterez peut-être copier certaines données de l’objet de planification d’origine (ou d’une autre source) vers l’objet de planification mis à jour que vous êtes sur le point d’ajouter à la liste de données.
Ce code, par exemple, copie le DataItem
propriété de l’objet de planification associé vers la propriété de planification mise à jour DataItem
:
IList<BillingPlan> DeletedItems = new List<BillingPlan>();
void UpdateExceptionSched(SchedulerUpdateEventArgs e)
{
BillingPlan? bpFormData = e.Item as BillingPlan;
BillingPlan? bpSched = DataList.First(bp => bp.Id == bpFormData.Id);
bpFormData.DataItem = bpSched.DataItem;
DataList.Remove(bpSched);
DataList.Add(bpFormData);
}
Prise en charge de la base de données
Une fois que vous avez mis à jour votre objet de planification, le planificateur générera une nouvelle liste d’occurrences à afficher dans son interface utilisateur. En utilisant les outils dont j’ai parlé dans mon publier sur des événements récurrentsvous pouvez (encore une fois, lorsque l’utilisateur clique finalement sur le bouton Enregistrer de votre application) générer un ensemble équivalent d’objets d’événement pour stocker ces occurrences dans votre base de données afin que d’autres applications puissent y accéder.
Cependant, il est probable que votre base de données contienne déjà des occurrences que vous avez ajoutées à partir de la version précédente de la planification. Vous devrez également vous assurer que ces occurrences sont supprimées. Le moyen le plus simple de procéder consiste à ajouter également l’objet de planification d’origine à votre liste d’éléments supprimés. Dans le traitement de votre base de données, dans le cadre du traitement de cette liste d’éléments supprimés, vous pouvez supprimer à la fois l’ancienne planification et toutes les occurrences générées à partir de cette ancienne planification.
Pour prendre en charge cela, il vous suffit de vérifier votre OnUpdate
pour voir si les données liées à la planification ont été modifiées et, si c’est le cas, ajouter la planification d’origine à une liste d’éléments supprimés :
IList<BillingPlan> DeletedItems = new List<BillingPlan>();
void UpdateExceptionSched(SchedulerUpdateEventArgs e)
{
BillingPlan? bpFormData = e.Item as BillingPlan;
BillingPlan? bpSched;
bpSched = DataList.First(bp => bp.Id == bpFormData.Id);
if (bpFormData.RecurrenceRuleString != bpFormData.RecurrenceRule.ToString() ||
bpFormData.Start.ToString() != bpSched.Start.ToString() ||
bpFormData.End.ToString() != bpSched.End.ToString())
{
DeletedItems.Add(bpSched);
}
…rest of code…
L’interface utilisateur du planificateur : suppression de planifications et d’occurrences
Une fois que vous avez défini le AllowUpdate
propriété du planificateur sur true, vous avez également permis à l’utilisateur de supprimer une planification ou ses occurrences régulièrement planifiées. Tout ce qu’un utilisateur doit faire est de cliquer sur n’importe quelle occurrence dans l’interface utilisateur du planificateur et d’appuyer sur la touche Suppr pour démarrer le processus de suppression. Les utilisateurs recevront une boîte de dialogue leur demandant s’ils souhaitent supprimer l’occurrence ou la série (c’est-à-dire supprimer l’intégralité de la planification) :
Vous n’avez pas besoin d’ajouter de code pour prendre en charge la suppression d’une occurrence : cela est géré pour vous par le planificateur. Cela dit, pour comprendre une partie du code dont vous aurez besoin lors de la sauvegarde de vos données, il est utile de comprendre ce qui se passe sous le capot lorsqu’une occurrence régulièrement planifiée est « supprimée ».
Comme le suggèrent mes citations effrayantes autour de « supprimé », les occurrences régulièrement planifiées ne sont pas vraiment supprimées. Au lieu de cela, la date de début de cet événement est ajoutée au fichier de votre objet de planification. RecurrenceExceptions
collection – il serait peut-être plus exact de dire que l’occurrence est supprimé plutôt que supprimé. Ainsi, en fin de compte, lorsque vous mettrez à jour votre base de données, vous souhaiterez utiliser cette liste de dates lors de la gestion des informations que vous stockez (j’en discuterai un peu plus en profondeur dans mon dernier article de cette série).
Bien que vous n’ayez pas besoin d’écrire de code pour prendre en charge la suppression d’une occurrence, vous devez cependant écrire du code pour prendre en charge le moment où l’utilisateur choisit de supprimer l’intégralité de la planification.
Pour prendre en charge la suppression d’une série, vous devez d’abord définir le paramètre OnDelete
propriété à une méthode (et, comme le montre cet exemple, vous n’êtes pas obligé de fournir un OnUpdate
méthode si tout ce que vous souhaitez prendre en charge est la suppression des horaires) :
<TelerikScheduler
Data="DataList"
RecurrenceRuleField="RecurrenceRuleString"
AllowUpdate="true"
OnDelete="@DeleteSchedException">
Comme pour votre OnUpdate
méthode, votre OnDelete
La méthode recevra un paramètre avec une propriété appelée Item. Cette fois cependant, le Item
la propriété contient un référence à l’objet de planification en cours de suppression.
Comme auparavant, votre première étape consiste à lancer ce Item
propriété à votre classe d’événement (dans mon cas, c’est un BillingPlan
objet). Une fois que vous avez lancé le Item
objet à votre classe d’événement, vous utiliserez la liste de données Remove
pour supprimer l’objet de planification de la liste de données, ce qui supprimera également la planification et ses occurrences de l’interface utilisateur du planificateur. Pour prendre en charge la mise à jour ultérieure de votre base de données, vous devrez également ajouter cet objet à cette liste d’éléments supprimés pour un traitement ultérieur.
Votre code pour supprimer votre planning finit par ressembler à ceci :
IList<BillingPlan> DeletedItems = new List<BillingPlan>();
void DeleteSchedException(SchedulerDeleteOccurrenceArgs e)
{
BillingPlan? bpSched = e.Item as BillingPlan;
DeletedItems.Add(bpSched)
DataList.Remove(bpSched);
}
Et c’était assez simple… mais cette méthode devra être améliorée si, en plus de permettre à votre utilisateur de supprimer des éléments, vous autorisez également votre utilisateur à modifier des occurrences individuelles dans la planification pour créer des exceptions à votre planification. C’est mon prochain message.
N’oubliez pas : Telerik UI pour Blazor est livré avec un essai gratuit de 30 jours afin que vous puissiez le voir par vous-même.
Source link