ExistingForms.xaml.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using InABox.Core;
  7. using Xamarin.Forms.Xaml;
  8. using XF.Material.Forms.UI.Dialogs;
  9. namespace comal.timesheets
  10. {
  11. [XamlCompilation(XamlCompilationOptions.Compile)]
  12. public partial class ExistingForms
  13. {
  14. private String _currentfilter = "";
  15. public IModel DataModel
  16. {
  17. get => _model.DataModel;
  18. set => _model.DataModel = value;
  19. }
  20. public String AppliesTo
  21. {
  22. get => _model.AppliesTo;
  23. set => _model.AppliesTo = value;
  24. }
  25. public Func<IModel, IDigitalFormInstanceShell[]> Property
  26. {
  27. get => _model.Property;
  28. set => _model.Property = value;
  29. }
  30. // Event to handle new / existing form selection
  31. public ExistingForms()
  32. {
  33. InitializeComponent();
  34. }
  35. public void RefreshData(bool force, bool async)
  36. {
  37. if (async)
  38. DataModel.Refresh(force, Refresh);
  39. else
  40. {
  41. DataModel.Refresh(true);
  42. Refresh();
  43. }
  44. }
  45. private void Refresh()
  46. {
  47. var forms = Property(DataModel);
  48. _forms.ItemsSource = forms.Where(FilterShell);
  49. }
  50. private bool FilterShell(IDigitalFormInstanceShell shell)
  51. {
  52. if (String.IsNullOrWhiteSpace(_currentfilter))
  53. return true;
  54. return shell.Code.ToUpper().Contains(_currentfilter.ToUpper())
  55. || shell.Description.ToUpper().Contains(_currentfilter.ToUpper());
  56. }
  57. private void _search_OnTextChanged(object sender, MobileSearchBarTextChangedArgs args)
  58. {
  59. _currentfilter = args.Text;
  60. Refresh();
  61. }
  62. private void _digitalforms_OnRefresh(object sender, MobileListRefreshEventArgs args)
  63. {
  64. RefreshData(true,false);
  65. }
  66. private void AddForm_Tapped(object sender, EventArgs e)
  67. {
  68. var selector = new NewForms() { AppliesTo = this.AppliesTo };
  69. selector.ItemSelected += CreateNewForm;
  70. Navigation.PushAsync(selector);
  71. }
  72. private async void CreateNewForm(object sender, NewFormSelectedArgs args)
  73. {
  74. await MaterialDialog.Instance.AlertAsync("Not Implemented Yet!");
  75. return;
  76. }
  77. private async void EditForm(object sender, MobileListItemTappedEventArgs args)
  78. {
  79. await MaterialDialog.Instance.AlertAsync("Not Implemented Yet!");
  80. return;
  81. }
  82. }
  83. }