@sankhyalabs/core 1.0.70 → 1.0.71-beta.10
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/.eslintrc.cjs +2 -1
- package/.releaserc +1 -1
- package/dist/dataunit/DataUnit.d.ts +33 -18
- package/dist/dataunit/DataUnit.js +220 -93
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/dataunit/loading/LoadDataRequest.d.ts +9 -0
- package/dist/dataunit/loading/LoadDataRequest.js +2 -0
- package/dist/dataunit/loading/LoadDataRequest.js.map +1 -0
- package/dist/dataunit/loading/LoadDataResponse.d.ts +6 -0
- package/dist/dataunit/loading/LoadDataResponse.js +2 -0
- package/dist/dataunit/loading/LoadDataResponse.js.map +1 -0
- package/dist/dataunit/loading/PaginationInfo.d.ts +7 -0
- package/dist/dataunit/loading/PaginationInfo.js +2 -0
- package/dist/dataunit/loading/PaginationInfo.js.map +1 -0
- package/dist/dataunit/state/action/DataUnitAction.d.ts +4 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -1
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +1 -0
- package/dist/dataunit/state/slice/ChangesSlice.js +3 -0
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -1
- package/dist/dataunit/state/slice/LoadingControlSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js +45 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RecordsSlice.js +2 -2
- package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -1
- package/dist/dataunit/state/slice/SelectionSlice.js +0 -4
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -1
- package/dist/dataunit/state/slice/WaitingChangesSlice.js.map +1 -1
- package/dist/exceptions/ErrorException.d.ts +2 -1
- package/dist/exceptions/ErrorException.js +2 -1
- package/dist/exceptions/ErrorException.js.map +1 -1
- package/dist/exceptions/WarningException.d.ts +2 -1
- package/dist/exceptions/WarningException.js +2 -1
- package/dist/exceptions/WarningException.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ui/FloatingManager.d.ts +1 -0
- package/dist/ui/FloatingManager.js +1 -1
- package/dist/ui/FloatingManager.js.map +1 -1
- package/dist/utils/ArrayUtils.d.ts +13 -0
- package/dist/utils/ArrayUtils.js +27 -0
- package/dist/utils/ArrayUtils.js.map +1 -0
- package/dist/utils/NumberUtils.d.ts +8 -0
- package/dist/utils/NumberUtils.js +10 -0
- package/dist/utils/NumberUtils.js.map +1 -1
- package/dist/utils/StringUtils.d.ts +16 -2
- package/dist/utils/StringUtils.js +45 -3
- package/dist/utils/StringUtils.js.map +1 -1
- package/jest.config.ts +5 -5
- package/package.json +1 -1
- package/src/dataunit/DataUnit.ts +240 -102
- package/src/dataunit/loading/LoadDataRequest.ts +10 -0
- package/src/dataunit/loading/LoadDataResponse.ts +7 -0
- package/src/dataunit/loading/PaginationInfo.ts +8 -0
- package/src/dataunit/state/action/DataUnitAction.ts +4 -0
- package/src/dataunit/state/slice/ChangesSlice.ts +4 -0
- package/src/dataunit/state/slice/LoadingControlSlice.ts +60 -0
- package/src/dataunit/state/slice/RecordsSlice.ts +3 -5
- package/src/dataunit/state/slice/SelectionSlice.ts +0 -5
- package/src/dataunit/state/slice/WaitingChangesSlice.ts +0 -1
- package/src/exceptions/ErrorException.ts +3 -1
- package/src/exceptions/WarningException.ts +4 -1
- package/src/index.ts +15 -3
- package/src/ui/FloatingManager.ts +2 -1
- package/src/utils/ArrayUtils.ts +28 -0
- package/src/utils/NumberUtils.ts +10 -0
- package/src/utils/StringUtils.ts +53 -3
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
|
|
2
|
+
import { LoadDataRequest } from "../../loading/LoadDataRequest.js";
|
|
3
|
+
import { PaginationInfo } from "../../loading/PaginationInfo.js";
|
|
4
|
+
import { Action } from "../action/DataUnitAction.js";
|
|
5
|
+
import StateManager, { ActionReducer, StateAction } from "../StateManager.js";
|
|
6
|
+
|
|
7
|
+
class LoadingControlReducerImpl implements ActionReducer {
|
|
8
|
+
|
|
9
|
+
public sliceName: string = "loadingControl";
|
|
10
|
+
|
|
11
|
+
public reduce(stateManager: StateManager, currentState: LoadingControlState, action: StateAction): LoadingControlState {
|
|
12
|
+
switch (action.type) {
|
|
13
|
+
case Action.LOADING_DATA :
|
|
14
|
+
return {...currentState, lastRequest: action.payload};
|
|
15
|
+
case Action.DATA_LOADED:
|
|
16
|
+
return {...currentState, paginationInfo: action.payload?.paginationInfo};
|
|
17
|
+
}
|
|
18
|
+
return currentState;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const LoadingControlReducer = new LoadingControlReducerImpl();
|
|
23
|
+
|
|
24
|
+
export const getPaginationInfo = (stateManager: StateManager): PaginationInfo|void => {
|
|
25
|
+
const state: LoadingControlState = stateManager.select(LoadingControlReducer.sliceName, (state: LoadingControlState) => state);
|
|
26
|
+
return state ? state.paginationInfo : undefined;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const getCurrentRequest = (stateManager: StateManager): LoadDataRequest|void => {
|
|
30
|
+
const state: LoadingControlState = stateManager.select(LoadingControlReducer.sliceName, (state: LoadingControlState) => state);
|
|
31
|
+
return state ? state.lastRequest : undefined;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const getCurrentPage = (stateManager: StateManager): number => {
|
|
35
|
+
const paginationInfo = getPaginationInfo(stateManager);
|
|
36
|
+
return paginationInfo ? paginationInfo.currentPage : 0;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const getLastPage = (stateManager: StateManager, pageSize: number): number => {
|
|
40
|
+
const paginationInfo = getPaginationInfo(stateManager);
|
|
41
|
+
return paginationInfo ? Math.ceil(paginationInfo.total / pageSize) : 0;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const hasMorePages = (stateManager: StateManager): boolean => {
|
|
45
|
+
const paginationInfo = getPaginationInfo(stateManager);
|
|
46
|
+
if(paginationInfo && paginationInfo.hasMore){
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const hasPreviousPages = (stateManager: StateManager): boolean => {
|
|
53
|
+
const paginationInfo = getPaginationInfo(stateManager);
|
|
54
|
+
return paginationInfo ? paginationInfo.currentPage > 0 : false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface LoadingControlState{
|
|
58
|
+
lastRequest: LoadDataRequest;
|
|
59
|
+
paginationInfo: PaginationInfo;
|
|
60
|
+
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
1
|
import { ActionReducer, StateAction } from "../StateManager.js";
|
|
3
|
-
import { Action } from "../action/DataUnitAction.js";
|
|
4
2
|
import StateManager from "../StateManager.js";
|
|
5
|
-
import { Record, SavedRecord } from "../../DataUnit.js";
|
|
6
3
|
import { getRemovedRecords } from "./RemovedRecordsSlice.js";
|
|
7
|
-
|
|
4
|
+
import { Action } from "../action/DataUnitAction.js";
|
|
5
|
+
import { Record, SavedRecord } from "../../DataUnit.js";
|
|
8
6
|
|
|
9
7
|
class RecordsReducerImpl implements ActionReducer {
|
|
10
8
|
|
|
@@ -14,7 +12,7 @@ class RecordsReducerImpl implements ActionReducer {
|
|
|
14
12
|
switch (action.type) {
|
|
15
13
|
|
|
16
14
|
case Action.DATA_LOADED:
|
|
17
|
-
return action.payload;
|
|
15
|
+
return action.payload ? action.payload.records : undefined;
|
|
18
16
|
case Action.RECORDS_REMOVED:
|
|
19
17
|
|
|
20
18
|
const {records, buffered} = action.payload;
|
|
@@ -98,11 +98,6 @@ export const SelectionReducer = new SelectionReducerImpl();
|
|
|
98
98
|
|
|
99
99
|
export const getSelection = (stateManager: StateManager): Array<string> => {
|
|
100
100
|
let selection: Array<string> = getCurrentSelection(stateManager);
|
|
101
|
-
const currentRecords = Array.from((getCurrentRecords(stateManager)||new Map()).keys());
|
|
102
|
-
|
|
103
|
-
if(selection){
|
|
104
|
-
selection = selection.filter( id => currentRecords.includes(id));
|
|
105
|
-
}
|
|
106
101
|
|
|
107
102
|
if (!selection || selection.length === 0) {
|
|
108
103
|
return [];
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { WaitingChange } from "../../DataUnit.js";
|
|
3
3
|
import { Action } from "../action/DataUnitAction.js";
|
|
4
4
|
import StateManager, { ActionReducer, StateAction } from "../StateManager.js";
|
|
5
|
-
import { getSelection } from "./SelectionSlice.js";
|
|
6
5
|
|
|
7
6
|
class WaitingCheangesReducerImpl implements ActionReducer{
|
|
8
7
|
|
|
@@ -2,10 +2,12 @@ export default class ErrorException extends Error {
|
|
|
2
2
|
|
|
3
3
|
public title: string;
|
|
4
4
|
public message: string;
|
|
5
|
+
public errorCode: string;
|
|
5
6
|
|
|
6
|
-
constructor(title: string, message: string) {
|
|
7
|
+
constructor(title: string, message: string, errorCode: string = "") {
|
|
7
8
|
super(message);
|
|
8
9
|
this.title = title;
|
|
9
10
|
this.message = message;
|
|
11
|
+
this.errorCode = errorCode;
|
|
10
12
|
}
|
|
11
13
|
}
|
|
@@ -3,10 +3,13 @@ export default class WarningException extends Error {
|
|
|
3
3
|
|
|
4
4
|
public title: string;
|
|
5
5
|
public message: string;
|
|
6
|
+
public errorCode: string;
|
|
6
7
|
|
|
7
|
-
constructor(title: string, message: string) {
|
|
8
|
+
constructor(title: string, message: string, errorCode: string = "") {
|
|
8
9
|
super(message);
|
|
9
10
|
this.title = title;
|
|
10
11
|
this.message = message;
|
|
12
|
+
this.errorCode = errorCode;
|
|
13
|
+
|
|
11
14
|
}
|
|
12
15
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { NumberUtils } from "./utils/NumberUtils.js";
|
|
|
3
3
|
import { MaskFormatter } from "./utils/MaskFormatter.js";
|
|
4
4
|
import FloatingManager from "./ui/FloatingManager.js";
|
|
5
5
|
import DateUtils from "./utils/DateUtils.js";
|
|
6
|
+
import ArrayUtils from "./utils/ArrayUtils.js";
|
|
6
7
|
import { TimeFormatter } from "./utils/TimeFormatter.js";
|
|
7
8
|
import { HttpProvider } from "./http/HttpProvider.js";
|
|
8
9
|
import { SkwHttpProvider } from "./http/SkwHttpProvider.js";
|
|
@@ -10,8 +11,8 @@ import { RequestMetadata } from "./http/RequestMetadata.js";
|
|
|
10
11
|
import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller.js";
|
|
11
12
|
import DataUnit, {SavedRecord, Record, Change, ChangeOperation, DUActionInterceptor, WaitingChange, PageRequest, QuickFilter} from "./dataunit/DataUnit.js";
|
|
12
13
|
import { DataType } from "./dataunit/metadata/DataType.js";
|
|
13
|
-
import { UnitMetadata, FieldDescriptor, UserInterface, Sort, Filter } from "./dataunit/metadata/UnitMetadata.js";
|
|
14
|
-
import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction.js";
|
|
14
|
+
import { UnitMetadata, FieldDescriptor, UserInterface, Sort, SortMode, SortingProvider, Filter, DependencyType } from "./dataunit/metadata/UnitMetadata.js";
|
|
15
|
+
import { DataUnitAction, Action, ExecutionContext } from "./dataunit/state/action/DataUnitAction.js";
|
|
15
16
|
import ApplicationContext from "./utils/ApplicationContext.js";
|
|
16
17
|
import ReadyUtil from "./utils/ReadyUtil.js";
|
|
17
18
|
import ObjectUtils from "./utils/ObjectUtils.js";
|
|
@@ -19,6 +20,9 @@ import WarningException from "./exceptions/WarningException.js";
|
|
|
19
20
|
import WaitingChangeException from "./exceptions/WaitingChangeException.js";
|
|
20
21
|
import ErrorException from "./exceptions/ErrorException.js";
|
|
21
22
|
import { ErrorTracking } from "./traking/ErrorTraking.js";
|
|
23
|
+
import { PaginationInfo } from "./dataunit/loading/PaginationInfo.js";
|
|
24
|
+
import { LoadDataRequest } from "./dataunit/loading/LoadDataRequest.js";
|
|
25
|
+
import { LoadDataResponse } from "./dataunit/loading/LoadDataResponse.js";
|
|
22
26
|
|
|
23
27
|
/*Classes públicas no pacote*/
|
|
24
28
|
export {
|
|
@@ -27,6 +31,7 @@ export {
|
|
|
27
31
|
NumberUtils,
|
|
28
32
|
FloatingManager,
|
|
29
33
|
DateUtils,
|
|
34
|
+
ArrayUtils,
|
|
30
35
|
TimeFormatter,
|
|
31
36
|
SkwHttpProvider,
|
|
32
37
|
HttpProvider,
|
|
@@ -39,6 +44,7 @@ export {
|
|
|
39
44
|
UnitMetadata,
|
|
40
45
|
FieldDescriptor,
|
|
41
46
|
UserInterface,
|
|
47
|
+
DependencyType,
|
|
42
48
|
DataUnitAction,
|
|
43
49
|
Action,
|
|
44
50
|
Change,
|
|
@@ -55,5 +61,11 @@ export {
|
|
|
55
61
|
WarningException,
|
|
56
62
|
WaitingChangeException,
|
|
57
63
|
ErrorException,
|
|
58
|
-
ErrorTracking
|
|
64
|
+
ErrorTracking,
|
|
65
|
+
ExecutionContext,
|
|
66
|
+
PaginationInfo,
|
|
67
|
+
SortingProvider,
|
|
68
|
+
SortMode,
|
|
69
|
+
LoadDataRequest,
|
|
70
|
+
LoadDataResponse
|
|
59
71
|
};
|
|
@@ -6,6 +6,7 @@ interface FloatingOptions {
|
|
|
6
6
|
bottom?: string;
|
|
7
7
|
innerClickTest?: Function;
|
|
8
8
|
backClickListener?: Function;
|
|
9
|
+
isFixed?: boolean;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
class FloatingEntry {
|
|
@@ -137,7 +138,7 @@ export default class FloatingManager {
|
|
|
137
138
|
return alreadyFloatingIndex;
|
|
138
139
|
}
|
|
139
140
|
|
|
140
|
-
content.style.position = 'absolute';
|
|
141
|
+
content.style.position = options.isFixed ? 'fixed' : 'absolute';
|
|
141
142
|
FloatingManager.applyStyle(content, "top", options.top);
|
|
142
143
|
FloatingManager.applyStyle(content, "left", options.left);
|
|
143
144
|
FloatingManager.applyStyle(content, "right", options.right);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
|
|
3
|
+
export default class ArrayUtils {
|
|
4
|
+
/**
|
|
5
|
+
* Filtra um array a partir de um critério textual.
|
|
6
|
+
*
|
|
7
|
+
* @param argument - Texto a ser usado no filtro
|
|
8
|
+
* @param originalArray - Array no formato original
|
|
9
|
+
* @param alphabeticalSorting - Determina se o resultado deve ser ordenado ou mantido na ordem original. Por padrão ordena.
|
|
10
|
+
* @param fieldName - Caso o objeto deva ser filtrado por um campo diferente de "label", pode-se usar esse parâmetro
|
|
11
|
+
* @returns Um array filtrado e ordenado conforme necessidade. Se "argument" for omitido, ou nulo, o array original é retornado.
|
|
12
|
+
*/
|
|
13
|
+
static applyStringFilter(argument: string, originalArray: Array<any>, alphabeticalSorting: boolean = true, fieldName: string = "label"): Array<any>{
|
|
14
|
+
if(!argument){
|
|
15
|
+
return originalArray;
|
|
16
|
+
}
|
|
17
|
+
const normalizedArgument = ArrayUtils.normalizeSearchString(argument);
|
|
18
|
+
const filteredArray = originalArray.filter(item => {
|
|
19
|
+
const itemValue: string = ArrayUtils.normalizeSearchString(item[fieldName]);
|
|
20
|
+
return itemValue.includes(normalizedArgument);
|
|
21
|
+
});
|
|
22
|
+
return alphabeticalSorting ? filteredArray.sort((a, b) => StringUtils.compare(a[fieldName], b[fieldName])) : filteredArray;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private static normalizeSearchString(original:string ): string{
|
|
26
|
+
return StringUtils.replaceAccentuatedCharsKeepSymbols(original.toUpperCase());
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/utils/NumberUtils.ts
CHANGED
|
@@ -172,4 +172,14 @@ export class NumberUtils {
|
|
|
172
172
|
return value.replace(/\./g, '_').replace(/\,/g, '.').replace(/\_/g, ',');
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
+
/**
|
|
176
|
+
* @getValueOrZero: valida se o parametro é undefined caso seja retorna zero.
|
|
177
|
+
*
|
|
178
|
+
* @param value numero a ser validado
|
|
179
|
+
*
|
|
180
|
+
* @returns o proprio numero passado ou zero
|
|
181
|
+
*/
|
|
182
|
+
static getValueOrZero = (value: number): number => {
|
|
183
|
+
return value !== undefined ? value : 0;
|
|
184
|
+
}
|
|
175
185
|
}
|
package/src/utils/StringUtils.ts
CHANGED
|
@@ -55,12 +55,21 @@ export class StringUtils {
|
|
|
55
55
|
text = text.replace(/[Û]/, "U");
|
|
56
56
|
text = text.replace(/[Ü]/, "U");
|
|
57
57
|
text = text.replace(/[Ç]/, "C");
|
|
58
|
-
return text.replace(/[^a-z0-9]/gi,
|
|
58
|
+
return text.replace(/[^a-z0-9]/gi, "");
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Remove acentos de vogais, substitui Ç por c e retorna a string em caixa alta mantendo espaços e símbolos.
|
|
64
|
+
* @param text String para ser transformada.
|
|
65
|
+
*/
|
|
66
|
+
static replaceAccentuatedCharsKeepSymbols(text: string): string {
|
|
67
|
+
return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toUpperCase();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
61
71
|
/**
|
|
62
72
|
* Calcula um código hash para uma string.
|
|
63
|
-
*
|
|
64
73
|
* @param value String que será gerado o hash code.
|
|
65
74
|
*/
|
|
66
75
|
static hashCode(value: string): string {
|
|
@@ -76,7 +85,6 @@ export class StringUtils {
|
|
|
76
85
|
|
|
77
86
|
/**
|
|
78
87
|
* Converte um valor em string para booleano
|
|
79
|
-
*
|
|
80
88
|
* @param value Valor a ser convertido
|
|
81
89
|
* @param defaultValue Será retornado esse caso seja passado valores diferentes do esperado(true, false, "true", "false", "S", "N")
|
|
82
90
|
*/
|
|
@@ -91,4 +99,46 @@ export class StringUtils {
|
|
|
91
99
|
return defaultValue;
|
|
92
100
|
}
|
|
93
101
|
}
|
|
102
|
+
|
|
103
|
+
static padStart(str: string, len: number, pad: string = " "): string {
|
|
104
|
+
str = str != undefined ? str : "";
|
|
105
|
+
while (str.length < len) {
|
|
106
|
+
str = pad + str;
|
|
107
|
+
}
|
|
108
|
+
return str;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static padEnd(str: string, len: number, pad: string = " "): string {
|
|
112
|
+
str = str != undefined ? str : "";
|
|
113
|
+
while (str.length < len) {
|
|
114
|
+
str = str + pad;
|
|
115
|
+
}
|
|
116
|
+
return str;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Utilitário para determinar a ordem de strings. Geralmente usado no método "sort" de um array.
|
|
122
|
+
* Retorna um número negativo se o primeiro argumento é menor que o segundo, zero se os dois são iguais
|
|
123
|
+
* e um número positivo quando o primeiro é maior que o segundo.if they're equal, and a positive value otherwise.
|
|
124
|
+
* @param a - Primeira string para comparação
|
|
125
|
+
* @param b - Segunda string para comparação
|
|
126
|
+
* @returns Um valor maior, menor ou igual a zero para determinar se a ordem precisa ser alterada.
|
|
127
|
+
*/
|
|
128
|
+
static compare(a: string, b: string): number{
|
|
129
|
+
|
|
130
|
+
if(a === undefined){
|
|
131
|
+
return b === undefined ? 0 : 1;
|
|
132
|
+
} else if(b === undefined){
|
|
133
|
+
return -1;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if(a === null){
|
|
137
|
+
return b === null ? 0 : 1;
|
|
138
|
+
} else if(b === null){
|
|
139
|
+
return -1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return a.localeCompare(b);
|
|
143
|
+
}
|
|
94
144
|
}
|