@antelopejs/dms 0.12.0 → 0.12.1
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/CHANGELOG.md +38 -0
- package/README.md +1 -1
- package/dist/config/internal/state.d.ts +5 -0
- package/dist/config/internal/state.js.map +1 -1
- package/dist/frontend-module.js +1 -0
- package/dist/frontend-module.js.map +1 -1
- package/dist/implementations/dms/page/quick-action-access.js +4 -1
- package/dist/implementations/dms/page/quick-action-access.js.map +1 -1
- package/dist/store/operations.js +3 -1
- package/dist/store/operations.js.map +1 -1
- package/dist/store/runtime.d.ts +1 -0
- package/dist/store/runtime.js +9 -0
- package/dist/store/runtime.js.map +1 -1
- package/frontend-vue/layers/dms-auth/app/build/composables/useAuthFormError.ts +3 -0
- package/frontend-vue/layers/dms-auth/app/custom-pages/auth/login.vue +3 -1
- package/frontend-vue/layers/dms-auth/server/oauth.ts +5 -3
- package/frontend-vue/layers/dms-core/app/composables/auth/useAuthFetch.ts +4 -2
- package/frontend-vue/layers/dms-core/app/composables/useApiError.ts +1 -0
- package/frontend-vue/layers/dms-core/app/composables/useFieldErrors.ts +3 -0
- package/frontend-vue/layers/dms-core/app/composables/useReadOnlyRefusal.ts +49 -0
- package/frontend-vue/layers/dms-core/app/utils/composedText.ts +11 -4
- package/frontend-vue/layers/dms-core/app/utils/row-action-rule-evaluator.ts +8 -36
- package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
- package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
- package/frontend-vue/layers/dms-core/shared/types/runtime-config.d.ts +6 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidePanel.vue +3 -2
- package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +14 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfilePersonalInfo.vue +2 -2
- package/frontend-vue/layers/dms-layout/app/build/utils/github-repository.ts +1 -1
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +2 -0
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +2 -0
- package/frontend-vue/layers/dms-layout/server/render-token.ts +5 -3
- package/frontend-vue/layers/dms-ui/app/build/composables/chart/groupPoints.ts +40 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/confirm/useActionConfirm.ts +2 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/data-types/defaultPrimitiveTypes.ts +6 -8
- package/frontend-vue/layers/dms-ui/app/build/composables/page/blockAnchors.ts +2 -3
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/tableViewGrouping.ts +5 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRecordLink.ts +4 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +53 -5
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +2 -0
- package/frontend-vue/layers/dms-ui/app/components/chart/Chart.vue +4 -1
- package/frontend-vue/layers/dms-ui/app/components/confirm/ConfirmModal.vue +3 -0
- package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +2 -4
- package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanBoard.vue +2 -0
- package/frontend-vue/layers/dms-ui/app/composables/chart/types.ts +11 -1
- package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +4 -0
- package/frontend-vue/package.json +2 -2
- package/package.json +15 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.12.1
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.12.0...v0.12.1)
|
|
6
|
+
|
|
7
|
+
### 🚀 Enhancements
|
|
8
|
+
|
|
9
|
+
- **dms-layout:** Restore a static GitHub star link in the footer ([#546](https://github.com/AntelopeJS/dms/pull/546))
|
|
10
|
+
- **dms:** Support a read-only public demo ([#581](https://github.com/AntelopeJS/dms/pull/581))
|
|
11
|
+
|
|
12
|
+
### 🩹 Fixes
|
|
13
|
+
|
|
14
|
+
- **store:** Reuse the runtime id of an uninstalled module on reinstall ([#547](https://github.com/AntelopeJS/dms/pull/547))
|
|
15
|
+
- **chart:** Draw the one point per group a series data source answers ([#586](https://github.com/AntelopeJS/dms/pull/586))
|
|
16
|
+
|
|
17
|
+
### 💅 Refactors
|
|
18
|
+
|
|
19
|
+
- **frontend:** Remove type assertions in tests ([#525](https://github.com/AntelopeJS/dms/pull/525))
|
|
20
|
+
- **frontend:** Remove type assertions in core, auth and layout ([#526](https://github.com/AntelopeJS/dms/pull/526))
|
|
21
|
+
- **frontend:** Remove type assertions in ui components and composables ([#527](https://github.com/AntelopeJS/dms/pull/527))
|
|
22
|
+
- **frontend:** Remove type assertions in ui data types ([#528](https://github.com/AntelopeJS/dms/pull/528))
|
|
23
|
+
- **backend:** Remove SAFETY assertions in test fixtures ([#542](https://github.com/AntelopeJS/dms/pull/542))
|
|
24
|
+
- **backend:** Remove SAFETY assertions in serialized-option and fixture tests ([#543](https://github.com/AntelopeJS/dms/pull/543))
|
|
25
|
+
- **agents:** Fix the lint findings in dms's own agent files ([#548](https://github.com/AntelopeJS/dms/pull/548))
|
|
26
|
+
|
|
27
|
+
### 📖 Documentation
|
|
28
|
+
|
|
29
|
+
- **readme:** Rewrite the README as a landing page ([#554](https://github.com/AntelopeJS/dms/pull/554))
|
|
30
|
+
|
|
31
|
+
### 🏡 Chore
|
|
32
|
+
|
|
33
|
+
- **package:** Update the npm description and keywords ([#580](https://github.com/AntelopeJS/dms/pull/580))
|
|
34
|
+
- **package:** Restore realtime in the npm description ([#588](https://github.com/AntelopeJS/dms/pull/588))
|
|
35
|
+
- **release:** @antelopejs/interface-dms v0.10.1 ([6fd39d98](https://github.com/AntelopeJS/dms/commit/6fd39d98))
|
|
36
|
+
|
|
37
|
+
### ❤️ Contributors
|
|
38
|
+
|
|
39
|
+
- Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
|
|
40
|
+
|
|
3
41
|
## v0.12.0
|
|
4
42
|
|
|
5
43
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.11.1...v0.12.0)
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<a href="https://www.npmjs.com/package/@antelopejs/dms"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/dms?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
11
11
|
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/dms?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
12
|
-
<a href="https://discord.gg/
|
|
12
|
+
<a href="https://discord.gg/g4pFt6eXqu"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
|
|
13
13
|
<a href="https://dms.antelopejs.com/docs"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
|
|
14
14
|
|
|
15
15
|
**Admin dashboards for AntelopeJS, declared in TypeScript on the backend.**
|
|
@@ -44,10 +44,15 @@ export interface FrontendConfig {
|
|
|
44
44
|
export interface StoreConfig {
|
|
45
45
|
catalogUrl?: string;
|
|
46
46
|
}
|
|
47
|
+
export interface LoginPrefillConfig {
|
|
48
|
+
email: string;
|
|
49
|
+
password: string;
|
|
50
|
+
}
|
|
47
51
|
export interface Config {
|
|
48
52
|
auth?: AuthConfig;
|
|
49
53
|
htmlRender?: HtmlRenderConfig;
|
|
50
54
|
homepage?: string;
|
|
55
|
+
loginPrefill?: LoginPrefillConfig;
|
|
51
56
|
apiBaseUrl?: string;
|
|
52
57
|
clientBaseUrl?: string;
|
|
53
58
|
realtime?: RealtimeConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":"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"}
|
package/dist/frontend-module.js
CHANGED
|
@@ -31,6 +31,7 @@ const frontendModule = (config) => ({
|
|
|
31
31
|
time_1.MILLISECONDS_PER_SECOND,
|
|
32
32
|
},
|
|
33
33
|
homepage: config.homepage ?? DEFAULT_HOMEPAGE,
|
|
34
|
+
...(config.loginPrefill && { loginPrefill: { ...config.loginPrefill } }),
|
|
34
35
|
oauthProviders: (0, oauth_config_1.describeEnabledOAuthProviders)(config.auth?.oauth).map(({ id, label, icon }) => ({ id, label, icon })),
|
|
35
36
|
},
|
|
36
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../src/frontend-module.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAK7B,wEAAwF;AACxF,qCAKkB;AAClB,8DAA8F;AAC9F,wDAAsE;AAMzD,QAAA,wBAAwB,GAAG,0CAAsB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAatB,MAAM,cAAc,GAAmC,CAC5D,MAAc,EACc,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,8BAA8B;IACpC,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IACvC,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,CAAC;IACX,sBAAsB,EAAE,CAAC,gCAAwB,CAAC;IAClD,cAAc,EAAE;QACd,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;KAC3B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,6BAAoB;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,gCAAuB;QAC9D,iBAAiB,EAAE,KAAK;QACxB,KAAK,EAAE;YACL,eAAe,EACb,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,sCAA6B,CAAC;gBACnE,8BAAuB;SAC1B;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB;QAC7C,cAAc,EAAE,IAAA,4CAA6B,EAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CACnE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/C;KACF;CACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../src/frontend-module.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAK7B,wEAAwF;AACxF,qCAKkB;AAClB,8DAA8F;AAC9F,wDAAsE;AAMzD,QAAA,wBAAwB,GAAG,0CAAsB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAatB,MAAM,cAAc,GAAmC,CAC5D,MAAc,EACc,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,8BAA8B;IACpC,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IACvC,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,CAAC;IACX,sBAAsB,EAAE,CAAC,gCAAwB,CAAC;IAClD,cAAc,EAAE;QACd,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;KAC3B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,6BAAoB;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,gCAAuB;QAC9D,iBAAiB,EAAE,KAAK;QACxB,KAAK,EAAE;YACL,eAAe,EACb,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,sCAA6B,CAAC;gBACnE,8BAAuB;SAC1B;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB;QAC7C,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxE,cAAc,EAAE,IAAA,4CAA6B,EAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CACnE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/C;KACF;CACF,CAAC,CAAC;AA5BU,QAAA,cAAc,kBA4BxB"}
|
|
@@ -28,6 +28,9 @@ exports.quickActionTargetHandlers = {
|
|
|
28
28
|
openForm: resolveOpenFormTarget,
|
|
29
29
|
button: resolveButtonTarget,
|
|
30
30
|
};
|
|
31
|
+
function handlerFor(type) {
|
|
32
|
+
return exports.quickActionTargetHandlers[type];
|
|
33
|
+
}
|
|
31
34
|
async function resolveQuickActionTarget(target, context) {
|
|
32
35
|
const meta = (0, interface_core_1.GetMetadata)(target.page, page_1.PageMetadata);
|
|
33
36
|
const pageInfo = meta.pageInfo;
|
|
@@ -37,7 +40,7 @@ async function resolveQuickActionTarget(target, context) {
|
|
|
37
40
|
}
|
|
38
41
|
if (!(await (0, access_1.computeEntryAccess)(pageInfo, context)))
|
|
39
42
|
return undefined;
|
|
40
|
-
const handler =
|
|
43
|
+
const handler = handlerFor(target.type);
|
|
41
44
|
return handler(target, { pageInfo, meta, context });
|
|
42
45
|
}
|
|
43
46
|
function holdsPagePermission(page, permissionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-action-access.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/quick-action-access.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"quick-action-access.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/quick-action-access.ts"],"names":[],"mappings":"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"}
|
package/dist/store/operations.js
CHANGED
|
@@ -215,15 +215,17 @@ async function prepareContext(kind, id, options) {
|
|
|
215
215
|
const { projectPath } = await (0, runtime_1.GetRuntimeInfo)();
|
|
216
216
|
const declaration = (await (0, declarations_1.listCatalogDeclarations)([catalogEntry])).get(id);
|
|
217
217
|
(0, interface_api_util_1.assert)(PRECONDITIONS[kind](declaration), HTTP_CONFLICT, "error.store_invalid_state");
|
|
218
|
+
let key = declaration?.key ?? catalogEntry.package;
|
|
218
219
|
if (!declaration) {
|
|
219
220
|
const runtime = await (0, runtime_2.listRuntimeModules)();
|
|
220
221
|
(0, interface_api_util_1.assert)(!(0, runtime_2.findWorkingCopy)(catalogEntry.package, runtime.values()), HTTP_CONFLICT, "error.store_working_copy");
|
|
222
|
+
key = (0, runtime_2.packageRuntimeId)(catalogEntry.package, runtime.values());
|
|
221
223
|
}
|
|
222
224
|
const context = {
|
|
223
225
|
id,
|
|
224
226
|
catalogEntry,
|
|
225
227
|
projectPath,
|
|
226
|
-
key
|
|
228
|
+
key,
|
|
227
229
|
declaration,
|
|
228
230
|
written: false,
|
|
229
231
|
dependencies: options.dependencies ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/store/operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/store/operations.ts"],"names":[],"mappings":"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"}
|
package/dist/store/runtime.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface StoreModuleLoad {
|
|
|
13
13
|
export declare function sourceKindOf(source: PackageSource): ModuleSourceKind;
|
|
14
14
|
export declare function isLive(module: RuntimeModule | undefined): boolean;
|
|
15
15
|
export declare function findWorkingCopy(packageName: string, runtime: Iterable<RuntimeModule>): RuntimeModule | undefined;
|
|
16
|
+
export declare function packageRuntimeId(packageName: string, runtime: Iterable<RuntimeModule>): string;
|
|
16
17
|
export declare function listRuntimeModules(): Promise<Map<string, RuntimeModule>>;
|
|
17
18
|
export declare function loadStoreModule(moduleId: string, load: StoreModuleLoad): Promise<void>;
|
|
18
19
|
export declare function unloadStoreModule(moduleId: string): Promise<void>;
|
package/dist/store/runtime.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.sourceKindOf = sourceKindOf;
|
|
7
7
|
exports.isLive = isLive;
|
|
8
8
|
exports.findWorkingCopy = findWorkingCopy;
|
|
9
|
+
exports.packageRuntimeId = packageRuntimeId;
|
|
9
10
|
exports.listRuntimeModules = listRuntimeModules;
|
|
10
11
|
exports.loadStoreModule = loadStoreModule;
|
|
11
12
|
exports.unloadStoreModule = unloadStoreModule;
|
|
@@ -70,6 +71,14 @@ function findWorkingCopy(packageName, runtime) {
|
|
|
70
71
|
}
|
|
71
72
|
return undefined;
|
|
72
73
|
}
|
|
74
|
+
function packageRuntimeId(packageName, runtime) {
|
|
75
|
+
for (const module of runtime) {
|
|
76
|
+
if (module.isPackageSource && module.packageName === packageName) {
|
|
77
|
+
return module.id;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return packageName;
|
|
81
|
+
}
|
|
73
82
|
async function listRuntimeModules() {
|
|
74
83
|
const described = await Promise.all((await (0, modules_1.ListModules)()).map((moduleId) => describeModule(moduleId)));
|
|
75
84
|
return new Map(described
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":";;;;;AAsDA,oCAKC;AAED,wBAEC;AAyCD,0CASC;AAGD,gDAWC;AAOD,0CAqBC;AAGD,8CAKC;AAED,sDAIC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ export interface AuthFieldErrorTarget {
|
|
|
42
42
|
* after an `await` without the i18n context.
|
|
43
43
|
*/
|
|
44
44
|
export function useAuthFormError() {
|
|
45
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
45
46
|
const { t } = useI18n();
|
|
46
47
|
const translate: I18nTranslate = (key, params = {}) => t(key, params);
|
|
47
48
|
const formError = ref<AuthFormError | null>(null);
|
|
@@ -50,6 +51,7 @@ export function useAuthFormError() {
|
|
|
50
51
|
error: Parameters<typeof resolveApiErrorMessage>[0],
|
|
51
52
|
titleKey: string,
|
|
52
53
|
): void {
|
|
54
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
53
55
|
formError.value = {
|
|
54
56
|
title: t(titleKey),
|
|
55
57
|
description: resolveApiMessage(translate, resolveApiErrorMessage(error)),
|
|
@@ -81,6 +83,7 @@ export function useAuthFormError() {
|
|
|
81
83
|
titleKey: string,
|
|
82
84
|
target: AuthFieldErrorTarget,
|
|
83
85
|
): Promise<boolean> {
|
|
86
|
+
if (consumeReadOnlyRefusal(error)) return false;
|
|
84
87
|
const { fields } = resolveFieldErrors(error, {
|
|
85
88
|
fields: target.fields,
|
|
86
89
|
codes: target.codes,
|
|
@@ -39,7 +39,9 @@ const fields = z.object({
|
|
|
39
39
|
});
|
|
40
40
|
type Schema = z.output<typeof fields>;
|
|
41
41
|
const schema = useLocalizedSchema(fields);
|
|
42
|
-
const state = reactive<Partial<Schema>>({
|
|
42
|
+
const state = reactive<Partial<Schema>>({
|
|
43
|
+
...useDmsRuntimeConfig().public.dms.loginPrefill,
|
|
44
|
+
});
|
|
43
45
|
useLiveFormErrors(form, state);
|
|
44
46
|
|
|
45
47
|
function isTwoFactorRequired(
|
|
@@ -46,9 +46,11 @@ const attempts = new Map<string, RateWindow>();
|
|
|
46
46
|
function sweepAttempts(now: number) {
|
|
47
47
|
for (const [key, window] of attempts)
|
|
48
48
|
if (now - window.startedAt >= RATE_WINDOW_MS) attempts.delete(key);
|
|
49
|
-
while (attempts.size >= MAX_RATE_LIMIT_CLIENTS)
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
while (attempts.size >= MAX_RATE_LIMIT_CLIENTS) {
|
|
50
|
+
const [oldest] = attempts.keys();
|
|
51
|
+
if (oldest === undefined) return;
|
|
52
|
+
attempts.delete(oldest);
|
|
53
|
+
}
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
/** Counts an attempt for `key`; false once over the limit of the window. */
|
|
@@ -42,6 +42,7 @@ export const useAuthFetch = () => {
|
|
|
42
42
|
useSessionRecovery();
|
|
43
43
|
const config = useDmsRuntimeConfig();
|
|
44
44
|
const dmsApp = useDmsApp();
|
|
45
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
45
46
|
|
|
46
47
|
const realtimeSessionId = useDmsState<string | undefined>(
|
|
47
48
|
REALTIME_SESSION_STATE_KEY,
|
|
@@ -59,6 +60,7 @@ export const useAuthFetch = () => {
|
|
|
59
60
|
}
|
|
60
61
|
},
|
|
61
62
|
async onResponseError({ response, options }) {
|
|
63
|
+
if (consumeReadOnlyRefusal({ response })) return;
|
|
62
64
|
if (response.status !== HTTP_UNAUTHORIZED) {
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
@@ -126,12 +128,12 @@ export const useAuthFetch = () => {
|
|
|
126
128
|
...defaults,
|
|
127
129
|
...options,
|
|
128
130
|
});
|
|
129
|
-
//
|
|
131
|
+
// SAFETY: retryingFetch resolves with the response baseFetch gives for the same request, of the same response type, so the wrapper answers as AuthFetch's call signature does; raw, native and create are attached below before it is returned.
|
|
130
132
|
const authFetch = ((
|
|
131
133
|
request: AuthFetchArgs[0],
|
|
132
134
|
options?: AuthFetchArgs[1],
|
|
133
135
|
) => retryingFetch(request, optionsOf(options))) as AuthFetch;
|
|
134
|
-
//
|
|
136
|
+
// SAFETY: retryingRaw resolves with the response baseFetch.raw gives for the same request, of the same response type, so the wrapper answers as AuthFetch['raw'] does.
|
|
135
137
|
authFetch.raw = ((request: AuthFetchArgs[0], options?: AuthFetchArgs[1]) =>
|
|
136
138
|
retryingRaw(request, optionsOf(options))) as AuthFetch["raw"];
|
|
137
139
|
authFetch.native = baseFetch.native;
|
|
@@ -491,6 +491,7 @@ export function useFieldErrors<F extends string>(
|
|
|
491
491
|
) {
|
|
492
492
|
const { t } = useI18n();
|
|
493
493
|
const toast = useToast();
|
|
494
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
494
495
|
const translate = (key: string, params: Parameters<I18nTranslate>[1] = {}) =>
|
|
495
496
|
t(key, params);
|
|
496
497
|
const fieldIds = Object.keys(options.fields) as F[];
|
|
@@ -571,6 +572,7 @@ export function useFieldErrors<F extends string>(
|
|
|
571
572
|
error: Parameters<typeof resolveApiErrorMessage>[0],
|
|
572
573
|
toastOptions: HandleApiErrorOptions,
|
|
573
574
|
) {
|
|
575
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
574
576
|
toast.add({
|
|
575
577
|
title: t(toastOptions.toastTitle),
|
|
576
578
|
description: toastOptions.toastDescription
|
|
@@ -589,6 +591,7 @@ export function useFieldErrors<F extends string>(
|
|
|
589
591
|
error: Parameters<typeof resolveApiErrorMessage>[0],
|
|
590
592
|
toastOptions: HandleApiErrorOptions,
|
|
591
593
|
): Promise<boolean> {
|
|
594
|
+
if (consumeReadOnlyRefusal(error)) return false;
|
|
592
595
|
if (await applyApiError(error)) return true;
|
|
593
596
|
toastError(error, toastOptions);
|
|
594
597
|
return false;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { isFunction, isObject } from "../utils/type-check";
|
|
2
|
+
|
|
3
|
+
const READ_ONLY_STATUS = 403;
|
|
4
|
+
const READ_ONLY_HEADER = "x-dms-readonly";
|
|
5
|
+
const READ_ONLY_MARK = "1";
|
|
6
|
+
const READ_ONLY_TOAST_ID = "dms-read-only";
|
|
7
|
+
const READ_ONLY_STATE_KEY = "dms.readOnly.presentedResponses";
|
|
8
|
+
|
|
9
|
+
function refusedResponse(
|
|
10
|
+
failure: Parameters<typeof isObject>[0],
|
|
11
|
+
): object | undefined {
|
|
12
|
+
if (!failure || !isObject(failure)) return;
|
|
13
|
+
const response = failure.response;
|
|
14
|
+
if (!response || !isObject(response) || response.status !== READ_ONLY_STATUS)
|
|
15
|
+
return;
|
|
16
|
+
const headers = response.headers;
|
|
17
|
+
if (!headers || !isObject(headers) || !isFunction(headers.get)) return;
|
|
18
|
+
return headers.get(READ_ONLY_HEADER) === READ_ONLY_MARK
|
|
19
|
+
? response
|
|
20
|
+
: undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Captures app-local refusal presentation. The returned consumer shows one
|
|
25
|
+
* generic toast per marked response and returns whether it owns presentation.
|
|
26
|
+
* A consumed refusal remains a failed operation; callers skip only local notices.
|
|
27
|
+
*/
|
|
28
|
+
export function useReadOnlyRefusal() {
|
|
29
|
+
const toast = useToast();
|
|
30
|
+
const { processApiMessage } = getAppTranslation();
|
|
31
|
+
const presented = useDmsState(
|
|
32
|
+
READ_ONLY_STATE_KEY,
|
|
33
|
+
() => new WeakSet<object>(),
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
return (failure: Parameters<typeof refusedResponse>[0]): boolean => {
|
|
37
|
+
const response = refusedResponse(failure);
|
|
38
|
+
if (!response) return false;
|
|
39
|
+
if (presented.value.has(response)) return true;
|
|
40
|
+
presented.value.add(response);
|
|
41
|
+
toast.add({
|
|
42
|
+
id: READ_ONLY_TOAST_ID,
|
|
43
|
+
color: "warning",
|
|
44
|
+
icon: "i-ph-lock-simple",
|
|
45
|
+
title: processApiMessage("error.read_only_demo"),
|
|
46
|
+
});
|
|
47
|
+
return true;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
@@ -48,10 +48,17 @@ type ParamFormatter<Param extends ComposedTextTypedParam> = (
|
|
|
48
48
|
context: ComposedTextContext,
|
|
49
49
|
) => string;
|
|
50
50
|
|
|
51
|
+
type ParamOfType<Type extends ComposedTextParamType> =
|
|
52
|
+
ComposedTextTypedParam extends infer Param
|
|
53
|
+
? Param extends { type: infer Types }
|
|
54
|
+
? Type extends Types
|
|
55
|
+
? Param
|
|
56
|
+
: never
|
|
57
|
+
: never
|
|
58
|
+
: never;
|
|
59
|
+
|
|
51
60
|
type ParamFormatters = {
|
|
52
|
-
[Type in ComposedTextParamType]: ParamFormatter<
|
|
53
|
-
Extract<ComposedTextTypedParam, { type: Type }>
|
|
54
|
-
>;
|
|
61
|
+
[Type in ComposedTextParamType]: ParamFormatter<ParamOfType<Type>>;
|
|
55
62
|
};
|
|
56
63
|
|
|
57
64
|
const DEFAULT_MINOR_DIGITS = 2;
|
|
@@ -162,7 +169,7 @@ function formatParam(
|
|
|
162
169
|
return String(formatNumber(param, context.locale));
|
|
163
170
|
}
|
|
164
171
|
if (isComposedText(param)) return composeText(param, context);
|
|
165
|
-
//
|
|
172
|
+
// SAFETY: ParamFormatters types each entry as the formatter of the variants whose type includes that key, so for a param typed ComposedTextTypedParam the entry under param.type accepts it; the indexed union loses that correlation.
|
|
166
173
|
const formatter = PARAM_FORMATTERS[param.type] as
|
|
167
174
|
| ParamFormatter<ComposedTextTypedParam>
|
|
168
175
|
| undefined;
|
|
@@ -2,11 +2,7 @@ import { isBoolean } from "./type-check";
|
|
|
2
2
|
import type { DataTypeFormatter } from "../composables/data-types/useDataType";
|
|
3
3
|
import { get } from "@nuxt/ui/runtime/utils/index.js";
|
|
4
4
|
import type { RowActionRule, RowActionConfig } from "../types/row-action";
|
|
5
|
-
import {
|
|
6
|
-
FIELD_KEY,
|
|
7
|
-
FIELD_OPERATORS,
|
|
8
|
-
LOGICAL_OPERATOR_KEYS,
|
|
9
|
-
} from "../types/row-action-operators";
|
|
5
|
+
import { FIELD_KEY, FIELD_OPERATORS } from "../types/row-action-operators";
|
|
10
6
|
|
|
11
7
|
type RuleEvaluator = (
|
|
12
8
|
rule: RowActionRule,
|
|
@@ -18,39 +14,15 @@ type RuleDictionary = Record<
|
|
|
18
14
|
Parameters<typeof FIELD_OPERATORS.equals.compare>[0]
|
|
19
15
|
>;
|
|
20
16
|
|
|
21
|
-
const createLogicalEvaluators = (evaluate: RuleEvaluator) => ({
|
|
22
|
-
and: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
|
|
23
|
-
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Operator presence does not validate its payload. Owner rule types cannot prove dynamically indexed values; retain the unchecked every call and its existing failures.
|
|
24
|
-
(val as RowActionRule[]).every((r) => evaluate(r, row)),
|
|
25
|
-
or: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
|
|
26
|
-
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The existing rule contract assumes an array here without checking it. Inference cannot prove that assumption and guards would change malformed-input failures.
|
|
27
|
-
(val as RowActionRule[]).some((r) => evaluate(r, row)),
|
|
28
|
-
not: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
|
|
29
|
-
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Payload is not runtime-validated. Owner types cannot prove this dynamic value; preserve recursive evaluation's existing behavior.
|
|
30
|
-
!evaluate(val as RowActionRule, row),
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
let cachedLogicalEvaluators: ReturnType<typeof createLogicalEvaluators>;
|
|
34
|
-
const getLogicalEvaluators = () => {
|
|
35
|
-
if (!cachedLogicalEvaluators) {
|
|
36
|
-
cachedLogicalEvaluators = createLogicalEvaluators(evaluateRowActionRule);
|
|
37
|
-
}
|
|
38
|
-
return cachedLogicalEvaluators;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
17
|
export const evaluateRowActionRule: RuleEvaluator = (rule, row) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (operator in ruleObj) {
|
|
47
|
-
return logicalEvaluators[operator](ruleObj[operator], row);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
18
|
+
if ("and" in rule)
|
|
19
|
+
return rule.and.every((r) => evaluateRowActionRule(r, row));
|
|
20
|
+
if ("or" in rule) return rule.or.some((r) => evaluateRowActionRule(r, row));
|
|
21
|
+
if ("not" in rule) return !evaluateRowActionRule(rule.not, row);
|
|
50
22
|
|
|
51
|
-
if (FIELD_KEY in
|
|
52
|
-
|
|
53
|
-
const fieldValue = get(row,
|
|
23
|
+
if (FIELD_KEY in rule) {
|
|
24
|
+
const ruleObj: RuleDictionary = rule;
|
|
25
|
+
const fieldValue = get(row, rule.field);
|
|
54
26
|
for (const [operator, def] of Object.entries(FIELD_OPERATORS)) {
|
|
55
27
|
if (operator in ruleObj) {
|
|
56
28
|
const compare = def.compare;
|
|
@@ -4,9 +4,15 @@ interface DmsOAuthProviderDescriptor {
|
|
|
4
4
|
icon: string;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
interface DmsLoginPrefillConfig {
|
|
8
|
+
email: string;
|
|
9
|
+
password: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
interface DmsPublicConfig {
|
|
8
13
|
baseURL: string;
|
|
9
14
|
homepage?: string;
|
|
15
|
+
loginPrefill?: DmsLoginPrefillConfig;
|
|
10
16
|
mustValidateEmail?: boolean;
|
|
11
17
|
clientBaseUrl?: string;
|
|
12
18
|
/**
|
|
@@ -56,8 +56,9 @@ function closeSheetOnEscape(event: KeyboardEvent): void {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
function startHandleDrag(event: PointerEvent): void {
|
|
59
|
-
|
|
60
|
-
(
|
|
59
|
+
const handle = event.currentTarget;
|
|
60
|
+
if (!(handle instanceof HTMLElement)) return;
|
|
61
|
+
handle.setPointerCapture(event.pointerId);
|
|
61
62
|
const renderedWidth = panelEl.value?.getBoundingClientRect().width;
|
|
62
63
|
startDrag(event, renderedWidth || width.value);
|
|
63
64
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { SelectItem } from "@nuxt/ui";
|
|
3
|
+
import { GITHUB_REPOSITORY_URL } from "../../utils/github-repository";
|
|
3
4
|
|
|
4
5
|
const EXTERNAL_LINK_PATTERN = /^https?:\/\//;
|
|
5
6
|
const DEFAULT_COPYRIGHT = "Antelope";
|
|
@@ -65,6 +66,19 @@ async function onLocaleChange(code: Parameters<typeof changeLanguage>[0]) {
|
|
|
65
66
|
</DmsLink>
|
|
66
67
|
</template>
|
|
67
68
|
|
|
69
|
+
<a
|
|
70
|
+
:href="GITHUB_REPOSITORY_URL"
|
|
71
|
+
target="_blank"
|
|
72
|
+
rel="noopener noreferrer"
|
|
73
|
+
:aria-label="t('empty_layout.footer.github_star_label')"
|
|
74
|
+
:title="t('empty_layout.footer.github_star_label')"
|
|
75
|
+
class="border-default text-muted hover:text-highlighted hover:border-accented hover:bg-elevated inline-flex h-6 items-center gap-1.5 rounded-md border px-2 font-medium transition-colors max-sm:h-8"
|
|
76
|
+
>
|
|
77
|
+
<UIcon name="i-ph-github-logo" class="size-3.5" aria-hidden="true" />
|
|
78
|
+
<UIcon name="i-ph-star" class="size-3" aria-hidden="true" />
|
|
79
|
+
{{ t("empty_layout.footer.github_star") }}
|
|
80
|
+
</a>
|
|
81
|
+
|
|
68
82
|
<USelect
|
|
69
83
|
v-if="showsLocaleSwitcher"
|
|
70
84
|
:model-value="locale"
|
|
@@ -112,8 +112,8 @@ function pickFile(): void {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
async function onFileChange(event: Event): Promise<void> {
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const input = event.target;
|
|
116
|
+
if (!(input instanceof HTMLInputElement)) return;
|
|
117
117
|
const file = input.files?.[0];
|
|
118
118
|
input.value = "";
|
|
119
119
|
if (!file) return;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** The DMS repository on GitHub, as `owner/name`. */
|
|
2
2
|
const GITHUB_REPOSITORY = "AntelopeJS/dms";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** The DMS repository page on GitHub. */
|
|
5
5
|
export const GITHUB_REPOSITORY_URL = `https://github.com/${GITHUB_REPOSITORY}`;
|
|
@@ -63,9 +63,11 @@ function claimsValid(
|
|
|
63
63
|
function rememberToken(jti: string, exp: number, now: number) {
|
|
64
64
|
for (const [spent, expiresAt] of usedRenderTokens)
|
|
65
65
|
if (expiresAt <= now) usedRenderTokens.delete(spent);
|
|
66
|
-
while (usedRenderTokens.size >= RENDER_REPLAY_LIMIT)
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
while (usedRenderTokens.size >= RENDER_REPLAY_LIMIT) {
|
|
67
|
+
const [oldest] = usedRenderTokens.keys();
|
|
68
|
+
if (oldest === undefined) break;
|
|
69
|
+
usedRenderTokens.delete(oldest);
|
|
70
|
+
}
|
|
69
71
|
usedRenderTokens.set(jti, exp);
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ChartGroupPoint,
|
|
3
|
+
ChartResponse,
|
|
4
|
+
ChartSeries,
|
|
5
|
+
} from "../../../composables/chart/types";
|
|
6
|
+
|
|
7
|
+
type XAxisType = "category" | "datetime" | "numeric";
|
|
8
|
+
|
|
9
|
+
function isGroupPoint(
|
|
10
|
+
entry: ChartSeries | ChartGroupPoint,
|
|
11
|
+
): entry is ChartGroupPoint {
|
|
12
|
+
return "x" in entry && "y" in entry && !("data" in entry);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function isSeries(entry: ChartSeries | ChartGroupPoint): entry is ChartSeries {
|
|
16
|
+
return "data" in entry;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The series a bare chart draws from its data source's answer.
|
|
21
|
+
*
|
|
22
|
+
* One point per group becomes one series called `name`. On a category axis
|
|
23
|
+
* each group key becomes its label: Apex lays numeric keys out on a number
|
|
24
|
+
* line whatever axis type it is given, which bunches `202512` and `202601`
|
|
25
|
+
* apart and shifts the bars of a numeric breakdown off their labels.
|
|
26
|
+
*/
|
|
27
|
+
export function responseSeries(
|
|
28
|
+
series: ChartResponse["series"],
|
|
29
|
+
name: string,
|
|
30
|
+
xaxisType: XAxisType = "category",
|
|
31
|
+
): ChartSeries[] {
|
|
32
|
+
const entries: Array<ChartSeries | ChartGroupPoint> = series;
|
|
33
|
+
if (entries.length === 0 || !entries.every(isGroupPoint))
|
|
34
|
+
return entries.filter(isSeries);
|
|
35
|
+
const labelled = xaxisType === "category";
|
|
36
|
+
const data = entries
|
|
37
|
+
.filter(isGroupPoint)
|
|
38
|
+
.map((point) => (labelled ? { ...point, x: String(point.x) } : point));
|
|
39
|
+
return [{ name, data }];
|
|
40
|
+
}
|
|
@@ -44,6 +44,7 @@ export function useActionConfirm() {
|
|
|
44
44
|
const { $authFetch } = useAuthFetch();
|
|
45
45
|
const { t } = useI18n();
|
|
46
46
|
const toast = useToast();
|
|
47
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
47
48
|
const runSecondaryTarget = secondaryTargetRunner($authFetch.raw);
|
|
48
49
|
|
|
49
50
|
const loadDialog = async (
|
|
@@ -61,6 +62,7 @@ export function useActionConfirm() {
|
|
|
61
62
|
try {
|
|
62
63
|
return await $authFetch<ConfirmDialog>(url);
|
|
63
64
|
} catch (error) {
|
|
65
|
+
if (consumeReadOnlyRefusal(error)) return undefined;
|
|
64
66
|
toast.add({
|
|
65
67
|
color: Color.error,
|
|
66
68
|
icon: "i-ph-warning-circle",
|
package/frontend-vue/layers/dms-ui/app/build/composables/data-types/defaultPrimitiveTypes.ts
CHANGED
|
@@ -37,16 +37,14 @@ function renderBoolean(value: CellValue) {
|
|
|
37
37
|
]);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
function dateBoundsOf(value: CellValue): [unknown, unknown] {
|
|
41
|
+
const bounds: { start?: unknown; end?: unknown } = value ?? {};
|
|
42
|
+
return [bounds.start, bounds.end];
|
|
43
|
+
}
|
|
44
|
+
|
|
40
45
|
function formatDateBetween(value: CellValue, locale: string): string {
|
|
41
46
|
const { t } = getAppTranslation();
|
|
42
|
-
const [rawStart, rawEnd] = Array.isArray(value)
|
|
43
|
-
? value
|
|
44
|
-
: [
|
|
45
|
-
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The open formatter value has no date-range schema; preserve optional start access on the original input.
|
|
46
|
-
(value as { start?: unknown })?.start,
|
|
47
|
-
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The open formatter value has no date-range schema; preserve optional end access on the original input.
|
|
48
|
-
(value as { end?: unknown })?.end,
|
|
49
|
-
];
|
|
47
|
+
const [rawStart, rawEnd] = Array.isArray(value) ? value : dateBoundsOf(value);
|
|
50
48
|
const start = formatDate(rawStart, locale) ?? t("dms.date.undefined");
|
|
51
49
|
const end = formatDate(rawEnd, locale) ?? t("dms.date.undefined");
|
|
52
50
|
return `${start} - ${end}`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { isVNode, type ComponentPublicInstance, type VNode } from "vue";
|
|
2
2
|
|
|
3
3
|
const blocks = new Map<string, ComponentPublicInstance>();
|
|
4
4
|
|
|
@@ -28,8 +28,7 @@ function firstElementOf(vnode: VNode | null | undefined): Element | null {
|
|
|
28
28
|
if (vnode.component) return firstElementOf(vnode.component.subTree);
|
|
29
29
|
if (!Array.isArray(vnode.children)) return null;
|
|
30
30
|
for (const child of vnode.children) {
|
|
31
|
-
|
|
32
|
-
const element = firstElementOf(child as VNode);
|
|
31
|
+
const element = isVNode(child) ? firstElementOf(child) : null;
|
|
33
32
|
if (element) return element;
|
|
34
33
|
}
|
|
35
34
|
return null;
|
|
@@ -35,6 +35,7 @@ export function useTableViewReorder<T extends Data>(
|
|
|
35
35
|
const { toast } = scope.sortRecovery;
|
|
36
36
|
const { processI18n } = scope.arrival;
|
|
37
37
|
const { props } = scope;
|
|
38
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
38
39
|
const ORDERED_DISPLAY_IDS = new Set([TABLE_DISPLAY_ID, CARDS_DISPLAY_ID]);
|
|
39
40
|
const { reorderState } = useTableReorder<T>({
|
|
40
41
|
reorder: reorderConfig,
|
|
@@ -53,7 +54,8 @@ export function useTableViewReorder<T extends Data>(
|
|
|
53
54
|
ORDERED_DISPLAY_IDS.has(activeDisplayId.value),
|
|
54
55
|
),
|
|
55
56
|
refresh: () => refresh(),
|
|
56
|
-
onError: (failure) =>
|
|
57
|
+
onError: (failure) => {
|
|
58
|
+
if (consumeReadOnlyRefusal(failure)) return;
|
|
57
59
|
toast.add({
|
|
58
60
|
title: t("dms.table.reorder.error"),
|
|
59
61
|
description: describeTableWriteError(
|
|
@@ -64,7 +66,8 @@ export function useTableViewReorder<T extends Data>(
|
|
|
64
66
|
),
|
|
65
67
|
color: Color.error,
|
|
66
68
|
icon: "i-ph-warning-circle",
|
|
67
|
-
})
|
|
69
|
+
});
|
|
70
|
+
},
|
|
68
71
|
});
|
|
69
72
|
return { reorderState };
|
|
70
73
|
}
|
|
@@ -55,8 +55,10 @@ export function useTableRecordLink<T>(
|
|
|
55
55
|
const settle = async (id: string) => {
|
|
56
56
|
const found = await options.resolve(id);
|
|
57
57
|
const outcome = deepLinkOutcome(found, action);
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
if (outcome === "open") {
|
|
59
|
+
if (found.row) options.open(found.row);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
60
62
|
if (outcome === "missingPanel") return options.showMissing(id);
|
|
61
63
|
writeRecordId(urlScope);
|
|
62
64
|
if (linkedId === id) linkedId = undefined;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { get } from "@nuxt/ui/runtime/utils/index.js";
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
+
import { stringifyQuery, withQuery } from "ufo";
|
|
3
4
|
import { interpolateUrl } from "#dms-core/app/utils/url-interpolation";
|
|
4
5
|
import { isString } from "#dms-core/app/utils/type-check";
|
|
5
6
|
import type {
|
|
@@ -58,6 +59,48 @@ const DESCENDING = "desc";
|
|
|
58
59
|
*/
|
|
59
60
|
export const LIVE_HELD_AT_QUERY_KEY = "liveHeldAt";
|
|
60
61
|
const NO_ROUTE_VALUES: ReplaceUrlVariablesContext = { routeQuery: {} };
|
|
62
|
+
const MAX_BATCH_COUNT_QUERIES = 50;
|
|
63
|
+
const MAX_BATCH_COUNT_TARGET_BYTES = 8_192;
|
|
64
|
+
|
|
65
|
+
function encodeCountQuery({ id, query }: TableCountQuery): string {
|
|
66
|
+
const values = Object.fromEntries(
|
|
67
|
+
Object.entries(query)
|
|
68
|
+
.filter(([, value]) => value !== undefined)
|
|
69
|
+
.map(([key, value]) => [
|
|
70
|
+
key,
|
|
71
|
+
Array.isArray(value) ? value.map(String) : String(value),
|
|
72
|
+
]),
|
|
73
|
+
);
|
|
74
|
+
return `${encodeURIComponent(id)}?${stringifyQuery(values)}`;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function countBatchTargetBytes(location: string, entries: string[]): number {
|
|
78
|
+
const url = new URL(location, "http://dms.invalid");
|
|
79
|
+
const target = withQuery(url.pathname + url.search, { query: entries });
|
|
80
|
+
return new TextEncoder().encode(target).byteLength;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function packCountQueries(
|
|
84
|
+
location: string,
|
|
85
|
+
queries: TableCountQuery[],
|
|
86
|
+
): string[][] {
|
|
87
|
+
const batches: string[][] = [];
|
|
88
|
+
let batch: string[] = [];
|
|
89
|
+
for (const entry of queries.map(encodeCountQuery)) {
|
|
90
|
+
if (
|
|
91
|
+
batch.length > 0 &&
|
|
92
|
+
(batch.length >= MAX_BATCH_COUNT_QUERIES ||
|
|
93
|
+
countBatchTargetBytes(location, [...batch, entry]) >
|
|
94
|
+
MAX_BATCH_COUNT_TARGET_BYTES)
|
|
95
|
+
) {
|
|
96
|
+
batches.push(batch);
|
|
97
|
+
batch = [];
|
|
98
|
+
}
|
|
99
|
+
batch.push(entry);
|
|
100
|
+
}
|
|
101
|
+
batches.push(batch);
|
|
102
|
+
return batches;
|
|
103
|
+
}
|
|
61
104
|
|
|
62
105
|
type SourceCapabilities = TableViewSourceConfig["capabilities"];
|
|
63
106
|
|
|
@@ -347,11 +390,16 @@ export function useTableRows<T extends Record<string, unknown>>(
|
|
|
347
390
|
signal?: AbortSignal,
|
|
348
391
|
): Promise<Record<string, number>> => {
|
|
349
392
|
if (!source) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
393
|
+
const endpoint = `${location}/count/batch`;
|
|
394
|
+
const counts = await Promise.all(
|
|
395
|
+
packCountQueries(endpoint, queries).map((entries) =>
|
|
396
|
+
api<Record<string, number>>(endpoint, {
|
|
397
|
+
query: { query: entries },
|
|
398
|
+
signal,
|
|
399
|
+
}),
|
|
400
|
+
),
|
|
401
|
+
);
|
|
402
|
+
return Object.assign({}, ...counts);
|
|
355
403
|
}
|
|
356
404
|
const totals = await Promise.all(
|
|
357
405
|
queries.map(async ({ id, query }) => {
|
package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts
CHANGED
|
@@ -14,6 +14,7 @@ export const useTableRowActions = <T extends Data>(
|
|
|
14
14
|
config: TableRowActionsConfig,
|
|
15
15
|
) => {
|
|
16
16
|
const toast = useToast();
|
|
17
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
17
18
|
const { t, locale } = useI18n();
|
|
18
19
|
const { confirm } = useConfirm();
|
|
19
20
|
const { confirmAction } = useActionConfirm();
|
|
@@ -42,6 +43,7 @@ export const useTableRowActions = <T extends Data>(
|
|
|
42
43
|
error: Parameters<typeof describeTableWriteError>[0],
|
|
43
44
|
title?: string,
|
|
44
45
|
) => {
|
|
46
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
45
47
|
toast.add({
|
|
46
48
|
color: Color.error,
|
|
47
49
|
icon: "i-ph-warning-circle",
|
|
@@ -43,6 +43,7 @@ import {
|
|
|
43
43
|
NESTED_CHART_INJECT_KEY,
|
|
44
44
|
} from "../../composables/chart/types";
|
|
45
45
|
import type { DefaultComponentProps } from "../../../../dms-core/app/types/component";
|
|
46
|
+
import { responseSeries } from "../../build/composables/chart/groupPoints";
|
|
46
47
|
|
|
47
48
|
interface Props extends DefaultComponentProps {
|
|
48
49
|
type: ChartType;
|
|
@@ -164,7 +165,9 @@ const seriesFromCtx = computed<ChartSeries[]>(() => {
|
|
|
164
165
|
|
|
165
166
|
const fetchSeries = computed<ChartSeries[]>(() => {
|
|
166
167
|
if (!data.value) return [];
|
|
167
|
-
return localized(
|
|
168
|
+
return localized(
|
|
169
|
+
responseSeries(data.value.series ?? [], props.title ?? "", props.xaxisType),
|
|
170
|
+
);
|
|
168
171
|
});
|
|
169
172
|
|
|
170
173
|
const finalSeries = computed<ChartSeries[]>(() => {
|
|
@@ -113,6 +113,7 @@ const props = withDefaults(defineProps<ConfirmModalProps>(), {
|
|
|
113
113
|
const emit = defineEmits<ConfirmModalEmits>();
|
|
114
114
|
const slots = defineSlots<ConfirmModalSlots>();
|
|
115
115
|
const { t } = useI18n();
|
|
116
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
116
117
|
|
|
117
118
|
const BodyRender: FunctionalComponent = () => props.body?.();
|
|
118
119
|
|
|
@@ -292,6 +293,7 @@ async function runConfirm(
|
|
|
292
293
|
close(true);
|
|
293
294
|
}
|
|
294
295
|
} catch (error) {
|
|
296
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
295
297
|
if (error instanceof ConfirmTextError && props.confirmText) {
|
|
296
298
|
typedError.value = error.message;
|
|
297
299
|
} else if (!showFieldErrors(error)) {
|
|
@@ -341,6 +343,7 @@ async function handleSecondary() {
|
|
|
341
343
|
try {
|
|
342
344
|
await action.run();
|
|
343
345
|
} catch (error) {
|
|
346
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
344
347
|
notice.value = { ...errorNotice(error), tone: "error" };
|
|
345
348
|
} finally {
|
|
346
349
|
isSecondaryPending.value = false;
|
|
@@ -164,8 +164,7 @@ function trackRangePick(value: Parameters<typeof forwardEmit>[1]): void {
|
|
|
164
164
|
report(undefined);
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
|
-
|
|
168
|
-
const ends = value as Partial<StrictDateRange>;
|
|
167
|
+
const ends: { start?: unknown; end?: unknown } = value;
|
|
169
168
|
if (!ends.start) return;
|
|
170
169
|
isHalfPicked = !ends.end;
|
|
171
170
|
if (!isHalfPicked) report(undefined);
|
|
@@ -180,8 +179,7 @@ const isPickerOpen = ref(false);
|
|
|
180
179
|
function isPickComplete(value: Parameters<typeof forwardEmit>[1]): boolean {
|
|
181
180
|
if (!value || props.multiple) return false;
|
|
182
181
|
if (!props.range) return true;
|
|
183
|
-
|
|
184
|
-
const ends = value as Partial<StrictDateRange>;
|
|
182
|
+
const ends: { start?: unknown; end?: unknown } = value;
|
|
185
183
|
return !!ends.start && !!ends.end;
|
|
186
184
|
}
|
|
187
185
|
|
|
@@ -89,6 +89,7 @@ const { getDataType } = useDataTypes();
|
|
|
89
89
|
const { t } = useI18n();
|
|
90
90
|
const { processText } = useComposedText();
|
|
91
91
|
const toast = useToast();
|
|
92
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
92
93
|
|
|
93
94
|
const rowIdKey = computed(() => props.rowIdKey ?? DEFAULT_ROW_ID_KEY);
|
|
94
95
|
const pageSize = computed(
|
|
@@ -298,6 +299,7 @@ const awaitNewerMoves = async (itemId: string, current: Promise<void>) => {
|
|
|
298
299
|
const notifyMoveError = (
|
|
299
300
|
error: Parameters<typeof describeTableWriteError>[0],
|
|
300
301
|
) => {
|
|
302
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
301
303
|
toast.add({
|
|
302
304
|
color: Color.error,
|
|
303
305
|
title: t("dms.table.kanban.move_error"),
|
|
@@ -122,8 +122,18 @@ export interface TopListCardResponse {
|
|
|
122
122
|
items: TopListItem[];
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
/** One measured group, as a data source of shape `series` answers it. */
|
|
126
|
+
export interface ChartGroupPoint {
|
|
127
|
+
x: string | number;
|
|
128
|
+
y: number | null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* What a bare chart's data source answers: one point per group, the shape the
|
|
133
|
+
* block registry declares as `series`, or named series.
|
|
134
|
+
*/
|
|
125
135
|
export interface ChartResponse {
|
|
126
|
-
series: ChartSeries[];
|
|
136
|
+
series: ChartSeries[] | ChartGroupPoint[];
|
|
127
137
|
}
|
|
128
138
|
|
|
129
139
|
export type ValueFormat = "number" | "currency" | "percent" | "compact";
|
|
@@ -93,6 +93,7 @@ function createFormNotices(
|
|
|
93
93
|
context: ReturnType<typeof createFormFields>,
|
|
94
94
|
options: UseFormOptions,
|
|
95
95
|
) {
|
|
96
|
+
const consumeReadOnlyRefusal = useReadOnlyRefusal();
|
|
96
97
|
const {
|
|
97
98
|
props,
|
|
98
99
|
toast,
|
|
@@ -176,6 +177,7 @@ function createFormNotices(
|
|
|
176
177
|
};
|
|
177
178
|
|
|
178
179
|
const showSubmitErrorToast = (error: EventError) => {
|
|
180
|
+
if (consumeReadOnlyRefusal(error)) return;
|
|
179
181
|
toast.add({
|
|
180
182
|
title: processI18n("$dms.form.error_title"),
|
|
181
183
|
description: resolveSubmitErrorDescription(error),
|
|
@@ -186,6 +188,7 @@ function createFormNotices(
|
|
|
186
188
|
return {
|
|
187
189
|
...context,
|
|
188
190
|
options,
|
|
191
|
+
consumeReadOnlyRefusal,
|
|
189
192
|
showSubmitSuccessToast,
|
|
190
193
|
showSubmitNotice,
|
|
191
194
|
showServerFieldErrors,
|
|
@@ -349,6 +352,7 @@ function createFormSubmission(context: ReturnType<typeof createSavedForm>) {
|
|
|
349
352
|
const reportSubmitError = (
|
|
350
353
|
error: Parameters<typeof resolveFormFieldErrors>[0],
|
|
351
354
|
): void => {
|
|
355
|
+
if (context.consumeReadOnlyRefusal(error)) return;
|
|
352
356
|
if (!showServerFieldErrors(error)) {
|
|
353
357
|
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Rejection values are passed unchanged to the existing error formatter; there is no Error-instance validation at this boundary.
|
|
354
358
|
showSubmitErrorToast(error as EventError);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"packageManager": "pnpm@10.6.5",
|
|
13
13
|
"engines": {
|
|
14
|
-
"@antelopejs/dms-frontend": ">=0.9.
|
|
14
|
+
"@antelopejs/dms-frontend": ">=0.9.2 <0.10.0"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"typecheck": "ajs dms verify-source --layer \"$PWD\" --local-package @antelopejs/dms=.. --local-package @antelopejs/interface-dms=../../interface-dms",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@antelopejs/core": ">=1.16.0 <2",
|
|
82
|
-
"@antelopejs/dms-frontend": ">=0.9.
|
|
82
|
+
"@antelopejs/dms-frontend": ">=0.9.2 <0.10.0",
|
|
83
83
|
"@eslint/js": "^8.57.0",
|
|
84
84
|
"@inertiajs/vue3": "^3.7.0",
|
|
85
85
|
"@nuxt/ui": "4.10.0",
|
package/package.json
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antelopejs/dms",
|
|
3
|
-
"version": "0.12.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.12.1",
|
|
4
|
+
"description": "AntelopeJS DMS. Plug in your PostgreSQL, MongoDB or RethinkDB database and your coding agent builds a back office and analytics dashboard as typed TypeScript. Real-time updates on the data the DMS manages.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"antelopejs",
|
|
7
7
|
"dms",
|
|
8
8
|
"dashboard",
|
|
9
9
|
"admin",
|
|
10
|
+
"admin-panel",
|
|
11
|
+
"admin-dashboard",
|
|
10
12
|
"backoffice",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
+
"back-office",
|
|
14
|
+
"internal-tools",
|
|
15
|
+
"typescript",
|
|
16
|
+
"open-source",
|
|
17
|
+
"self-hosted",
|
|
18
|
+
"postgresql",
|
|
19
|
+
"mongodb",
|
|
20
|
+
"rethinkdb",
|
|
21
|
+
"vue",
|
|
22
|
+
"inertia"
|
|
13
23
|
],
|
|
14
24
|
"homepage": "https://dms.antelopejs.com/docs",
|
|
15
25
|
"bugs": {
|
|
@@ -65,7 +75,7 @@
|
|
|
65
75
|
"@antelopejs/interface-data-api": ">=0.5.0 <1.0.0",
|
|
66
76
|
"@antelopejs/interface-database": ">=0.1.11 <1.0.0",
|
|
67
77
|
"@antelopejs/interface-database-decorators": ">=0.1.10 <1.0.0",
|
|
68
|
-
"@antelopejs/interface-dms": ">=0.10.
|
|
78
|
+
"@antelopejs/interface-dms": ">=0.10.1 <0.11.0",
|
|
69
79
|
"@antelopejs/interface-email": ">=0.0.6 <1.0.0",
|
|
70
80
|
"@antelopejs/interface-file-storage": ">=0.1.4 <1.0.0",
|
|
71
81
|
"archiver": "^7.0.1",
|