Roles as cards on User info page

This commit is contained in:
Jan Kvetina 2021-12-24 11:42:20 +01:00
parent a5b0b5bcd8
commit 60123d1058
2 changed files with 106 additions and 26 deletions

View File

@ -23,7 +23,7 @@ wwv_flow_api.create_page(
,p_page_template_options=>'#DEFAULT#'
,p_required_role=>wwv_flow_api.id(9844735592500475)
,p_last_updated_by=>'DEV'
,p_last_upd_yyyymmddhh24miss=>'20211223214442'
,p_last_upd_yyyymmddhh24miss=>'20211224102900'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9264299805429043)
@ -41,9 +41,9 @@ wwv_flow_api.create_page_plug(
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9519532707540348)
,p_plug_name=>'User'
,p_region_template_options=>'#DEFAULT#'
,p_region_template_options=>'#DEFAULT#:margin-left-md:margin-right-md'
,p_plug_template=>wwv_flow_api.id(9078290074569925)
,p_plug_display_sequence=>20
,p_plug_display_sequence=>30
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_grid_column_span=>6
,p_plug_display_point=>'BODY'
@ -60,23 +60,50 @@ wwv_flow_api.create_page_plug(
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9560462665581617)
,p_plug_name=>'User Roles'
,p_region_template_options=>'#DEFAULT#:t-Region--scrollBody'
,p_escape_on_http_output=>'Y'
,p_plug_template=>wwv_flow_api.id(9080157814569926)
,p_plug_display_sequence=>30
,p_region_template_options=>'#DEFAULT#:t-CardsRegion--styleC:margin-left-md:margin-right-md'
,p_plug_template=>wwv_flow_api.id(9052354744569904)
,p_plug_display_sequence=>40
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_new_grid_row=>false
,p_plug_display_point=>'BODY'
,p_query_type=>'TABLE'
,p_query_table=>'USER_ROLES'
,p_query_where=>wwv_flow_string.join(wwv_flow_t_varchar2(
'app_id = app.get_app_id()',
'AND user_id = app.get_user_id()'))
,p_query_table=>'USER_ROLES_CARDS'
,p_include_rowid_column=>false
,p_plug_source_type=>'NATIVE_JQM_LIST_VIEW'
,p_plug_query_num_rows=>15
,p_lazy_loading=>false
,p_plug_source_type=>'NATIVE_CARDS'
,p_plug_query_num_rows_type=>'SCROLL'
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
,p_attribute_02=>'ROLE_ID'
,p_show_total_row_count=>false
);
wwv_flow_api.create_card(
p_id=>wwv_flow_api.id(10243420607410323)
,p_region_id=>wwv_flow_api.id(9560462665581617)
,p_layout_type=>'GRID'
,p_grid_column_count=>3
,p_title_adv_formatting=>false
,p_title_column_name=>'ROLE_NAME'
,p_sub_title_adv_formatting=>false
,p_sub_title_column_name=>'ROLE_ID'
,p_body_adv_formatting=>false
,p_body_column_name=>'DESCRIPTION_'
,p_second_body_adv_formatting=>false
,p_badge_column_name=>'COUNT_PAGES'
,p_badge_label=>'Pages'
,p_media_adv_formatting=>false
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10243395317410322)
,p_plug_name=>'User Roles'
,p_icon_css_classes=>'fa-id-badge'
,p_region_template_options=>'#DEFAULT#'
,p_plug_template=>wwv_flow_api.id(9070356145569920)
,p_plug_display_sequence=>20
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_new_grid_row=>false
,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_button(
p_id=>wwv_flow_api.id(9560520493581618)
@ -96,7 +123,6 @@ wwv_flow_api.create_page_item(
,p_name=>'P990_USER_ID'
,p_source_data_type=>'VARCHAR2'
,p_is_required=>true
,p_is_primary_key=>true
,p_item_sequence=>10
,p_item_plug_id=>wwv_flow_api.id(9519532707540348)
,p_item_source_plug_id=>wwv_flow_api.id(9519532707540348)
@ -121,7 +147,8 @@ wwv_flow_api.create_page_item(
p_id=>wwv_flow_api.id(9558884534581601)
,p_name=>'P990_USER_LOGIN'
,p_source_data_type=>'VARCHAR2'
,p_is_query_only=>true
,p_is_required=>true
,p_is_primary_key=>true
,p_item_sequence=>20
,p_item_plug_id=>wwv_flow_api.id(9519532707540348)
,p_item_source_plug_id=>wwv_flow_api.id(9519532707540348)
@ -130,6 +157,7 @@ wwv_flow_api.create_page_item(
,p_source_type=>'REGION_SOURCE_COLUMN'
,p_display_as=>'NATIVE_TEXT_FIELD'
,p_cSize=>30
,p_cMaxlength=>128
,p_read_only_when_type=>'ALWAYS'
,p_field_template=>wwv_flow_api.id(9142775823569991)
,p_item_template_options=>'#DEFAULT#'
@ -223,15 +251,6 @@ wwv_flow_api.create_page_item(
,p_is_persistent=>'N'
,p_attribute_01=>'Y'
);
wwv_flow_api.create_page_computation(
p_id=>wwv_flow_api.id(9560752997581620)
,p_computation_sequence=>10
,p_computation_item=>'P990_USER_ID'
,p_computation_point=>'BEFORE_HEADER'
,p_computation_type=>'EXPRESSION'
,p_computation_language=>'PLSQL'
,p_computation=>'app.get_user_id()'
);
wwv_flow_api.create_page_process(
p_id=>wwv_flow_api.id(9560618719581619)
,p_process_sequence=>10
@ -246,9 +265,22 @@ wwv_flow_api.create_page_process(
,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
wwv_flow_api.create_page_process(
p_id=>wwv_flow_api.id(9519635995540349)
p_id=>wwv_flow_api.id(10243546752410324)
,p_process_sequence=>10
,p_process_point=>'BEFORE_HEADER'
,p_process_type=>'NATIVE_PLSQL'
,p_process_name=>'PREINIT'
,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
':P990_USER_ID := app.get_user_id();',
':P990_USER_LOGIN := app.get_user_login();',
''))
,p_process_clob_language=>'PLSQL'
,p_error_display_location=>'INLINE_IN_NOTIFICATION'
);
wwv_flow_api.create_page_process(
p_id=>wwv_flow_api.id(9519635995540349)
,p_process_sequence=>20
,p_process_point=>'BEFORE_HEADER'
,p_region_id=>wwv_flow_api.id(9519532707540348)
,p_process_type=>'NATIVE_FORM_INIT'
,p_process_name=>'INIT_FORM'

View File

@ -0,0 +1,48 @@
CREATE OR REPLACE VIEW user_roles_cards AS
SELECT
r.role_id,
r.role_name,
r.description_,
r.is_active,
--
COUNT(p.page_id) AS count_pages
FROM (
SELECT
r.app_id,
r.role_id,
r.role_name,
r.description_,
r.is_active,
--
ROW_NUMBER() OVER(ORDER BY r.role_group NULLS LAST, r.order# NULLS LAST, r.role_id) AS sort#
FROM roles r
JOIN user_roles u
ON u.app_id = r.app_id
AND u.role_id = r.role_id
WHERE u.app_id = app.get_app_id()
AND u.user_id = app.get_user_id()
UNION ALL
SELECT
app.get_app_id() AS app_id,
'IS_DEVELOPER' AS role_id,
'Developer' AS role_name,
'Basically a God',
'Y' AS is_active,
0 AS sort#
FROM DUAL
WHERE app.is_developer_y() = 'Y'
) r
LEFT JOIN navigation n
ON n.app_id = r.app_id
LEFT JOIN apex_application_pages p
ON p.application_id = n.app_id
AND p.page_id = n.page_id
AND p.authorization_scheme = r.role_id
GROUP BY
r.role_id,
r.role_name,
r.description_,
r.is_active,
r.sort#
ORDER BY r.sort#;