@cronapp/precise-calculations 1.0.0-SNAPSHOT.202407241725
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/cronapp.json +24 -0
- package/i18n/locale_en_us.json +72 -0
- package/i18n/locale_pt_br.json +72 -0
- package/package.json +22 -0
- package/precise.calculations.cronapi.js +410 -0
package/cronapp.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"postUpdate": {
|
|
3
|
+
"ionic": {
|
|
4
|
+
"includes": [
|
|
5
|
+
{
|
|
6
|
+
"file": "index.html",
|
|
7
|
+
"script": "node_modules/@cronapp/precise-calculations/precise.calculations.cronapi.js",
|
|
8
|
+
"type": "script"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"cordova": []
|
|
12
|
+
},
|
|
13
|
+
"angularJs": {
|
|
14
|
+
"includes": [
|
|
15
|
+
{
|
|
16
|
+
"file": "index.html",
|
|
17
|
+
"script": "node_modules/@cronapp/precise-calculations/precise.calculations.cronapi.js",
|
|
18
|
+
"type": "script",
|
|
19
|
+
"layers": ["web"]
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"calculateExpression": "Calculate Expression",
|
|
3
|
+
"calculateExpressionDescription": "Function to calculate a precise mathematical expression",
|
|
4
|
+
"value1Description": "First value",
|
|
5
|
+
"operationDescription": "Operation",
|
|
6
|
+
"value2Description": "Second value",
|
|
7
|
+
"calculateMathOperation": "Calculate Math Operation",
|
|
8
|
+
"calculateMathOperationDescription": "Function to calculate a specific math operation",
|
|
9
|
+
"valueDescription": "Value",
|
|
10
|
+
"calculateTrigOperation": "Calculate Trig Operation",
|
|
11
|
+
"calculateTrigOperationDescription": "Function to calculate a specific trigonometric operation",
|
|
12
|
+
"getConstant": "Get Constant",
|
|
13
|
+
"getConstantDescription": "Function to get a mathematical constant",
|
|
14
|
+
"constantDescription": "Constant",
|
|
15
|
+
"checkProperty": "Check Property",
|
|
16
|
+
"checkPropertyDescription": "Function to check a number's property",
|
|
17
|
+
"roundNumber": "Round Number",
|
|
18
|
+
"roundNumberDescription": "Function to round a number",
|
|
19
|
+
"generateRandomFraction": "Generate Random Fraction",
|
|
20
|
+
"generateRandomFractionDescription": "Function to generate a random fraction",
|
|
21
|
+
"calculateListOperation": "Calculate List Operation",
|
|
22
|
+
"calculateListOperationDescription": "Function to calculate an operation on a list of numbers",
|
|
23
|
+
"listDescription": "List of numbers",
|
|
24
|
+
"calculateModulo": "Calculate Modulo",
|
|
25
|
+
"calculateModuloDescription": "Function to calculate the remainder of a division",
|
|
26
|
+
"dividendDescription": "Dividend",
|
|
27
|
+
"divisorDescription": "Divisor",
|
|
28
|
+
"generateRandom": "Generate Random Number",
|
|
29
|
+
"generateRandomDescription": "Function to generate a random number within a range",
|
|
30
|
+
"minValueDescription": "Minimum value",
|
|
31
|
+
"maxValueDescription": "Maximum value",
|
|
32
|
+
"restrictNumber": "Restrict Number",
|
|
33
|
+
"restrictNumberDescription": "Function to restrict a number within a range",
|
|
34
|
+
"Addition": "Addition",
|
|
35
|
+
"Subtraction": "Subtraction",
|
|
36
|
+
"Multiplication": "Multiplication",
|
|
37
|
+
"Division": "Division",
|
|
38
|
+
"Exponentiation": "Exponentiation",
|
|
39
|
+
"Square root": "Square root",
|
|
40
|
+
"Absolute value": "Absolute value",
|
|
41
|
+
"Negative": "Negative",
|
|
42
|
+
"Natural logarithm": "Natural logarithm",
|
|
43
|
+
"Logarithm base 10": "Logarithm base 10",
|
|
44
|
+
"Exponential": "Exponential",
|
|
45
|
+
"Power of 10": "Power of 10",
|
|
46
|
+
"Sine": "Sine",
|
|
47
|
+
"Cosine": "Cosine",
|
|
48
|
+
"Tangent": "Tangent",
|
|
49
|
+
"Arc sine": "Arc sine",
|
|
50
|
+
"Arc cosine": "Arc cosine",
|
|
51
|
+
"Arc tangent": "Arc tangent",
|
|
52
|
+
"Pi": "Pi",
|
|
53
|
+
"Euler": "Euler",
|
|
54
|
+
"Phi": "Phi",
|
|
55
|
+
"Square root of 2": "Square root of 2",
|
|
56
|
+
"Square root of 1/2": "Square root of 1/2",
|
|
57
|
+
"Even": "Even",
|
|
58
|
+
"Odd": "Odd",
|
|
59
|
+
"Integer": "Integer",
|
|
60
|
+
"Positive": "Positive",
|
|
61
|
+
"Negative": "Negative",
|
|
62
|
+
"Round up": "Round up",
|
|
63
|
+
"Round down": "Round down",
|
|
64
|
+
"Sum": "Sum",
|
|
65
|
+
"Minimum value": "Minimum value",
|
|
66
|
+
"Maximum value": "Maximum value",
|
|
67
|
+
"Mean": "Mean",
|
|
68
|
+
"Median": "Median",
|
|
69
|
+
"Mode": "Mode",
|
|
70
|
+
"Standard deviation": "Standard deviation",
|
|
71
|
+
"Random item": "Random item",
|
|
72
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"calculateExpression": "Calcular Expressão",
|
|
3
|
+
"calculateExpressionDescription": "Função para calcular uma expressão matemática precisa",
|
|
4
|
+
"value1Description": "Primeiro valor",
|
|
5
|
+
"operationDescription": "Operação",
|
|
6
|
+
"value2Description": "Segundo valor",
|
|
7
|
+
"calculateMathOperation": "Calcular Operação Matemática",
|
|
8
|
+
"calculateMathOperationDescription": "Função para calcular uma operação matemática específica",
|
|
9
|
+
"valueDescription": "Valor",
|
|
10
|
+
"calculateTrigOperation": "Calcular Operação Trigonométrica",
|
|
11
|
+
"calculateTrigOperationDescription": "Função para calcular uma operação trigonométrica específica",
|
|
12
|
+
"getConstant": "Obter Constante",
|
|
13
|
+
"getConstantDescription": "Função para obter uma constante matemática",
|
|
14
|
+
"constantDescription": "Constante",
|
|
15
|
+
"checkProperty": "Verificar Propriedade",
|
|
16
|
+
"checkPropertyDescription": "Função para verificar uma propriedade de um número",
|
|
17
|
+
"roundNumber": "Arredondar Número",
|
|
18
|
+
"roundNumberDescription": "Função para arredondar um número",
|
|
19
|
+
"generateRandomFraction": "Gerar Fração Aleatória",
|
|
20
|
+
"generateRandomFractionDescription": "Função para gerar uma fração aleatória",
|
|
21
|
+
"calculateListOperation": "Calcular Operação em Lista",
|
|
22
|
+
"calculateListOperationDescription": "Função para calcular uma operação em uma lista de números",
|
|
23
|
+
"listDescription": "Lista de números",
|
|
24
|
+
"calculateModulo": "Calcular Módulo",
|
|
25
|
+
"calculateModuloDescription": "Função para calcular o resto da divisão",
|
|
26
|
+
"dividendDescription": "Dividendo",
|
|
27
|
+
"divisorDescription": "Divisor",
|
|
28
|
+
"generateRandom": "Gerar Número Aleatório",
|
|
29
|
+
"generateRandomDescription": "Função para gerar um número aleatório dentro de um intervalo",
|
|
30
|
+
"minValueDescription": "Valor mínimo",
|
|
31
|
+
"maxValueDescription": "Valor máximo",
|
|
32
|
+
"restrictNumber": "Restringir Número",
|
|
33
|
+
"restrictNumberDescription": "Função para restringir um número dentro de um intervalo",
|
|
34
|
+
"Addition": "Adição",
|
|
35
|
+
"Subtraction": "Subtração",
|
|
36
|
+
"Multiplication": "Multiplicação",
|
|
37
|
+
"Division": "Divisão",
|
|
38
|
+
"Exponentiation": "Exponenciação",
|
|
39
|
+
"Square root": "Raiz quadrada",
|
|
40
|
+
"Absolute value": "Valor absoluto",
|
|
41
|
+
"Negative": "Negativo",
|
|
42
|
+
"Natural logarithm": "Logaritmo natural",
|
|
43
|
+
"Logarithm base 10": "Logaritmo base 10",
|
|
44
|
+
"Exponential": "Exponencial",
|
|
45
|
+
"Power of 10": "Potência de 10",
|
|
46
|
+
"Sine": "Seno",
|
|
47
|
+
"Cosine": "Cosseno",
|
|
48
|
+
"Tangent": "Tangente",
|
|
49
|
+
"Arc sine": "Arco seno",
|
|
50
|
+
"Arc cosine": "Arco cosseno",
|
|
51
|
+
"Arc tangent": "Arco tangente",
|
|
52
|
+
"Pi": "Pi",
|
|
53
|
+
"Euler": "Euler",
|
|
54
|
+
"Phi": "Phi",
|
|
55
|
+
"Square root of 2": "Raiz quadrada de 2",
|
|
56
|
+
"Square root of 1/2": "Raiz quadrada de 1/2",
|
|
57
|
+
"Even": "Par",
|
|
58
|
+
"Odd": "Ímpar",
|
|
59
|
+
"Integer": "Inteiro",
|
|
60
|
+
"Positive": "Positivo",
|
|
61
|
+
"Negative": "Negativo",
|
|
62
|
+
"Round up": "Arredondar para cima",
|
|
63
|
+
"Round down": "Arredondar para baixo",
|
|
64
|
+
"Sum": "Soma",
|
|
65
|
+
"Minimum value": "Menor valor",
|
|
66
|
+
"Maximum value": "Maior valor",
|
|
67
|
+
"Mean": "Média",
|
|
68
|
+
"Median": "Mediana",
|
|
69
|
+
"Mode": "Moda",
|
|
70
|
+
"Standard deviation": "Desvio padrão",
|
|
71
|
+
"Random item": "Item aleatório"
|
|
72
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cronapp/precise-calculations",
|
|
3
|
+
"version": "1.0.0-SNAPSHOT.202407241725",
|
|
4
|
+
"description": "Cronapp Precise Calculations Plugin",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"cronapp",
|
|
7
|
+
"precise",
|
|
8
|
+
"calculations",
|
|
9
|
+
"plugin",
|
|
10
|
+
"mobile",
|
|
11
|
+
"web",
|
|
12
|
+
"mathjs"
|
|
13
|
+
],
|
|
14
|
+
"author": "Cronapp Studio",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"mathjs": "^10.0.0"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
this.cronapi = this.cronapi || {};
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @categoryName Precise Calculations
|
|
8
|
+
*/
|
|
9
|
+
this.cronapi.precise = this.cronapi.precise || {};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type function
|
|
13
|
+
* @name {{calculateExpression}}
|
|
14
|
+
* @nameTags calcular, expressão, operação matemática
|
|
15
|
+
* @description {{calculateExpressionDescription}}
|
|
16
|
+
* @param {ObjectType.LONG} value1 {{value1Description}}
|
|
17
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys add|subtract|multiply|divide|pow @values Adição|Subtração|Multiplicação|Divisão|Exponenciação
|
|
18
|
+
* @param {ObjectType.LONG} value2 {{value2Description}}
|
|
19
|
+
* @returns {ObjectType.STRING}
|
|
20
|
+
*/
|
|
21
|
+
this.cronapi.precise.calculateExpressionCalcula = function(value1, operation, value2) {
|
|
22
|
+
let result;
|
|
23
|
+
try {
|
|
24
|
+
const num1 = math.bignumber(value1);
|
|
25
|
+
const num2 = math.bignumber(value2);
|
|
26
|
+
|
|
27
|
+
switch (operation) {
|
|
28
|
+
case 'add':
|
|
29
|
+
result = math.add(num1, num2);
|
|
30
|
+
break;
|
|
31
|
+
case 'subtract':
|
|
32
|
+
result = math.subtract(num1, num2);
|
|
33
|
+
break;
|
|
34
|
+
case 'multiply':
|
|
35
|
+
result = math.multiply(num1, num2);
|
|
36
|
+
break;
|
|
37
|
+
case 'divide':
|
|
38
|
+
result = math.divide(num1, num2);
|
|
39
|
+
break;
|
|
40
|
+
case 'pow':
|
|
41
|
+
result = math.pow(num1, num2);
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
return 'Operação inválida';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
} catch (e) {
|
|
48
|
+
console.error('Erro ao realizar a operação:', e);
|
|
49
|
+
return "Erro na expressão";
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return `Resultado: ${result}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @type function
|
|
57
|
+
* @name {{calculateMathOperation}}
|
|
58
|
+
* @nameTags calcular, operação matemática, expressão
|
|
59
|
+
* @description {{calculateMathOperationDescription}}
|
|
60
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys sqrt|abs|neg|ln|log10|exp|pow10 @values Raiz quadrada|Valor absoluto|Negativo|Logaritmo natural|Logaritmo base 10|Exponencial|Potência de 10
|
|
61
|
+
* @param {ObjectType.LONG} value {{valueDescription}} @default 0
|
|
62
|
+
* @returns {ObjectType.LONG}
|
|
63
|
+
*/
|
|
64
|
+
this.cronapi.precise.calculateMathOperation = function(operation, value) {
|
|
65
|
+
let result;
|
|
66
|
+
try {
|
|
67
|
+
switch (operation) {
|
|
68
|
+
case 'sqrt':
|
|
69
|
+
result = math.sqrt(math.bignumber(value));
|
|
70
|
+
break;
|
|
71
|
+
case 'abs':
|
|
72
|
+
result = math.abs(math.bignumber(value));
|
|
73
|
+
break;
|
|
74
|
+
case 'neg':
|
|
75
|
+
result = math.neg(math.bignumber(value));
|
|
76
|
+
break;
|
|
77
|
+
case 'ln':
|
|
78
|
+
result = math.log(math.bignumber(value));
|
|
79
|
+
break;
|
|
80
|
+
case 'log10':
|
|
81
|
+
result = math.log10(math.bignumber(value));
|
|
82
|
+
break;
|
|
83
|
+
case 'exp':
|
|
84
|
+
result = math.exp(math.bignumber(value));
|
|
85
|
+
break;
|
|
86
|
+
case 'pow10':
|
|
87
|
+
result = math.pow(10, math.bignumber(value));
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
return 'Operação inválida';
|
|
91
|
+
}
|
|
92
|
+
} catch (e) {
|
|
93
|
+
console.error('Erro ao realizar a operação matemática:', e);
|
|
94
|
+
return "Erro na expressão";
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return Number(result);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @type function
|
|
102
|
+
* @name {{calculateTrigOperation}}
|
|
103
|
+
* @nameTags trigonometria, operação trigonométrica, seno, cosseno, tangente
|
|
104
|
+
* @description {{calculateTrigOperationDescription}}
|
|
105
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys sin|cos|tan|asin|acos|atan @values Seno|Cosseno|Tangente|Arco seno|Arco cosseno|Arco tangente
|
|
106
|
+
* @param {ObjectType.LONG} value {{valueDescription}} @default 0
|
|
107
|
+
* @returns {ObjectType.LONG}
|
|
108
|
+
*/
|
|
109
|
+
this.cronapi.precise.calculateTrigOperation = function(operation, value) {
|
|
110
|
+
let result;
|
|
111
|
+
try {
|
|
112
|
+
switch (operation) {
|
|
113
|
+
case 'sin':
|
|
114
|
+
result = math.sin(math.unit(math.bignumber(value), 'deg'));
|
|
115
|
+
break;
|
|
116
|
+
case 'cos':
|
|
117
|
+
result = math.cos(math.unit(math.bignumber(value), 'deg'));
|
|
118
|
+
break;
|
|
119
|
+
case 'tan':
|
|
120
|
+
result = math.tan(math.unit(math.bignumber(value), 'deg'));
|
|
121
|
+
break;
|
|
122
|
+
case 'asin':
|
|
123
|
+
result = math.asin(math.bignumber(value));
|
|
124
|
+
break;
|
|
125
|
+
case 'acos':
|
|
126
|
+
result = math.acos(math.bignumber(value));
|
|
127
|
+
break;
|
|
128
|
+
case 'atan':
|
|
129
|
+
result = math.atan(math.bignumber(value));
|
|
130
|
+
break;
|
|
131
|
+
default:
|
|
132
|
+
return 'Operação inválida';
|
|
133
|
+
}
|
|
134
|
+
} catch (e) {
|
|
135
|
+
console.error('Erro ao realizar a operação trigonométrica:', e);
|
|
136
|
+
return "Erro na expressão";
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return Number(result);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @type function
|
|
144
|
+
* @name {{getConstant}}
|
|
145
|
+
* @nameTags constante, constante matemática
|
|
146
|
+
* @description {{getConstantDescription}}
|
|
147
|
+
* @param {ObjectType.STRING} constant {{constantDescription}} @blockType util_dropdown @keys pi|e|phi|sqrt2|sqrt1_2 @values Pi|Euler|Phi|Raiz quadrada de 2|Raiz quadrada de 1/2
|
|
148
|
+
* @returns {ObjectType.LONG}
|
|
149
|
+
*/
|
|
150
|
+
this.cronapi.precise.getConstant = function(constant) {
|
|
151
|
+
let result;
|
|
152
|
+
try {
|
|
153
|
+
switch (constant) {
|
|
154
|
+
case 'pi':
|
|
155
|
+
result = math.pi;
|
|
156
|
+
break;
|
|
157
|
+
case 'e':
|
|
158
|
+
result = math.e;
|
|
159
|
+
break;
|
|
160
|
+
case 'phi':
|
|
161
|
+
result = (1 + math.sqrt(5)) / 2;
|
|
162
|
+
break;
|
|
163
|
+
case 'sqrt2':
|
|
164
|
+
result = math.sqrt(2);
|
|
165
|
+
break;
|
|
166
|
+
case 'sqrt1_2':
|
|
167
|
+
result = math.sqrt(1 / 2);
|
|
168
|
+
break;
|
|
169
|
+
default:
|
|
170
|
+
return 'Operação inválida';
|
|
171
|
+
}
|
|
172
|
+
} catch (e) {
|
|
173
|
+
console.error('Erro ao obter a constante matemática:', e);
|
|
174
|
+
return "Erro na expressão";
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return Number(result);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @type function
|
|
182
|
+
* @name {{checkProperty}}
|
|
183
|
+
* @nameTags verificar propriedade, número, propriedade matemática
|
|
184
|
+
* @description {{checkPropertyDescription}}
|
|
185
|
+
* @param {ObjectType.LONG} value {{valueDescription}}
|
|
186
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys isEven|isOdd|isInteger|isPositive|isNegative @values Par|Ímpar|Inteiro|Positivo|Negativo
|
|
187
|
+
* @returns {ObjectType.BOOLEAN}
|
|
188
|
+
*/
|
|
189
|
+
this.cronapi.precise.checkProperty = function(value, operation) {
|
|
190
|
+
let result;
|
|
191
|
+
try {
|
|
192
|
+
switch (operation) {
|
|
193
|
+
case 'isEven':
|
|
194
|
+
result = math.mod(math.bignumber(value), 2).equals(0);
|
|
195
|
+
break;
|
|
196
|
+
case 'isOdd':
|
|
197
|
+
result = !math.mod(math.bignumber(value), 2).equals(0);
|
|
198
|
+
break;
|
|
199
|
+
case 'isInteger':
|
|
200
|
+
result = math.isInteger(math.bignumber(value));
|
|
201
|
+
break;
|
|
202
|
+
case 'isPositive':
|
|
203
|
+
result = math.bignumber(value).isPositive();
|
|
204
|
+
break;
|
|
205
|
+
case 'isNegative':
|
|
206
|
+
result = math.bignumber(value).isNegative();
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
return 'Operação inválida';
|
|
210
|
+
}
|
|
211
|
+
} catch (e) {
|
|
212
|
+
console.error('Erro ao verificar a propriedade:', e);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @type function
|
|
221
|
+
* @name {{roundNumber}}
|
|
222
|
+
* @nameTags arredondar, ceil, floor
|
|
223
|
+
* @description {{roundNumberDescription}}
|
|
224
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys ceil|floor @values Arredondar para cima|Arredondar para baixo
|
|
225
|
+
* @param {ObjectType.LONG} value {{valueDescription}}
|
|
226
|
+
* @returns {ObjectType.STRING}
|
|
227
|
+
*/
|
|
228
|
+
this.cronapi.precise.roundNumber = function(operation, value) {
|
|
229
|
+
let result;
|
|
230
|
+
try {
|
|
231
|
+
const num = math.bignumber(value);
|
|
232
|
+
|
|
233
|
+
switch (operation) {
|
|
234
|
+
case 'ceil':
|
|
235
|
+
result = math.ceil(num);
|
|
236
|
+
break;
|
|
237
|
+
case 'floor':
|
|
238
|
+
result = math.floor(num);
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
return 'Operação inválida';
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
} catch (e) {
|
|
245
|
+
console.error('Erro ao realizar a operação de arredondamento:', e);
|
|
246
|
+
return "Erro na expressão";
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
return `Resultado: ${result}`;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* @type function
|
|
254
|
+
* @name generateRandomFraction
|
|
255
|
+
* @description Gera uma fração aleatória
|
|
256
|
+
* @nameTags random | fraction | generate
|
|
257
|
+
* @returns {ObjectType.STRING}
|
|
258
|
+
*/
|
|
259
|
+
this.cronapi.precise.generateRandomFraction = function() {
|
|
260
|
+
if (typeof math === 'undefined') {
|
|
261
|
+
return 'Erro na lib';
|
|
262
|
+
}
|
|
263
|
+
const result = math.bignumber(Math.random());
|
|
264
|
+
return `Resultado: ${result}`;
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* @type function
|
|
269
|
+
* @name {{calculateListOperation}}
|
|
270
|
+
* @nameTags calcular, operação em lista, soma a lista, menor valor, maior valor, média, mediana, moda, desvio padrão, item aleatório
|
|
271
|
+
* @description {{calculateListOperationDescription}}
|
|
272
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys sum|min|max|mean|median|mode|std|random @values Soma|Menor valor|Maior valor|Média|Mediana|Moda|Desvio padrão|Item aleatório
|
|
273
|
+
* @param {ObjectType.STRING} list {{listDescription}} @default 0
|
|
274
|
+
* @returns {ObjectType.STRING}
|
|
275
|
+
*/
|
|
276
|
+
this.cronapi.precise.calculateListOperation = function(operation, list) {
|
|
277
|
+
let result;
|
|
278
|
+
try {
|
|
279
|
+
const numbers = list.split(',').map(num => math.bignumber(num.trim()));
|
|
280
|
+
|
|
281
|
+
switch (operation) {
|
|
282
|
+
case 'sum':
|
|
283
|
+
result = math.sum(numbers);
|
|
284
|
+
break;
|
|
285
|
+
case 'min':
|
|
286
|
+
result = math.min(numbers);
|
|
287
|
+
break;
|
|
288
|
+
case 'max':
|
|
289
|
+
result = math.max(numbers);
|
|
290
|
+
break;
|
|
291
|
+
case 'mean':
|
|
292
|
+
result = math.mean(numbers);
|
|
293
|
+
break;
|
|
294
|
+
case 'median':
|
|
295
|
+
result = math.median(numbers);
|
|
296
|
+
break;
|
|
297
|
+
case 'mode':
|
|
298
|
+
result = math.mode(numbers);
|
|
299
|
+
break;
|
|
300
|
+
case 'std':
|
|
301
|
+
result = math.std(numbers);
|
|
302
|
+
break;
|
|
303
|
+
case 'random':
|
|
304
|
+
result = numbers[math.floor(Math.random() * numbers.length)];
|
|
305
|
+
break;
|
|
306
|
+
default:
|
|
307
|
+
return 'Operação inválida';
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
} catch (e) {
|
|
311
|
+
console.error('Erro ao realizar a operação em lista:', e);
|
|
312
|
+
return "Erro na expressão";
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return `Resultado: ${result}`;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* @type function
|
|
320
|
+
* @name {{calculateModulo}}
|
|
321
|
+
* @nameTags calcular, resto, divisão, módulo
|
|
322
|
+
* @description {{calculateModuloDescription}}
|
|
323
|
+
* @param {ObjectType.LONG} dividend {{dividendDescription}}
|
|
324
|
+
* @param {ObjectType.STRING} operation {{operationDescription}} @blockType util_dropdown @keys mod @values ÷
|
|
325
|
+
* @param {ObjectType.LONG} divisor {{divisorDescription}}
|
|
326
|
+
* @returns {ObjectType.STRING}
|
|
327
|
+
*/
|
|
328
|
+
this.cronapi.precise.calculateModulo = function(dividend, operation, divisor) {
|
|
329
|
+
let result;
|
|
330
|
+
try {
|
|
331
|
+
const num1 = math.bignumber(dividend);
|
|
332
|
+
const num2 = math.bignumber(divisor);
|
|
333
|
+
|
|
334
|
+
switch (operation) {
|
|
335
|
+
case 'mod':
|
|
336
|
+
result = math.mod(num1, num2);
|
|
337
|
+
break;
|
|
338
|
+
default:
|
|
339
|
+
return 'Operação inválida';
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
} catch (e) {
|
|
343
|
+
console.error('Erro ao calcular o resto da divisão:', e);
|
|
344
|
+
return "Erro na expressão";
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return `Resultado: ${result}`;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* @type function
|
|
352
|
+
* @name {{generateRandom}}
|
|
353
|
+
* @nameTags aleatório, número, random
|
|
354
|
+
* @description {{generateRandomDescription}}
|
|
355
|
+
* @param {ObjectType.LONG} minValue {{minValueDescription}}
|
|
356
|
+
* @param {ObjectType.LONG} maxValue {{maxValueDescription}}
|
|
357
|
+
* @returns {ObjectType.STRING}
|
|
358
|
+
*/
|
|
359
|
+
this.cronapi.precise.generateRandom = function(minValue, maxValue) {
|
|
360
|
+
let result;
|
|
361
|
+
try {
|
|
362
|
+
const min = math.bignumber(minValue);
|
|
363
|
+
const max = math.bignumber(maxValue);
|
|
364
|
+
|
|
365
|
+
if (math.largerEq(min, max)) {
|
|
366
|
+
throw new Error("O valor mínimo deve ser menor que o valor máximo.");
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
const randomValue = math.bignumber(Math.random());
|
|
370
|
+
const range = math.subtract(max, min);
|
|
371
|
+
const scaledRandomValue = math.multiply(randomValue, range);
|
|
372
|
+
result = math.floor(math.add(min, scaledRandomValue));
|
|
373
|
+
|
|
374
|
+
} catch (e) {
|
|
375
|
+
console.error('Erro ao gerar número aleatório:', e);
|
|
376
|
+
return "Erro na expressão";
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
return `Resultado: ${result}`;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* @type function
|
|
384
|
+
* @name {{restrictNumber}}
|
|
385
|
+
* @nameTags restringir, valor, limite
|
|
386
|
+
* @description {{restrictNumberDescription}}
|
|
387
|
+
* @param {ObjectType.LONG} value {{valueDescription}} @default 50
|
|
388
|
+
* @param {ObjectType.LONG} minValue {{minValueDescription}} @default 1
|
|
389
|
+
* @param {ObjectType.LONG} maxValue {{maxValueDescription}} @default 100
|
|
390
|
+
* @returns {ObjectType.STRING}
|
|
391
|
+
*/
|
|
392
|
+
this.cronapi.precise.restrictNumber = function(value, minValue, maxValue) {
|
|
393
|
+
let result;
|
|
394
|
+
try {
|
|
395
|
+
const num = math.bignumber(value);
|
|
396
|
+
const min = math.bignumber(minValue);
|
|
397
|
+
const max = math.bignumber(maxValue);
|
|
398
|
+
|
|
399
|
+
result = math.max(math.min(num, max), min);
|
|
400
|
+
|
|
401
|
+
} catch (e) {
|
|
402
|
+
console.error('Erro ao restringir número:', e);
|
|
403
|
+
return "Erro na expressão";
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return `Resultado: ${result}`;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
}).bind(window)();
|
|
410
|
+
|