Improved modal pages position, parent and visibility

This commit is contained in:
Jan Kvetina 2022-01-15 18:41:25 +01:00
parent d0a20c779f
commit 519258afec
2 changed files with 32 additions and 7 deletions

View File

@ -53,7 +53,12 @@ SELECT
-- --
t.page_root || ' ' || COALESCE ( t.page_root || ' ' || COALESCE (
t.page_group, t.page_group,
(SELECT t.page_group FROM t WHERE t.app_id = n.app_id AND t.page_id = n.parent_id) (
SELECT t.page_group
FROM t
WHERE t.app_id = n.app_id
AND t.page_id = n.parent_id
)
) AS page_group, ) AS page_group,
-- --
t.page_alias, t.page_alias,
@ -91,7 +96,7 @@ SELECT
-- --
'UD' AS allow_changes, -- U = update, D = delete 'UD' AS allow_changes, -- U = update, D = delete
-- --
t.page_root || '.' || TO_CHAR(10000 + t.r#) || '.' || NVL(t.order#, t.page_id) AS sort_order, t.page_root || '.' || TO_CHAR(10000 + t.r#) || '.' || NVL(t.order#, t.page_id) || '.' || n.page_id AS sort_order,
-- --
CASE CASE
WHEN r.page_id IS NOT NULL WHEN r.page_id IS NOT NULL
@ -109,7 +114,7 @@ JOIN apps a
ON a.app_id = n.app_id ON a.app_id = n.app_id
AND a.is_active = 'Y' AND a.is_active = 'Y'
CROSS JOIN x CROSS JOIN x
LEFT JOIN t ---------- LEFT JOIN ??? LEFT JOIN t
ON t.app_id = n.app_id ON t.app_id = n.app_id
AND t.page_id = n.page_id AND t.page_id = n.page_id
LEFT JOIN nav_pages_to_remove r LEFT JOIN nav_pages_to_remove r
@ -137,7 +142,7 @@ SELECT
n.page_alias, n.page_alias,
-- --
CASE WHEN n.parent_id IS NOT NULL CASE WHEN n.parent_id IS NOT NULL
THEN REPLACE(LTRIM(RPAD('-', 4), '-'), ' ', '&' || 'nbsp; ') THEN REPLACE(LTRIM(RPAD('-', (t.depth + 1) * 4), '-'), ' ', '&' || 'nbsp; ')
END || app.get_page_name(in_app_id => n.app_id, in_page_id => n.page_id, in_name => n.page_name) AS page_name, END || app.get_page_name(in_app_id => n.app_id, in_page_id => n.page_id, in_name => n.page_name) AS page_name,
-- --
n.page_title, n.page_title,
@ -161,7 +166,13 @@ SELECT
-- --
NULL AS allow_changes, -- no changes allowed NULL AS allow_changes, -- no changes allowed
-- --
NVL(t.page_root, n.page_id) || '.' || TO_CHAR(10000 + t.r#) || '.' || NVL(n.order#, n.page_id) AS sort_order, NVL(t.page_root, n.page_id) || '.' || TO_CHAR(10000 + (
SELECT NVL(MAX(z.r#), 0) AS nearest_r#
FROM t z
WHERE z.app_id = n.app_id
AND z.page_group = n.page_group
AND z.order# = n.order#
)) || '.' || NVL(n.order#, n.page_id) AS sort_order,
-- --
app.get_icon('fa-plus-square', 'Create record in Navigation table') AS action, app.get_icon('fa-plus-square', 'Create record in Navigation table') AS action,
-- --
@ -192,10 +203,12 @@ COMMENT ON COLUMN nav_overview.page_group IS 'Page group from APEX page sp
COMMENT ON COLUMN nav_overview.page_alias IS 'Page alis from APEX page specification'; COMMENT ON COLUMN nav_overview.page_alias IS 'Page alis from APEX page specification';
COMMENT ON COLUMN nav_overview.page_name IS 'Page name from APEX page specification'; COMMENT ON COLUMN nav_overview.page_name IS 'Page name from APEX page specification';
COMMENT ON COLUMN nav_overview.page_title IS 'Page title from APEX page specification'; COMMENT ON COLUMN nav_overview.page_title IS 'Page title from APEX page specification';
COMMENT ON COLUMN nav_overview.page_template IS 'Type of template used on page';
COMMENT ON COLUMN nav_overview.css_class IS 'CSS class from APEX page specification'; COMMENT ON COLUMN nav_overview.css_class IS 'CSS class from APEX page specification';
COMMENT ON COLUMN nav_overview.is_hidden IS 'Flag for hiding item in menu; Y = hide, NULL = show'; COMMENT ON COLUMN nav_overview.is_hidden IS 'Flag for hiding item in menu; Y = hide, NULL = show';
COMMENT ON COLUMN nav_overview.is_reset IS 'Flag for reset/clear page items; Y = clear, NULL = keep;'; COMMENT ON COLUMN nav_overview.is_reset IS 'Flag for reset/clear page items; Y = clear, NULL = keep;';
COMMENT ON COLUMN nav_overview.is_shared IS 'Flag for sharing record with other apps'; COMMENT ON COLUMN nav_overview.is_shared IS 'Flag for sharing record with other apps';
COMMENT ON COLUMN nav_overview.is_modal IS 'Flag for modal dialogs';
COMMENT ON COLUMN nav_overview.auth_scheme IS 'Auth scheme from APEX page specification'; COMMENT ON COLUMN nav_overview.auth_scheme IS 'Auth scheme from APEX page specification';
COMMENT ON COLUMN nav_overview.page_url IS 'Page url to use as redirection target'; COMMENT ON COLUMN nav_overview.page_url IS 'Page url to use as redirection target';
COMMENT ON COLUMN nav_overview.allow_changes IS 'APEX column to allow edit/delete only some rows'; COMMENT ON COLUMN nav_overview.allow_changes IS 'APEX column to allow edit/delete only some rows';

View File

@ -4,7 +4,8 @@ WITH g AS (
p.page_group, p.page_group,
n.page_id, n.page_id,
n.parent_id, n.parent_id,
n.order# n.order#,
p.page_mode
FROM navigation n FROM navigation n
JOIN apex_application_pages p JOIN apex_application_pages p
ON p.application_id = n.app_id ON p.application_id = n.app_id
@ -16,7 +17,18 @@ SELECT
p.page_id, p.page_id,
-- --
( (
SELECT COALESCE(MAX(CASE WHEN g.parent_id IS NULL THEN g.page_id END), MIN(g.page_id)) AS parent_id SELECT COALESCE (
MAX((
SELECT MAX(g.page_id) AS nearest_page
FROM g
WHERE g.page_id < p.page_id
AND g.page_group = p.page_group
AND g.page_mode = 'Normal'
AND p.page_mode != 'Normal'
)),
MAX(CASE WHEN g.parent_id IS NULL THEN g.page_id END),
MIN(g.page_id)
) AS parent_id
FROM g FROM g
WHERE g.page_group = p.page_group WHERE g.page_group = p.page_group
) AS parent_id, ) AS parent_id,