@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 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
+