Vendor app Client: Maiora
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

85 Zeilen
3.0 KiB

  1. import { Component, OnInit } from '@angular/core';
  2. @Component({
  3. selector: 'app-schedules',
  4. templateUrl: './schedules.component.html',
  5. styleUrls: ['./schedules.component.scss']
  6. })
  7. export class SchedulesComponent implements OnInit {
  8. selectedDate: number;
  9. selectedMonth: string;
  10. selectedYear: number;
  11. dayMap: Array<string> = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  12. monthMap: Array<string> = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  13. preceedingDays: Array<number> = [];
  14. succeedingDays: Array<number> = [];
  15. selectedMonthDays: Array<number> = [];
  16. constructor() { }
  17. ngOnInit() {
  18. this.selectedMonth = this.monthMap[(new Date()).getMonth()];
  19. this.selectedYear = (new Date()).getFullYear();
  20. this.selectedDate = new Date().getDate();
  21. this.renderCalendar();
  22. }
  23. renderCalendar() {
  24. // Generate dates for the calendar
  25. let i = 1,
  26. no_of_preceeding_days,
  27. no_of_days_in_selected_month,
  28. no_of_succeeding_days,
  29. last_date_of_previous_month,
  30. first_date_of_selected_month,
  31. last_date_of_selected_month;
  32. first_date_of_selected_month = new Date(this.selectedYear, this.monthMap.indexOf(this.selectedMonth), 1);
  33. // Add one month, and subtract one day to the selected month and year
  34. last_date_of_selected_month = new Date(this.selectedYear, this.monthMap.indexOf(this.selectedMonth) + 1, 0);
  35. last_date_of_previous_month = new Date(this.selectedYear, this.monthMap.indexOf(this.selectedMonth), 0);
  36. no_of_preceeding_days = first_date_of_selected_month.getDay();
  37. no_of_days_in_selected_month = last_date_of_selected_month.getDate();
  38. no_of_succeeding_days = 6 - last_date_of_selected_month.getDay();
  39. this.preceedingDays = [];
  40. this.selectedMonthDays = [];
  41. this.succeedingDays = [];
  42. for (i = no_of_preceeding_days - 1; i >= 0; i -= 1) {
  43. this.preceedingDays.push(last_date_of_previous_month.getDate() - i);
  44. }
  45. for (i = 1; i <= no_of_days_in_selected_month; i += 1) {
  46. this.selectedMonthDays.push(i);
  47. }
  48. for (i = 1; i <= no_of_succeeding_days; i += 1) {
  49. this.succeedingDays.push(i);
  50. }
  51. }
  52. selectNextMonth() {
  53. let next_month_index = (this.monthMap.indexOf(this.selectedMonth) + 1) % this.monthMap.length;
  54. this.selectedMonth = this.monthMap[next_month_index];
  55. if (next_month_index == 0) {
  56. this.selectedYear += 1;
  57. }
  58. this.renderCalendar();
  59. }
  60. selectPreviousMonth() {
  61. let previous_month_index = (this.monthMap.indexOf(this.selectedMonth) + (this.monthMap.length - 1)) % this.monthMap.length;
  62. this.selectedMonth = this.monthMap[previous_month_index];
  63. if (previous_month_index == (this.monthMap.length - 1)) {
  64. this.selectedYear -= 1;
  65. }
  66. this.renderCalendar();
  67. }
  68. }