jornada-ui 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/resume-raking/index.js +79 -0
- package/lib/commonjs/components/resume-raking/index.js.map +1 -0
- package/lib/commonjs/components/resume-raking/interface.js +2 -0
- package/lib/commonjs/components/resume-raking/interface.js.map +1 -0
- package/lib/commonjs/components/resume-raking/styles.js +2 -0
- package/lib/commonjs/components/resume-raking/styles.js.map +1 -0
- package/lib/commonjs/components/travel-history/index.js +248 -237
- package/lib/commonjs/components/travel-history/index.js.map +1 -1
- package/lib/commonjs/components/weekly-table/helpers/calcular-total-horas.js +48 -10
- package/lib/commonjs/components/weekly-table/helpers/calcular-total-horas.js.map +1 -1
- package/lib/commonjs/components/weekly-table/index.js +6 -10
- package/lib/commonjs/components/weekly-table/index.js.map +1 -1
- package/lib/commonjs/index.js +11 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/styles/theme/theme.js +1 -0
- package/lib/commonjs/styles/theme/theme.js.map +1 -1
- package/lib/module/components/resume-raking/index.js +72 -0
- package/lib/module/components/resume-raking/index.js.map +1 -0
- package/lib/module/components/resume-raking/interface.js +2 -0
- package/lib/module/components/resume-raking/interface.js.map +1 -0
- package/lib/module/components/resume-raking/styles.js +2 -0
- package/lib/module/components/resume-raking/styles.js.map +1 -0
- package/lib/module/components/travel-history/index.js +248 -237
- package/lib/module/components/travel-history/index.js.map +1 -1
- package/lib/module/components/weekly-table/helpers/calcular-total-horas.js +46 -9
- package/lib/module/components/weekly-table/helpers/calcular-total-horas.js.map +1 -1
- package/lib/module/components/weekly-table/index.js +7 -11
- package/lib/module/components/weekly-table/index.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/styles/theme/theme.js +1 -0
- package/lib/module/styles/theme/theme.js.map +1 -1
- package/lib/typescript/commonjs/src/components/resume-raking/index.d.ts +8 -0
- package/lib/typescript/commonjs/src/components/resume-raking/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/resume-raking/interface.d.ts +13 -0
- package/lib/typescript/commonjs/src/components/resume-raking/interface.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/resume-raking/styles.d.ts +1 -0
- package/lib/typescript/commonjs/src/components/resume-raking/styles.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/travel-history/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/components/travel-history/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/components/weekly-table/helpers/calcular-total-horas.d.ts +2 -1
- package/lib/typescript/commonjs/src/components/weekly-table/helpers/calcular-total-horas.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/components/weekly-table/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/styles/global/theme-provider.d.ts +1 -0
- package/lib/typescript/commonjs/src/styles/global/theme-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/styles/theme/theme.d.ts +1 -0
- package/lib/typescript/commonjs/src/styles/theme/theme.d.ts.map +1 -1
- package/lib/typescript/module/src/components/resume-raking/index.d.ts +8 -0
- package/lib/typescript/module/src/components/resume-raking/index.d.ts.map +1 -0
- package/lib/typescript/module/src/components/resume-raking/interface.d.ts +13 -0
- package/lib/typescript/module/src/components/resume-raking/interface.d.ts.map +1 -0
- package/lib/typescript/module/src/components/resume-raking/styles.d.ts +1 -0
- package/lib/typescript/module/src/components/resume-raking/styles.d.ts.map +1 -0
- package/lib/typescript/module/src/components/travel-history/index.d.ts +1 -0
- package/lib/typescript/module/src/components/travel-history/index.d.ts.map +1 -1
- package/lib/typescript/module/src/components/weekly-table/helpers/calcular-total-horas.d.ts +2 -1
- package/lib/typescript/module/src/components/weekly-table/helpers/calcular-total-horas.d.ts.map +1 -1
- package/lib/typescript/module/src/components/weekly-table/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +1 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/styles/global/theme-provider.d.ts +1 -0
- package/lib/typescript/module/src/styles/global/theme-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/styles/theme/theme.d.ts +1 -0
- package/lib/typescript/module/src/styles/theme/theme.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/resume-raking/index.tsx +75 -0
- package/src/components/resume-raking/interface.ts +14 -0
- package/src/components/resume-raking/styles.ts +0 -0
- package/src/components/travel-history/index.tsx +330 -314
- package/src/components/travel-history/interface.d.ts +153 -149
- package/src/components/weekly-table/helpers/calcular-total-horas.ts +89 -50
- package/src/components/weekly-table/index.tsx +138 -142
- package/src/index.tsx +1 -0
- package/src/styles/theme/theme.ts +1 -0
|
@@ -1,149 +1,153 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
| "
|
|
86
|
-
| "
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
1
|
+
/* eslint-disable no-unused-vars */
|
|
2
|
+
/* eslint-disable no-undef */
|
|
3
|
+
/**
|
|
4
|
+
* IMPORTS
|
|
5
|
+
*/
|
|
6
|
+
import { type DimensionValue, type ViewProps } from "react-native";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* INTERFACE
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
type ITravelHistory = ViewProps & {
|
|
13
|
+
/** callback tipada que recebe o payload */
|
|
14
|
+
onPress: (tripData: T) => void;
|
|
15
|
+
/**
|
|
16
|
+
* props que mostra o nome do usuário
|
|
17
|
+
*/
|
|
18
|
+
name?: string;
|
|
19
|
+
|
|
20
|
+
/** Problemas com abastecimento (true = mostra ícone) */
|
|
21
|
+
supplyIssue?: boolean;
|
|
22
|
+
|
|
23
|
+
/** Problemas de logística (true = mostra ícone) */
|
|
24
|
+
logisticsIssue?: boolean;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* props que mostra o ciclo do relatório - DIÁRIA OU SEMANAL
|
|
28
|
+
*/
|
|
29
|
+
ciclo?: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* props para compor informações do card
|
|
33
|
+
*/
|
|
34
|
+
idViagem?: string;
|
|
35
|
+
plate?: string;
|
|
36
|
+
value?: string;
|
|
37
|
+
status?: string;
|
|
38
|
+
supply?: string;
|
|
39
|
+
nextTrip?: string;
|
|
40
|
+
avatar?: string;
|
|
41
|
+
startTrip?: string;
|
|
42
|
+
origin?: string;
|
|
43
|
+
destination?: string;
|
|
44
|
+
/**
|
|
45
|
+
* TestID para testes automático e identificação
|
|
46
|
+
*/
|
|
47
|
+
testID?: string;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* A propriedade CSS abreviada border define a borda de um elemento. Ele define os valores de largura da borda, estilo da borda e cor da borda.
|
|
51
|
+
*/
|
|
52
|
+
borderStyled?: {
|
|
53
|
+
borderStyle?: "solid" | "dotted" | "dashed";
|
|
54
|
+
|
|
55
|
+
borderRadius?: number | DimensionValue;
|
|
56
|
+
borderTopRightRadius?: number | DimensionValue;
|
|
57
|
+
borderTopLeftRadius?: number | DimensionValue;
|
|
58
|
+
borderBottomRightRadius?: number | DimensionValue;
|
|
59
|
+
borderBottomLeftRadius?: number | DimensionValue;
|
|
60
|
+
|
|
61
|
+
borderWidth?: number | DimensionValue;
|
|
62
|
+
borderLeftWidth?: number | DimensionValue;
|
|
63
|
+
borderRightWidth?: number | DimensionValue;
|
|
64
|
+
borderTopWidth?: number | DimensionValue;
|
|
65
|
+
borderBottomWidth?: number | DimensionValue;
|
|
66
|
+
|
|
67
|
+
borderColor?: string;
|
|
68
|
+
borderBottomColor?: string;
|
|
69
|
+
borderLeftColor?: string;
|
|
70
|
+
borderRightColor?: string;
|
|
71
|
+
borderTopColor?: string;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Propriedades que define a orientação do button que é usada para representar uma página. Na maioria das vezes, esse valores corresponde ao posicionamento alvo da página impressa, se aplicável.
|
|
76
|
+
*/
|
|
77
|
+
flexStyle?: {
|
|
78
|
+
alignItems?: "flex-start" | "flex-end" | "center" | "stretch" | "baseline";
|
|
79
|
+
alignSelf?: "auto" | "flex-start" | "flex-end" | "center" | "stretch" | "baseline";
|
|
80
|
+
flex?: string | number;
|
|
81
|
+
flexDirection?: "column" | "column-reverse" | "row" | "row-reverse";
|
|
82
|
+
flexWrap?: "nowrap" | "wrap" | "wrap-reverse";
|
|
83
|
+
textAlign?: "auto" | "center" | "left" | "right" | "justify";
|
|
84
|
+
justifyContent?:
|
|
85
|
+
| "flex-start"
|
|
86
|
+
| "flex-end"
|
|
87
|
+
| "center"
|
|
88
|
+
| "space-between"
|
|
89
|
+
| "space-around"
|
|
90
|
+
| "space-evenly";
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* A propriedade margin do CSS define a área de margem nos quatro lados do elemento. É uma abreviação que define todas as margens individuais de uma só vez: margin-top, margin-right (en-US), margin-bottom, e margin-left (en-US).
|
|
95
|
+
*/
|
|
96
|
+
marginStyle?: {
|
|
97
|
+
margin?: number | DimensionValue;
|
|
98
|
+
marginLeft?: number | DimensionValue;
|
|
99
|
+
marginRight?: number | DimensionValue;
|
|
100
|
+
marginTop?: number | DimensionValue;
|
|
101
|
+
marginBottom?: number | DimensionValue;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* A propriedade padding define uma a distância entre o conteúdo de um elemento e suas bordas. É um atalho que evita definir uma distância para cada lado separadamente (padding-top, padding-right, padding-bottom, padding-left).
|
|
106
|
+
*/
|
|
107
|
+
paddingStyle?: {
|
|
108
|
+
padding?: number | DimensionValue;
|
|
109
|
+
paddingLeft?: number | DimensionValue;
|
|
110
|
+
paddingRight?: number | DimensionValue;
|
|
111
|
+
paddingTop?: number | DimensionValue;
|
|
112
|
+
paddingBottom?: number | DimensionValue;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* A propriedade CSS height define a altura de um elemento. A altura de um elemento é a distância do topo da borda superior do elemento ao fundo da borda inferior.
|
|
117
|
+
*/
|
|
118
|
+
height?: number | DimensionValue;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* A propriedade CSS width define a largura de um elemento. A largura de um elemento é a distância do topo da borda esquerda do elemento ao fundo da borda direita.
|
|
122
|
+
*/
|
|
123
|
+
width?: number | DimensionValue;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* O fundo abreviado CSS Propriedade define todas as propriedades do estilo de fundo de uma só vez, como cor, imagem, origem e tamanho ou método de repetição. As propriedades dos componentes não definidas no fundo da declaração de valor da propriedade abreviada são definidas como seus valores padrão..
|
|
127
|
+
* A Propriedade Background está sendo utilizada para definir a cor de fundo do cabeçalho do card e do ícone check.
|
|
128
|
+
*/
|
|
129
|
+
backgroundColor?: string;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Propriedade texto que sera renderizado pro usuário final
|
|
133
|
+
*/
|
|
134
|
+
text?: string;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* A propriedade CSS color define o valor da cor de primeiro plano do texto e das decorações de texto de um elemento e define o valor currentcolor. currentcolor pode ser usado como um valor indireto em outras propriedades e é o padrão para outras propriedades de cores, como border-color.
|
|
138
|
+
*/
|
|
139
|
+
color?: {
|
|
140
|
+
colorSvg?: string;
|
|
141
|
+
colorText?: string;
|
|
142
|
+
colorTextBold?: string;
|
|
143
|
+
colorTextData?: string;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// Cor do ícone
|
|
147
|
+
iconColor?: string;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* EXPORT
|
|
152
|
+
*/
|
|
153
|
+
export type { ITravelHistory };
|
|
@@ -1,50 +1,89 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IMPORTS
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
//typngs
|
|
6
|
-
import type { DayInfo } from "../interface";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param dias
|
|
11
|
-
* @returns
|
|
12
|
-
*/
|
|
13
|
-
const handlecalcularTotalHoras = (dias: DayInfo[]): string => {
|
|
14
|
-
let totalMinutos = 0;
|
|
15
|
-
|
|
16
|
-
dias.forEach(({ entrada, saida }) => {
|
|
17
|
-
if (!entrada || !saida || saida.toUpperCase() === "REP") return;
|
|
18
|
-
|
|
19
|
-
const entradaSplit = entrada.split(":").map(Number);
|
|
20
|
-
const saidaSplit = saida.split(":").map(Number);
|
|
21
|
-
|
|
22
|
-
if (entradaSplit.length !== 2 || saidaSplit.length !== 2) return;
|
|
23
|
-
|
|
24
|
-
const [h1, m1] = entradaSplit;
|
|
25
|
-
const [h2, m2] = saidaSplit;
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
typeof h1 !== "number" ||
|
|
29
|
-
isNaN(h1) ||
|
|
30
|
-
typeof m1 !== "number" ||
|
|
31
|
-
isNaN(m1) ||
|
|
32
|
-
typeof h2 !== "number" ||
|
|
33
|
-
isNaN(h2) ||
|
|
34
|
-
typeof m2 !== "number" ||
|
|
35
|
-
isNaN(m2)
|
|
36
|
-
)
|
|
37
|
-
return;
|
|
38
|
-
|
|
39
|
-
totalMinutos += h2 * 60 + m2 - (h1 * 60 + m1);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
const horas = Math.floor(totalMinutos / 60);
|
|
43
|
-
const minutos = totalMinutos % 60;
|
|
44
|
-
return `${horas}:${minutos.toString().padStart(2, "0")}`;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
1
|
+
/**
|
|
2
|
+
* IMPORTS
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
//typngs
|
|
6
|
+
import type { DayInfo } from "../interface";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param dias
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
const handlecalcularTotalHoras = (dias: DayInfo[]): string => {
|
|
14
|
+
let totalMinutos = 0;
|
|
15
|
+
|
|
16
|
+
dias.forEach(({ entrada, saida }) => {
|
|
17
|
+
if (!entrada || !saida || saida.toUpperCase() === "REP") return;
|
|
18
|
+
|
|
19
|
+
const entradaSplit = entrada.split(":").map(Number);
|
|
20
|
+
const saidaSplit = saida.split(":").map(Number);
|
|
21
|
+
|
|
22
|
+
if (entradaSplit.length !== 2 || saidaSplit.length !== 2) return;
|
|
23
|
+
|
|
24
|
+
const [h1, m1] = entradaSplit;
|
|
25
|
+
const [h2, m2] = saidaSplit;
|
|
26
|
+
|
|
27
|
+
if (
|
|
28
|
+
typeof h1 !== "number" ||
|
|
29
|
+
isNaN(h1) ||
|
|
30
|
+
typeof m1 !== "number" ||
|
|
31
|
+
isNaN(m1) ||
|
|
32
|
+
typeof h2 !== "number" ||
|
|
33
|
+
isNaN(h2) ||
|
|
34
|
+
typeof m2 !== "number" ||
|
|
35
|
+
isNaN(m2)
|
|
36
|
+
)
|
|
37
|
+
return;
|
|
38
|
+
|
|
39
|
+
totalMinutos += h2 * 60 + m2 - (h1 * 60 + m1);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const horas = Math.floor(totalMinutos / 60);
|
|
43
|
+
const minutos = totalMinutos % 60;
|
|
44
|
+
return `${horas}:${minutos.toString().padStart(2, "0")}`;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// fazendo um regex para ver se ná minha variavel tem o valor
|
|
48
|
+
const isTime = (v?: string) => !!v && /^\d{1,2}:\d{2}$/.test(v);
|
|
49
|
+
|
|
50
|
+
// retornando a duração de cada jornada para realizar o calculo
|
|
51
|
+
const toMinutes = (hhmm: string) => {
|
|
52
|
+
const [h, m] = hhmm.split(":").map(Number);
|
|
53
|
+
return h! * 60 + m!;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const handleCalcularTotalHoras = (dias: DayInfo[]): string => {
|
|
57
|
+
let totalMin = 0;
|
|
58
|
+
|
|
59
|
+
for (const { entrada, saida } of dias) {
|
|
60
|
+
// ignorar quando encontrar repouso
|
|
61
|
+
if (saida?.toUpperCase() === "REP" || entrada?.toUpperCase() === "REP") continue;
|
|
62
|
+
|
|
63
|
+
const entradaIsTime = isTime(entrada);
|
|
64
|
+
const saidaIsTime = isTime(saida);
|
|
65
|
+
|
|
66
|
+
if (entradaIsTime && saidaIsTime) {
|
|
67
|
+
// diferença entre horários (suporta virar o dia)
|
|
68
|
+
let start = toMinutes(entrada!);
|
|
69
|
+
let end = toMinutes(saida!);
|
|
70
|
+
if (end < start) end += 24 * 60; // atravessou meia-noite
|
|
71
|
+
totalMin += end - start;
|
|
72
|
+
} else if (saidaIsTime && !entradaIsTime) {
|
|
73
|
+
// considerar 'saida' como DURAÇÃO do dia
|
|
74
|
+
totalMin += toMinutes(saida!);
|
|
75
|
+
} else if (entradaIsTime && !saidaIsTime) {
|
|
76
|
+
// considerar 'entrada' como DURAÇÃO do dia (fallback)
|
|
77
|
+
totalMin += toMinutes(entrada!);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const h = Math.floor(totalMin / 60);
|
|
82
|
+
const m = totalMin % 60;
|
|
83
|
+
return `${h}:${m.toString().padStart(2, "0")}`;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* EXPORTS
|
|
88
|
+
*/
|
|
89
|
+
export { handlecalcularTotalHoras, handleCalcularTotalHoras };
|