functions.service.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. import { Injectable } from '@angular/core';
  2. @Injectable({
  3. providedIn: 'root'
  4. })
  5. export class FunctionsService {
  6. MONTHS = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
  7. DAYS = ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
  8. constructor() { }
  9. orderDate(date: string): string {
  10. let dateTimeArr = date.split(' ');
  11. if(dateTimeArr[0] == undefined || dateTimeArr[0] == 'undefined'){
  12. return '';
  13. }else if(dateTimeArr[0].includes('T')){
  14. let dateJSArr = dateTimeArr[0].split('T');
  15. dateTimeArr[0] = dateJSArr[0];
  16. }
  17. let dateArr = dateTimeArr[0].split('-');
  18. dateArr = dateArr.reverse();
  19. let dateStr = dateArr.join('-');
  20. let timeArr = dateTimeArr[1].split(':');
  21. let hour = parseInt(timeArr[0]);
  22. let period = hour < 12 ? 'AM' : 'PM';
  23. if(hour > 12) hour = hour - 12;
  24. let hourStr = hour < 10 ? `0${hour}` : `${hour}`;
  25. timeArr[0] = hourStr;
  26. let timeStr = timeArr.join(':');
  27. return `${dateStr} ${timeStr} ${period}`;
  28. }
  29. notificationDate(date: string): string{
  30. let dateObj = new Date(date);
  31. console.log(dateObj);
  32. return "";
  33. }
  34. buildHumanDate(date: string): string{
  35. let dateArr = date.split('-').reverse();
  36. let monthInd = parseInt(dateArr[1]) - 1;
  37. return `${dateArr[0]} de ${this.MONTHS[monthInd]} del ${dateArr[2]}`;
  38. }
  39. buildName(no: string, ap: string, am: string | null | undefined): string{
  40. let name = `${no} ${ap}`;
  41. if(am != "" && am != undefined && am != null){
  42. name += ` ${am}`;
  43. }
  44. return name;
  45. }
  46. formatBytes(bytes: number, decimals = 2) {
  47. if (bytes === 0) return '0 Bytes';
  48. const k = 1024;
  49. const dm = decimals < 0 ? 0 : decimals;
  50. const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
  51. const i = Math.floor(Math.log(bytes) / Math.log(k));
  52. return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
  53. }
  54. activatorCustomRepeat(value: string): string{
  55. if(value == ''){
  56. return '';
  57. }
  58. let resObj = JSON.parse(value);
  59. let repeatEvery = resObj.repeatEvery.split('|');
  60. let customRepeat = 'Repetir cada ';
  61. if(repeatEvery[0] != "1"){
  62. customRepeat += repeatEvery[0];
  63. }
  64. switch(repeatEvery[1]){
  65. case "0": customRepeat += repeatEvery[0] != "1" ? ' días' : ' día'; break;
  66. case "1": customRepeat += repeatEvery[0] != "1" ? ' semanas' : ' semana'; break;
  67. case "2": customRepeat += repeatEvery[0] != "1" ? ' meses' : ' mes'; break;
  68. case "3": customRepeat += repeatEvery[0] != "1" ? ' años' : ' año'; break;
  69. }
  70. let days = 0;
  71. let daysValues = Object.values(resObj.repeatOn);
  72. let daysStr = '';
  73. let cont = 0;
  74. daysValues.forEach(val => {
  75. if(val){
  76. daysStr += `${this.DAYS[cont]}, `;
  77. days++;
  78. }
  79. cont++;
  80. });
  81. daysStr = daysStr.substring(0, daysStr.length - 2);
  82. if(days > 1){
  83. customRepeat += ' los días: ';
  84. }else{
  85. customRepeat += ' el día: ';
  86. }
  87. customRepeat += daysStr;
  88. let endsAt = resObj.endsAt.split('|');
  89. if(endsAt[0] == 'O'){
  90. let dateArr = endsAt[1].split('-').reverse();
  91. customRepeat += '. Finaliza el ' + dateArr[0] + ' de ' + this.MONTHS[parseInt(dateArr[1])] + ' del ' + dateArr[2] + '.';
  92. }else if(endsAt[0] == 'A'){
  93. let after = endsAt[2];
  94. customRepeat += '. Finaliza después de ' + after + ' repeti';
  95. if(after == '1'){
  96. customRepeat += 'ción.';
  97. }else{
  98. customRepeat += 'ciones.';
  99. }
  100. }
  101. return `${customRepeat.replace(' ', ' ')}||${value}`;
  102. }
  103. activatorRepeat(repeat: string, dateStr: string): string{
  104. let dateObj = new Date(dateStr);
  105. if(repeat == 'NR'){
  106. return 'No se repite';
  107. }else if(repeat == 'SE'){
  108. return `Semanalmente los ${this.DAYS[dateObj.getDay()]}`;
  109. }else if(repeat == 'ME'){
  110. return `Mensualmente los días ${dateObj.getDate()}`;
  111. }else if(repeat == 'AN'){
  112. return `Anualmente el ${dateObj.getDate()} de ${this.MONTHS[dateObj.getMonth()]}`;
  113. }else if(repeat == 'TD'){
  114. return `Todos los días a partir del ${this.DAYS[dateObj.getDay()]} ${dateObj.getDate()} de ${this.MONTHS[dateObj.getMonth()]} del ${dateObj.getFullYear()}`
  115. }else if(repeat == 'PE'){
  116. return 'Personalizado...';
  117. }else{
  118. return 'Desconocido';
  119. }
  120. }
  121. activatorComparision(comparision: string): string{
  122. if(comparision == 'AC'){
  123. return 'Acumulado';
  124. }else if(comparision == 'UR'){
  125. return 'Último registro';
  126. }else{
  127. return 'Desconocido';
  128. }
  129. }
  130. getDateTimeHour(dateTime: string): string{
  131. let dateTimeArr = dateTime.split(' ');
  132. let timeArr = dateTimeArr[1].split(':');
  133. let hour = parseInt(timeArr[0]);
  134. let period = hour < 12 ? 'AM' : 'PM';
  135. hour = hour > 12 ? hour - 12 : hour;
  136. let hourStr = hour < 10 ? `0${hour}` : `${hour}`;
  137. return `${hourStr}:${timeArr[1]} ${period}`;
  138. }
  139. }