From 3592664276b4ecc21b3413d6720d0562dbc15b5d Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Fri, 21 Jan 2022 21:34:00 +0100 Subject: [PATCH] Check grid for changed columns, region may need syncing --- apex/f770/application/pages/page_00910.sql | 153 +++++++++++++++------ views/nav_regions.sql | 88 ++++++++++-- 2 files changed, 189 insertions(+), 52 deletions(-) diff --git a/apex/f770/application/pages/page_00910.sql b/apex/f770/application/pages/page_00910.sql index 077cee2..fa8e607 100644 --- a/apex/f770/application/pages/page_00910.sql +++ b/apex/f770/application/pages/page_00910.sql @@ -22,7 +22,7 @@ wwv_flow_api.create_page( ,p_page_template_options=>'#DEFAULT#' ,p_required_role=>wwv_flow_api.id(9556407311505078) ,p_last_updated_by=>'DEV' -,p_last_upd_yyyymmddhh24miss=>'20220121201328' +,p_last_upd_yyyymmddhh24miss=>'20220121203111' ); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(9192009232668637) @@ -927,7 +927,7 @@ wwv_flow_api.create_region_column_group( ); wwv_flow_api.create_region_column_group( p_id=>wwv_flow_api.id(16467599205696723) -,p_heading=>'Flags' +,p_heading=>'Grid Checks' ); wwv_flow_api.create_region_column_group( p_id=>wwv_flow_api.id(16467678112696724) @@ -1061,7 +1061,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Display Sequence' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>170 +,p_display_sequence=>190 ,p_value_alignment=>'LEFT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -1116,7 +1116,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Auth Scheme' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>160 +,p_display_sequence=>180 ,p_value_alignment=>'LEFT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -1157,7 +1157,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_SINGLE_CHECKBOX' ,p_heading=>'Condition' ,p_heading_alignment=>'CENTER' -,p_display_sequence=>150 +,p_display_sequence=>170 ,p_value_alignment=>'CENTER' ,p_attribute_01=>'N' ,p_attribute_02=>'Y' @@ -1185,7 +1185,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Items' ,p_heading_alignment=>'RIGHT' -,p_display_sequence=>130 +,p_display_sequence=>150 ,p_value_alignment=>'RIGHT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -1210,7 +1210,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Buttons' ,p_heading_alignment=>'RIGHT' -,p_display_sequence=>140 +,p_display_sequence=>160 ,p_value_alignment=>'RIGHT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -1307,7 +1307,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Query Type Code' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>180 +,p_display_sequence=>200 ,p_value_alignment=>'LEFT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -1334,7 +1334,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_SINGLE_CHECKBOX' ,p_heading=>'INS' ,p_heading_alignment=>'CENTER' -,p_display_sequence=>100 +,p_display_sequence=>120 ,p_value_alignment=>'CENTER' ,p_group_id=>wwv_flow_api.id(16467794224696725) ,p_use_group_for=>'BOTH' @@ -1364,7 +1364,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_SINGLE_CHECKBOX' ,p_heading=>'UPD' ,p_heading_alignment=>'CENTER' -,p_display_sequence=>110 +,p_display_sequence=>130 ,p_value_alignment=>'CENTER' ,p_group_id=>wwv_flow_api.id(16467794224696725) ,p_use_group_for=>'BOTH' @@ -1394,7 +1394,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_SINGLE_CHECKBOX' ,p_heading=>'DEL' ,p_heading_alignment=>'CENTER' -,p_display_sequence=>120 +,p_display_sequence=>140 ,p_value_alignment=>'CENTER' ,p_group_id=>wwv_flow_api.id(16467794224696725) ,p_use_group_for=>'BOTH' @@ -1415,36 +1415,74 @@ wwv_flow_api.create_region_column( ,p_include_in_export=>true ); wwv_flow_api.create_region_column( - p_id=>wwv_flow_api.id(16467841847696726) -,p_name=>'IS_CORRECT_SETUP' + p_id=>wwv_flow_api.id(16467907216696727) +,p_name=>'FIX_SETUP' ,p_source_type=>'DB_COLUMN' -,p_source_expression=>'IS_CORRECT_SETUP' +,p_source_expression=>'FIX_SETUP' ,p_data_type=>'VARCHAR2' ,p_is_query_only=>true -,p_item_type=>'NATIVE_SINGLE_CHECKBOX' -,p_heading=>'Correct' -,p_label=>'Correct Setup' +,p_item_type=>'NATIVE_DISPLAY_ONLY' +,p_heading=>'Fix Setup' ,p_heading_alignment=>'CENTER' ,p_display_sequence=>90 ,p_value_alignment=>'CENTER' ,p_group_id=>wwv_flow_api.id(16467599205696723) ,p_use_group_for=>'BOTH' -,p_attribute_01=>'N' -,p_attribute_02=>'Y' -,p_is_required=>false +,p_attribute_05=>'HTML' ,p_enable_filter=>true ,p_filter_operators=>'C:S:CASE_INSENSITIVE:REGEXP' ,p_filter_is_required=>false ,p_filter_text_case=>'MIXED' -,p_filter_exact_match=>true -,p_filter_lov_type=>'DISTINCT' +,p_filter_lov_type=>'NONE' ,p_use_as_row_header=>false -,p_enable_sort_group=>true -,p_enable_control_break=>true +,p_enable_sort_group=>false ,p_enable_hide=>true ,p_is_primary_key=>false ,p_include_in_export=>true ); +wwv_flow_api.create_region_column( + p_id=>wwv_flow_api.id(16468006987696728) +,p_name=>'FIX_SYNC' +,p_source_type=>'DB_COLUMN' +,p_source_expression=>'FIX_SYNC' +,p_data_type=>'VARCHAR2' +,p_is_query_only=>true +,p_item_type=>'NATIVE_DISPLAY_ONLY' +,p_heading=>'Fix Sync' +,p_heading_alignment=>'CENTER' +,p_display_sequence=>100 +,p_value_alignment=>'CENTER' +,p_group_id=>wwv_flow_api.id(16467599205696723) +,p_use_group_for=>'BOTH' +,p_attribute_05=>'HTML' +,p_item_attributes=>'title="&FIX_SYNC_TITLE."' +,p_enable_filter=>true +,p_filter_operators=>'C:S:CASE_INSENSITIVE:REGEXP' +,p_filter_is_required=>false +,p_filter_text_case=>'MIXED' +,p_filter_lov_type=>'NONE' +,p_use_as_row_header=>false +,p_enable_sort_group=>false +,p_enable_hide=>true +,p_is_primary_key=>false +,p_include_in_export=>true +); +wwv_flow_api.create_region_column( + p_id=>wwv_flow_api.id(16468156952696729) +,p_name=>'FIX_SYNC_TITLE' +,p_source_type=>'DB_COLUMN' +,p_source_expression=>'FIX_SYNC_TITLE' +,p_data_type=>'VARCHAR2' +,p_is_query_only=>false +,p_item_type=>'NATIVE_HIDDEN' +,p_display_sequence=>110 +,p_attribute_01=>'Y' +,p_use_as_row_header=>false +,p_enable_sort_group=>false +,p_is_primary_key=>false +,p_duplicate_value=>true +,p_include_in_export=>false +); wwv_flow_api.create_interactive_grid( p_id=>wwv_flow_api.id(12336381739960932) ,p_internal_uid=>12336381739960932 @@ -1649,10 +1687,26 @@ wwv_flow_api.create_ig_report_column( ,p_is_frozen=>false ); wwv_flow_api.create_ig_report_column( - p_id=>wwv_flow_api.id(16716986937812983) + p_id=>wwv_flow_api.id(16728766597910957) ,p_view_id=>wwv_flow_api.id(12685246753022330) -,p_display_seq=>18 -,p_column_id=>wwv_flow_api.id(16467841847696726) +,p_display_seq=>19 +,p_column_id=>wwv_flow_api.id(16467907216696727) +,p_is_visible=>true +,p_is_frozen=>false +); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(16729646169910960) +,p_view_id=>wwv_flow_api.id(12685246753022330) +,p_display_seq=>20 +,p_column_id=>wwv_flow_api.id(16468006987696728) +,p_is_visible=>true +,p_is_frozen=>false +); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(16730546928910962) +,p_view_id=>wwv_flow_api.id(12685246753022330) +,p_display_seq=>21 +,p_column_id=>wwv_flow_api.id(16468156952696729) ,p_is_visible=>true ,p_is_frozen=>false ); @@ -1676,6 +1730,32 @@ wwv_flow_api.create_ig_report_view( ,p_srv_only_display_columns=>true ,p_edit_mode=>false ); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(4007672000005) +,p_view_id=>wwv_flow_api.id(29351871347831455) +,p_display_seq=>8 +,p_column_id=>wwv_flow_api.id(16467907216696727) +,p_is_visible=>true +,p_is_frozen=>false +,p_width=>80 +); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(4501659000005) +,p_view_id=>wwv_flow_api.id(29351871347831455) +,p_display_seq=>9 +,p_column_id=>wwv_flow_api.id(16468006987696728) +,p_is_visible=>true +,p_is_frozen=>false +,p_width=>80 +); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(8166605000008) +,p_view_id=>wwv_flow_api.id(29351871347831455) +,p_display_seq=>19 +,p_column_id=>wwv_flow_api.id(16468156952696729) +,p_is_visible=>false +,p_is_frozen=>false +); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(16668453289837402) ,p_view_id=>wwv_flow_api.id(29351871347831455) @@ -1688,7 +1768,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(16683685482758545) ,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>16 +,p_display_seq=>17 ,p_column_id=>wwv_flow_api.id(16466904212696717) ,p_is_visible=>false ,p_is_frozen=>false @@ -1721,15 +1801,6 @@ wwv_flow_api.create_ig_report_column( ,p_is_frozen=>false ,p_width=>80 ); -wwv_flow_api.create_ig_report_column( - p_id=>wwv_flow_api.id(16716448649812982) -,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>9 -,p_column_id=>wwv_flow_api.id(16467841847696726) -,p_is_visible=>true -,p_is_frozen=>false -,p_width=>80 -); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29352372551831459) ,p_view_id=>wwv_flow_api.id(29351871347831455) @@ -1792,7 +1863,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29363203096831489) ,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>17 +,p_display_seq=>18 ,p_column_id=>wwv_flow_api.id(12337640462960945) ,p_is_visible=>true ,p_is_frozen=>false @@ -1801,7 +1872,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29364098029831492) ,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>15 +,p_display_seq=>16 ,p_column_id=>wwv_flow_api.id(12337737938960946) ,p_is_visible=>false ,p_is_frozen=>false @@ -1810,7 +1881,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29364948775831494) ,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>14 +,p_display_seq=>15 ,p_column_id=>wwv_flow_api.id(12337844311960947) ,p_is_visible=>false ,p_is_frozen=>false @@ -1819,7 +1890,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29365886406831496) ,p_view_id=>wwv_flow_api.id(29351871347831455) -,p_display_seq=>13 +,p_display_seq=>14 ,p_column_id=>wwv_flow_api.id(12337933001960948) ,p_is_visible=>false ,p_is_frozen=>false diff --git a/views/nav_regions.sql b/views/nav_regions.sql index d9b8e75..41b6a2e 100644 --- a/views/nav_regions.sql +++ b/views/nav_regions.sql @@ -8,6 +8,65 @@ WITH x AS ( JOIN apps a ON a.app_id = app.get_app_id() WHERE u.user_id = app.get_user_id() +), +c AS ( + SELECT + r.region_id, + c.table_name, + --c.data_length, c.nullable + c.column_name || '|' || + CASE REGEXP_REPLACE(c.data_type, '\(\d+\)', '') + WHEN 'CHAR' THEN 'VARCHAR2' + WHEN 'INTERVAL DAY TO SECOND' THEN 'INTERVAL_D2S' + WHEN 'TIMESTAMP WITH TIME ZONE' THEN 'TIMESTAMP_TZ' + ELSE REGEXP_REPLACE(c.data_type, '\(\d+\)', '') + END AS column_desc + FROM user_tab_cols c + JOIN apex_application_page_regions r + ON r.table_name = c.table_name + JOIN x + ON x.app_id = r.application_id + WHERE r.source_type_code = 'NATIVE_IG' + AND r.query_type_code = 'TABLE' +), +b AS ( + SELECT + c.region_id, + r.table_name, + --c.max_length, c.is_required, + c.source_expression || '|' || c.data_type AS column_desc + FROM apex_appl_page_ig_columns c + JOIN apex_application_page_regions r + ON r.application_id = c.application_id + AND r.region_id = c.region_id + JOIN x + ON x.app_id = r.application_id + WHERE r.source_type_code = 'NATIVE_IG' + AND r.query_type_code = 'TABLE' + AND c.source_type_code = 'DB_COLUMN' + AND c.data_type NOT IN ('ROWID') +), +d AS ( + SELECT + NVL(c.region_id, b.region_id) AS region_id, + NVL(c.table_name, b.table_name) AS table_name, + -- + MAX(CASE + WHEN c.table_name IS NULL THEN app.get_icon('fa-warning') + WHEN b.table_name IS NULL THEN app.get_icon('fa-warning') + END) AS fix_sync, + -- + LISTAGG(CASE + WHEN c.table_name IS NULL THEN 'Removed ' || b.column_desc + WHEN b.table_name IS NULL THEN 'Added ' || c.column_desc + END, ', ') WITHIN GROUP (ORDER BY b.column_desc, c.column_desc) AS fix_sync_title + FROM b + FULL JOIN c + ON c.region_id = b.region_id + AND c.table_name = b.table_name + AND c.column_desc = b.column_desc + WHERE NVL(c.column_desc, '-') != NVL(b.column_desc, '-') + GROUP BY NVL(c.region_id, b.region_id), NVL(c.table_name, b.table_name) ) SELECT p.page_group || ' ' || r.page_id || ' ' || p.page_title AS page_group, @@ -55,15 +114,6 @@ SELECT in_values => r.table_name ) AS table_link, -- - NULLIF(r.items, 0) AS items, - NULLIF(r.buttons, 0) AS buttons, - -- - CASE WHEN r.condition_type_code IS NOT NULL THEN 'Y' END AS condition_type, - -- - r.authorization_scheme, - r.display_sequence, - r.query_type_code, - -- CASE WHEN g.edit_operations LIKE '%i%' THEN 'Y' END AS is_ins_allowed, CASE WHEN g.edit_operations LIKE '%u%' THEN 'Y' END AS is_upd_allowed, CASE WHEN g.edit_operations LIKE '%d%' THEN 'Y' END AS is_del_allowed, @@ -76,8 +126,22 @@ SELECT AND g.toolbar_buttons = 'SEARCH_COLUMN:SEARCH_FIELD:ACTIONS_MENU:SAVE' -- AND REGEXP_REPLACE(g.javascript_code, '\s+', ' ') LIKE 'function(config) { return unified_ig_toolbar(config%' - THEN 'Y' - END AS is_correct_setup + THEN NULL + ELSE app.get_icon('fa-warning') + END AS fix_setup, + -- + d.fix_sync, + d.fix_sync_title, + -- + -- + NULLIF(r.items, 0) AS items, + NULLIF(r.buttons, 0) AS buttons, + -- + CASE WHEN r.condition_type_code IS NOT NULL THEN 'Y' END AS condition_type, + -- + r.display_sequence, + r.query_type_code, + r.authorization_scheme FROM apex_application_page_regions r JOIN apex_application_pages p ON p.application_id = r.application_id @@ -89,6 +153,8 @@ LEFT JOIN user_objects t LEFT JOIN apex_appl_page_igs g ON g.application_id = r.application_id AND g.region_id = r.region_id +LEFT JOIN d + ON d.region_id = r.region_id WHERE r.application_id = x.app_id AND r.parent_region_id IS NULL AND (x.page_id = p.page_id OR x.page_id IS NULL)