From 519258afec2b7163a0f583e8a97ad5c87a0a2be9 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Sat, 15 Jan 2022 18:41:25 +0100 Subject: [PATCH] Improved modal pages position, parent and visibility --- views/nav_overview.sql | 23 ++++++++++++++++++----- views/nav_pages_to_add.sql | 16 ++++++++++++++-- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/views/nav_overview.sql b/views/nav_overview.sql index 30e8e64..a62bf2a 100644 --- a/views/nav_overview.sql +++ b/views/nav_overview.sql @@ -53,7 +53,12 @@ SELECT -- t.page_root || ' ' || COALESCE ( 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, -- t.page_alias, @@ -91,7 +96,7 @@ SELECT -- '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 WHEN r.page_id IS NOT NULL @@ -109,7 +114,7 @@ JOIN apps a ON a.app_id = n.app_id AND a.is_active = 'Y' CROSS JOIN x -LEFT JOIN t ---------- LEFT JOIN ??? +LEFT JOIN t ON t.app_id = n.app_id AND t.page_id = n.page_id LEFT JOIN nav_pages_to_remove r @@ -137,7 +142,7 @@ SELECT n.page_alias, -- 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, -- n.page_title, @@ -161,7 +166,13 @@ SELECT -- 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, -- @@ -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_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_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.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_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.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'; diff --git a/views/nav_pages_to_add.sql b/views/nav_pages_to_add.sql index dc40047..4bfed36 100644 --- a/views/nav_pages_to_add.sql +++ b/views/nav_pages_to_add.sql @@ -4,7 +4,8 @@ WITH g AS ( p.page_group, n.page_id, n.parent_id, - n.order# + n.order#, + p.page_mode FROM navigation n JOIN apex_application_pages p ON p.application_id = n.app_id @@ -16,7 +17,18 @@ SELECT 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 WHERE g.page_group = p.page_group ) AS parent_id,