Okna żądań daty i czasu
Podczas działania wtyczki może być konieczne wymuszenie na użytkowniku podania daty i czasu. W tym celu można wyświetlić okna dialogowe za pomocą IViewManager.ShowDateNumpadPopup, IViewManager.ShowDateTimePopup oraz IViewManager.ShowCalendarPopup.
Jak to wygląda w Syrve POS?
W niektórych przypadkach instancja klasy IViewManager jest dostępna dla wtyczki. Jest ona dostępna na przykład podczas obsługi kliknięcia przycisku:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var viewManager = x.vm;
});
lub wywołania niektórych zdarzeń:
PluginContext.Notifications.BeforeOrderBill.Subscribe(x =>
{
var viewManager = x.vm;
});
Więcej szczegółów na temat tej klasy można znaleźć w artykule Okna dialogowe. W tych przypadkach IViewManager może być używany do wyświetlania okien dialogowych. Rozważ wszystkie metody służące do żądania daty i czasu od użytkownika. Na przykładzie utwórz przycisk za pomocą metody IOperationService.AddButtonToPluginsMenu, jak pokazano powyżej, i wyświetl okna dialogowe po jego kliknięciu.
Opcja 1: Okno Date Numpad
Proste okno dialogowe z klawiaturą numeryczną może być użyte do żądania tylko daty:
{
var dateNumpadPopupResult = x.vm.ShowDateNumpadPopup(DateTime.Today, "Date Numpad");
});
W ten sposób po kliknięciu przycisku zostanie wyświetlone okno wyboru daty

Metoda IViewManager.ShowDateNumpadPopup(DateTime selectedDate, string title) przyjmuje 2 argumenty:
DateTime selectedDate— data, która będzie wybrana po wyświetleniu okna.string title— tytuł okna
Metoda zwróci datę wybraną przez użytkownika, jeśli naciśnie «OK», lub null, jeśli naciśnie «Anuluj».
Opcja 2: Okno Date-Time
Datę i czas można żądać za pomocą okna dialogowego:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var dateTimePopupResult = x.vm.ShowDateTimePopup(DateTime.Now, "Date-Time", DateTime.Today, DateTime.Today.AddMonths(6));
});
Naciśnięcie przycisku spowoduje wyświetlenie okna wyboru daty i czasu:

Kliknięcie na aktualną datę spowoduje wyświetlenie kalendarza, za pomocą którego można szybko przełączyć się na inny dzień:

Metoda IViewManager.ShowDateTimePopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) przyjmuje 4 argumenty:
DateTime selectedDate— data i czas, które będą wybrane po wyświetleniu okna.string title— tytuł okna.DateTime minDate— minimalna data i czas, które można wybrać. Wartość wpływa również na kalendarz.DateTime maxDate— maksymalna data i czas, które można wybrać. Wartość wpływa również na kalendarz.
Metoda zwróci datę i czas wybrane przez użytkownika, jeśli naciśnie «OK», lub null, jeśli naciśnie «Anuluj».
Opcja 3: Okno Kalendarza
Do wyboru daty można użyć okna z kalendarzem:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var dateCalendarPopupResult = x.vm.ShowCalendarPopup(DateTime.Today, "Calendar", DateTime.Today, DateTime.Today.AddMonths(6));
});
Po kliknięciu przycisku zostanie wyświetlone okno:

Metoda IViewManager.ShowCalendarPopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) przyjmuje 4 argumenty:
DateTime selectedDate— data, która będzie wybrana po wyświetleniu okna.string title— tytuł okna.DateTime minDate— minimalna data, którą można wybrać.DateTime maxDate— maksymalna data, którą można wybrać.
Metoda zwróci datę wybraną przez użytkownika, jeśli naciśnie «OK», lub null, jeśli naciśnie «Anuluj».