@genesislcap/blank-app-seed 5.22.2-prerelease.2 → 5.23.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/.genx/configure.js +11 -1
- package/.genx/package.json +1 -1
- package/.genx/scripts/generate-test-apps.sh +124 -0
- package/.genx/templates/angular/chart.hbs +19 -7
- package/.genx/templates/angular/component/component.column.defs.hbs +16 -4
- package/.genx/templates/angular/component/component.create.form.hbs +10 -2
- package/.genx/templates/angular/component/component.events.config.hbs +31 -6
- package/.genx/templates/angular/component/component.filter.form.hbs +1 -2
- package/.genx/templates/angular/component/component.gridOptions.hbs +15 -3
- package/.genx/templates/angular/component/component.hbs +77 -46
- package/.genx/templates/angular/component/component.index.hbs +1 -1
- package/.genx/templates/angular/component/component.update.form.hbs +1 -1
- package/.genx/templates/angular/entityManager.hbs +6 -6
- package/{client-tmp/angular/src/app/utils/fdc3.ts → .genx/templates/angular/fdc3.ts.hbs} +6 -8
- package/.genx/templates/angular/form.hbs +9 -12
- package/.genx/templates/angular/grid.hbs +43 -40
- package/.genx/templates/angular/route.hbs +8 -2
- package/.genx/templates/angular/route.template.hbs +7 -7
- package/.genx/templates/angular/slices/eventing.slice.hbs +21 -10
- package/.genx/templates/angular/store.hbs +1 -5
- package/.genx/templates/angular/tabsPanel.hbs +2 -2
- package/.genx/templates/react/chart.hbs +6 -15
- package/.genx/templates/react/component/component.column.defs.hbs +16 -10
- package/.genx/templates/react/component/component.create.form.hbs +2 -2
- package/.genx/templates/react/component/component.events.config.hbs +32 -5
- package/.genx/templates/react/component/component.filter.form.hbs +1 -2
- package/.genx/templates/react/component/component.gridOptions.hbs +17 -11
- package/.genx/templates/react/component/component.hbs +84 -42
- package/.genx/templates/react/component/component.update.form.hbs +1 -1
- package/.genx/templates/react/entityManager.hbs +8 -16
- package/{client-tmp/react/src/utils/fdc3.ts → .genx/templates/react/fdc3.ts.hbs} +7 -8
- package/.genx/templates/react/form.hbs +1 -15
- package/.genx/templates/react/grid.hbs +11 -11
- package/.genx/templates/react/gridLayout.hbs +44 -4
- package/.genx/templates/react/horizontalLayout.hbs +10 -1
- package/.genx/templates/react/route.hbs +23 -16
- package/.genx/templates/react/slices/eventing.slice.hbs +19 -8
- package/.genx/templates/react/store.hbs +1 -5
- package/.genx/templates/react/tabsLayout.hbs +5 -1
- package/.genx/templates/web-components/chart.hbs +25 -25
- package/.genx/templates/web-components/component/component.column.defs.hbs +11 -3
- package/.genx/templates/web-components/component/component.create.form.hbs +11 -4
- package/.genx/templates/web-components/component/component.events.config.hbs +33 -6
- package/.genx/templates/web-components/component/component.filter.form.hbs +1 -2
- package/.genx/templates/web-components/component/component.gridOptions.hbs +12 -3
- package/.genx/templates/web-components/component/component.hbs +19 -20
- package/.genx/templates/web-components/component/component.index.hbs +1 -1
- package/.genx/templates/web-components/component/component.template.hbs +9 -13
- package/.genx/templates/web-components/component/component.update.form.hbs +1 -1
- package/.genx/templates/web-components/entityManager.hbs +92 -73
- package/{client-tmp/web-components/src/utils/fdc3.ts → .genx/templates/web-components/fdc3.ts.hbs} +6 -7
- package/.genx/templates/web-components/form.hbs +16 -15
- package/.genx/templates/web-components/grid.hbs +49 -41
- package/.genx/templates/web-components/gridLayout.hbs +32 -28
- package/.genx/templates/web-components/horizontalLayout.hbs +5 -5
- package/.genx/templates/web-components/route.template.hbs +4 -6
- package/.genx/templates/web-components/slices/eventing.slice.hbs +23 -15
- package/.genx/templates/web-components/store.hbs +1 -9
- package/.genx/templates/web-components/tabsLayout.hbs +5 -5
- package/.genx/tests/fixtures/routes-full.json +299 -0
- package/.genx/tests/fixtures/testapp/client/src/pages/Home/Home.tsx +12 -0
- package/.genx/utils/formatJSONValue.js +38 -2
- package/.genx/utils/formatRouteData.js +67 -18
- package/.genx/utils/generateTile.js +10 -1
- package/.genx/utils/gridSerializers.js +63 -23
- package/.genx/utils/registerPartials.js +15 -12
- package/.genx/utils/toJsStringLiteral.js +37 -0
- package/.genx/versions.json +3 -3
- package/.github/workflows/build.yml +22 -1
- package/.husky/pre-commit +8 -0
- package/CHANGELOG.md +97 -23
- package/bdd-tests/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/bdd-tests/gradle.properties +0 -1
- package/client-tmp/angular/.oxfmtrc.json +32 -0
- package/client-tmp/angular/.oxlintrc.json +4 -0
- package/client-tmp/angular/README.md +4 -4
- package/client-tmp/angular/jest.config.js +1 -1
- package/client-tmp/angular/lint-css.js +24 -3
- package/client-tmp/angular/oxlint-staged.js +45 -0
- package/client-tmp/angular/package.json +19 -9
- package/client-tmp/angular/playwright.config.ts +12 -11
- package/client-tmp/angular/src/app/app.component.html +0 -1
- package/client-tmp/angular/src/app/app.component.ts +8 -9
- package/client-tmp/angular/src/app/app.config.ts +2 -2
- package/client-tmp/angular/src/app/app.module.ts +6 -5
- package/client-tmp/angular/src/app/components/error-message/error-message.component.html +29 -15
- package/client-tmp/angular/src/app/components/error-message/error-message.component.spec.ts +2 -2
- package/client-tmp/angular/src/app/components/error-message/error-message.component.ts +3 -5
- package/client-tmp/angular/src/app/directive/app-lazy-load.directive.ts +1 -0
- package/client-tmp/angular/src/app/guards/chained.guard.ts +19 -19
- package/client-tmp/angular/src/app/guards/connection.guard.ts +12 -12
- package/client-tmp/angular/src/app/layouts/blank/blank.layout.spec.ts +1 -1
- package/client-tmp/angular/src/app/layouts/blank/blank.layout.ts +1 -5
- package/client-tmp/angular/src/app/layouts/default/default.layout.html +3 -4
- package/client-tmp/angular/src/app/layouts/default/default.layout.spec.ts +4 -4
- package/client-tmp/angular/src/app/layouts/default/default.layout.ts +1 -1
- package/client-tmp/angular/src/app/pages/auth-login/auth-login.component.ts +1 -2
- package/client-tmp/angular/src/app/pages/not-permitted/not-permitted.component.html +3 -3
- package/client-tmp/angular/src/app/pages/not-permitted/not-permitted.component.scss +1 -1
- package/client-tmp/angular/src/app/pages/not-permitted/not-permitted.component.spec.ts +5 -5
- package/client-tmp/angular/src/app/pages/not-permitted/not-permitted.component.ts +3 -4
- package/client-tmp/angular/src/app/services/route.service.ts +79 -74
- package/client-tmp/angular/src/app/share/foundation-auth.ts +7 -1
- package/client-tmp/angular/src/app/share/genesis-components.ts +66 -68
- package/client-tmp/angular/src/app/utils/index.ts +3 -1
- package/client-tmp/angular/src/app/utils/permissions.ts +7 -7
- package/client-tmp/angular/src/declaration.d.ts +1 -1
- package/client-tmp/angular/src/environments/environment.ts +1 -1
- package/client-tmp/angular/src/jest.setup.ts +8 -0
- package/client-tmp/angular/src/main.ts +2 -2
- package/client-tmp/angular/src/pbc/container.ts +28 -26
- package/client-tmp/angular/src/pbc/elementsRenderer.ts +49 -39
- package/client-tmp/angular/src/pbc/utils.ts +61 -60
- package/client-tmp/angular/src/styles/_mixins.scss +7 -8
- package/client-tmp/angular/src/styles/styles.css +6 -6
- package/client-tmp/angular/test/e2e/fixture.ts +2 -2
- package/client-tmp/angular/test/e2e/flows/001-protected.e2e.ts +1 -1
- package/client-tmp/angular/tsconfig.app.json +2 -8
- package/client-tmp/angular/tsconfig.json +1 -4
- package/client-tmp/angular/tsconfig.spec.json +4 -11
- package/client-tmp/angular/webpack.dev.config.js +3 -4
- package/client-tmp/angular/webpack.prod.config.js +3 -4
- package/client-tmp/angular/webpack.shared.config.js +20 -24
- package/client-tmp/react/.oxfmtrc.json +30 -0
- package/client-tmp/react/.oxlintrc.json +4 -0
- package/client-tmp/react/README.md +4 -4
- package/client-tmp/react/jest.config.ts +8 -4
- package/client-tmp/react/jest.setup.ts +85 -1
- package/client-tmp/react/oxlint-staged.js +45 -0
- package/client-tmp/react/package.json +24 -9
- package/client-tmp/react/playwright.config.ts +11 -10
- package/client-tmp/react/src/App.tsx +27 -29
- package/client-tmp/react/src/__mocks__/fileMock.js +1 -0
- package/client-tmp/react/src/components/ErrorMessage/ErrorMessage.test.tsx +16 -4
- package/client-tmp/react/src/components/ErrorMessage/ErrorMessage.tsx +32 -29
- package/client-tmp/react/src/components/error-boundary/ErrorBoundary.tsx +15 -6
- package/client-tmp/react/src/components/routes/AppRoutes.tsx +1 -1
- package/client-tmp/react/src/components/single-component/registry.ts +4 -0
- package/client-tmp/react/src/custom-elements.d.ts +4 -2
- package/client-tmp/react/src/helpers/hasPermissionHelper.tsx +1 -1
- package/client-tmp/react/src/helpers/isAuthenticatedHelper.tsx +1 -1
- package/client-tmp/react/src/helpers/isConnectedHelper.tsx +3 -3
- package/client-tmp/react/src/layouts/blank/BlankLayout.tsx +7 -11
- package/client-tmp/react/src/layouts/default/DefaultLayout.tsx +8 -8
- package/client-tmp/react/src/main.tsx +11 -11
- package/client-tmp/react/src/pages/AuthPage/AuthPage.test.tsx +13 -2
- package/client-tmp/react/src/pages/AuthPage/AuthPage.tsx +14 -13
- package/client-tmp/react/src/pages/NotFoundPage/NotFoundPage.tsx +2 -7
- package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.test.tsx +8 -4
- package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.tsx +1 -1
- package/client-tmp/react/src/pbc/container.tsx +9 -4
- package/client-tmp/react/src/pbc/elementsRenderer.tsx +18 -9
- package/client-tmp/react/src/pbc/utils.ts +60 -59
- package/client-tmp/react/src/services/auth.service.ts +1 -1
- package/client-tmp/react/src/services/store.service.ts +5 -3
- package/client-tmp/react/src/share/foundation-login.ts +2 -2
- package/client-tmp/react/src/share/genesis-components.ts +46 -47
- package/client-tmp/react/src/store/AuthContext.tsx +2 -10
- package/client-tmp/react/src/store/RoutesContext.test.tsx +99 -0
- package/client-tmp/react/src/store/RoutesContext.tsx +25 -5
- package/client-tmp/react/src/styles/styles.css +7 -7
- package/client-tmp/react/src/types/LayoutName.ts +1 -1
- package/client-tmp/react/src/utils/getLayoutNameByRoute.ts +1 -1
- package/client-tmp/react/src/utils/index.ts +2 -0
- package/client-tmp/react/src/utils/layout.ts +8 -1
- package/client-tmp/react/src/utils/permissions.ts +7 -7
- package/client-tmp/react/src/utils/useDocumentTitle.ts +5 -6
- package/client-tmp/react/test/e2e/fixture.ts +5 -2
- package/client-tmp/react/test/e2e/flows/001-protected.e2e.ts +3 -1
- package/client-tmp/react/tsconfig.app.json +1 -1
- package/client-tmp/react/tsconfig.json +1 -5
- package/client-tmp/web-components/.oxfmtrc.json +30 -0
- package/client-tmp/web-components/.oxlintrc.json +4 -0
- package/client-tmp/web-components/oxlint-staged.js +45 -0
- package/client-tmp/web-components/package.json +14 -22
- package/client-tmp/web-components/src/components/components.ts +9 -7
- package/client-tmp/web-components/src/main/main.css +1 -2
- package/client-tmp/web-components/src/main/main.ts +1 -1
- package/client-tmp/web-components/src/routes/config.ts +4 -0
- package/client-tmp/web-components/src/utils/index.ts +2 -0
- package/client-tmp/web-components/tsconfig.json +1 -4
- package/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/package.json +1 -1
- package/server/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/server/gradle.properties +0 -2
- package/.genx/templates/angular/gridLayout.hbs +0 -30
- package/.genx/templates/angular/horizontalLayout.hbs +0 -7
- package/.genx/templates/angular/tabsLayout.hbs +0 -7
- package/.genx/tests/fixtures/testapp/client/src/routes/home/home.template.ts +0 -6
- package/client-tmp/react/.babelrc +0 -10
- package/client-tmp/react/.eslintrc.cjs +0 -21
- package/client-tmp/react/git +0 -0
- package/client-tmp/react/webpack.config.js +0 -121
- package/client-tmp/web-components/.prettierignore +0 -14
package/.genx/configure.js
CHANGED
|
@@ -60,7 +60,7 @@ module.exports = async (data, utils) => {
|
|
|
60
60
|
if (!fs.existsSync(templateDir)) {
|
|
61
61
|
fs.mkdirSync(templateDir, { recursive: true });
|
|
62
62
|
}
|
|
63
|
-
fs.writeFileSync(templateFile, jsonContent);
|
|
63
|
+
fs.writeFileSync(templateFile, `${jsonContent}\n`);
|
|
64
64
|
} catch (err) {
|
|
65
65
|
console.warn('Failed to write designTokens to template:', err?.message || err);
|
|
66
66
|
}
|
|
@@ -153,6 +153,16 @@ module.exports = async (data, utils) => {
|
|
|
153
153
|
|
|
154
154
|
excludeFrameworks(data.framework);
|
|
155
155
|
|
|
156
|
+
if (data.FDC3.includeDependencies) {
|
|
157
|
+
const frameworkDir = FRAMEWORKS_DIR_MAP.get(data.framework);
|
|
158
|
+
const utilsDir = frameworkDir === 'angular' ? 'src/app/utils' : 'src/utils';
|
|
159
|
+
utils.writeFileWithData(
|
|
160
|
+
path.resolve(__dirname, `../client/${utilsDir}/fdc3.ts`),
|
|
161
|
+
data,
|
|
162
|
+
path.resolve(__dirname, `templates/${frameworkDir}/fdc3.ts.hbs`),
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
|
|
156
166
|
generateStore(data.routes, utils, data.framework);
|
|
157
167
|
|
|
158
168
|
data.routes.forEach((route) => {
|
package/.genx/package.json
CHANGED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Generate test apps from this seed and verify they are lint-clean out of the box.
|
|
4
|
+
#
|
|
5
|
+
# For each requested framework this generates three apps — the defaults app (no
|
|
6
|
+
# routes), a "full" app driven by .genx/tests/fixtures/routes-full.json
|
|
7
|
+
# (every tile type: entity-manager with permissions/custom events/eventing/FDC3,
|
|
8
|
+
# grid-pro with listener/reqrep, chart, smart-form), and an "fdc3" app with
|
|
9
|
+
# FDC3 channels enabled — then runs the ox lint pipeline with zero tolerance:
|
|
10
|
+
#
|
|
11
|
+
# oxlint . --deny-warnings # zero errors, zero warnings
|
|
12
|
+
# oxfmt --check . # formatting is already canonical
|
|
13
|
+
# npm run lint # genx lint -l ox (Oxlint -> Oxfmt -> Stylelint)
|
|
14
|
+
#
|
|
15
|
+
# Usage:
|
|
16
|
+
# .genx/scripts/generate-test-apps.sh [framework...]
|
|
17
|
+
#
|
|
18
|
+
# framework: react | webcomponents | angular (default: all three)
|
|
19
|
+
#
|
|
20
|
+
# Env:
|
|
21
|
+
# WORK_DIR scratch dir for generated apps (default: a fresh mktemp dir).
|
|
22
|
+
# A caller-supplied WORK_DIR is never deleted by this script.
|
|
23
|
+
# KEEP=1 keep each generated app (and the scratch dir) for inspection.
|
|
24
|
+
# By default an app is deleted as soon as it passes, so a run only
|
|
25
|
+
# ever holds one app's node_modules at a time. Failing apps are
|
|
26
|
+
# always kept.
|
|
27
|
+
# BUILD=1 additionally run `npx tsc --noEmit` and `npm run build` per app
|
|
28
|
+
#
|
|
29
|
+
# Installs use the app's own bootstrap semantics (plain `npm install`) — NOT
|
|
30
|
+
# --legacy-peer-deps, which would skip the ag-grid peer deps and break builds.
|
|
31
|
+
|
|
32
|
+
set -uo pipefail
|
|
33
|
+
|
|
34
|
+
SEED_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
35
|
+
FIXTURE="$SEED_DIR/.genx/tests/fixtures/routes-full.json"
|
|
36
|
+
|
|
37
|
+
if [ $# -gt 0 ]; then
|
|
38
|
+
FRAMEWORKS=("$@")
|
|
39
|
+
else
|
|
40
|
+
FRAMEWORKS=(react webcomponents angular)
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
# `mktemp -d -t <name>` is BSD-only; spell the template out so this works on GNU
|
|
44
|
+
# coreutils too. Bail out rather than carry on with an empty WORK_DIR, which would
|
|
45
|
+
# turn the `rm -rf` calls below into absolute paths.
|
|
46
|
+
OWNS_WORK_DIR=0
|
|
47
|
+
if [ -z "${WORK_DIR:-}" ]; then
|
|
48
|
+
WORK_DIR="$(mktemp -d "${TMPDIR:-/tmp}/blank-app-seed-lint.XXXXXXXX")" || exit 1
|
|
49
|
+
OWNS_WORK_DIR=1
|
|
50
|
+
fi
|
|
51
|
+
if [ -z "$WORK_DIR" ] || [ ! -d "$WORK_DIR" ]; then
|
|
52
|
+
echo "Could not create or resolve WORK_DIR ('${WORK_DIR}')" >&2
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
FAILURES=()
|
|
57
|
+
|
|
58
|
+
run_lint_checks() {
|
|
59
|
+
local app_dir="$1" label="$2"
|
|
60
|
+
(
|
|
61
|
+
cd "$app_dir/client" || exit 1
|
|
62
|
+
echo "--- [$label] npm install"
|
|
63
|
+
npm install --no-fund --no-audit || exit 1
|
|
64
|
+
echo "--- [$label] oxlint . --deny-warnings"
|
|
65
|
+
./node_modules/.bin/oxlint . --deny-warnings || exit 1
|
|
66
|
+
echo "--- [$label] oxfmt --check ."
|
|
67
|
+
./node_modules/.bin/oxfmt --check . || exit 1
|
|
68
|
+
echo "--- [$label] npm run lint"
|
|
69
|
+
npm run lint || exit 1
|
|
70
|
+
if [ "${BUILD:-0}" = "1" ]; then
|
|
71
|
+
echo "--- [$label] tsc --noEmit"
|
|
72
|
+
npx tsc --noEmit || exit 1
|
|
73
|
+
echo "--- [$label] npm run build"
|
|
74
|
+
npm run build || exit 1
|
|
75
|
+
fi
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
for fw in "${FRAMEWORKS[@]}"; do
|
|
80
|
+
for variant in default full fdc3; do
|
|
81
|
+
label="$fw-$variant"
|
|
82
|
+
app_dir="$WORK_DIR/$label"
|
|
83
|
+
rm -rf "$app_dir"
|
|
84
|
+
echo "=== Generating $label into $app_dir"
|
|
85
|
+
extra_args=()
|
|
86
|
+
if [ "$variant" = "full" ]; then
|
|
87
|
+
extra_args=(--routes "$(cat "$FIXTURE")")
|
|
88
|
+
fi
|
|
89
|
+
if [ "$variant" = "fdc3" ]; then
|
|
90
|
+
extra_args=(--ui '{"fdc3":{"channels":[{"name":"positions","type":"position"},{"name":"instrumentChannel","type":"fdc3.instrument"}]}}')
|
|
91
|
+
fi
|
|
92
|
+
(
|
|
93
|
+
cd "$WORK_DIR" || exit 1
|
|
94
|
+
# `"${extra_args[@]}"` alone is an unbound-variable error on an empty array
|
|
95
|
+
# under `set -u` in bash 3.2 (the macOS system bash).
|
|
96
|
+
npx -y @genesislcap/genx@latest init "$label" -s "$SEED_DIR" -x --no-shell \
|
|
97
|
+
--framework "$fw" --apiHost 'wss://localhost/gwf/' \
|
|
98
|
+
${extra_args[@]+"${extra_args[@]}"}
|
|
99
|
+
) || { FAILURES+=("$label: generation failed"); continue; }
|
|
100
|
+
if run_lint_checks "$app_dir" "$label"; then
|
|
101
|
+
# Reclaim the app's node_modules straight away — CI runners are disk-tight and
|
|
102
|
+
# each generated app installs well over a gigabyte.
|
|
103
|
+
[ "${KEEP:-0}" = "1" ] || rm -rf "$app_dir"
|
|
104
|
+
else
|
|
105
|
+
FAILURES+=("$label: lint checks failed")
|
|
106
|
+
fi
|
|
107
|
+
done
|
|
108
|
+
done
|
|
109
|
+
|
|
110
|
+
echo
|
|
111
|
+
if [ ${#FAILURES[@]} -gt 0 ]; then
|
|
112
|
+
echo "FAILED:"
|
|
113
|
+
printf ' - %s\n' "${FAILURES[@]}"
|
|
114
|
+
echo "Generated apps kept in $WORK_DIR for inspection"
|
|
115
|
+
exit 1
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
echo "All generated apps are lint-clean: ${FRAMEWORKS[*]} (default + full + fdc3)"
|
|
119
|
+
if [ "${KEEP:-0}" = "1" ]; then
|
|
120
|
+
echo "Generated apps kept in $WORK_DIR"
|
|
121
|
+
elif [ "$OWNS_WORK_DIR" = "1" ]; then
|
|
122
|
+
# Only ever remove a scratch dir this script created.
|
|
123
|
+
rm -rf "$WORK_DIR"
|
|
124
|
+
fi
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
<rapid-g2plot-chart
|
|
1
|
+
{{#if config.permissions.viewRight}}<rapid-g2plot-chart
|
|
2
2
|
type="{{ config.type }}"
|
|
3
|
-
[config]="chartConfig"
|
|
4
|
-
[ngStyle]="
|
|
5
|
-
|
|
3
|
+
[config]="chartConfig"
|
|
4
|
+
[ngStyle]="
|
|
5
|
+
hasUserPermission('{{config.permissions.viewRight}}') ? { width: '100%', height: '100%' } : { display: 'none' }
|
|
6
|
+
"
|
|
7
|
+
>{{else}}<rapid-g2plot-chart type="{{ config.type }}" [config]="chartConfig">{{/if}}
|
|
6
8
|
<chart-datasource
|
|
7
9
|
resourceName="{{ config.resourceName }}"
|
|
8
10
|
server-fields="{{ config.xField }} {{ config.yField }}"
|
|
@@ -10,7 +12,17 @@
|
|
|
10
12
|
</rapid-g2plot-chart>{{#if config.permissions.viewRight}}
|
|
11
13
|
|
|
12
14
|
<app-error-message
|
|
13
|
-
[ngStyle]="
|
|
15
|
+
[ngStyle]="
|
|
16
|
+
!hasUserPermission('{{config.permissions.viewRight}}')
|
|
17
|
+
? {
|
|
18
|
+
width: '100%',
|
|
19
|
+
height: '100%',
|
|
20
|
+
display: 'flex',
|
|
21
|
+
'justify-content': 'center',
|
|
22
|
+
'align-items': 'center',
|
|
23
|
+
}
|
|
24
|
+
: { display: 'none' }
|
|
25
|
+
"
|
|
14
26
|
elementType="h3"
|
|
15
|
-
message="You do not have access to view this component."
|
|
16
|
-
|
|
27
|
+
message="You do not have access to view this component."
|
|
28
|
+
></app-error-message>{{/if}}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import { ColDef } from '@ag-grid-community/core';
|
|
2
|
-
|
|
1
|
+
import type { ColDef } from '@ag-grid-community/core';
|
|
2
|
+
{{#ifContains tile.config.columns 'getDateFormatter'}}
|
|
3
|
+
{{#ifContains tile.config.columns 'getNumberFormatter'}}
|
|
4
|
+
import { getDateFormatter, getNumberFormatter } from '@genesislcap/foundation-utils';
|
|
5
|
+
{{else}}
|
|
6
|
+
import { getDateFormatter } from '@genesislcap/foundation-utils';
|
|
7
|
+
{{/ifContains}}
|
|
8
|
+
{{else}}
|
|
9
|
+
{{#ifContains tile.config.columns 'getNumberFormatter'}}
|
|
10
|
+
import { getNumberFormatter } from '@genesislcap/foundation-utils';
|
|
11
|
+
{{/ifContains}}
|
|
12
|
+
{{/ifContains}}
|
|
3
13
|
{{#if route.FDC3EventHandlersEnabled}}
|
|
4
|
-
|
|
14
|
+
{{#ifContains tile.config.columns 'sendEventOnChannel'}}
|
|
15
|
+
import { sendEventOnChannel } from '../../../utils';
|
|
16
|
+
{{/ifContains}}
|
|
5
17
|
{{/if}}
|
|
6
18
|
|
|
7
19
|
{{#if tile.config.columns}}
|
|
8
|
-
export const columnDefs: ColDef[] = {{{ tile.config.columns }}}
|
|
20
|
+
export const columnDefs: ColDef[] = {{{ tile.config.columns }}};
|
|
9
21
|
{{/if}}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
{{#ifAny tile.config.createFormUiSchema tile.config.uischema}}
|
|
1
2
|
import { UiSchema } from '@genesislcap/foundation-forms';
|
|
2
3
|
|
|
3
4
|
{{#if tile.config.createFormUiSchema}}
|
|
4
|
-
export const createFormSchema: UiSchema = {{{ tile.config.createFormUiSchema }}}
|
|
5
|
+
export const createFormSchema: UiSchema = {{{ tile.config.createFormUiSchema }}};
|
|
5
6
|
{{/if}}
|
|
6
7
|
{{#if tile.config.uischema}}
|
|
7
|
-
export const createFormSchema: UiSchema = {{{ tile.config.uischema }}}
|
|
8
|
+
export const createFormSchema: UiSchema = {{{ tile.config.uischema }}};
|
|
8
9
|
{{/if}}
|
|
10
|
+
{{else}}
|
|
11
|
+
/**
|
|
12
|
+
* No `uischema` was supplied for this form, so its fields are derived from the resource metadata.
|
|
13
|
+
* Export a `createFormSchema` here and pass it to the form to take control of the layout.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
{{/ifAny}}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
{{#ifContains tile.config.customEvents '"hasForm":true'}}
|
|
2
|
+
{{#ifContains tile.config.customEvents '"position":"'}}
|
|
3
|
+
import {
|
|
4
|
+
type CustomAction,
|
|
5
|
+
CrudMenuPosition,
|
|
6
|
+
UiSchema,
|
|
7
|
+
} from '@genesislcap/foundation-entity-management';
|
|
8
|
+
{{else}}
|
|
9
|
+
import { type CustomAction, UiSchema } from '@genesislcap/foundation-entity-management';
|
|
10
|
+
{{/ifContains}}
|
|
2
11
|
|
|
3
12
|
{{#each tile.config.customEvents}}
|
|
4
13
|
{{#if this.hasForm}}
|
|
@@ -6,6 +15,20 @@ export const {{camelCase this.name}}FormSchema: UiSchema = {{{this.uischema}}};
|
|
|
6
15
|
{{/if}}
|
|
7
16
|
{{/each}}
|
|
8
17
|
|
|
18
|
+
{{else}}
|
|
19
|
+
{{#ifContains tile.config.customEvents '"position":"'}}
|
|
20
|
+
import { type CustomAction, CrudMenuPosition } from '@genesislcap/foundation-entity-management';
|
|
21
|
+
{{else}}
|
|
22
|
+
import { type CustomAction } from '@genesislcap/foundation-entity-management';
|
|
23
|
+
{{/ifContains}}
|
|
24
|
+
|
|
25
|
+
{{/ifContains}}
|
|
26
|
+
{{#each tile.config.customEvents}}
|
|
27
|
+
{{#if this.defaultValues}}
|
|
28
|
+
const {{camelCase this.name}}DefaultValues = {{{this.defaultValues}}};
|
|
29
|
+
|
|
30
|
+
{{/if}}
|
|
31
|
+
{{/each}}
|
|
9
32
|
export const customActions: CustomAction[] = [
|
|
10
33
|
{{#each tile.config.customEvents}}
|
|
11
34
|
{
|
|
@@ -17,7 +40,9 @@ export const customActions: CustomAction[] = [
|
|
|
17
40
|
{{#if this.hasForm}}
|
|
18
41
|
uiSchema: {{camelCase this.name}}FormSchema,
|
|
19
42
|
{{/if}}
|
|
20
|
-
|
|
43
|
+
{{#if this.defaultValues}}
|
|
44
|
+
defaultValues: {{camelCase this.name}}DefaultValues,
|
|
45
|
+
{{/if}}
|
|
21
46
|
},
|
|
22
47
|
{{#if this.position}}
|
|
23
48
|
position: CrudMenuPosition.{{{pascalCase this.position}}},
|
|
@@ -26,15 +51,15 @@ export const customActions: CustomAction[] = [
|
|
|
26
51
|
icon: '{{this.icon}}',
|
|
27
52
|
{{/if}}
|
|
28
53
|
{{#if this.tooltip}}
|
|
29
|
-
tooltip:
|
|
54
|
+
tooltip: {{{this.tooltipJs}}},
|
|
30
55
|
{{/if}}
|
|
31
56
|
{{#if this.confirmSubmit}}
|
|
32
57
|
confirmSubmit: {
|
|
33
|
-
state: '{{this.confirmSubmit.state}}',
|
|
34
|
-
message:
|
|
58
|
+
state: '{{#if this.confirmSubmit.state}}{{this.confirmSubmit.state}}{{else}}enabled{{/if}}',
|
|
59
|
+
message: {{{this.confirmSubmitMessageJs}}},
|
|
35
60
|
},
|
|
36
61
|
{{/if}}
|
|
37
62
|
requiresSelection: true,
|
|
38
63
|
},
|
|
39
64
|
{{/each}}
|
|
40
|
-
];
|
|
65
|
+
];
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { UiSchema } from '@genesislcap/foundation-forms';
|
|
2
2
|
|
|
3
3
|
{{#if tile.config.filterFormUiSchema}}
|
|
4
|
-
export const filterFormSchema: UiSchema = {{{ tile.config.filterFormUiSchema }}}
|
|
4
|
+
export const filterFormSchema: UiSchema = {{{ tile.config.filterFormUiSchema }}};
|
|
5
5
|
{{/if}}
|
|
6
|
-
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
{{#ifContains tile.config.gridOptions 'getDateFormatter'}}
|
|
2
|
+
{{#ifContains tile.config.gridOptions 'getNumberFormatter'}}
|
|
3
|
+
import { getDateFormatter, getNumberFormatter } from '@genesislcap/foundation-utils';
|
|
4
|
+
{{else}}
|
|
5
|
+
import { getDateFormatter } from '@genesislcap/foundation-utils';
|
|
6
|
+
{{/ifContains}}
|
|
7
|
+
{{else}}
|
|
8
|
+
{{#ifContains tile.config.gridOptions 'getNumberFormatter'}}
|
|
9
|
+
import { getNumberFormatter } from '@genesislcap/foundation-utils';
|
|
10
|
+
{{/ifContains}}
|
|
11
|
+
{{/ifContains}}
|
|
1
12
|
import { GridOptionsConfig } from '@genesislcap/rapid-grid-pro';
|
|
2
|
-
import { getNumberFormatter, getDateFormatter } from '@genesislcap/foundation-utils';
|
|
3
13
|
{{#if route.FDC3EventHandlersEnabled}}
|
|
4
|
-
|
|
14
|
+
{{#ifContains tile.config.gridOptions 'sendEventOnChannel'}}
|
|
15
|
+
import { sendEventOnChannel } from '../../../utils';
|
|
16
|
+
{{/ifContains}}
|
|
5
17
|
{{/if}}
|
|
6
18
|
|
|
7
19
|
{{#if tile.config.gridOptions}}
|
|
8
|
-
export const gridOptions: GridOptionsConfig = {{{ tile.config.gridOptions }}}
|
|
20
|
+
export const gridOptions: GridOptionsConfig = {{{ tile.config.gridOptions }}};
|
|
9
21
|
{{/if}}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
import { Component, Input, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
2
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
3
|
import { getUser } from '@genesislcap/foundation-user';
|
|
4
|
+
{{#if tile.config.gridOptions}}
|
|
5
|
+
import { GridOptionsConfig } from '@genesislcap/rapid-grid-pro';
|
|
6
|
+
{{/if}}
|
|
7
|
+
{{#if tile.config.eventing.listener}}
|
|
8
|
+
import { injectSelector } from '@reduxjs/angular-redux';
|
|
9
|
+
{{/if}}
|
|
4
10
|
import { ErrorMessageComponent } from '../../../components/error-message/error-message.component';
|
|
5
|
-
|
|
6
|
-
{{#if tile.config.
|
|
7
|
-
import {
|
|
11
|
+
{{#if tile.config.eventing.publishEventName}}
|
|
12
|
+
{{#if tile.config.eventing.listener}}
|
|
13
|
+
import { actions, selectors } from '../../../store/store';
|
|
14
|
+
{{else}}
|
|
15
|
+
import { actions } from '../../../store/store';
|
|
8
16
|
{{/if}}
|
|
9
|
-
{{
|
|
10
|
-
|
|
17
|
+
{{else}}
|
|
18
|
+
{{#if tile.config.eventing.listener}}
|
|
19
|
+
import { selectors } from '../../../store/store';
|
|
20
|
+
{{/if}}
|
|
21
|
+
{{/if}}
|
|
22
|
+
import { getViewUpdateRightComponent } from '../../../utils';
|
|
23
|
+
{{#if tile.config.columns}}
|
|
24
|
+
import { columnDefs } from './{{kebabCase tile.title}}.column.defs';
|
|
11
25
|
{{/if}}
|
|
12
26
|
{{#if tile.config.createFormUiSchema}}
|
|
13
27
|
import { createFormSchema } from './{{kebabCase tile.title}}.create.form.schema';
|
|
@@ -15,65 +29,76 @@ import { createFormSchema } from './{{kebabCase tile.title}}.create.form.schema'
|
|
|
15
29
|
{{#if tile.config.uischema}}
|
|
16
30
|
import { createFormSchema } from './{{kebabCase tile.title}}.create.form.schema';
|
|
17
31
|
{{/if}}
|
|
18
|
-
{{#if tile.config.
|
|
19
|
-
import {
|
|
32
|
+
{{#if tile.config.customEvents}}
|
|
33
|
+
import { customActions as emCustomActions } from './{{kebabCase tile.title}}.events.config';
|
|
20
34
|
{{/if}}
|
|
21
35
|
{{#if tile.config.filterFormUiSchema}}
|
|
22
36
|
import { filterFormSchema } from './{{kebabCase tile.title}}.filter.form.schema';
|
|
23
37
|
{{/if}}
|
|
24
|
-
{{#if tile.config.columns}}
|
|
25
|
-
import { columnDefs } from './{{kebabCase tile.title}}.column.defs';
|
|
26
|
-
{{/if}}
|
|
27
38
|
{{#if tile.config.gridOptions}}
|
|
28
39
|
import { gridOptions } from './{{kebabCase tile.title}}.gridOptions';
|
|
29
40
|
{{/if}}
|
|
30
|
-
{{#
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
{{/ifAny}}
|
|
41
|
+
{{#if tile.config.updateFormUiSchema}}
|
|
42
|
+
import { updateFormSchema } from './{{kebabCase tile.title}}.update.form.schema';
|
|
43
|
+
{{/if}}
|
|
34
44
|
|
|
35
45
|
{{#ifAny tile.metadata.comment tile.metadata.todo}}
|
|
36
46
|
/**
|
|
37
47
|
{{~#if tile.metadata.comment}}{{{ tile.metadata.comment }}}{{/if}}
|
|
38
|
-
{{~#if tile.metadata.todo}}{{#if tile.metadata.comment}}
|
|
48
|
+
{{~#if tile.metadata.todo}}{{#if tile.metadata.comment}}
|
|
39
49
|
*{{/if}}
|
|
40
50
|
* TODO: {{{ tile.metadata.todo }}}{{/if}}
|
|
41
51
|
*/
|
|
42
52
|
{{/ifAny}}
|
|
43
|
-
|
|
44
53
|
@Component({
|
|
45
54
|
selector: 'app-{{kebabCase tile.componentName}}',
|
|
46
55
|
templateUrl: './{{kebabCase tile.title}}.component.html',
|
|
47
56
|
styleUrl: './{{kebabCase tile.title}}.component.css',
|
|
48
57
|
standalone: true,
|
|
49
|
-
imports: [
|
|
50
|
-
ErrorMessageComponent,
|
|
51
|
-
CommonModule,
|
|
52
|
-
],
|
|
58
|
+
imports: [ErrorMessageComponent, CommonModule],
|
|
53
59
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
54
60
|
})
|
|
55
61
|
export class {{pascalCase tile.componentName}} {
|
|
56
|
-
hasUserPermission = (permissionCode: string) =>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
62
|
+
hasUserPermission = (permissionCode: string) =>
|
|
63
|
+
getViewUpdateRightComponent(getUser(), permissionCode);
|
|
64
|
+
{{#if tile.config.createFormUiSchema}}
|
|
65
|
+
createFormSchema = createFormSchema;
|
|
66
|
+
{{/if}}
|
|
67
|
+
{{#if tile.config.uischema}}
|
|
68
|
+
uischema = createFormSchema;
|
|
69
|
+
{{/if}}
|
|
70
|
+
{{#if tile.config.updateFormUiSchema}}
|
|
71
|
+
updateFormSchema = updateFormSchema;
|
|
72
|
+
{{/if}}
|
|
73
|
+
{{#if tile.config.filterFormUiSchema}}
|
|
74
|
+
filterFormSchema = filterFormSchema;
|
|
75
|
+
{{/if}}
|
|
76
|
+
{{#if tile.config.gridOptions}}
|
|
77
|
+
gridOptions = gridOptions as GridOptionsConfig;
|
|
78
|
+
{{/if}}
|
|
79
|
+
{{#if tile.config.columns}}
|
|
80
|
+
columnDefs = [...columnDefs];
|
|
81
|
+
{{/if}}
|
|
82
|
+
{{#ifEquals tile.type 'chart'}}
|
|
83
|
+
{{! Declared for every chart tile: the chart template always binds [config]="chartConfig". }}
|
|
84
|
+
chartConfig = {
|
|
85
|
+
{{#ifEquals tile.config.type 'pie'}}
|
|
86
|
+
radius: 0.75,
|
|
87
|
+
angleField: 'value',
|
|
88
|
+
colorField: 'groupBy',
|
|
89
|
+
{{else}}
|
|
90
|
+
xField: 'groupBy',
|
|
91
|
+
yField: 'value',
|
|
92
|
+
{{/ifEquals}}
|
|
93
|
+
};
|
|
94
|
+
{{/ifEquals}}
|
|
95
|
+
{{#if tile.config.customEvents}}
|
|
96
|
+
customActions = emCustomActions;
|
|
97
|
+
{{/if}}
|
|
73
98
|
{{#if tile.config.eventing.listener}}
|
|
74
99
|
criteria = injectSelector(selectors.eventing.getCriteriaFor{{pascalCase tile.title}});
|
|
75
100
|
{{/if}}
|
|
76
|
-
{{
|
|
101
|
+
{{#if tile.config.eventing.publishEventName}}
|
|
77
102
|
handleRowSelection = (e: any) => {
|
|
78
103
|
{{#ifEquals tile.componentType 'grid'}}
|
|
79
104
|
const selectedRows = e.api.getSelectedRows();
|
|
@@ -81,18 +106,24 @@ export class {{pascalCase tile.componentName}} {
|
|
|
81
106
|
const selectedRows = e.detail.api.getSelectedRows();
|
|
82
107
|
{{/ifEquals}}
|
|
83
108
|
if (!selectedRows || !selectedRows.length) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
109
|
+
actions.eventing.publish{{pascalCase tile.config.eventing.publishEventName}}(null);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
87
112
|
const { TIMESTAMP, RECORD_ID, ROW_REF, ...data } = selectedRows[0];
|
|
88
113
|
actions.eventing.publish{{pascalCase tile.config.eventing.publishEventName}}(data);
|
|
89
|
-
};
|
|
114
|
+
};
|
|
115
|
+
{{/if}}
|
|
90
116
|
{{#ifAny tile.config.gridOptions tile.config.eventing.publishEventName}}
|
|
91
117
|
gridOptionsModel = {
|
|
92
118
|
{{#if tile.config.gridOptions}}
|
|
93
|
-
onRowClicked: gridOptions?.onRowClicked,
|
|
119
|
+
onRowClicked: gridOptions?.onRowClicked,
|
|
120
|
+
{{/if}}
|
|
121
|
+
{{#if tile.config.eventing.publishEventName}}
|
|
122
|
+
{{#ifEquals tile.componentType 'grid'}}
|
|
94
123
|
onSelectionChanged: this.handleRowSelection,
|
|
95
|
-
rowSelection: 'single'
|
|
124
|
+
rowSelection: 'single',
|
|
125
|
+
{{/ifEquals}}
|
|
126
|
+
{{/if}}
|
|
96
127
|
};
|
|
97
128
|
{{/ifAny}}
|
|
98
|
-
}
|
|
129
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './{{kebabCase tile.title}}.component';
|
|
1
|
+
export * from './{{kebabCase tile.title}}.component';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UiSchema } from '@genesislcap/foundation-forms';
|
|
2
2
|
|
|
3
3
|
{{#if tile.config.updateFormUiSchema}}
|
|
4
|
-
export const updateFormSchema: UiSchema = {{{ tile.config.updateFormUiSchema }}}
|
|
4
|
+
export const updateFormSchema: UiSchema = {{{ tile.config.updateFormUiSchema }}};
|
|
5
5
|
{{/if}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<section style="height: 100%; width: 100
|
|
2
|
-
<ng-container
|
|
1
|
+
<section style="height: 100%; width: 100%">
|
|
2
|
+
<ng-container{{#if config.permissions.viewRight}} *ngIf="hasUserPermission('{{config.permissions.viewRight}}'); else notPermitted{{ config.index }}"{{/if}}>
|
|
3
3
|
<entity-management
|
|
4
4
|
design-system-prefix="rapid"
|
|
5
5
|
header-case-type="capitalCase"
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
requestAutoSetup: false,
|
|
41
41
|
{{/if}}
|
|
42
42
|
{{#if config.eventing.listener}}
|
|
43
|
-
criteria: criteria()
|
|
43
|
+
criteria: criteria(),
|
|
44
44
|
{{/if}}
|
|
45
45
|
}"
|
|
46
46
|
{{/ifAny}}
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
|
|
75
75
|
<ng-template #notPermitted{{ config.index }}>
|
|
76
76
|
<app-error-message
|
|
77
|
-
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center
|
|
77
|
+
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center"
|
|
78
78
|
elementType="h3"
|
|
79
|
-
message="You do not have access to view this component."
|
|
80
|
-
|
|
79
|
+
message="You do not have access to view this component."
|
|
80
|
+
></app-error-message>
|
|
81
81
|
</ng-template>{{/if}}
|
|
82
82
|
</section>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
{{#if FDC3.includeDependencies}}
|
|
2
1
|
import { DefaultFDC3 } from '@genesislcap/foundation-fdc3';
|
|
3
|
-
{{/if}}
|
|
4
|
-
export const isFDC3 = (): boolean => !!(window as any).fdc3;
|
|
5
|
-
{{#if FDC3.includeDependencies}}
|
|
6
2
|
|
|
3
|
+
export const isFDC3 = (): boolean => !!(window as any).fdc3;
|
|
7
4
|
export const onFDC3Ready = async (FDC3ReadyCb: () => any): Promise<void> => {
|
|
8
|
-
isFDC3()
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
if (isFDC3()) {
|
|
6
|
+
await FDC3ReadyCb();
|
|
7
|
+
} else {
|
|
8
|
+
window.addEventListener('fdc3Ready', async () => {
|
|
11
9
|
await FDC3ReadyCb();
|
|
12
10
|
});
|
|
11
|
+
}
|
|
13
12
|
};
|
|
14
13
|
|
|
15
14
|
export const listenToChannel = async (
|
|
@@ -29,4 +28,3 @@ export const sendEventOnChannel = (channelName: string, type: string) => {
|
|
|
29
28
|
await fdc3Service.broadcastOnChannel(channelName, type, payload);
|
|
30
29
|
};
|
|
31
30
|
};
|
|
32
|
-
{{/if}}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
<section style="height: 100%; width: 100
|
|
2
|
-
<ng-container
|
|
3
|
-
<foundation-form
|
|
1
|
+
<section style="height: 100%; width: 100%">
|
|
2
|
+
<ng-container{{#if config.permissions.updateRight}} *ngIf="hasUserPermission('{{config.permissions.updateRight}}'); else notPermitted{{ config.index }}"{{/if}}>
|
|
3
|
+
{{#if config.uischema}}<foundation-form
|
|
4
4
|
design-system-prefix="rapid"
|
|
5
5
|
resourceName="{{config.resourceName}}"
|
|
6
|
-
{{#if config.uischema}}
|
|
7
6
|
[uischema]="uischema"
|
|
8
|
-
|
|
9
|
-
>
|
|
10
|
-
</foundation-form>
|
|
7
|
+
></foundation-form>{{else}}<foundation-form design-system-prefix="rapid" resourceName="{{config.resourceName}}"></foundation-form>{{/if}}
|
|
11
8
|
</ng-container>
|
|
12
9
|
{{#if config.permissions.updateRight}}
|
|
13
10
|
<ng-template #notPermitted{{ config.index }}>
|
|
14
11
|
<app-error-message
|
|
15
|
-
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center
|
|
12
|
+
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center"
|
|
16
13
|
elementType="h3"
|
|
17
|
-
message="You do not have access to view this component."
|
|
18
|
-
|
|
19
|
-
</ng-template>
|
|
14
|
+
message="You do not have access to view this component."
|
|
15
|
+
></app-error-message>
|
|
16
|
+
</ng-template>
|
|
17
|
+
{{/if}}
|
|
20
18
|
</section>
|
|
21
|
-
|