@senior-agronegocio/angular-components 0.0.82 → 0.0.83-updated

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.
@@ -0,0 +1,18 @@
1
+ declare type AnyRecord = Record<string, any>;
2
+ export interface DistributionResult<T> {
3
+ data: Partial<T>;
4
+ samplingSuccess: number;
5
+ samplingQuantity: number;
6
+ }
7
+ export declare class AgroLogics {
8
+ /**
9
+ * Agrupa o conjunto de dados pelos campos de entidade fornecidos e calcula
10
+ * a distribuição de probabilidade (frequência e porcentagem).
11
+ *
12
+ * @param data - Array de objetos a serem analisados
13
+ * @param keys - Chaves ou caminhos aninhados para agrupar (ex: ["entity1", "entity2"])
14
+ * @returns Array de estatísticas agrupadas ordenadas por samplingSuccess (decrescente)
15
+ */
16
+ static entityDistributionStats<T extends AnyRecord>(data: T[], keys: (keyof T | string)[]): DistributionResult<T>[];
17
+ }
18
+ export {};
package/common/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export { AgroNumberUtils } from './agro-number-utils.class';
7
7
  export { Colors } from './colors.class';
8
8
  export { AgroNameUtils } from './agro-name-utils.class';
9
9
  export { AgroArrayUtils } from './agro-array-utils.class';
10
+ export { AgroLogics, DistributionResult } from "./agro-logics.class";
10
11
  export { AGRO_REGEX } from './agro-regex.constant';
@@ -0,0 +1,46 @@
1
+ export class AgroLogics {
2
+ /**
3
+ * Agrupa o conjunto de dados pelos campos de entidade fornecidos e calcula
4
+ * a distribuição de probabilidade (frequência e porcentagem).
5
+ *
6
+ * @param data - Array de objetos a serem analisados
7
+ * @param keys - Chaves ou caminhos aninhados para agrupar (ex: ["entity1", "entity2"])
8
+ * @returns Array de estatísticas agrupadas ordenadas por samplingSuccess (decrescente)
9
+ */
10
+ static entityDistributionStats(data, keys) {
11
+ const total = data.length;
12
+ const map = new Map();
13
+ for (const item of data) {
14
+ const uniqueKey = JSON.stringify(keys.map((c) => {
15
+ const parts = c.split(".");
16
+ let value = item;
17
+ for (const p of parts) {
18
+ value = value === null || value === void 0 ? void 0 : value[p];
19
+ }
20
+ return value;
21
+ }));
22
+ if (!map.has(uniqueKey)) {
23
+ const groupedData = {};
24
+ for (const c of keys) {
25
+ const parts = c.split(".");
26
+ let value = item;
27
+ for (const p of parts) {
28
+ value = value === null || value === void 0 ? void 0 : value[p];
29
+ }
30
+ // add the full entity (not only its ID)
31
+ groupedData[c.toString().split(".")[0]] = value;
32
+ }
33
+ map.set(uniqueKey, { data: groupedData, count: 0 });
34
+ }
35
+ map.get(uniqueKey).count++;
36
+ }
37
+ const result = Array.from(map.values()).map((entry) => ({
38
+ data: entry.data,
39
+ samplingQuantity: entry.count,
40
+ samplingSuccess: Math.round((entry.count / total) * 100),
41
+ }));
42
+ result.sort((a, b) => b.samplingSuccess - a.samplingSuccess);
43
+ return result;
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb2dpY3MuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLWxvZ2ljcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sVUFBVTtJQUN2Qjs7Ozs7OztPQU9HO0lBQ0QsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixJQUFTLEVBQ1QsSUFBMEI7UUFFMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBK0MsQ0FBQztRQUVuRSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtZQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxLQUFLLEdBQUksQ0FBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxLQUFLLEdBQVEsSUFBSSxDQUFDO2dCQUN0QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRTtvQkFDckIsS0FBSyxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO1lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ3BCLE1BQU0sS0FBSyxHQUFJLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLElBQUksS0FBSyxHQUFRLElBQUksQ0FBQztvQkFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUU7d0JBQ3JCLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3BCO29CQUNELHdDQUF3QztvQkFDdkMsV0FBbUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUMxRDtnQkFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDckQ7WUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxNQUFNLEdBQTRCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUNsRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSztZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3pELENBQUMsQ0FDSCxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgQW55UmVjb3JkID0gUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUmVzdWx0PFQ+IHtcclxuICBkYXRhOiBQYXJ0aWFsPFQ+O1xyXG4gIHNhbXBsaW5nU3VjY2VzczogbnVtYmVyOyAgIC8vIHBlcmNlbnRhZ2Ugb2YgdG90YWxcclxuICBzYW1wbGluZ1F1YW50aXR5OiBudW1iZXI7ICAvLyBhYnNvbHV0ZSBjb3VudFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb0xvZ2ljcyB7XHJcbi8qKlxyXG4gKiBBZ3J1cGEgbyBjb25qdW50byBkZSBkYWRvcyBwZWxvcyBjYW1wb3MgZGUgZW50aWRhZGUgZm9ybmVjaWRvcyBlIGNhbGN1bGFcclxuICogYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIChmcmVxdcOqbmNpYSBlIHBvcmNlbnRhZ2VtKS5cclxuICpcclxuICogQHBhcmFtIGRhdGEgLSBBcnJheSBkZSBvYmpldG9zIGEgc2VyZW0gYW5hbGlzYWRvc1xyXG4gKiBAcGFyYW0ga2V5cyAtIENoYXZlcyBvdSBjYW1pbmhvcyBhbmluaGFkb3MgcGFyYSBhZ3J1cGFyIChleDogW1wiZW50aXR5MVwiLCBcImVudGl0eTJcIl0pXHJcbiAqIEByZXR1cm5zIEFycmF5IGRlIGVzdGF0w61zdGljYXMgYWdydXBhZGFzIG9yZGVuYWRhcyBwb3Igc2FtcGxpbmdTdWNjZXNzIChkZWNyZXNjZW50ZSlcclxuICovXHJcbiAgc3RhdGljIGVudGl0eURpc3RyaWJ1dGlvblN0YXRzPFQgZXh0ZW5kcyBBbnlSZWNvcmQ+KFxyXG4gICAgZGF0YTogVFtdLFxyXG4gICAga2V5czogKGtleW9mIFQgfCBzdHJpbmcpW11cclxuICApOiBEaXN0cmlidXRpb25SZXN1bHQ8VD5bXSB7XHJcbiAgICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgZGF0YTogUGFydGlhbDxUPjsgY291bnQ6IG51bWJlciB9PigpO1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IHVuaXF1ZUtleSA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIGtleXMubWFwKChjKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IChjIGFzIHN0cmluZykuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBpdGVtO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LltwXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFtYXAuaGFzKHVuaXF1ZUtleSkpIHtcclxuICAgICAgICBjb25zdCBncm91cGVkRGF0YTogUGFydGlhbDxUPiA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBrZXlzKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IChjIGFzIHN0cmluZykuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBpdGVtO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LltwXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGFkZCB0aGUgZnVsbCBlbnRpdHkgKG5vdCBvbmx5IGl0cyBJRClcclxuICAgICAgICAgIChncm91cGVkRGF0YSBhcyBhbnkpW2MudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF1dID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hcC5zZXQodW5pcXVlS2V5LCB7IGRhdGE6IGdyb3VwZWREYXRhLCBjb3VudDogMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbWFwLmdldCh1bmlxdWVLZXkpLmNvdW50Kys7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzdWx0OiBEaXN0cmlidXRpb25SZXN1bHQ8VD5bXSA9IEFycmF5LmZyb20obWFwLnZhbHVlcygpKS5tYXAoXHJcbiAgICAgIChlbnRyeSkgPT4gKHtcclxuICAgICAgICBkYXRhOiBlbnRyeS5kYXRhLFxyXG4gICAgICAgIHNhbXBsaW5nUXVhbnRpdHk6IGVudHJ5LmNvdW50LFxyXG4gICAgICAgIHNhbXBsaW5nU3VjY2VzczogTWF0aC5yb3VuZCgoZW50cnkuY291bnQgLyB0b3RhbCkgKiAxMDApLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICByZXN1bHQuc29ydCgoYSwgYikgPT4gYi5zYW1wbGluZ1N1Y2Nlc3MgLSBhLnNhbXBsaW5nU3VjY2Vzcyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
@@ -7,5 +7,6 @@ export { AgroNumberUtils } from './agro-number-utils.class';
7
7
  export { Colors } from './colors.class';
8
8
  export { AgroNameUtils } from './agro-name-utils.class';
9
9
  export { AgroArrayUtils } from './agro-array-utils.class';
10
+ export { AgroLogics } from "./agro-logics.class";
10
11
  export { AGRO_REGEX } from './agro-regex.constant';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBZ3JvQ29va2llVXRpbHMgfSBmcm9tICcuL2Fncm8tY29va2llLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb09iamVjdFV0aWxzIH0gZnJvbSAnLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9EYXRlVXRpbHMgfSBmcm9tICcuL2Fncm8tZGF0ZS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9QbGF0Zm9ybVV0aWxzIH0gZnJvbSAnLi9hZ3JvLXBsYXRmb3JtLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb1N0cmluZ1V0aWxzLCBOdWxsYWJsZVN0cmluZyB9IGZyb20gJy4vYWdyby1zdHJpbmctdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvTnVtYmVyVXRpbHMgfSBmcm9tICcuL2Fncm8tbnVtYmVyLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQ29sb3JzIH0gZnJvbSAnLi9jb2xvcnMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvTmFtZVV0aWxzIH0gZnJvbSAnLi9hZ3JvLW5hbWUtdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvQXJyYXlVdGlscyB9IGZyb20gJy4vYWdyby1hcnJheS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFHUk9fUkVHRVggfSBmcm9tICcuL2Fncm8tcmVnZXguY29uc3RhbnQnO1xyXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFncm9Db29raWVVdGlscyB9IGZyb20gJy4vYWdyby1jb29raWUtdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tICcuL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0RhdGVVdGlscyB9IGZyb20gJy4vYWdyby1kYXRlLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb1BsYXRmb3JtVXRpbHMgfSBmcm9tICcuL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvU3RyaW5nVXRpbHMsIE51bGxhYmxlU3RyaW5nIH0gZnJvbSAnLi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OdW1iZXJVdGlscyB9IGZyb20gJy4vYWdyby1udW1iZXItdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBDb2xvcnMgfSBmcm9tICcuL2NvbG9ycy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OYW1lVXRpbHMgfSBmcm9tICcuL2Fncm8tbmFtZS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9BcnJheVV0aWxzIH0gZnJvbSAnLi9hZ3JvLWFycmF5LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0xvZ2ljcywgRGlzdHJpYnV0aW9uUmVzdWx0IH0gZnJvbSBcIi4vYWdyby1sb2dpY3MuY2xhc3NcIjtcclxuZXhwb3J0IHsgQUdST19SRUdFWCB9IGZyb20gJy4vYWdyby1yZWdleC5jb25zdGFudCc7XHJcbiJdfQ==
@@ -0,0 +1,97 @@
1
+ import { __values } from "tslib";
2
+ var AgroLogics = /** @class */ (function () {
3
+ function AgroLogics() {
4
+ }
5
+ /**
6
+ * Agrupa o conjunto de dados pelos campos de entidade fornecidos e calcula
7
+ * a distribuição de probabilidade (frequência e porcentagem).
8
+ *
9
+ * @param data - Array de objetos a serem analisados
10
+ * @param keys - Chaves ou caminhos aninhados para agrupar (ex: ["entity1", "entity2"])
11
+ * @returns Array de estatísticas agrupadas ordenadas por samplingSuccess (decrescente)
12
+ */
13
+ AgroLogics.entityDistributionStats = function (data, keys) {
14
+ var e_1, _a;
15
+ var total = data.length;
16
+ var map = new Map();
17
+ var _loop_1 = function (item) {
18
+ var e_2, _a, e_3, _b;
19
+ var uniqueKey = JSON.stringify(keys.map(function (c) {
20
+ var e_4, _a;
21
+ var parts = c.split(".");
22
+ var value = item;
23
+ try {
24
+ for (var parts_2 = (e_4 = void 0, __values(parts)), parts_2_1 = parts_2.next(); !parts_2_1.done; parts_2_1 = parts_2.next()) {
25
+ var p = parts_2_1.value;
26
+ value = value === null || value === void 0 ? void 0 : value[p];
27
+ }
28
+ }
29
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
30
+ finally {
31
+ try {
32
+ if (parts_2_1 && !parts_2_1.done && (_a = parts_2.return)) _a.call(parts_2);
33
+ }
34
+ finally { if (e_4) throw e_4.error; }
35
+ }
36
+ return value;
37
+ }));
38
+ if (!map.has(uniqueKey)) {
39
+ var groupedData = {};
40
+ try {
41
+ for (var keys_1 = (e_2 = void 0, __values(keys)), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
42
+ var c = keys_1_1.value;
43
+ var parts = c.split(".");
44
+ var value = item;
45
+ try {
46
+ for (var parts_1 = (e_3 = void 0, __values(parts)), parts_1_1 = parts_1.next(); !parts_1_1.done; parts_1_1 = parts_1.next()) {
47
+ var p = parts_1_1.value;
48
+ value = value === null || value === void 0 ? void 0 : value[p];
49
+ }
50
+ }
51
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
52
+ finally {
53
+ try {
54
+ if (parts_1_1 && !parts_1_1.done && (_b = parts_1.return)) _b.call(parts_1);
55
+ }
56
+ finally { if (e_3) throw e_3.error; }
57
+ }
58
+ // add the full entity (not only its ID)
59
+ groupedData[c.toString().split(".")[0]] = value;
60
+ }
61
+ }
62
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
63
+ finally {
64
+ try {
65
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
66
+ }
67
+ finally { if (e_2) throw e_2.error; }
68
+ }
69
+ map.set(uniqueKey, { data: groupedData, count: 0 });
70
+ }
71
+ map.get(uniqueKey).count++;
72
+ };
73
+ try {
74
+ for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
75
+ var item = data_1_1.value;
76
+ _loop_1(item);
77
+ }
78
+ }
79
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
80
+ finally {
81
+ try {
82
+ if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
83
+ }
84
+ finally { if (e_1) throw e_1.error; }
85
+ }
86
+ var result = Array.from(map.values()).map(function (entry) { return ({
87
+ data: entry.data,
88
+ samplingQuantity: entry.count,
89
+ samplingSuccess: Math.round((entry.count / total) * 100),
90
+ }); });
91
+ result.sort(function (a, b) { return b.samplingSuccess - a.samplingSuccess; });
92
+ return result;
93
+ };
94
+ return AgroLogics;
95
+ }());
96
+ export { AgroLogics };
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb2dpY3MuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLWxvZ2ljcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBUUE7SUFBQTtJQXlEQSxDQUFDO0lBeEREOzs7Ozs7O09BT0c7SUFDTSxrQ0FBdUIsR0FBOUIsVUFDRSxJQUFTLEVBQ1QsSUFBMEI7O1FBRTFCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQStDLENBQUM7Z0NBRXhELElBQUk7O1lBQ2IsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLENBQUM7O2dCQUNULElBQU0sS0FBSyxHQUFJLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksS0FBSyxHQUFRLElBQUksQ0FBQzs7b0JBQ3RCLEtBQWdCLElBQUEseUJBQUEsU0FBQSxLQUFLLENBQUEsQ0FBQSw0QkFBQSwrQ0FBRTt3QkFBbEIsSUFBTSxDQUFDLGtCQUFBO3dCQUNWLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3BCOzs7Ozs7Ozs7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO1lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQzs7b0JBQ25DLEtBQWdCLElBQUEsd0JBQUEsU0FBQSxJQUFJLENBQUEsQ0FBQSwwQkFBQSw0Q0FBRTt3QkFBakIsSUFBTSxDQUFDLGlCQUFBO3dCQUNWLElBQU0sS0FBSyxHQUFJLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3ZDLElBQUksS0FBSyxHQUFRLElBQUksQ0FBQzs7NEJBQ3RCLEtBQWdCLElBQUEseUJBQUEsU0FBQSxLQUFLLENBQUEsQ0FBQSw0QkFBQSwrQ0FBRTtnQ0FBbEIsSUFBTSxDQUFDLGtCQUFBO2dDQUNWLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsQ0FBQyxDQUFDLENBQUM7NkJBQ3BCOzs7Ozs7Ozs7d0JBQ0Qsd0NBQXdDO3dCQUN2QyxXQUFtQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7cUJBQzFEOzs7Ozs7Ozs7Z0JBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3JEO1lBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7O1lBMUI3QixLQUFtQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUE7Z0JBQWxCLElBQU0sSUFBSSxpQkFBQTt3QkFBSixJQUFJO2FBMkJkOzs7Ozs7Ozs7UUFFRCxJQUFNLE1BQU0sR0FBNEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQ2xFLFVBQUMsS0FBSyxJQUFLLE9BQUEsQ0FBQztZQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSztZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3pELENBQUMsRUFKUyxDQUlULENBQ0gsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFyQyxDQUFxQyxDQUFDLENBQUM7UUFFN0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQXpERCxJQXlEQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgQW55UmVjb3JkID0gUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUmVzdWx0PFQ+IHtcclxuICBkYXRhOiBQYXJ0aWFsPFQ+O1xyXG4gIHNhbXBsaW5nU3VjY2VzczogbnVtYmVyOyAgIC8vIHBlcmNlbnRhZ2Ugb2YgdG90YWxcclxuICBzYW1wbGluZ1F1YW50aXR5OiBudW1iZXI7ICAvLyBhYnNvbHV0ZSBjb3VudFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb0xvZ2ljcyB7XHJcbi8qKlxyXG4gKiBBZ3J1cGEgbyBjb25qdW50byBkZSBkYWRvcyBwZWxvcyBjYW1wb3MgZGUgZW50aWRhZGUgZm9ybmVjaWRvcyBlIGNhbGN1bGFcclxuICogYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIChmcmVxdcOqbmNpYSBlIHBvcmNlbnRhZ2VtKS5cclxuICpcclxuICogQHBhcmFtIGRhdGEgLSBBcnJheSBkZSBvYmpldG9zIGEgc2VyZW0gYW5hbGlzYWRvc1xyXG4gKiBAcGFyYW0ga2V5cyAtIENoYXZlcyBvdSBjYW1pbmhvcyBhbmluaGFkb3MgcGFyYSBhZ3J1cGFyIChleDogW1wiZW50aXR5MVwiLCBcImVudGl0eTJcIl0pXHJcbiAqIEByZXR1cm5zIEFycmF5IGRlIGVzdGF0w61zdGljYXMgYWdydXBhZGFzIG9yZGVuYWRhcyBwb3Igc2FtcGxpbmdTdWNjZXNzIChkZWNyZXNjZW50ZSlcclxuICovXHJcbiAgc3RhdGljIGVudGl0eURpc3RyaWJ1dGlvblN0YXRzPFQgZXh0ZW5kcyBBbnlSZWNvcmQ+KFxyXG4gICAgZGF0YTogVFtdLFxyXG4gICAga2V5czogKGtleW9mIFQgfCBzdHJpbmcpW11cclxuICApOiBEaXN0cmlidXRpb25SZXN1bHQ8VD5bXSB7XHJcbiAgICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgZGF0YTogUGFydGlhbDxUPjsgY291bnQ6IG51bWJlciB9PigpO1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IHVuaXF1ZUtleSA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgIGtleXMubWFwKChjKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IChjIGFzIHN0cmluZykuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBpdGVtO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LltwXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFtYXAuaGFzKHVuaXF1ZUtleSkpIHtcclxuICAgICAgICBjb25zdCBncm91cGVkRGF0YTogUGFydGlhbDxUPiA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBrZXlzKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IChjIGFzIHN0cmluZykuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBpdGVtO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LltwXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGFkZCB0aGUgZnVsbCBlbnRpdHkgKG5vdCBvbmx5IGl0cyBJRClcclxuICAgICAgICAgIChncm91cGVkRGF0YSBhcyBhbnkpW2MudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF1dID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hcC5zZXQodW5pcXVlS2V5LCB7IGRhdGE6IGdyb3VwZWREYXRhLCBjb3VudDogMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbWFwLmdldCh1bmlxdWVLZXkpLmNvdW50Kys7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzdWx0OiBEaXN0cmlidXRpb25SZXN1bHQ8VD5bXSA9IEFycmF5LmZyb20obWFwLnZhbHVlcygpKS5tYXAoXHJcbiAgICAgIChlbnRyeSkgPT4gKHtcclxuICAgICAgICBkYXRhOiBlbnRyeS5kYXRhLFxyXG4gICAgICAgIHNhbXBsaW5nUXVhbnRpdHk6IGVudHJ5LmNvdW50LFxyXG4gICAgICAgIHNhbXBsaW5nU3VjY2VzczogTWF0aC5yb3VuZCgoZW50cnkuY291bnQgLyB0b3RhbCkgKiAxMDApLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICByZXN1bHQuc29ydCgoYSwgYikgPT4gYi5zYW1wbGluZ1N1Y2Nlc3MgLSBhLnNhbXBsaW5nU3VjY2Vzcyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
@@ -7,5 +7,6 @@ export { AgroNumberUtils } from './agro-number-utils.class';
7
7
  export { Colors } from './colors.class';
8
8
  export { AgroNameUtils } from './agro-name-utils.class';
9
9
  export { AgroArrayUtils } from './agro-array-utils.class';
10
+ export { AgroLogics } from "./agro-logics.class";
10
11
  export { AGRO_REGEX } from './agro-regex.constant';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBZ3JvQ29va2llVXRpbHMgfSBmcm9tICcuL2Fncm8tY29va2llLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb09iamVjdFV0aWxzIH0gZnJvbSAnLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9EYXRlVXRpbHMgfSBmcm9tICcuL2Fncm8tZGF0ZS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9QbGF0Zm9ybVV0aWxzIH0gZnJvbSAnLi9hZ3JvLXBsYXRmb3JtLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb1N0cmluZ1V0aWxzLCBOdWxsYWJsZVN0cmluZyB9IGZyb20gJy4vYWdyby1zdHJpbmctdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvTnVtYmVyVXRpbHMgfSBmcm9tICcuL2Fncm8tbnVtYmVyLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQ29sb3JzIH0gZnJvbSAnLi9jb2xvcnMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvTmFtZVV0aWxzIH0gZnJvbSAnLi9hZ3JvLW5hbWUtdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvQXJyYXlVdGlscyB9IGZyb20gJy4vYWdyby1hcnJheS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFHUk9fUkVHRVggfSBmcm9tICcuL2Fncm8tcmVnZXguY29uc3RhbnQnO1xyXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFncm9Db29raWVVdGlscyB9IGZyb20gJy4vYWdyby1jb29raWUtdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tICcuL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0RhdGVVdGlscyB9IGZyb20gJy4vYWdyby1kYXRlLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb1BsYXRmb3JtVXRpbHMgfSBmcm9tICcuL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvU3RyaW5nVXRpbHMsIE51bGxhYmxlU3RyaW5nIH0gZnJvbSAnLi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OdW1iZXJVdGlscyB9IGZyb20gJy4vYWdyby1udW1iZXItdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBDb2xvcnMgfSBmcm9tICcuL2NvbG9ycy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OYW1lVXRpbHMgfSBmcm9tICcuL2Fncm8tbmFtZS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9BcnJheVV0aWxzIH0gZnJvbSAnLi9hZ3JvLWFycmF5LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0xvZ2ljcywgRGlzdHJpYnV0aW9uUmVzdWx0IH0gZnJvbSBcIi4vYWdyby1sb2dpY3MuY2xhc3NcIjtcclxuZXhwb3J0IHsgQUdST19SRUdFWCB9IGZyb20gJy4vYWdyby1yZWdleC5jb25zdGFudCc7XHJcbiJdfQ==
@@ -2749,6 +2749,52 @@ class AgroArrayUtils {
2749
2749
  }
2750
2750
  }
2751
2751
 
2752
+ class AgroLogics {
2753
+ /**
2754
+ * Agrupa o conjunto de dados pelos campos de entidade fornecidos e calcula
2755
+ * a distribuição de probabilidade (frequência e porcentagem).
2756
+ *
2757
+ * @param data - Array de objetos a serem analisados
2758
+ * @param keys - Chaves ou caminhos aninhados para agrupar (ex: ["entity1", "entity2"])
2759
+ * @returns Array de estatísticas agrupadas ordenadas por samplingSuccess (decrescente)
2760
+ */
2761
+ static entityDistributionStats(data, keys) {
2762
+ const total = data.length;
2763
+ const map = new Map();
2764
+ for (const item of data) {
2765
+ const uniqueKey = JSON.stringify(keys.map((c) => {
2766
+ const parts = c.split(".");
2767
+ let value = item;
2768
+ for (const p of parts) {
2769
+ value = value === null || value === void 0 ? void 0 : value[p];
2770
+ }
2771
+ return value;
2772
+ }));
2773
+ if (!map.has(uniqueKey)) {
2774
+ const groupedData = {};
2775
+ for (const c of keys) {
2776
+ const parts = c.split(".");
2777
+ let value = item;
2778
+ for (const p of parts) {
2779
+ value = value === null || value === void 0 ? void 0 : value[p];
2780
+ }
2781
+ // add the full entity (not only its ID)
2782
+ groupedData[c.toString().split(".")[0]] = value;
2783
+ }
2784
+ map.set(uniqueKey, { data: groupedData, count: 0 });
2785
+ }
2786
+ map.get(uniqueKey).count++;
2787
+ }
2788
+ const result = Array.from(map.values()).map((entry) => ({
2789
+ data: entry.data,
2790
+ samplingQuantity: entry.count,
2791
+ samplingSuccess: Math.round((entry.count / total) * 100),
2792
+ }));
2793
+ result.sort((a, b) => b.samplingSuccess - a.samplingSuccess);
2794
+ return result;
2795
+ }
2796
+ }
2797
+
2752
2798
  class AsyncLock {
2753
2799
  constructor() {
2754
2800
  this.queue = [];
@@ -5966,5 +6012,5 @@ AgroAngularComponentsModule = AgroAngularComponentsModule_1 = __decorate([
5966
6012
  * Generated bundle index. Do not edit.
5967
6013
  */
5968
6014
 
5969
- export { AGRO_NUMBERS, AGRO_REGEX, AgroAngularComponentsModule, AgroArrayUtils, AgroCookieUtils, AgroDateUtils, AgroEntityStatus, AgroFormValidator, AgroNameUtils, AgroNumberUtils, AgroObjectUtils, AgroPlatformUtils, AgroStringMasks, AgroStringUtils, AsyncLock, CancelEventDialogComponent, CancelEventDialogModule, Colors, DateComparisonType, E001TnsModule, E001pesModule, E070EmpModule, E070FilModule, E075DerModule, E205depService, EventControlBoardComponent, EventControlBoardModule, EventControlBoardService, EventControlItemModule, EventControlModule, EventStepsComponent, EventStepsModule, ExternalInvoiceModule, FixationModule, HostProjectConfigsInjectionToken, HttpCodes, InvoiceModule, LibTranslatePipe, LibTranslationModule, LibTranslationService, NumberComparisonType, OriginationModule, PaginatorStorageService, PrimitiveManager, ProducerInvoiceModule, RuralEstateModule, SharedModule, TicketModule, TransferModule, UserInformationService, WebsocketModule, WebsocketService, LibTranslationService as ɵa };
6015
+ export { AGRO_NUMBERS, AGRO_REGEX, AgroAngularComponentsModule, AgroArrayUtils, AgroCookieUtils, AgroDateUtils, AgroEntityStatus, AgroFormValidator, AgroLogics, AgroNameUtils, AgroNumberUtils, AgroObjectUtils, AgroPlatformUtils, AgroStringMasks, AgroStringUtils, AsyncLock, CancelEventDialogComponent, CancelEventDialogModule, Colors, DateComparisonType, E001TnsModule, E001pesModule, E070EmpModule, E070FilModule, E075DerModule, E205depService, EventControlBoardComponent, EventControlBoardModule, EventControlBoardService, EventControlItemModule, EventControlModule, EventStepsComponent, EventStepsModule, ExternalInvoiceModule, FixationModule, HostProjectConfigsInjectionToken, HttpCodes, InvoiceModule, LibTranslatePipe, LibTranslationModule, LibTranslationService, NumberComparisonType, OriginationModule, PaginatorStorageService, PrimitiveManager, ProducerInvoiceModule, RuralEstateModule, SharedModule, TicketModule, TransferModule, UserInformationService, WebsocketModule, WebsocketService, LibTranslationService as ɵa };
5970
6016
  //# sourceMappingURL=senior-agronegocio-angular-components.js.map