Views for developers

This commit is contained in:
Jan Kvetina 2022-01-10 18:29:41 +01:00
parent 307dac7ee7
commit cf8a3e086a
3 changed files with 547 additions and 0 deletions

View File

@ -0,0 +1,480 @@
prompt --application/pages/page_00955
begin
-- Manifest
-- PAGE: 00955
-- Manifest End
wwv_flow_api.component_begin (
p_version_yyyy_mm_dd=>'2021.04.15'
,p_release=>'21.1.6'
,p_default_workspace_id=>9014660246496943
,p_default_application_id=>770
,p_default_id_offset=>0
,p_default_owner=>'CORE'
);
wwv_flow_api.create_page(
p_id=>955
,p_user_interface_id=>wwv_flow_api.id(9169746885570061)
,p_name=>'#fa-table-heart Views'
,p_alias=>'VIEWS'
,p_step_title=>'Views'
,p_autocomplete_on_off=>'OFF'
,p_group_id=>wwv_flow_api.id(9240371448352386)
,p_page_template_options=>'#DEFAULT#'
,p_last_updated_by=>'DEV'
,p_last_upd_yyyymmddhh24miss=>'20220110171924'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(14220162747378949)
,p_plug_name=>'Views'
,p_icon_css_classes=>'fa-table-heart'
,p_region_template_options=>'#DEFAULT#'
,p_plug_template=>wwv_flow_api.id(9070356145569920)
,p_plug_display_sequence=>10
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(14220223287378950)
,p_plug_name=>'Views [GRID]'
,p_region_name=>'VIEWS'
,p_region_template_options=>'#DEFAULT#'
,p_component_template_options=>'#DEFAULT#'
,p_plug_template=>wwv_flow_api.id(9078290074569925)
,p_plug_display_sequence=>20
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_query_type=>'TABLE'
,p_query_table=>'USER_OBJ_VIEWS'
,p_include_rowid_column=>false
,p_plug_source_type=>'NATIVE_IG'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_prn_content_disposition=>'ATTACHMENT'
,p_prn_document_header=>'APEX'
,p_prn_units=>'MILLIMETERS'
,p_prn_paper_size=>'A4'
,p_prn_width=>297
,p_prn_height=>210
,p_prn_orientation=>'HORIZONTAL'
,p_prn_page_header=>'Views [GRID]'
,p_prn_page_header_font_color=>'#000000'
,p_prn_page_header_font_family=>'Helvetica'
,p_prn_page_header_font_weight=>'normal'
,p_prn_page_header_font_size=>'12'
,p_prn_page_footer_font_color=>'#000000'
,p_prn_page_footer_font_family=>'Helvetica'
,p_prn_page_footer_font_weight=>'normal'
,p_prn_page_footer_font_size=>'12'
,p_prn_header_bg_color=>'#EEEEEE'
,p_prn_header_font_color=>'#000000'
,p_prn_header_font_family=>'Helvetica'
,p_prn_header_font_weight=>'bold'
,p_prn_header_font_size=>'10'
,p_prn_body_bg_color=>'#FFFFFF'
,p_prn_body_font_color=>'#000000'
,p_prn_body_font_family=>'Helvetica'
,p_prn_body_font_weight=>'normal'
,p_prn_body_font_size=>'10'
,p_prn_border_width=>.5
,p_prn_page_header_alignment=>'CENTER'
,p_prn_page_footer_alignment=>'CENTER'
,p_prn_border_color=>'#666666'
);
wwv_flow_api.create_region_column(
p_id=>wwv_flow_api.id(14929333603872302)
,p_name=>'VIEW_NAME'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'VIEW_NAME'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>false
,p_item_type=>'NATIVE_TEXTAREA'
,p_heading=>'View Name'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>20
,p_value_alignment=>'LEFT'
,p_attribute_01=>'Y'
,p_attribute_02=>'N'
,p_attribute_03=>'N'
,p_attribute_04=>'BOTH'
,p_is_required=>true
,p_max_length=>128
,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=>true
,p_enable_control_break=>true
,p_enable_hide=>true
,p_is_primary_key=>false
,p_duplicate_value=>true
,p_include_in_export=>true
);
wwv_flow_api.create_region_column(
p_id=>wwv_flow_api.id(14929499065872303)
,p_name=>'REFERENCED_TABLES'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'REFERENCED_TABLES'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DISPLAY_ONLY'
,p_heading=>'Referenced Tables'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>50
,p_value_alignment=>'LEFT'
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14929507382872304)
,p_name=>'REFERENCED_VIEWS'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'REFERENCED_VIEWS'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DISPLAY_ONLY'
,p_heading=>'Referenced Views'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>60
,p_value_alignment=>'LEFT'
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14929621363872305)
,p_name=>'IS_READONLY'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'IS_READONLY'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>false
,p_item_type=>'NATIVE_SINGLE_CHECKBOX'
,p_heading=>'Readonly'
,p_heading_alignment=>'CENTER'
,p_display_sequence=>70
,p_value_alignment=>'CENTER'
,p_attribute_01=>'N'
,p_attribute_02=>'Y'
,p_is_required=>false
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,p_enable_hide=>true
,p_is_primary_key=>false
,p_duplicate_value=>true
,p_include_in_export=>true
);
wwv_flow_api.create_region_column(
p_id=>wwv_flow_api.id(14929897471872307)
,p_name=>'LAST_DDL_TIME'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'LAST_DDL_TIME'
,p_data_type=>'DATE'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DATE_PICKER_JET'
,p_heading=>'Last Ddl Time'
,p_heading_alignment=>'CENTER'
,p_display_sequence=>90
,p_value_alignment=>'CENTER'
,p_attribute_01=>'N'
,p_attribute_02=>'POPUP'
,p_attribute_03=>'NONE'
,p_attribute_06=>'NONE'
,p_attribute_09=>'N'
,p_attribute_11=>'Y'
,p_format_mask=>'YYYY-MM-DD HH24:MI'
,p_is_required=>false
,p_enable_filter=>true
,p_filter_is_required=>false
,p_filter_date_ranges=>'ALL'
,p_filter_lov_type=>'DISTINCT'
,p_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14929952501872308)
,p_name=>'USED_IN_OBJECTS'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'USED_IN_OBJECTS'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DISPLAY_ONLY'
,p_heading=>'Used In Objects'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>30
,p_value_alignment=>'LEFT'
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14930051725872309)
,p_name=>'IS_DEFINER'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'IS_DEFINER'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_SINGLE_CHECKBOX'
,p_heading=>'Definer'
,p_heading_alignment=>'CENTER'
,p_display_sequence=>80
,p_value_alignment=>'CENTER'
,p_attribute_01=>'N'
,p_attribute_02=>'Y'
,p_is_required=>false
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14930167492872310)
,p_name=>'USED_ON_PAGES'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'USED_ON_PAGES'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DISPLAY_ONLY'
,p_heading=>'Used On Pages'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>40
,p_value_alignment=>'LEFT'
,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_use_as_row_header=>false
,p_enable_sort_group=>true
,p_enable_control_break=>true
,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(14930252402872311)
,p_name=>'VIEW_GROUP'
,p_source_type=>'DB_COLUMN'
,p_source_expression=>'VIEW_GROUP'
,p_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_item_type=>'NATIVE_DISPLAY_ONLY'
,p_heading=>'View Group'
,p_heading_alignment=>'LEFT'
,p_display_sequence=>10
,p_value_alignment=>'LEFT'
,p_attribute_02=>'VALUE'
,p_attribute_05=>'PLAIN'
,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=>true
,p_enable_control_break=>true
,p_enable_hide=>true
,p_is_primary_key=>false
,p_include_in_export=>true
);
wwv_flow_api.create_interactive_grid(
p_id=>wwv_flow_api.id(14929214006872301)
,p_internal_uid=>14929214006872301
,p_is_editable=>false
,p_lazy_loading=>false
,p_requires_filter=>false
,p_select_first_row=>false
,p_fixed_row_height=>true
,p_pagination_type=>'SET'
,p_show_total_row_count=>true
,p_show_toolbar=>true
,p_toolbar_buttons=>'SEARCH_COLUMN:SEARCH_FIELD:ACTIONS_MENU:SAVE'
,p_enable_save_public_report=>false
,p_enable_subscriptions=>true
,p_enable_flashback=>true
,p_define_chart_view=>true
,p_enable_download=>true
,p_download_formats=>'CSV:HTML:XLSX:PDF'
,p_enable_mail_download=>true
,p_fixed_header=>'PAGE'
,p_show_icon_view=>false
,p_show_detail_view=>false
,p_javascript_code=>wwv_flow_string.join(wwv_flow_t_varchar2(
'function(config) {',
' return unified_ig_toolbar(config);',
'}',
''))
);
wwv_flow_api.create_ig_report(
p_id=>wwv_flow_api.id(14934807009877722)
,p_interactive_grid_id=>wwv_flow_api.id(14929214006872301)
,p_static_id=>'149349'
,p_type=>'PRIMARY'
,p_default_view=>'GRID'
,p_rows_per_page=>100
,p_show_row_number=>false
,p_settings_area_expanded=>false
);
wwv_flow_api.create_ig_report_view(
p_id=>wwv_flow_api.id(14935014538877722)
,p_report_id=>wwv_flow_api.id(14934807009877722)
,p_view_type=>'GRID'
,p_stretch_columns=>true
,p_srv_exclude_null_values=>false
,p_srv_only_display_columns=>true
,p_edit_mode=>false
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14935570708877729)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>0
,p_column_id=>wwv_flow_api.id(14929333603872302)
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>300
,p_sort_order=>1
,p_sort_direction=>'ASC'
,p_sort_nulls=>'LAST'
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14936401793877733)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>4
,p_column_id=>wwv_flow_api.id(14929499065872303)
,p_is_visible=>true
,p_is_frozen=>false
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14937363792877737)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>5
,p_column_id=>wwv_flow_api.id(14929507382872304)
,p_is_visible=>true
,p_is_frozen=>false
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14938205769877740)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>6
,p_column_id=>wwv_flow_api.id(14929621363872305)
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>90
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14940055040877744)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>7
,p_column_id=>wwv_flow_api.id(14929897471872307)
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>160
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14955359192006429)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>3
,p_column_id=>wwv_flow_api.id(14929952501872308)
,p_is_visible=>true
,p_is_frozen=>false
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14965446688031898)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>6
,p_column_id=>wwv_flow_api.id(14930051725872309)
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>90
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14974628174176864)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>2
,p_column_id=>wwv_flow_api.id(14930167492872310)
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>200
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(14984925118294349)
,p_view_id=>wwv_flow_api.id(14935014538877722)
,p_display_seq=>8
,p_column_id=>wwv_flow_api.id(14930252402872311)
,p_is_visible=>false
,p_is_frozen=>false
,p_break_order=>5
,p_break_is_enabled=>true
,p_break_sort_direction=>'ASC'
,p_break_sort_nulls=>'LAST'
);
wwv_flow_api.create_page_button(
p_id=>wwv_flow_api.id(15022487988059629)
,p_button_sequence=>10
,p_button_plug_id=>wwv_flow_api.id(14220162747378949)
,p_button_name=>'REFRESH'
,p_button_action=>'REDIRECT_PAGE'
,p_button_template_options=>'#DEFAULT#'
,p_button_template_id=>wwv_flow_api.id(9144574670569995)
,p_button_image_alt=>'Refresh'
,p_button_position=>'RIGHT_OF_TITLE'
,p_button_redirect_url=>'f?p=&APP_ID.:955:&SESSION.::&DEBUG.:955::'
,p_icon_css_classes=>'fa-refresh'
);
wwv_flow_api.component_end;
end;
/

View File

@ -127,6 +127,7 @@ prompt --install
@@application/pages/page_00950.sql
@@application/pages/page_00951.sql
@@application/pages/page_00952.sql
@@application/pages/page_00955.sql
@@application/pages/page_00970.sql
@@application/pages/page_00990.sql
@@application/pages/page_09999.sql

66
views/user_obj_views.sql Normal file
View File

@ -0,0 +1,66 @@
CREATE OR REPLACE VIEW user_obj_views AS
WITH x AS (
SELECT
app.get_app_id() AS app_id,
app.get_item('$VIEW_NAME') AS view_name
FROM users u
WHERE u.user_id = app.get_user_id()
),
r AS (
SELECT
d.name AS view_name,
--
LISTAGG(CASE WHEN d.referenced_type = 'TABLE' THEN d.referenced_name END, ', ') WITHIN GROUP (ORDER BY d.referenced_name) AS referenced_tables,
LISTAGG(CASE WHEN d.referenced_type = 'VIEW' THEN d.referenced_name END, ', ') WITHIN GROUP (ORDER BY d.referenced_name) AS referenced_views
FROM user_dependencies d
CROSS JOIN x
WHERE d.type = 'VIEW'
AND d.name = NVL(x.view_name, d.name)
GROUP BY d.name
),
u AS (
SELECT
d.referenced_name AS view_name,
LISTAGG(d.name, ', ') WITHIN GROUP (ORDER BY d.name) AS used_in_objects
FROM user_dependencies d
WHERE d.referenced_type = 'VIEW'
GROUP BY d.referenced_name
),
p AS (
SELECT
r.table_name,
LISTAGG(DISTINCT '<a href="' || app.get_page_link(r.page_id) || '">' || r.page_id || '</a>', ', ') WITHIN GROUP (ORDER BY r.page_id) AS used_on_pages
--LISTAGG(DISTINCT r.page_id, ', ') WITHIN GROUP (ORDER BY r.page_id) AS used_on_pages
FROM apex_application_page_regions r
JOIN x
ON x.app_id = r.application_id
WHERE r.query_type_code = 'TABLE'
GROUP BY r.table_name
)
SELECT
REGEXP_REPLACE(REGEXP_SUBSTR(v.view_name, '^[^_]+'), '^P\d+$', 'PAGE#') AS view_group,
v.view_name,
--
u.used_in_objects,
p.used_on_pages,
r.referenced_tables,
r.referenced_views,
--
NULLIF(v.read_only, 'N') AS is_readonly,
--
CASE WHEN v.bequeath = 'DEFINER' THEN 'Y' END AS is_definer,
--
o.last_ddl_time
FROM user_views v
JOIN user_objects o
ON o.object_name = v.view_name
AND o.object_type = 'VIEW'
CROSS JOIN x
LEFT JOIN r
ON r.view_name = v.view_name
LEFT JOIN u
ON u.view_name = v.view_name
LEFT JOIN p
ON p.table_name = v.view_name
WHERE v.view_name = NVL(x.view_name, v.view_name);