Activity chart

This commit is contained in:
Jan Kvetina 2021-12-25 23:08:42 +01:00
parent c8fca626e9
commit ef84ea1cb1
2 changed files with 203 additions and 5 deletions

View File

@ -21,8 +21,8 @@ wwv_flow_api.create_page(
,p_group_id=>wwv_flow_api.id(9240371448352386)
,p_page_template_options=>'#DEFAULT#'
,p_required_role=>wwv_flow_api.id(9823062898204869)
,p_last_updated_by=>'DEV_ID'
,p_last_upd_yyyymmddhh24miss=>'20211225134116'
,p_last_updated_by=>'DEV'
,p_last_upd_yyyymmddhh24miss=>'20211225183552'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(9264033779429041)
@ -473,9 +473,6 @@ wwv_flow_api.create_ig_report_column(
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>177.297
,p_sort_order=>1
,p_sort_direction=>'DESC'
,p_sort_nulls=>'FIRST'
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(10276123871192635)
@ -485,6 +482,9 @@ wwv_flow_api.create_ig_report_column(
,p_is_visible=>true
,p_is_frozen=>false
,p_width=>181.828
,p_sort_order=>1
,p_sort_direction=>'DESC'
,p_sort_nulls=>'FIRST'
);
wwv_flow_api.create_ig_report_column(
p_id=>wwv_flow_api.id(10277027584192637)
@ -517,6 +517,148 @@ wwv_flow_api.create_page_plug(
,p_attribute_01=>'N'
,p_attribute_02=>'HTML'
);
wwv_flow_api.create_page_plug(
p_id=>wwv_flow_api.id(10746895084850208)
,p_plug_name=>'Activity'
,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=>40
,p_include_in_reg_disp_sel_yn=>'Y'
,p_plug_display_point=>'BODY'
,p_query_type=>'TABLE'
,p_query_table=>'SESSIONS_CHART'
,p_query_order_by=>'CHART_LABEL'
,p_include_rowid_column=>false
,p_plug_source_type=>'NATIVE_JET_CHART'
,p_plug_query_num_rows=>15
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
);
wwv_flow_api.create_jet_chart(
p_id=>wwv_flow_api.id(10746970438850209)
,p_region_id=>wwv_flow_api.id(10746895084850208)
,p_chart_type=>'line'
,p_height=>'400'
,p_animation_on_display=>'none'
,p_animation_on_data_change=>'none'
,p_orientation=>'vertical'
,p_data_cursor=>'auto'
,p_data_cursor_behavior=>'auto'
,p_hover_behavior=>'dim'
,p_stack=>'on'
,p_fill_multi_series_gaps=>false
,p_zoom_and_scroll=>'off'
,p_tooltip_rendered=>'Y'
,p_show_series_name=>true
,p_show_group_name=>true
,p_show_value=>true
,p_legend_rendered=>'off'
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(10747066785850210)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_seq=>10
,p_name=>'Users'
,p_location=>'REGION_SOURCE'
,p_items_value_column_name=>'COUNT_USERS'
,p_items_label_column_name=>'CHART_LABEL'
,p_line_style=>'solid'
,p_line_type=>'auto'
,p_marker_rendered=>'auto'
,p_marker_shape=>'circle'
,p_assigned_to_y2=>'on'
,p_items_label_rendered=>false
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(10747386473850213)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_seq=>20
,p_name=>'Pages'
,p_location=>'REGION_SOURCE'
,p_items_value_column_name=>'COUNT_PAGES'
,p_items_label_column_name=>'CHART_LABEL'
,p_line_style=>'solid'
,p_line_type=>'auto'
,p_marker_rendered=>'auto'
,p_marker_shape=>'circle'
,p_assigned_to_y2=>'on'
,p_items_label_rendered=>false
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(10747459332850214)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_seq=>30
,p_name=>'Requests'
,p_location=>'REGION_SOURCE'
,p_items_value_column_name=>'COUNT_REQUESTS'
,p_items_label_column_name=>'CHART_LABEL'
,p_line_style=>'solid'
,p_line_type=>'auto'
,p_marker_rendered=>'auto'
,p_marker_shape=>'circle'
,p_assigned_to_y2=>'off'
,p_items_label_rendered=>false
);
wwv_flow_api.create_jet_chart_series(
p_id=>wwv_flow_api.id(10747598070850215)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_seq=>40
,p_name=>'Others'
,p_location=>'REGION_SOURCE'
,p_items_value_column_name=>'COUNT_OTHERS'
,p_items_label_column_name=>'CHART_LABEL'
,p_line_style=>'solid'
,p_line_type=>'auto'
,p_marker_rendered=>'auto'
,p_marker_shape=>'circle'
,p_assigned_to_y2=>'off'
,p_items_label_rendered=>false
);
wwv_flow_api.create_jet_chart_axis(
p_id=>wwv_flow_api.id(10747601184850216)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_axis=>'y2'
,p_is_rendered=>'on'
,p_min=>0
,p_format_scaling=>'none'
,p_scaling=>'linear'
,p_baseline_scaling=>'zero'
,p_step=>1
,p_position=>'auto'
,p_major_tick_rendered=>'on'
,p_minor_tick_rendered=>'off'
,p_tick_label_rendered=>'on'
,p_split_dual_y=>'auto'
);
wwv_flow_api.create_jet_chart_axis(
p_id=>wwv_flow_api.id(10747251299850212)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_axis=>'y'
,p_is_rendered=>'on'
,p_format_type=>'decimal'
,p_decimal_places=>0
,p_format_scaling=>'none'
,p_scaling=>'linear'
,p_baseline_scaling=>'zero'
,p_position=>'auto'
,p_major_tick_rendered=>'on'
,p_minor_tick_rendered=>'off'
,p_tick_label_rendered=>'on'
);
wwv_flow_api.create_jet_chart_axis(
p_id=>wwv_flow_api.id(10747187438850211)
,p_chart_id=>wwv_flow_api.id(10746970438850209)
,p_axis=>'x'
,p_is_rendered=>'on'
,p_format_scaling=>'auto'
,p_scaling=>'linear'
,p_baseline_scaling=>'zero'
,p_major_tick_rendered=>'on'
,p_minor_tick_rendered=>'off'
,p_tick_label_rendered=>'on'
,p_tick_label_rotation=>'auto'
,p_tick_label_position=>'outside'
);
wwv_flow_api.create_page_button(
p_id=>wwv_flow_api.id(10577836810928805)
,p_button_sequence=>40

56
views/sessions_chart.sql Normal file
View File

@ -0,0 +1,56 @@
CREATE OR REPLACE VIEW sessions_chart AS
WITH t AS (
SELECT
NVL(d.user_id, LOWER(l.apex_user)) AS user_id,
l.application_id AS app_id,
l.application_name AS app_name, -- NULL for APEX Builder
l.page_id,
l.page_name,
SUBSTR(l.page_view_type, 1, 1) AS request_type,
l.page_view_type,
l.request_value,
l.view_timestamp AS requested_at
FROM apex_workspace_activity_log l
JOIN apex_workspaces w
ON w.workspace_id = l.workspace_id
JOIN apex_applications a
ON a.workspace = w.workspace
AND a.application_id = l.application_id
LEFT JOIN (
SELECT
UPPER(d.user_name) AS user_name,
LOWER(d.email) AS user_id
FROM apex_workspace_developers d
WHERE d.is_application_developer = 'Yes'
AND d.account_locked = 'No'
) d
ON d.user_name = l.apex_user
WHERE a.application_id = NVL(app.get_app_id(), a.application_id)
AND l.page_view_type IN ('Rendering', 'Processing', 'Ajax')
AND l.apex_user NOT IN ('nobody')
AND l.view_timestamp >= TRUNC(SYSDATE) - 1 -- G_TODAY
),
z AS (
SELECT
LEVEL AS bucket_id,
TRUNC(SYSDATE) + NUMTODSINTERVAL((LEVEL - 1) * 10, 'MINUTE') AS start_at,
TRUNC(SYSDATE) + NUMTODSINTERVAL( LEVEL * 10, 'MINUTE') AS end_at
FROM DUAL
CONNECT BY LEVEL <= (1440 / 10)
)
SELECT
z.bucket_id,
TO_CHAR(z.start_at, 'HH24:MI') AS chart_label,
--
NULLIF(COUNT(DISTINCT t.user_id), 0) AS count_users,
NULLIF(COUNT(DISTINCT t.page_id), 0) AS count_pages,
--
NULLIF(SUM(CASE WHEN t.app_id = app.get_app_id() THEN 1 ELSE 0 END), 0) AS count_requests,
NULLIF(SUM(CASE WHEN t.app_id IS NOT NULL AND t.app_name IS NULL THEN 1 ELSE 0 END), 0) AS count_others,
--
NULL AS count_events
FROM z
LEFT JOIN t
ON app.get_time_bucket(t.requested_at, 10) = z.bucket_id
GROUP BY z.bucket_id, TO_CHAR(z.start_at, 'HH24:MI');