sprof 0.9.6 → 0.9.8
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/dist/auto-import.d.ts +2 -2
- package/dist/auto-import.js +4 -4
- package/dist/core/components/atoms/PLoader/PLoader.stories.d.ts +556 -0
- package/dist/core/components/atoms/PLoader/PLoader.test.d.ts +1 -0
- package/dist/core/components/atoms/PLoader/PLoader.vue.d.ts +53 -0
- package/dist/core/components/atoms/index.d.ts +2 -1
- package/dist/core/components/components.d.ts +1 -2
- package/dist/core/composables/index.d.ts +4 -1
- package/dist/core/composables/useFilters.d.ts +0 -3
- package/dist/core/composables/useLoader.d.ts +63 -0
- package/dist/core/composables/useLoader.test.d.ts +1 -0
- package/dist/core/composables/usePagination.d.ts +3 -2
- package/dist/core/ftsp/FTSP.d.ts +0 -3
- package/dist/core/ftsp/Pagination.d.ts +9 -1
- package/dist/core/ftsp/index.d.ts +0 -2
- package/dist/core/store/SearchStore.d.ts +1 -1
- package/dist/global-components.d.ts +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/sprof.js +4270 -4239
- package/dist/sprof.umd.cjs +13 -13
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/core/classes/FTSPPreset.d.ts +0 -8
- package/dist/core/components/FTSPPanel.vue.d.ts +0 -2
- package/dist/core/ftsp/f/FilterModelV2.d.ts +0 -19
- package/dist/core/ftsp/f/Join.d.ts +0 -16
- package/dist/core/ftsp/f/Where.d.ts +0 -15
- package/dist/core/store/FTSPPresetsStore.d.ts +0 -7
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* - useCrud — CRUD-страница: store + loading/items/count/item/searchStr/load/remove/reset;
|
|
5
5
|
* - useFilters — фильтры FTSP: add/replace/remove/has/clear;
|
|
6
6
|
* - usePagination — пагинация FTSP: page (1-based)/rowsPerPage/next/prev/reset;
|
|
7
|
-
* - useOptions — справочник для селекта: кэш + дедуп (К1, Т8)
|
|
7
|
+
* - useOptions — справочник для селекта: кэш + дедуп (К1, Т8);
|
|
8
|
+
* - useLoader — состояния загрузки: loading/error/data + ретрай (Т2a, пара к `PLoader`).
|
|
8
9
|
*
|
|
9
10
|
* По умолчанию работают с глобальным синглтоном FTSP.Get(); во всех трёх можно
|
|
10
11
|
* передать свой экземпляр FTSP (страница/компонент) — см. T1 в TECH_DEBT.md.
|
|
@@ -13,6 +14,8 @@ export type { UseCrudOptions, UseCrudReturn } from './useCrud';
|
|
|
13
14
|
export { useCrud } from './useCrud';
|
|
14
15
|
export type { UseFiltersReturn } from './useFilters';
|
|
15
16
|
export { useFilters } from './useFilters';
|
|
17
|
+
export type { LoaderFn, LoaderRetryOptions, UseLoaderOptions, UseLoaderReturn } from './useLoader';
|
|
18
|
+
export { useLoader } from './useLoader';
|
|
16
19
|
export type { UseOptionsOptions, UseOptionsReturn } from './useOptions';
|
|
17
20
|
export { useOptions } from './useOptions';
|
|
18
21
|
export type { UsePaginationReturn } from './usePagination';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ComputedRef } from 'vue';
|
|
2
|
-
import { default as FilterModelV2 } from '../ftsp/f/FilterModelV2';
|
|
3
2
|
import { default as FilterModel } from '../ftsp/FilterModel';
|
|
4
3
|
import { default as FTSP } from '../ftsp/FTSP';
|
|
5
4
|
export interface UseFiltersReturn {
|
|
@@ -9,8 +8,6 @@ export interface UseFiltersReturn {
|
|
|
9
8
|
count: ComputedRef<number>;
|
|
10
9
|
/** Добавить фильтр (ftsp.setF) */
|
|
11
10
|
add(model: FilterModel): void;
|
|
12
|
-
/** Добавить фильтр v2 (ftsp.setF2) */
|
|
13
|
-
addV2(model: FilterModelV2): void;
|
|
14
11
|
/** Заменить фильтр: убрать prev, добавить cur (ftsp.replaceF) */
|
|
15
12
|
replace(current?: FilterModel, previous?: FilterModel): void;
|
|
16
13
|
/** Удалить фильтр по eq (ftsp.removeF) */
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ComputedRef, Ref } from 'vue';
|
|
2
|
+
import { TryOpts } from '../helpers/Try';
|
|
3
|
+
/** Функция загрузки: может принимать признак «принудительно» (мимо кэша/флага loaded). */
|
|
4
|
+
export type LoaderFn<T> = (force: boolean) => Promise<T> | T;
|
|
5
|
+
/** Попытка загрузки: сколько раз пробуем и с какой паузой (мс). */
|
|
6
|
+
export interface LoaderRetryOptions {
|
|
7
|
+
/** Всего попыток, включая первую (по умолчанию 1 — без повторов). */
|
|
8
|
+
attempts?: number;
|
|
9
|
+
/** Пауза между попытками, мс (по умолчанию 2000; растёт линейно). */
|
|
10
|
+
delay?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface UseLoaderOptions extends LoaderRetryOptions {
|
|
13
|
+
/** Запускать сразу при создании (иначе — вручную: `onMounted(load)`). */
|
|
14
|
+
immediate?: boolean;
|
|
15
|
+
/** Загружать один раз: повторные `load()` без `force` выходят сразу. */
|
|
16
|
+
once?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Запросы к `PF.UI.Notify` при ошибке. По умолчанию — МОЛЧА: состояние ошибки
|
|
19
|
+
* показывает сам виджет `PLoader`/экран, и уведомление на каждый отказ — шум.
|
|
20
|
+
* Включать, когда ошибку больше показать негде.
|
|
21
|
+
*/
|
|
22
|
+
notify?: boolean | Pick<TryOpts, 'message'>;
|
|
23
|
+
/** Своё сообщение об ошибке (когда `notify` включён). */
|
|
24
|
+
message?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface UseLoaderReturn<T> {
|
|
27
|
+
/** Идёт загрузка (включая повторные попытки). */
|
|
28
|
+
loading: Ref<boolean>;
|
|
29
|
+
/** Текст ошибки последней попытки; пустая строка — ошибки нет. */
|
|
30
|
+
error: Ref<string>;
|
|
31
|
+
/** Загруженные данные (null — ещё не было успешной загрузки). */
|
|
32
|
+
data: Ref<T | null>;
|
|
33
|
+
/** Успешная загрузка состоялась хотя бы раз. */
|
|
34
|
+
loaded: ComputedRef<boolean>;
|
|
35
|
+
/** Факт ошибки (для `v-if`/слотов виджета). */
|
|
36
|
+
failed: ComputedRef<boolean>;
|
|
37
|
+
/** Ошибка при ПЕРВОЙ загрузке (данных нет) — показываем экран ошибки целиком. */
|
|
38
|
+
failedFirstLoad: ComputedRef<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Загрузка людей. При ошибке НЕ бросает: ошибка уходит в `error`
|
|
41
|
+
* (и в уведомление, если `notify`).
|
|
42
|
+
*/
|
|
43
|
+
load: (force?: boolean) => Promise<void>;
|
|
44
|
+
/** Сбросить состояние (данные, ошибку, признак `once`) — перед сменой фильтров. */
|
|
45
|
+
reset: () => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Единая обёртка загрузки (запрос из rdkb/map, 14.09): убирает `try/catch` +
|
|
49
|
+
* флаг `loading` + поле `error` + ретрай, которые в 8 клиентах писались руками
|
|
50
|
+
* (ср. `MyTasksPage.vue` до перевода, панель дерева, онбординг incident).
|
|
51
|
+
*
|
|
52
|
+
* ```ts
|
|
53
|
+
* const { loading, error, data, load } = useLoader(() =>
|
|
54
|
+
* PF.H.HttpClient.Get<MyTasks>(), { immediate: true, attempts: 3 },
|
|
55
|
+
* );
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* ⚠️ Не дублирует `PF.H.Try`: `Try` — про разбор ошибки и уведомление,
|
|
59
|
+
* `useLoader` — про СОСТОЯНИЕ загрузки (loading/error/data). Ретрай вынесен
|
|
60
|
+
* сюда, потому что он нужен именно циклу загрузки; уведомление включается
|
|
61
|
+
* опцией `notify` и внутри идёт через `Try.Silent` + `Try.Message`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function useLoader<T>(fn: LoaderFn<T>, options?: UseLoaderOptions): UseLoaderReturn<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -33,8 +33,9 @@ export interface UsePaginationReturn {
|
|
|
33
33
|
/**
|
|
34
34
|
* Композабл пагинации (бэклог 0.4.0): удобная обёртка над FTSP.p.
|
|
35
35
|
*
|
|
36
|
-
* Важно:
|
|
37
|
-
* 1-based номер страницы (как в UI).
|
|
36
|
+
* Важно: `ftsp.p.offset` — СМЕЩЕНИЕ (0, rowsPerPage, 2*rowsPerPage…),
|
|
37
|
+
* а `page` из композабла — 1-based номер страницы (как в UI).
|
|
38
|
+
* Смена rowsPerPage сбрасывает на 1-ю.
|
|
38
39
|
*
|
|
39
40
|
* ```ts
|
|
40
41
|
* const { page, rowsPerPage, next, prev, reset } = usePagination();
|
package/dist/core/ftsp/FTSP.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { default as FilterModelV2 } from './f/FilterModelV2';
|
|
2
1
|
import { default as FilterModel } from './FilterModel';
|
|
3
2
|
import { default as Pagination } from './Pagination';
|
|
4
3
|
import { default as SortModel } from './SortModel';
|
|
@@ -7,7 +6,6 @@ export default class FTSP {
|
|
|
7
6
|
private static instance;
|
|
8
7
|
id?: string;
|
|
9
8
|
f: FilterModel[];
|
|
10
|
-
f2: FilterModelV2[];
|
|
11
9
|
s: SortModel[];
|
|
12
10
|
p: Pagination;
|
|
13
11
|
t: TreeModel;
|
|
@@ -29,7 +27,6 @@ export default class FTSP {
|
|
|
29
27
|
setSortModel(sortModel?: SortModel): void;
|
|
30
28
|
setS(sortModel: SortModel): void;
|
|
31
29
|
setF(model: FilterModel): void;
|
|
32
|
-
setF2(model: FilterModelV2): void;
|
|
33
30
|
replaceF(curF?: FilterModel, prevF?: FilterModel): void;
|
|
34
31
|
removeF(model?: FilterModel): void;
|
|
35
32
|
reset(): void;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { default as Cursor } from './Cursor';
|
|
2
2
|
export default class Pagination {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Смещение от начала списка (НЕ номер страницы!).
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ До 0.9.8 поле называлось `page`, и это регулярно путало: `page = 25`
|
|
7
|
+
* выглядит как «страница 25», а означает вторую страницу (offset 25).
|
|
8
|
+
* Номер страницы (1-based) даёт композабл `usePagination` — не считайте его
|
|
9
|
+
* здесь вручную.
|
|
10
|
+
*/
|
|
11
|
+
offset: number;
|
|
4
12
|
rowsPerPage: number;
|
|
5
13
|
rowsNumber: number;
|
|
6
14
|
cursor: Cursor;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { default as FilterModelV2 } from './f/FilterModelV2';
|
|
2
1
|
import { default as FilterModel } from './FilterModel';
|
|
3
2
|
import { default as FTSP } from './FTSP';
|
|
4
3
|
import { default as SortModel } from './SortModel';
|
|
5
4
|
export default abstract class F {
|
|
6
5
|
static SortModel: typeof SortModel;
|
|
7
6
|
static FilterModel: typeof FilterModel;
|
|
8
|
-
static FilterModelV2: typeof FilterModelV2;
|
|
9
7
|
static FTSP: typeof FTSP;
|
|
10
8
|
}
|
|
@@ -22,6 +22,7 @@ declare module 'vue' {
|
|
|
22
22
|
PLeftSlider: typeof Atoms.PLeftSlider;
|
|
23
23
|
PList: typeof Atoms.PList;
|
|
24
24
|
PListItem: typeof Atoms.PListItem;
|
|
25
|
+
PLoader: typeof Atoms.PLoader;
|
|
25
26
|
POptionsListSingle: typeof Atoms.POptionsListSingle;
|
|
26
27
|
POpts: typeof Atoms.POpts;
|
|
27
28
|
PRadio: typeof Atoms.PRadio;
|
|
@@ -39,7 +40,6 @@ declare module 'vue' {
|
|
|
39
40
|
CarouselImages: typeof Components.CarouselImages;
|
|
40
41
|
ContextWindow: typeof Components.ContextWindow;
|
|
41
42
|
DropList: typeof Components.DropList;
|
|
42
|
-
FTSPPanel: typeof Components.FTSPPanel;
|
|
43
43
|
FilterCheckbox: typeof Components.FilterCheckbox;
|
|
44
44
|
FilterSelect: typeof Components.FilterSelect;
|
|
45
45
|
FiltersButtonsSelect: typeof Components.FiltersButtonsSelect;
|
package/dist/index.d.ts
CHANGED
|
@@ -43,10 +43,13 @@ export type { default as Btn } from './core/ui/Btn';
|
|
|
43
43
|
export type { default as AnswerVariant } from './modules/forms/classes/AnswerVariant';
|
|
44
44
|
/** @internal Used by unplugin-auto-import configuration */
|
|
45
45
|
export declare const pfName: readonly ["PF", "PFM"];
|
|
46
|
-
export { useCrud, useFilters, usePagination } from './core/composables/index';
|
|
46
|
+
export { useCrud, useFilters, useLoader, usePagination } from './core/composables/index';
|
|
47
47
|
export type { UseCrudOptions, UseCrudReturn } from './core/composables/useCrud';
|
|
48
48
|
export type { UseFiltersReturn } from './core/composables/useFilters';
|
|
49
|
+
export type { LoaderFn, LoaderRetryOptions, UseLoaderOptions, UseLoaderReturn } from './core/composables/useLoader';
|
|
49
50
|
export type { UsePaginationReturn } from './core/composables/usePagination';
|
|
51
|
+
export type { UseOptionsOptions, UseOptionsReturn } from './core/composables/useOptions';
|
|
52
|
+
export { useOptions } from './core/composables/useOptions';
|
|
50
53
|
export type { PlatformName, ThemeName, UseThemeOptions, UseThemeReturn } from './core/composables/useTheme';
|
|
51
54
|
export { DEFAULT_PLATFORM, getStoredTheme, isThemeLockedLight, lockLightTheme, MOBILE_MAX_WIDTH, resolvePlatform, useTheme } from './core/composables/useTheme';
|
|
52
55
|
export type { QuasarBrand } from './core/brand/quasar';
|