summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF
diff options
context:
space:
mode:
authorTATTAVARADA <statta@research.att.com>2017-04-27 07:53:18 -0400
committerst782s <statta@research.att.com>2017-04-27 08:31:27 -0400
commit6beb446925c967aca92f5513adf36c5db77c00d6 (patch)
tree9392057ed0739de2445c5b2a2a8bee6dcdacbcf7 /ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF
parent246b225194e3e8dc1926294de591a94fd9787fa7 (diff)
[PORTAL-7] Rebase
This rebasing includes common libraries and common overlays projects abstraction of components Change-Id: Ia1efa4deacdc5701e6205104ac021a6c80ed60ba Signed-off-by: st782s <statta@research.att.com>
Diffstat (limited to 'ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF')
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/quartz.properties29
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor.properties172
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties20
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties0
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_pdf.properties30
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties305
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties.oracle282
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/conf/fusion.properties43
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/defs/definitions.xml194
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/.gitignore0
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp137
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp201
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp20
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp101
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp41
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp747
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html115
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp45
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp35
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp48
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp97
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp97
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp44
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/include.jsp30
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp36
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html324
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html274
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html87
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp1
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp494
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml352
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml48
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp135
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp31
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp38
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp39
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp39
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp38
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp58
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp229
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp25
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp623
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp80
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp419
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp55
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp171
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp103
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp89
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp40
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp64
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp179
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp84
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp40
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp2432
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp322
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp39
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp38
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp464
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp229
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp733
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp1335
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp96
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp1127
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp157
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp88
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp184
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp1122
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp320
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp115
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp771
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp107
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp167
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp109
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp424
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp74
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp376
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp754
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp157
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp172
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp173
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp86
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp116
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp112
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp226
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp369
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp85
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp184
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/error.jsp20
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/leafletMap.jsp216
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/login_external_ng.jsp79
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/net_map.jsp38
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/web.xml10
92 files changed, 20654 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/quartz.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/quartz.properties
new file mode 100644
index 00000000..9472ce70
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/quartz.properties
@@ -0,0 +1,29 @@
+#################################################################################
+# Quartz configurations for Quantum Work Flow #
+#################################################################################
+
+org.quartz.scheduler.instanceId = AUTO
+
+#################################################################################
+# Main configurations
+org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount = 30
+
+============================================================================
+# Configure JobStore
+#============================================================================
+
+org.quartz.jobStore.misfireThreshold = 60000
+
+org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
+org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+org.quartz.jobStore.useProperties = false
+#org.quartz.jobStore.dataSource = myDS
+org.quartz.jobStore.tablePrefix = FN_QZ_
+
+org.quartz.jobStore.isClustered = true
+org.quartz.jobStore.clusterCheckinInterval = 20000
+
+#============================================================================
+# Configure Datasources
+#============================================================================
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor.properties
new file mode 100644
index 00000000..d566f027
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor.properties
@@ -0,0 +1,172 @@
+##C## Mention the name of the framework. At present RAPTOR supports FUSION
+system=fusion
+##C## Determines the priority for the debug message.
+debug_level=5
+##C## Determines the number of records can be downloaded in excel when you select "download all" option.
+download_limit=65000
+csv_download_limit=10
+##C## Determines the number of records to be displayed in a single page.
+default_page_size=50
+##C## Determines the list size in the form field.
+form_fields_list_size=99000
+##C## Determines the scheduler interval
+#scheduler_interval=0 => disabled
+scheduler_interval=0
+##C## System Name
+system_name=RAPTOR
+##C## This is used for Bread crumbs.
+base_title=ANALYSIS
+##C## whether to allow SQL-based report definition (security risk); super users are always allowed to create SQL-based reports
+allow_sql_based_reports=yes
+##C## Determines whether to include disclaimer page at the bottom of each screen
+show_disclaimer=yes
+disclaimer_positioned_top_in_csvexcel=yes
+##C## Determines whether to display the form page as a separate page before running the report
+display_form_before_run=yes
+##C## Determines whether to include the form page on the report data page
+include_form_with_data=yes
+##C## Determines whether to cache chart data in the session => faster re-display if the data volume does not get too large
+cache_chart_data=yes
+##C## Determines whether to cache report data for the currently displayed page in the session => faster re-display
+ ##C## if the data volume does not get too large
+cache_cur_page_data=yes
+##C## Determines Chart width
+default_chart_width=700
+##C## Determines Chart height
+default_chart_height=420
+##C## Determines whether to permit report deletion only by report owner or by everyone with "write" access
+delete_only_by_owner=no
+##C## Determines whether to log each report execution and update time and user ID
+enable_report_log=yes
+##C## Determines whether to cache user roles info in memory (saves many DB reads, but does not account for roles
+ ##C## assigned after the cache was loaded)
+cache_user_roles=yes
+##C## Determines whether to convert month formats (e.g. MM/YYYY) to the last day of the month (true) or
+ ##C## first day (false) - like 12/2003 is converted to either 12/31/2003 or 12/01/2003
+month_format_use_last_day=no
+##C## Determines whether to print the report title in the download files
+print_title_in_download=yes
+##C## Determines whether to show report description when the report is run and in the quick links
+show_descr_at_runtime=no
+##C## Determines whether to skip labels on the Line chart axis when they overlap
+#DEPRECATED skip_chart_labels_to_fit=no
+##C## Determines whether to show chart types that are purpose and/or data specific
+show_nonstandard_charts=yes
+##C## Determines whether to allow the user to change the chart type at runtime
+allow_runtime_chart_sel=yes
+##C## Determines whether to display the report title as chart title as well
+display_chart_title=yes
+##C## Determines whether to merge/blank multi-level row headings in cross-tab report
+merge_crosstab_row_headings=yes
+##C## Determines whether to display chart when displaying the report at first or just a "Show Chart" button
+display_chart_by_default=yes
+##C## Determines whether to print the form field values in the download files
+print_params_in_download=yes
+##C## Determines the limitation to the characters in chart label.
+skip_chart_labels_limit=30
+##C## Determines whether to users with read-only rights for a report can copy it
+can_copy_on_read_only=yes
+##C## Determines the no of decimals to be displayed in Totals column
+#max_decimals_on_totals=-1 => don't truncate, display all decimal digits
+max_decimals_on_totals=2
+##C## Determines which JFreeChart to use.
+jfree_version=latest
+#jfree_version=0.9.11
+# Added this restriction so that heavily used system which contain
+# more than 1000 users can enable this feature not to display whole
+# users in the drop down menu
+display_all_users=yes
+##Sheet name
+sheet_name=raptor
+#shell_script_name=/home/XXXX/test.sh
+#download_query_folder=/XXXXXX/raptor/dwnld/query/
+## this directory is mentioned if the flat file is downloaded using shell script
+shell_script_dir=/titan/PROJECT3/RAPTOR/raptor/dwnld/
+flat_file_lower_limit=1
+flat_file_upper_limit=200000
+## whatever request mentioned here would be parsed in sql and request parameter would be filled
+request_get_params=isEmbedded
+print_footer_in_download=yes
+## footer mentioned here appears in downloaded excel
+footer_first_line=footer message 1
+footer_second_line=footer message 2
+## to run report in popup window
+report_in_popup_window=yes
+## to run each report in new popup window if the above is selected
+popup_in_new_window=yes
+## "Yes" allows the request param to be passed to the drill down report
+pass_request_param_in_drilldown=yes
+## Show PDF download icon
+show_pdf_download=yes
+# Show Folder Tree
+show_folder_tree=no
+#Show folder tree only for Admin Users
+show_folder_tree_only_to_admin_users=no
+#folder tree should be minimized
+folder_tree_minimized=yes
+## whatever session mentioned here would be parsed in sql and session parameter would be filled
+session_params=login_id
+display_formfield_info=yes
+customize_formfield_info=yes
+#schedule limit for end users
+schedule_limit=10
+# customized query if you need any restrictions for schedule and security tab for fusion
+#schedule_custom_query_for_users=getAllUsersByCustomer
+#schedule_custom_query_for_roles=getAllRolesByCustomer
+# customized query if you need any restrictions for schedule and security tab for prisms example
+#schedule_custom_query_for_users=SELECT au.user_id, au.first_name||' '||au.last_name user_name FROM app_user au order by 2
+schedule_custom_query_for_users=SELECT au.user_id id, concat(au.first_name,' ',au.last_name) name FROM fn_user au order by 2
+#schedule_custom_query_for_roles=SELECT ar.role_id, ar.descr role_name FROM app_role ar order by 2
+schedule_date_pattern=MM/dd/yyyy hh:mm:ss a
+## This is used to display in right format in chart timestamp axis as we give in the sql
+#chart_yearly_format=yyyy
+#chart_monthly_format=MMM-yyyy
+chart_daily_format=MM/dd/yyyy
+chart_hourly_format=MM/dd HH
+#chart_minute_format=HH:mm
+chart_minute_format=MM-dd-yyyy-HH:mm
+#chart_second_format=HH:mm:ss
+chart_second_format=MM-dd-yyyy
+#chart_millisecond_format=HH:mm:ss.S
+schedule_help_text=This form is used to schedule a specific Reporting Platform report to be delivered to one or more email addresses associated with your Company's Business Direct user logins. Note that report output delivered via email does not include the capability to drill down/back up to additional data levels. So, select the appropriate data level report for the scheduled report. View the status of scheduled report requests in the My Schedules menu item.
+use_loginid_in_schedYN=Y
+session_params_for_scheduling=login_id
+session_date_formfield_auto_incr=yes
+display_session_param_pdfexcel=login_id;Login Id
+session_params_for_displaying_in_scheduling=login_id;Login Id
+application_server=tomcat
+#gmap properties
+gmap_key=XXXXXXXXXXXXXXXXXXXX
+PROJECT-FOLDER=/Users/sundar/git/st_quantum/quantum/target/quantum-1.0
+#
+MARKET-SHAPEFILE-FOLDER=resources/files
+# output folder for files generated on server side
+OUTPUT-FOLDER=resources/temp
+# tile size in pixel
+TILE-SIZE=256
+#check if map is disabled or not
+map_allowed=Y
+max_drilldown_level=2
+admin_role_equiv_to_super_role=N
+show_loading_during_formfield_chain=Y
+show_print_icon=N
+globally_nowrap=N
+calendar_output_date_format=MM/dd/yyyy
+memory_threshold_percentage=99
+print_params_in_csv_download=yes
+notitle_in_dashboard=yes
+generate_store_sched_reports=yes
+show_excel_2007_download=yes
+print_excel_in_landscape=yes
+show_animated_chart_option=yes
+show_animated_chart_only=no
+adjust_content_based_on_height=yes
+custom_submit_button_text=Run Button
+customize_formfield_layout=yes
+#db_type=postgresql
+#### ORACLE ####
+#db_type=oracle
+#time_format=MM/DD/YYYY HH:MI:SS AM
+#### MARIADB ####
+db_type=mysql
+time_format=%m/%d/%Y %h:%i:%s %p
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
new file mode 100644
index 00000000..33ae0572
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
@@ -0,0 +1,20 @@
+temp_folder_path=/demeter/WebApps/dev/ECOMP_PORTAL/temp/
+upload_folder_path=/demeter/WebApps/dev/ECOMP_PORTAL/files/
+excel_template_path=/demeter/WebApps/dev/ECOMP_PORTAL/files/raptor_template/
+temp_folder_url=temp/
+upload_folder_url=upload/
+smtp_server=todo.smtp.com
+default_email_sender=email-name@email.com
+error_page=error_page
+jsp_context_path=raptor/
+img_folder_url=static/fusion/raptor/images/
+base_folder_url=static/fusion/raptor/
+direct_access_url=http://localhost:8080/quantum/raptor_email_attachment.htm?action=raptor&source_page=report_run&display_content=y
+#base_action_url=report.htm#/report_run/
+drill_action_url=report.htm#/report_run/c_master=
+base_action_url=report_wizard.htm?action=
+base_action_url_ng=report#/
+base_action_param=c_master=
+super_role_id=1
+admin_role_ids=1
+quick_links_menu_ids=HOME,CUSTOMER,REPORTS
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_pdf.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
new file mode 100644
index 00000000..d7f8249c
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
@@ -0,0 +1,30 @@
+## pdf file specific properties
+pdf_data_font_size=9
+pdf_data_font_family=Arial
+#reduce the font size from html config
+pdf_data_font_size_offset=2
+pdf_data_alternate_color=true
+#data row background(white), alternate(light light blue/gray)
+pdf_data_background_alternate_hex_code=#EDEDED
+pdf_data_default_background_hex_code=#FFFFFF
+#header font (white) background (gray)
+pdf_data_table_header_font_hex_code=#FFFFFF
+pdf_data_table_header_background_hex_code=#8A9BB3
+#footer header
+pdf_footer_font_size=9
+pdf_footer_font_family=Arial
+pdf_footer=footer message
+pdf_footer_font_size=7
+pdf_date_timezone=GMT
+pdf_date_pattern=MM/dd/yyyy hh:mm:ss a
+##page number position at 1 - footer middle, 0 -- header right, 2 - both
+pdf_page_number_position=1
+pdf_word_before_page_number=Page
+pdf_word_after_page_number=
+pdf_coverpage_firstcolumn_size=0.3
+pdf_image_auto_rotate=false
+display_create_owner_info=true
+#session_info=customer,customerId
+display_loginid_for_downloaded_by=false
+# please use false if you want landscape to be default.
+is_default_orientation_portrait=true
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties
new file mode 100644
index 00000000..c643bb97
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties
@@ -0,0 +1,305 @@
+#SQL Statements for PostgreSQL
+
+#ReportLoader.java
+
+load.custom.report.xml = SELECT cr.report_xml FROM cr_report cr WHERE rep_id=?
+
+# need to copy to oracle
+load.remoteDB.schema = SELECT 'local' SCHEMA_ID, 'local' SCHEMA_DESC, null DATASOURCE_TYPE FROM dual union SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE FROM SCHEMA_INFO a where schema_id <> 'local' order by schema_id
+load.remoteDB.schema.where = SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE FROM SCHEMA_INFO a where schema_id = '[schema_id]'
+#formfield rendering
+
+formfield.id.name.sql.prefix=SELECT id, name FROM (
+formfield.id.name.sql=SELECT id, name
+
+formfield.id.name.sql.suffix=
+
+report.security.create= SELECT coalesce(cr.owner_id, cr.create_id) AS owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, maint_id, DATE_FORMAT(cr.maint_date, '%m/%d/%Y') update_date, cr.public_yn FROM cr_report cr WHERE cr.rep_id = [rw.getReportID()]
+
+db.update.report.xml.mysql=UPDATE cr_report SET report_xml=? WHERE rep_id=?
+db.update.report.xml.mysql.select=SELECT rep_id,report_xml FROM cr_report where rep_id = ?
+db.update.report.xml = SELECT cr.rep_id, cr.report_xml FROM cr_report cr WHERE rep_id=? FOR UPDATE
+
+update.custom.report.rec = UPDATE cr_report SET title='[Utils.oracleSafe(rw.getReportName())]', descr='[Utils.oracleSafe(rw.getReportDescr())]', public_yn='[(rw.isPublic()]', menu_id='[rw.getMenuID()]', menu_approved_yn='[(rw.isMenuApproved()]', owner_id=[rw.getOwnerID()], maint_id=[rw.getUpdateID()], maint_date=STR_TO_DATE('[rw.getUpdateDate()]', '[Globals.getTimeFormat()]'), dashboard_type_yn='[(rw.isDashboardType()]', dashboard_yn= '[(rw.getReportType().equals(AppConstants.RT_DASHBOARD)]' WHERE rep_id = [rw.getReportID()]
+
+is.report.already.scheduled = select rep_id from cr_report_schedule where rep_id = ?
+
+create.custom.report.rec = INSERT INTO cr_report(rep_id, title, descr, public_yn, menu_id, menu_approved_yn, report_xml, owner_id, create_id, create_date, maint_id, maint_date, dashboard_type_yn, dashboard_yn, folder_id) VALUES([rw.getReportID()], '[Utils.oracleSafe(rw.getReportName())]', '[Utils.oracleSafe(rw.getReportDescr())]', '[rw.isPublic()]', '[rw.getMenuID()]', '[rw.isMenuApproved()]', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>', [rw.getOwnerID()], [rw.getCreateID()], STR_TO_DATE('[rw.getCreateDate()]', '[Globals.getTimeFormat()]'), [rw.getUpdateID()], STR_TO_DATE('[rw.getUpdateDate()]', '[Globals.getTimeFormat()]'), '[rw.isDashboardType()]', '[rw.getReportType().equals(AppConstants.RT_DASHBOARD)]',[rw.getFolderId()])
+
+get.user.report.names = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE coalesce(cr.owner_id, cr.create_id) = [userID]
+
+get.report.owner.id = SELECT coalesce(cr.owner_id, cr.create_id) AS owner FROM cr_report cr WHERE rep_id = ?
+
+delete.report.record.log = DELETE FROM cr_report_log WHERE rep_id = [reportID]
+
+delete.report.record.users = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]
+
+delete.report.record.schedule = DELETE FROM cr_report_schedule WHERE rep_id = [reportID]
+
+delete.report.record.access = DELETE FROM cr_report_access WHERE rep_id = [reportID]
+
+delete.report.record.email = DELETE FROM cr_report_email_sent_log WHERE rep_id = [reportID]
+
+delete.report.record.favorite = DELETE FROM cr_favorite_reports WHERE rep_id = [reportID]
+
+delete.report.record.report = DELETE FROM cr_report WHERE rep_id = [reportID]
+
+load.quick.links = select finalcr.rep_id, finalcr.title, finalcr.descr from (SELECT cr.rep_id, cr.title, cr.descr FROM (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra LEFT JOIN cr_report cr ON cr.rep_id = ra.rep_id WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND cr.menu_approved_yn = 'Y' AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) UNION SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' or EXISTS (select * from fn_user_role where user_id=[userID] and role_id in (1)))) finalcr ORDER BY finalcr.title
+
+load.folder.reports = SELECT cr.rep_id, cr.rep_id report_id, concat([rep_title_sql] , (CASE WHEN cr.public_yn = 'Y' THEN '' ELSE '[PRIVATE_ICON]' END),cr.title,'</a>') title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn FROM cr_report cr JOIN app_user au ON coalesce(cr.owner_id, cr.create_id) = au.user_id AND cr.folder_id= '[folderId]' LEFT JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL(SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id
+#If roleList.toString() is '' PostgreSQL returns an error - needs to be null instead of empty
+
+load.folder.reports.user = AND coalesce(cr.owner_id, cr.create_id) = [userID]
+
+load.folder.reports.publicsql = AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)
+
+load.quick.download.links = SELECT a.file_name, b.title,DATE_FORMAT(a.dwnld_start_time, '%W %d-%m-%Y %H:%i:%s') as time, a.dwnld_start_time FROM cr_report_dwnld_log a, cr_report b where a.user_id = [userID] and a.rep_id = b.rep_id and (a.dwnld_start_time) >= STR_TO_DATE(DATE_FORMAT(now() - INTERVAL 1 DAY, '%m/%d/%Y'), '%m/%d/%Y') and a.record_ready_time is not null order by a.dwnld_start_time
+
+load.reports.to.schedule = SELECT cr.rep_id, Initcap(cr.title), cr.descr FROM cr_report cr LEFT OUTER JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id AND (cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL or cr.owner_id = [userID] )ORDER BY Initcap(cr.title)
+
+load.reports.to.add.in.dashboard = SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr LEFT OUTER JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) AND (cr.dashboard_yn = 'N' or cr.dashboard_yn is null) ORDER BY cr.title
+
+load.my.recent.links = select rep_id, title, descr, form_fields from ( select rep_id, title, descr, form_fields from (select cr.rep_id, cr.title, a.form_fields, cr.descr, a.log_time, a.user_id, a.action, a.action_value from cr_report_log a, cr_report cr where user_id = [userID] AND action = 'Report Execution Time' and a.rep_id = cr.rep_id order by log_time desc) AS x) AS y where LIMIT 1, 6
+
+create.report.log.entry = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], now(), [userID], '[action]' , '[executionTime]', '[form_fields]')
+
+create.report.log.entry.exec.time = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], NOW() + INTERVAL 1 SECOND, [userID], '[action]' , '[executionTime]', '[formFields]')
+
+clear.report.log.entries = DELETE FROM cr_report_log WHERE rep_id = ? and user_id = ?
+
+load.report.log.entries = SELECT x.log_time, x.user_id, (CASE WHEN x.action = 'Report Execution Time' THEN concat('<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master=',x.rep_id,'&',x.form_fields,'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\">',x.action,'</a>') ELSE x.action END) action, (CASE WHEN x.action = 'Report Execution Time' THEN action_value ELSE 'N/A' END) time_taken, (CASE WHEN x.action = 'Report Execution Time' THEN concat('<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master=',x.rep_id,'&',x.form_fields,'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\"><img src=\"[AppUtils.getImgFolderURL()]test_run.gif" width=\"12\" height=\"12\" border=0 alt=\"Run report\"/></a>') ELSE 'N/A' END) run_image, x.name FROM (SELECT rl.rep_id, DATE_FORMAT(rl.log_time, '%m/%d/%Y %h:%i:%s %p') log_time, rl.action_value, concat(fuser.last_name ,', ',fuser.first_name) name, rl.user_id, rl.action, rl.form_fields FROM cr_report_log rl, fn_user fuser WHERE rl.rep_id = [nvls(reportId)] and rl.action != 'Report Run' and fuser.user_id = rl.user_id ORDER BY rl.log_time DESC) x LIMIT 100
+
+does.user.can.schedule.report = select crs.sched_user_id, count(*) from cr_report_schedule crs where sched_user_id = [userId] group by crs.sched_user_id having count(*) >= [Globals.getScheduleLimit()]
+
+does.user.can.schedule = select crs.schedule_id from cr_report_schedule crs where schedule_id = [scheduleId]
+
+get.system.date.time = select DATE_FORMAT(now(),'%m/%d/%Y %H:%i:%s')
+
+get.next.day.date.time = select DATE_FORMAT(NOW() + INTERVAL 1 DAY,'%m/%d/%Y %H:%i:%s')
+
+get.next.fifteen.minutes.date.time = select DATE_FORMAT(NOW() + INTERVAL 15 MINUTES,'%m/%d/%Y %H:%i:%s')
+
+get.next.thirty.minutes.date.time = select DATE_FORMAT(NOW() + INTERVAL 30 MINUTES,'%m/%d/%Y %H:%i:%s')
+
+get.template.file = select template_file from cr_report_template_map where report_id = [reportId]
+
+load.pdf.img.lookup = select image_id, image_loc from cr_raptor_pdf_img
+
+load.action.img.lookup = select image_id, image_loc from cr_raptor_action_img
+
+
+#ActionHandler.java
+
+report.values.map.def.a = SELECT x FROM (SELECT DISTINCT
+
+report.values.map.def.b = TO_CHAR([colName], '[nvl(displayFormat, AppConstants.DEFAULT_DATE_FORMAT)]')
+
+report.values.map.def.c = [colName]
+
+report.values.map.def.d = x FROM [rdef.getTableById(tableId).getTableName()] WHERE [colName] IS NOT NULL ORDER BY 1) xx LIMIT <= [Globals.getDefaultPageSize()]
+
+test.sched.cond.popup = SELECT 1 WHERE EXISTS ([sql])
+
+download.all.email.sent = Select user_id, rep_id from CR_REPORT_EMAIL_SENT_LOG where gen_key='[pdfAttachmentKey.trim()]' and log_id =[report_email_sent_log_id.trim()] and (now() - sent_date) < '1 day' limit 1
+
+download.all.gen.key = select schedule_id from cr_report_email_sent_log u where U.GEN_KEY = '[pdfAttachmentKey]'
+
+download.all.retrieve = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.run_date IS NOT NULL AND rs.schedule_id = [scheduleId]) x, cr_report r, app_user au WHERE x.rep_id = r.rep_id AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [scheduleId] UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and rsu2.schedule_id = [scheduleId]))
+
+download.all.insert = insert into cr_report_dwnld_log (user_id,rep_id,file_name,dwnld_start_time,filter_params) values (?,?,?,?,?)
+
+#ReportWrapper.java
+
+report.wrapper.format = SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]
+
+generate.subset.sql = SELECT [colNames.toString()] FROM (SELECT [colNames.toString()] FROM ([reportSQL]) AS x ) AS y
+
+report.sql.only.first.part = SELECT [colNames.toString()] FROM (SELECT [colNames.toString()] FROM (
+
+report.sql.only.second.part.a = [startRow]
+
+report.sql.only.second.part.b = [pageSize]
+#MYSQL: LIMIT [startRow], [pageSize]
+#ORacle: rownum >= [startRow] and rownum <= ([startRow]+[pageSize])
+#Postgre: limit [pageSize] offset [startRow]
+
+report.sql.only.second.part.b.noorderby = LIMIT [startRow]
+
+generate.sql.visual.select = SELECT
+
+generate.sql.visual.count = COUNT(*) cnt
+
+generate.sql.visual.dual =
+#No DUAL table in PostgreSQL so this is blank
+
+#ReportRuntime.java
+
+load.crosstab.report.data = SELECT [colNames.toString()] FROM ( [reportSQL]
+
+#RaptorRunHandler.java
+
+generate.sql.handler = SELECT x.* from ([sql]) AS x LIMIT 2
+
+generate.sql.select = SELECT [colNames.toString()] FROM (SELECT [colNames.toString()] FROM ([sql]) AS y) AS x
+
+#ReportSchedule.java
+
+load.schedule.data = SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]
+
+load.schedule.getid = SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id
+
+load.schedule.users = SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL
+
+new.schedule.data = select coalesce(max(schedule_id),0)+1 AS sequence from cr_report_schedule
+
+new.report.data = select coalesce(max(rep_id),0)+1 AS rep_id from cr_report
+
+execute.update = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]
+
+execute.update.users = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])
+
+execute.update.roles = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])
+
+execute.update.activity = INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))
+
+delete.schedule.data = SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]
+
+delete.schedule.data.users = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]
+
+delete.schedule.data.id = DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]
+
+load.cond.sql = SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?
+
+load.cond.sql.select = SELECT condition_sql FROM cr_report_schedule WHERE schedule_id = [scheduleId]
+
+persist.cond.sql.update = update cr_report_schedule set condition_large_sql = '' where schedule_id = [scheduleId]
+#EMPTY CLOB() changed to ''
+
+persist.cond.sql.large = SELECT condition_large_sql FROM cr_report_schedule cr WHERE schedule_id=? FOR UPDATE
+
+persist.cond.sql.set = update cr_report_schedule set condition_sql = ? where schedule_id = [scheduleId]
+
+#DataCache.java
+
+get.data.view.actions = SELECT ts.web_view_action FROM cr_table_source ts WHERE ts.web_view_action IS NOT NULL
+
+get.public.report.id.names = SELECT rep_id, title FROM cr_report WHERE public_yn = 'Y' ORDER BY title
+
+get.private.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE cr.rep_id not in (select rep_id from cr_report_access cra where user_id = '[user_id]'
+
+get.private.accessible.names.if = OR role_id in (
+
+get.private.accessible.names.b = ) AND public_yn = 'N' and cr.owner_id = '[user_id]' order by 2
+
+get.group.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE cr.rep_id in (select rep_id from cr_report_access cra where user_id = '[user_id]'
+
+get.group.accessible.names.b = ) AND public_yn = 'N' order by 2
+
+get.report.table.sources.a = SELECT table_name, display_name, pk_fields, web_view_action, large_data_source_yn, filter_sql FROM cr_table_source
+
+get.report.table.sources.where = where SOURCE_DB= '[dBInfo]'
+
+get.report.table.sources.if = where SOURCE_DB is null or SOURCE_DB = '[AppConstants.DB_LOCAL]'
+
+get.report.table.sources.else = ORDER BY table_name
+
+grab.report.table.a = SELECT ts.table_name, ts.display_name, ts.pk_fields, ts.web_view_action, ts.large_data_source_yn, ts.filter_sql FROM cr_table_source ts WHERE
+
+grab.report.table.if = ts.SOURCE_DB= '[dBInfo]'
+
+grab.report.table.else = (ts.SOURCE_DB is null or ts.SOURCE_DB = '[AppConstants.DB_LOCAL]')
+
+grab.report.table.b = except SELECT ts.table_name, ts.display_name, ts.pk_fields, ts.web_view_action, ts.large_data_source_yn, ts.filter_sql from cr_table_source ts where table_name in (select table_name from cr_table_role where role_id not IN [sb.toString()]) and
+
+grab.report.table.c = ORDER BY 1
+
+get.report.table.crjoin = SELECT src_table_name, dest_table_name, join_expr FROM cr_table_join
+
+get.report.table.joins = SELECT tj.src_table_name, tj.dest_table_name, tj.join_expr FROM cr_table_join tj WHERE ((EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name AND trs.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name))) AND ((EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name AND trd.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name)))
+
+generate.report.table.col = SELECT a.table_name, a.column_name, a.data_type, a.label FROM user_column_def a WHERE a.table_name = '[tableName.toUpperCase()]' ORDER BY a.column_id
+
+generate.db.user.sql.a = SELECT utc.table_name, utc.column_name, utc.data_type,
+
+generate.db.user.sql.if = utc.column_name FROM user_tab_columns utc
+
+generate.db.user.sql.else = coalesce(x.label, utc.column_name) FROM user_tab_columns utc
+
+generate.db.user.sql.b = WHERE utc.table_name = '[tableName.toUpperCase()]'
+
+generate.db.user.sql.c = AND utc.table_name = x.table_name AND utc.column_name = x.column_name
+
+generate.db.user.sql.d = ORDER BY utc.column_id
+
+#SearchHandler.java
+
+load.report.search.result = SELECT cr.rep_id, cr.rep_id report_id, [rep_title_sql] title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn, case when report_xml like '%<allowSchedule>N</allowSchedule>%' then 'N' when report_xml like '%<allowSchedule>Y</allowSchedule>%' or 1 = (select distinct 1 from cr_report_schedule where rep_id = cr.rep_id) then 'Y' else 'N' end FROM cr_report cr JOIN fn_user au ON coalesce (cr.owner_id, cr.create_id) = au.user_id [fReportID] [fReportName] LEFT JOIN(SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON ra.rep_id = cr.rep_id
+
+load.report.search.instr = WHERE cr.menu_id LIKE '%[menuId]%'
+
+load.report.search.result.user = WHERE coalesce(cr.owner_id, cr.create_id) = [userID]
+
+load.report.search.result.public = WHERE (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)
+
+load.report.search.result.fav = WHERE cr.rep_id in (select rep_id from cr_favorite_reports where user_id = [userID]
+
+load.report.search.result.sort = ORDER BY CASE coalesce(cr.owner_id, cr.create_id) WHEN [userID] THEN ' ' WHEN 'upper(concat(au.first_name,' ',au.last_name))' ELSE 'upper(cr.title)' END
+
+load.folder.report.result = SELECT cr.rep_id, cr.rep_id report_id, concat([rep_title_sql] , (CASE WHEN cr.public_yn = 'Y' THEN '' ELSE '[PRIVATE_ICON]' END),cr.title,'</a>') title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, TO_CHAR(cr.create_date, 'MM/DD/YYYY') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn FROM cr_report cr JOIN fn_user au ON coalesce (cr.owner_id, cr.create_id) = au.user_id AND TO_CHAR(cr.rep_id, 'FM99999999') like coalesce('%[fReportID]%', TO_CHAR(cr.rep_id, 'FM99999999')) AND UPPER(cr.title) LIKE UPPER('%[fReportName]%') LEFT JOIN(SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON ra.rep_id = cr.rep_id
+
+load.folder.report.result.sort = ORDER BY CASE coalesce(cr.owner_id, cr.create_id) WHEN [userID] THEN ' ' WHEN '(concat(au.first_name,' ',au.last_name))' ELSE 'cr.title' END
+
+#WizardProcessor.java
+
+process.filter.add.edit = '[argValue]'
+
+#ReportDefinition.java
+
+persist.report.adhoc = SELECT nextval('[Globals.getAdhocReportSequence()]') AS sequence
+
+#Globals.java
+
+initialize.roles = SELECT 1 WHERE EXISTS (SELECT 1 FROM cr_table_role)
+
+initialize.version = SELECT cr_raptor.get_version
+
+# scheduler
+
+
+scheduler.available.schedules = SELECT x.rep_id, x.schedule_id, x.conditional_yn, x.condition_large_sql, x.notify_type, x.max_row, x.initial_formfields, x.processed_formfields, r.title, x.user_id FROM ( SELECT rs.rep_id, rs.schedule_id, rs.sched_user_id user_id, rs.conditional_yn, rs.condition_large_sql, rs.notify_type, rs.max_row, rs.initial_formfields, rs.processed_formfields FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.start_date <= [currentDate] AND (rs.end_date >= [currentDate] or rs.end_date is null ) AND rs.run_date IS NOT NULL ) x, cr_report r WHERE x.rep_id = r.rep_id
+
+random.string = select ( concat('Z' , round(random() * 1000000000000) ) )
+
+
+scheduler.user.emails = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.start_date <= now() AND rs.end_date >= now() AND rs.run_date IS NOT NULL AND rs.schedule_id = [p_schedule_id] ) x, cr_report r, fn_user au WHERE x.rep_id = r.rep_id AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [p_schedule_id] UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and rsu2.schedule_id = [p_schedule_id]))
+
+
+# my logins
+
+app.query = SELECT APP_ID, ML_APP_NAME, MOTS_ID from fn_app
+
+user.log.query = SELECT DISTINCT IFNULL(SBCID, '') CUID, '' AWID, CONCAT('"',IFNULL(SBCID, ''),'"') APPLICATIONUSERID, CONCAT('"',IFNULL(FIRST_NAME, ''),'"') FIRST_NAME, CONCAT('"',substr(IFNULL(MIDDLE_NAME, ''), 0, 1),'"') MIDDLE_INITIAL, CONCAT('"',IFNULL(LAST_NAME, ''),'"') LAST_NAME, IFNULL(DATE_FORMAT(LAST_LOGIN_DATE, '%Y/%m/%d'), '') LAST_LOGON_DATE, DATE_FORMAT(CREATED_DATE, '%Y/%m/%d') ACCOUNT_ACTIVATION_DATE, IFNULL(DATE_FORMAT(MODIFIED_DATE, '%Y/%m/%d'), '') LAST_DATE_ACCOUNT_MODIFIED, '' LAST_PASSWORD_CHANGE_DATE, CONCAT('"',IFNULL(FIRST_NAME, ''),' ',IFNULL(MIDDLE_NAME, ''),' ',IFNULL(LAST_NAME, ''),'"') FULL_USER_NAME, '' NT_ID, IFNULL(EMAIL, '') EMAIL FROM FN_USER FU, FN_USER_ROLE FUR WHERE FU.USER_ID \= FUR.USER_ID and FUR.app_id \= ? and ACTIVE_YN \= 'Y' and sbcid is not null order by 1
+
+profile.log.query = SELECT DISTINCT CONCAT('"' , ROLE_NAME , '"') PROFILE_NAME, '""' SECURITY_SETTINGS FROM FN_ROLE FR, FN_USER_ROLE FUR WHERE FUR.ROLE_ID \= FR.ROLE_ID and FR.ACTIVE_YN \= 'Y' and ((FUR.APP_ID \= 1 and FR.ROLE_NAME <> 'Standard User') or (FUR.APP_ID \= ? and FUR.APP_ID <> 1)) ORDER BY 1
+
+user.profile.log.query = SELECT DISTINCT IFNULL(SBCID, '') CUID, '' AWID, CONCAT('"' , IFNULL(SBCID, '') , '"') APPLICATIONUSERID , CONCAT('"' , ROLE_NAME , '"') PROFILE_NAME FROM FN_USER A, FN_USER_ROLE B, FN_ROLE C WHERE A.USER_ID \= B.USER_ID AND B.ROLE_ID \= C.ROLE_ID AND A.ACTIVE_YN \= 'Y' AND C.ACTIVE_YN \= 'Y' AND a.sbcid is not null AND ((B.APP_ID \= 1 and C.ROLE_NAME <> 'Standard User') or (B.APP_ID \= ? and B.APP_ID <> 1)) ORDER BY 1
+
+all.accounts.log.query = SELECT DISTINCT IFNULL(SBCID, '') CUID, (case when A.ACTIVE_YN\='Y' then 'ACTIVE' else 'INACTIVE' end) ACTIVE_YN, CONCAT('"' , IFNULL(SBCID, '') , '"') APPLICATIONUSERID , IFNULL(DATE_FORMAT(LAST_LOGIN_DATE, '%Y/%m/%d'), '') LAST_LOGON_DATE, '' LAST_PASSWORD_CHANGE_DATE, CONCAT('"' , ROLE_NAME , '"') PROFILE_NAME FROM FN_USER A, FN_USER_ROLE B, FN_ROLE C WHERE A.USER_ID \= B.USER_ID AND B.ROLE_ID \= C.ROLE_ID AND a.sbcid is not null AND ((B.APP_ID \= 1 and C.ROLE_NAME <> 'Standard User') or (B.APP_ID \= ? and B.APP_ID <> 1)) ORDER BY 1
+
+# basic sql
+
+seq.next.val = SELECT nextval('[sequenceName]') AS id
+
+current.date = now()
+
+nvl = IFNULL
+
+# report security
+report.user.access = SELECT ra.role_id, ra.user_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.rep_id = [reportID]
+add.user.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, NULL, [userID], '[readOnlyAccess]')
+update.user.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND user_id=[userID]
+remove.user.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND user_id=[userID]
+add.role.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, [roleID], NULL, '[readOnlyAccess]')
+update.role.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND role_id=[roleID]
+remove.role.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND role_id=[roleID]
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties.oracle b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties.oracle
new file mode 100644
index 00000000..2c5af5e9
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/conf/sql.properties.oracle
@@ -0,0 +1,282 @@
+#SQL Statements for OracleSQL
+
+#ReportLoader.java
+
+load.custom.report.xml = SELECT cr.report_xml FROM cr_report cr WHERE rep_id=?
+
+# need to copy to oracle
+load.remoteDB.schema = SELECT 'local' SCHEMA_ID, 'local' SCHEMA_DESC, null DATASOURCE_TYPE FROM DUAL union SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE FROM SCHEMA_INFO a where schema_id <> 'local' order by schema_id
+load.remoteDB.schema.where = SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE FROM SCHEMA_INFO a where schema_id = '[schema_id]'
+#formfield rendering
+
+formfield.id.name.sql.prefix=SELECT id, name FROM (
+formfield.id.name.sql=SELECT id, name
+
+formfield.id.name.sql.suffix=
+
+report.security.create= SELECT nvl(cr.owner_id, cr.create_id) AS owner_id, cr.create_id, TO_CHAR(cr.create_date, 'MM/dd/YYYY') create_date, maint_id, TO_CHAR(cr.maint_date, 'MM/dd/YYYY') update_date, cr.public_yn FROM cr_report cr WHERE cr.rep_id = [rw.getReportID()]
+
+db.update.report.xml = SELECT cr.rep_id, cr.report_xml FROM cr_report cr WHERE rep_id=? FOR UPDATE
+
+update.custom.report.rec = UPDATE cr_report SET title='[Utils.oracleSafe(rw.getReportName())]', descr='[Utils.oracleSafe(rw.getReportDescr())]', public_yn='[(rw.isPublic()]', menu_id='[rw.getMenuID()]', menu_approved_yn='[(rw.isMenuApproved()]', owner_id=[rw.getOwnerID()], maint_id=[rw.getUpdateID()], maint_date=TO_DATE('[rw.getUpdateDate()]', '[Globals.getTimeFormat()]'), dashboard_type_yn='[(rw.isDashboardType()]', dashboard_yn= '[(rw.getReportType().equals(AppConstants.RT_DASHBOARD)]' WHERE rep_id = [rw.getReportID()]
+
+is.report.already.scheduled = select rep_id from cr_report_schedule where rep_id = ?
+
+create.custom.report.rec = INSERT INTO cr_report(rep_id, title, descr, public_yn, menu_id, menu_approved_yn, report_xml, owner_id, create_id, create_date, maint_id, maint_date, dashboard_type_yn, dashboard_yn, folder_id) VALUES([rw.getReportID()], '[Utils.oracleSafe(rw.getReportName())]', '[Utils.oracleSafe(rw.getReportDescr())]', '[rw.isPublic()]', '[rw.getMenuID()]', '[rw.isMenuApproved()]', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>', [rw.getOwnerID()], [rw.getCreateID()], TO_DATE('[rw.getCreateDate()]', '[Globals.getTimeFormat()]'), [rw.getUpdateID()], TO_DATE('[rw.getUpdateDate()]', '[Globals.getTimeFormat()]'), '[rw.isDashboardType()]', '[rw.getReportType().equals(AppConstants.RT_DASHBOARD)]',[rw.getFolderId()])
+
+get.user.report.names = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE nvl(cr.owner_id, cr.create_id) = [userID]
+
+get.report.owner.id = SELECT nvl(cr.owner_id, cr.create_id) owner FROM cr_report cr WHERE rep_id = ?
+
+delete.report.record.log = DELETE FROM cr_report_log WHERE rep_id = [reportID]
+
+delete.report.record.users = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]
+
+delete.report.record.schedule = DELETE FROM cr_report_schedule WHERE rep_id = [reportID]
+
+delete.report.record.access = DELETE FROM cr_report_access WHERE rep_id = [reportID]
+
+delete.report.record.email = DELETE FROM cr_report_email_sent_log WHERE rep_id = [reportID]
+
+delete.report.record.favorite = DELETE FROM cr_favorite_reports WHERE rep_id = [reportID]
+
+delete.report.record.report = DELETE FROM cr_report WHERE rep_id = [reportID]
+
+load.quick.links = select finalcr.rep_id, finalcr.title, finalcr.descr from (SELECT cr.rep_id, cr.title, cr.descr FROM (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra LEFT JOIN cr_report cr ON cr.rep_id = ra.rep_id WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND cr.menu_approved_yn = 'Y' AND (nvl(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) UNION SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND (nvl(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' or EXISTS (select * from fn_user_role where user_id=[userID] and role_id in (1)))) finalcr ORDER BY finalcr.title
+
+load.folder.reports = SELECT cr.rep_id, cr.rep_id report_id, ([rep_title_sql] || (CASE WHEN cr.public_yn = 'Y' THEN '' ELSE '[PRIVATE_ICON]' END)||cr.title||'</a>') title, cr.descr, (au.first_name||' '||au.last_name) owner_name, TO_CHAR(cr.create_date, 'MM/DD/YYYY') create_date, (CASE WHEN nvl(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE nvl(ra.read_only_yn, 'Y') END) read_only_yn, DECODE(NVL(cr.owner_id, cr.create_id), [userID], 'Y', 'N') user_is_owner_yn FROM cr_report cr JOIN app_user au ON nvl(cr.owner_id, cr.create_id) = au.user_id AND cr.folder_id= '[folderId]' LEFT JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL(SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id
+
+load.folder.reports.user = AND nvl(cr.owner_id, cr.create_id) = [userID]
+
+load.folder.reports.publicsql = AND (nvl(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)
+
+load.quick.download.links = SELECT a.file_name, b.title,to_char(a.dwnld_start_time, 'Dy DD-Mon-YYYY HH24:MI:SS') as time, a.dwnld_start_time FROM cr_report_dwnld_log a, cr_report b where a.user_id = [userID] and a.rep_id = b.rep_id and (a.dwnld_start_time) >= to_date(to_char(sysdate-24/24, 'mm/dd/yyyy'), 'mm/dd/yyyy') and a.record_ready_time is not null order by a.dwnld_start_time desc
+
+load.reports.to.schedule = SELECT cr.rep_id, Initcap(cr.title), cr.descr FROM cr_report cr, (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra WHERE cr.rep_id = ra.rep_id (+) AND (cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL or cr.owner_id = [userID] ) ORDER BY Initcap(cr.title)
+
+load.reports.to.add.in.dashboard = SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr, (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra WHERE cr.rep_id = ra.rep_id (+) AND (nvl(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) AND (cr.dashboard_yn = 'N' or cr.dashboard_yn is null) ORDER BY cr.title
+
+load.my.recent.links = select rep_id, title, descr, form_fields from ( select rownum, rep_id, title, descr, form_fields from (select cr.rep_id, cr.title, a.form_fields, cr.descr, a.log_time, a.user_id, a.action, a.action_value from cr_report_log a, cr_report cr where user_id = [userID] and action = 'Report Execution Time' and a.rep_id = cr.rep_id order by log_time desc) x where rownum <= 6 ) y where rownum >= 1
+
+create.report.log.entry = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], SYSDATE, [userID], '[action]' , '[executionTime]', '[form_fields]')
+
+create.report.log.entry.exec.time = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], sysdate+1/(24*60*60), [userID], '[action]' , '[executionTime]', '[formFields]')
+
+clear.report.log.entries = DELETE from cr_report_log WHERE rep_id = ? and user_id = ?
+
+load.report.log.entries = SELECT x.log_time, x.user_id, (CASE WHEN x.action = 'Report Execution Time' THEN '<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master='||x.rep_id||'&'||x.form_fields||'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\">'||x.action||'</a>' ELSE x.action END) action, (CASE WHEN x.action = 'Report Execution Time' THEN action_value ELSE 'N/A' END) time_taken, (CASE WHEN x.action = 'Report Execution Time' THEN '<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master='||x.rep_id||'&'||x.form_fields||'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\"><img src=\"[AppUtils.getImgFolderURL()]test_run.gif\" width=\"12\" height=\"12\" border=0 alt=\"Run report\"/></a>' ELSE 'N/A' END) run_image, x.name FROM (SELECT rl.rep_id, TO_CHAR(rl.log_time, 'Month DD, YYYY HH:MI:SS AM') log_time, rl.action_value, fuser.last_name ||', '||fuser.first_name name, rl.user_id, rl.action, rl.form_fields FROM cr_report_log rl, fn_user fuser WHERE rl.rep_id = [nvls(reportId)] and rl.action != 'Report Run' and fuser.user_id = rl.user_id ORDER BY rl.log_time DESC) x WHERE ROWNUM <= 100
+
+does.user.can.schedule.report = select crs.sched_user_id, count(*) from cr_report_schedule crs where sched_user_id = [userId] group by crs.sched_user_id having count(*) >= [Globals.getScheduleLimit()]
+
+does.user.can.schedule = select crs.schedule_id from cr_report_schedule crs where schedule_id = [scheduleId]
+
+get.system.date.time = select to_char(sysdate,'MM/dd/yyyy HH24:mi:ss') from dual
+
+get.next.day.date.time = select to_char(sysdate+1,'MM/dd/yyyy HH24:mi:ss') from dual
+
+get.next.fifteen.minutes.date.time = select to_char(sysdate+15/(24*60),'MM/dd/yyyy HH24:mi:ss') from dual
+
+get.next.thirty.minutes.date.time = select to_char(sysdate+30/(24*60),'MM/dd/yyyy HH24:mi:ss') from dual
+
+get.template.file = select template_file from cr_report_template_map where report_id = [reportId]
+
+load.pdf.img.lookup = select image_id, image_loc from cr_raptor_pdf_img
+
+load.action.img.lookup = select image_id, image_loc from cr_raptor_action_img
+
+#ActionHandler.java
+
+report.values.map.def.a = SELECT x FROM (SELECT DISTINCT
+
+report.values.map.def.b = TO_CHAR([colName], '[nvl(displayFormat, AppConstants.DEFAULT_DATE_FORMAT)]')
+
+report.values.map.def.c = [colName]
+
+report.values.map.def.d = x FROM [rdef.getTableById(tableId).getTableName()] WHERE [colName] IS NOT NULL ORDER BY 1) xx WHERE <= [Globals.getDefaultPageSize()]
+
+test.sched.cond.popup = SELECT 1 FROM DUAL WHERE EXISTS ([sql])
+
+download.all.email.sent = Select user_id, rep_id from CR_REPORT_EMAIL_SENT_LOG where rownum = 1 and gen_key='[pdfAttachmentKey.trim()]' and log_id =[report_email_sent_log_id.trim()] and (sysdate - sent_date) < 1
+
+download.all.gen.key = select schedule_id from cr_report_email_sent_log u where U.GEN_KEY = '[pdfAttachmentKey]'
+
+download.all.retrieve = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.run_date IS NOT NULL AND rs.schedule_id = [scheduleId]) x, cr_report r, app_user au WHERE x.rep_id = r.rep_id AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [scheduleId] UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and rsu2.schedule_id = [scheduleId]))
+
+download.all.insert = insert into cr_report_dwnld_log (user_id,rep_id,file_name,dwnld_start_time,filter_params) values (?,?,?,?,?)
+
+#ReportWrapper.java
+
+report.wrapper.format = SELECT NVL(cr.owner_id, cr.create_id) owner_id, cr.create_id, TO_CHAR(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, TO_CHAR(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id=[reportID]
+
+generate.subset.sql = SELECT [colNames.toString()] FROM (SELECT ROWNUM rnum, [colNames.toString()] FROM ([reportSQL]) x ) y
+
+report.sql.only.first.part = SELECT rnum,[colNames.toString()] FROM (SELECT ROWNUM rnum, [colNames.toString()] FROM (
+
+report.sql.only.second.part.a = WHERE ROWNUM <= [endRow]
+
+report.sql.only.second.part.b = ) y WHERE rnum >= [startRow] and rownum <= ([startRow]+[pageSize]) ORDER BY rnum
+
+report.sql.only.second.part.b.noorderby = AND rnum >= [startRow]
+
+generate.sql.visual.select = SELECT
+
+generate.sql.visual.count = COUNT(*) cnt
+
+generate.sql.visual.dual = FROM DUAL
+
+#ReportRuntime.java
+
+load.crosstab.report.data = SELECT ROWNUM rnum, [colNames.toString()] FROM ([reportSQL])
+
+#RaptorRunHandler.java
+
+generate.sql.handler = select ROWNUM rnum, x.* from ([sql]) x where rownum <= 2
+
+generate.sql.select = SELECT [colNames.toString()] FROM (SELECT ROWNUM rnum, [colNames.toString()] FROM ([sql]) x
+
+#ReportSchedule.java
+
+load.schedule.data = SELECT rs.enabled_yn, TO_CHAR(rs.start_date, 'MM/DD/YYYY') start_date, TO_CHAR(rs.end_date, 'MM/DD/YYYY') end_date, TO_CHAR(rs.run_date, 'MM/DD/YYYY') run_date, NVL(TO_CHAR(rs.run_date, 'HH'), '12') run_hour, NVL(TO_CHAR(rs.run_date, 'MI'), '00') run_min, NVL(TO_CHAR(rs.run_date, 'AM'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, NVL(TO_CHAR(rs.end_date, 'HH'), '11') end_hour, NVL(TO_CHAR(rs.end_date, 'MI'), '45') end_min, NVL(TO_CHAR(rs.end_date, 'AM'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]
+
+load.schedule.getid = SELECT rsu.user_id, fuser.last_name||', '||fuser.first_name, fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id
+
+load.schedule.users = SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL
+
+new.schedule.data = select SEQ_CR_REPORT_SCHEDULE.nextval from dual
+
+new.report.data = select SEQ_CR_REPORT.nextval from dual
+execute.update = DELETE cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]
+
+execute.update.users = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])
+
+execute.update.roles = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])
+
+execute.update.activity = INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))
+
+delete.schedule.data = SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]
+
+delete.schedule.data.users = DELETE from cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]
+
+delete.schedule.data.id = DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]
+
+load.cond.sql = SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?
+
+load.cond.sql.select = SELECT condition_sql FROM cr_report_schedule WHERE schedule_id = [scheduleId]
+
+persist.cond.sql.update = update cr_report_schedule set condition_large_sql = EMPTY_CLOB() where schedule_id = [scheduleId]
+
+persist.cond.sql.large = SELECT condition_large_sql FROM cr_report_schedule cr WHERE schedule_id=? FOR UPDATE
+
+persist.cond.sql.set = update cr_report_schedule set condition_sql = ? where schedule_id = [scheduleId]
+
+#DataCache.java
+
+get.data.view.actions = SELECT ts.web_view_action FROM cr_table_source ts WHERE ts.web_view_action IS NOT NULL
+
+get.public.report.id.names = SELECT rep_id, title FROM cr_report WHERE public_yn = 'Y' ORDER BY title
+
+get.private.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE cr.rep_id not in (select rep_id from cr_report_access cra where user_id = '[user_id]'
+
+get.private.accessible.names.if = OR role_id in (
+
+get.private.accessible.names.b = ) AND public_yn = 'N' and cr.owner_id = '[user_id]' order by 2
+
+get.group.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE cr.rep_id in (select rep_id from cr_report_access cra where user_id = '[user_id]'
+
+get.group.accessible.names.b = ) AND public_yn = 'N' order by 2
+
+get.report.table.sources.a = SELECT table_name, display_name, pk_fields, web_view_action, large_data_source_yn, filter_sql FROM cr_table_source
+
+get.report.table.sources.where = where SOURCE_DB= '[dBInfo]'
+
+get.report.table.sources.if = where SOURCE_DB is null or SOURCE_DB = '[AppConstants.DB_LOCAL]'
+
+get.report.table.sources.else = ORDER BY table_name
+
+grab.report.table.a = SELECT ts.table_name, ts.display_name, ts.pk_fields, ts.web_view_action, ts.large_data_source_yn, ts.filter_sql FROM cr_table_source ts WHERE
+
+grab.report.table.if = ts.SOURCE_DB= '[dBInfo]'
+
+grab.report.table.else = (ts.SOURCE_DB is null or ts.SOURCE_DB = '[AppConstants.DB_LOCAL]')
+
+grab.report.table.b = minus SELECT ts.table_name, ts.display_name, ts.pk_fields, ts.web_view_action, ts.large_data_source_yn, ts.filter_sql from cr_table_source ts where table_name in (select table_name from cr_table_role where role_id not IN [sb.toString()]) and
+
+grab.report.table.c = ORDER BY 1
+
+get.report.table.crjoin = SELECT src_table_name, dest_table_name, join_expr FROM cr_table_join
+
+get.report.table.joins = SELECT tj.src_table_name, tj.dest_table_name, tj.join_expr FROM cr_table_join tj WHERE ((EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name AND trs.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name))) AND ((EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name AND trd.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name)))
+
+generate.report.table.col = SELECT a.table_name, a.column_name, a.data_type, a.label FROM user_column_def a WHERE a.table_name = '[tableName.toUpperCase()]' ORDER BY a.column_id
+
+generate.db.user.sql.a = SELECT utc.table_name, utc.column_name, utc.data_type,
+
+generate.db.user.sql.if = utc.column_name label FROM user_tab_columns utc
+
+generate.db.user.sql.else = nvl(x.label, utc.column_name) label FROM user_tab_columns utc
+
+generate.db.user.sql.b = WHERE utc.table_name = '[tableName.toUpperCase()]'
+
+generate.db.user.sql.c = AND utc.table_name = x.table_name AND utc.column_name = x.column_name
+
+generate.db.user.sql.d = ORDER BY utc.column_id
+
+#SearchHandler.java
+
+load.report.search.result = SELECT cr.rep_id, cr.rep_id report_id, [rep_title_sql] title, cr.descr, (au.first_name||' '||au.last_name) owner_name, TO_CHAR(cr.create_date, 'MM/DD/YYYY'), (CASE WHEN nvl(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE nvl(ra.read_only_yn, 'Y') END) read_only_yn, (CASE WHEN nvl(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END) user_is_owner_yn, (case when report_xml like '%<allowSchedule>N</allowSchedule>%' then 'N' when report_xml like '%<allowSchedule>Y</allowSchedule>%' or 1 = (select distinct 1 from cr_report_schedule where rep_id = cr.rep_id) then 'Y' else 'N' end) FROM cr_report cr JOIN fn_user au ON nvl (cr.owner_id, cr.create_id) = au.user_id [fReportID] [fReportName] LEFT JOIN(SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON ra.rep_id = cr.rep_id
+
+load.report.search.rep_id_sql = AND ROUND(cr.rep_id, 0) like nvl('%%', ROUND(cr.rep_id, 0))
+
+load.report.search.instr = AND INSTR('|'||cr.menu_id||'|', '|'||'[menuId]'||'|') > 0
+
+load.report.search.result.user = AND nvl(cr.owner_id, cr.create_id) = [userID]
+
+load.report.search.result.public = AND (nvl(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)
+
+load.report.search.result.fav = AND cr.rep_id in (select rep_id from cr_favorite_reports where user_id = [userID]
+
+load.report.search.result.sort = ORDER BY DECODE(nvl(cr.owner_id, cr.create_id), [userID], ' ', upper(au.first_name||' '||au.last_name)), upper(cr.title)
+
+load.folder.report.result = SELECT cr.rep_id, cr.rep_id report_id, [rep_title_sql]||DECODE(cr.public_yn, 'Y', '', '[PRIVATE_ICON]')||cr.title||'</a>' title, cr.descr, au.first_name||' '||au.last_name owner_name, TO_CHAR(cr.create_date, 'MM/DD/YYYY') create_date, DECODE(NVL(cr.owner_id, cr.create_id), [userID], 'N', NVL(ra.read_only_yn, 'Y')) read_only_yn, DECODE(NVL(cr.owner_id, cr.create_id), [userID], 'Y', 'N') user_is_owner_yn FROM cr_report cr, app_user au, (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra WHERE TO_CHAR(cr.rep_id) = nvl('[fReportID]', TO_CHAR(cr.rep_id)) AND UPPER(cr.title) LIKE UPPER('%[fReportName]%') AND nvl(cr.owner_id, cr.create_id) = au.user_id AND cr.rep_id = ra.rep_id (+)
+
+load.folder.report.result.sort = ORDER BY DECODE(nvl(cr.owner_id, cr.create_id), [userID], ' ', au.first_name||' '||au.last_name), cr.title
+
+#WizardProcessor.java
+
+process.filter.add.edit = '[argValue]' FROM dual
+
+#ReportDefinition.java
+
+persist.report.adhoc = SELECT [Globals.getAdhocReportSequence()].nextval FROM dual
+
+#Globals.java
+
+initialize.roles = SELECT 1 FROM dual WHERE EXISTS (SELECT 1 FROM cr_table_role)
+
+initialize.version = SELECT cr_raptor.get_version FROM dual
+
+# scheduler
+
+scheduler.available.schedules = SELECT x.rep_id, x.schedule_id, x.conditional_yn, x.condition_large_sql, x.notify_type, x.max_row, x.initial_formfields, x.processed_formfields, r.title, x.user_id FROM ( SELECT rs.rep_id, rs.schedule_id, rs.sched_user_id user_id, rs.conditional_yn, rs.condition_large_sql, rs.notify_type, rs.max_row, rs.initial_formfields, rs.processed_formfields FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.start_date <= [currentDate] AND (rs.end_date >= [currentDate] or rs.end_date is null ) AND rs.run_date IS NOT NULL ) x, cr_report r WHERE x.rep_id = r.rep_id
+
+random.string = select DBMS_RANDOM.STRING('X',DBMS_RANDOM.VALUE(20,25)) random from dual
+
+scheduler.user.emails = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.start_date <= sysdate AND trunc(rs.end_date+1)-1/86400 >= sysdate AND rs.run_date IS NOT NULL AND rs.schedule_id = [p_schedule_id] ) x, cr_report r, fn_user au WHERE x.rep_id = r.rep_id AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [p_schedule_id] UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and rsu2.schedule_id = [p_schedule_id]))
+
+# basic sql
+
+convert.to.raw = utl_raw.cast_to_raw
+
+seq.next.val = SELECT [sequenceName].nextval as ID FROM dual
+
+current.date.string = sysdate
+
+# report security
+report.user.access = SELECT ra.role_id, ra.user_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.rep_id = [reportID]
+add.user.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, NULL, [userID], '[readOnlyAccess]')
+update.user.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND user_id=[userID]
+remove.user.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND user_id=[userID]
+add.role.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, [roleID], NULL, '[readOnlyAccess]')
+update.role.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND role_id=[roleID]
+remove.role.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND role_id=[roleID]
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/conf/fusion.properties b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
new file mode 100644
index 00000000..99b68cbf
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
@@ -0,0 +1,43 @@
+# validator settings
+#default_error_message = Default error message
+
+#login message
+login.error.hrid.empty = Login failed, please contact system administrator.
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+authentication_mechanism = BOTH
+
+user_attribute_name = user
+
+
+# Web Junction settings
+#web_junction_user_id_header_name = iv-user
+
+# User Session settings
+#user_attribute_name = user
+roles_attribute_name = roles
+role_functions_attribute_name = role_functions
+#client_device_attribute_name = client_device
+#client_device_emulation = false
+
+# menu settings
+menu_query_name = menuData
+#menu_properties_file_location = /WEB-INF/fusion/menu/
+application_menu_set_name = APP
+application_menu_attribute_name = applicationMenuData
+#application_menu_properties_name = menu.properties
+business_direct_menu_set_name = BD
+#business_direct_menu_properties_name = bd.menu.properties
+business_direct_menu_attribute_name = businessDirectMenuData
+
+# RAPTOR config settings
+#raptor_config_file_path = /WEB-INF/conf/
+
+# Role settings
+sys_admin_role_id = 1
+#sys_admin_role_function_delete_from_ui = true
+
+# Profile Search settings
+#profile_search_report_id=181
+#callable_profile_search_report_id=386
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/defs/definitions.xml b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/defs/definitions.xml
new file mode 100644
index 00000000..2e9c8bf6
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/defs/definitions.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tiles-definitions PUBLIC
+ "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
+ "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
+
+<!-- This tiles definitions file is fusion/defs/definitions.xml. It maps
+ tokens used by SDK-core controllers to JSP file paths. To minimize upgrade
+ effort, this file should not be changed by on-boarding applications. -->
+
+<tiles-definitions>
+
+ <definition name="ebz_template" template="/WEB-INF/fusion/jsp/ebz_template.jsp">
+ <put-attribute name="title" value=""></put-attribute>
+ <put-attribute name="header"
+ value="/WEB-INF/fusion/jsp/ebz/ebz_header.jsp"></put-attribute>
+ <put-attribute name="body" value=""></put-attribute>
+ <put-attribute name="footer"
+ value="/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp"></put-attribute>
+ </definition>
+
+ <definition name="ds2_template" template="/WEB-INF/fusion/jsp/ds2/template.jsp">
+ <put-attribute name="title" value="report"></put-attribute>
+ <put-attribute name="header" value="/WEB-INF/fusion/jsp/ds2/header.jsp"></put-attribute>
+ <put-attribute name="body" value=""></put-attribute>
+ </definition>
+
+
+ <definition name="ebz_template_noheader_nofooter"
+ template="/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp">
+ <put-attribute name="body" value=""></put-attribute>
+ </definition>
+
+ <definition name="ebz_template_report_embedded"
+ template="/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp">
+ <put-attribute name="body" value=""></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="es_search_demo">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/es_search_demo.jsp"></put-attribute>
+ <put-attribute name="viewName" value="elastic_search"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="es_suggest_demo">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/es_suggest_demo.jsp"></put-attribute>
+ <put-attribute name="viewName" value="elastic_search"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="error">
+ <put-attribute name="body" value="/WEB-INF/jsp/error.jsp"></put-attribute>
+ <put-attribute name="viewName" value="error"></put-attribute>
+ </definition>
+
+ <!-- <definition name="notebook"
+ template="app/fusion/notebook-integration/scripts/view-models/notebook.htm" /> -->
+
+
+ <!-- <definition name="nbooktest"
+ template="app/fusion/notebook-integration/scripts/view-models/notebook-frame.html"/>
+ -->
+ <definition name="nbooktest"
+ template="app/fusion/scripts/DS2-view-models/ds2-samplePages/notebook-frame.html"/>
+
+ <definition extends="ebz_template" name="broadcast_list">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/broadcast_list.jsp"></put-attribute>
+ <put-attribute name="viewName" value="broadcast_list"></put-attribute>
+ </definition>
+ <definition extends="ebz_template" name="broadcast">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/broadcast.jsp"></put-attribute>
+ <put-attribute name="viewName" value="broadcast"></put-attribute>
+ </definition>
+
+
+ <definition extends="ebz_template" name="chart_wizard">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/chart_wizard.jsp"></put-attribute>
+ <put-attribute name="viewName" value="chart_wizard"></put-attribute>
+ </definition>
+
+ <definition name="collaboration"
+ template="/WEB-INF/fusion/jsp/webrtc/collaboration.jsp" />
+ <!-- <definition name="user_profile_list" template="/app/fusion/scripts/view-models/admin-page/profile.html"
+ /> -->
+ <definition name="user_profile_list"
+ template="/app/fusion/scripts/DS2-view-models/ds2-profile/profile.html" />
+
+ <!-- <definition name="admin" template="/app/fusion/scripts/view-models/admin-page/admin.html"
+ /> -->
+ <definition name="openCollaboration"
+ template="/app/fusion/scripts/DS2-view-models/ds2-admin/collaboration.html" />
+ <definition name="workflows"
+ template="/app/fusion/scripts/DS2-view-models/DS2-workflows-page/workflow-landing.html" />
+ <definition name="report_dashboard"
+ template="/app/fusion/scripts/view-models/reportdashboard-page/src/report-dashboard.html" />
+
+ <definition name="ds2_sample"
+ template="/app/fusionapp/scripts/DS2-view-models/sampleDS2.html" />
+
+ <definition name="admin"
+ template="/app/fusion/scripts/DS2-view-models/ds2-admin/admin.html" />
+ <definition name="samplePage"
+ template="/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html" />
+ <definition name="welcome"
+ template="/app/fusion/scripts/DS2-view-models/welcome.html" />
+
+ <definition extends="ds2_template" name="report_wizard">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/report_wizard.jsp"></put-attribute>
+ <put-attribute name="viewName" value="report_wizard"></put-attribute>
+ </definition>
+ <definition extends="ebz_template" name="wizard_schedule_only">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/wizard_schedule_only.jsp"></put-attribute>
+ <put-attribute name="viewName" value="wizard_schedule_only"></put-attribute>
+ </definition>
+
+ <definition extends="ds2_template" name="report_import">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/report_import.jsp"></put-attribute>
+ <put-attribute name="viewName" value="report_import"></put-attribute>
+ </definition>
+
+ <definition name="report"
+ template="/app/fusion/scripts/DS2-view-models/ds2-reports/all-reports.html" />
+
+ <definition extends="ebz_template" name="reportDS1">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/report_ebz.jsp"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template_report_embedded" name="report_embedded">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/report_ebz.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template" name="report_sample">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/report_sample.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="test_run_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/test_run_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="date_start_field_run_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="date_end_field_run_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="test_field_run_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/test_field_run_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="default_field_run_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/default_field_run_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_testrun_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_testrun_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_semaphore">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_semaphore.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_import_semaphore">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_import_semaphore.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_table_cols">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_table_cols.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_drill_down_report">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_drill_down_report.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template_noheader_nofooter" name="popup_sql">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/popup_sql.jsp"></put-attribute>
+ </definition>
+ <definition extends="ebz_template" name="error_page">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/raptor/error_page.jsp"></put-attribute>
+ </definition>
+ <definition name="data_out" template="/WEB-INF/fusion/jsp/data_out.jsp" />
+
+ <!-- <definition name="test_field_run_sql" template="/WEB-INF/fusion/raptor/test_field_run_sql.jsp"/>
+ <definition name="popup_testrun_sql" template="/WEB-INF/fusion/raptor/popup_testrun_sql.jsp"/> -->
+
+</tiles-definitions>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/.gitignore b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/.gitignore
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/.gitignore
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp
new file mode 100644
index 00000000..0b700867
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp
@@ -0,0 +1,137 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.core.web.support.UserUtils" %>
+<%@ page import="org.openecomp.portalsdk.core.web.support.ControllerProperties" %>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties" %>
+
+<%-- <%@ include file="/WEB-INF/fusion/jsp/include.jsp" %> --%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<link rel="stylesheet" type="text/css" href="static/fusion/css/jquery-ui.css">
+
+ <c:set var="clustered" value="<%=(\"true\".equals(SystemProperties.getProperty(SystemProperties.CLUSTERED)))%>"/>
+
+ <script src="static/fusion/js/moment.min.js"></script>
+
+ <div class="pageTitle">
+ <h3>
+ <c:choose>
+ <c:when test="${!empty param.message_id}">
+ <h1 class="heading1" style="margin-top:20px;">Broadcast Message Edit</h1>
+ </c:when>
+ <c:otherwise>
+ <h1 class="heading1" style="margin-top:20px;">Broadcast Message Create</h1>
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ </div>
+
+<div ng-controller="broadcastController" >
+ Please edit the broadcast message details below:&nbsp;<br><br>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Message Text:</label><BR>
+ <textarea name="comment" ng-model="broadcastMessage.messageText" rows="5" cols="200" style="height:100px"></textarea>
+ </div>
+ <br>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Start Date:</label><BR>
+ <input style="display:none" name="startDateHidden" ng-model="broadcastMessage.startDate">
+ <input type="text" class="fn-ebz-text" id="startDatepicker" />
+ </div>
+
+ <div class="fn-ebz-container" style="margin-left:3em" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>End Date:</label><BR>
+ <input style="display:none" name="endDateHidden" ng-model="broadcastMessage.endDate">
+ <input type="text" class="fn-ebz-text" id="endDatepicker" />
+ </div>
+
+ <div class="fn-ebz-container" style="margin-left:3em" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Sort Order:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="broadcastMessage.sortOrder"
+ maxlength="30" />
+ </div>
+
+ <c:if test="${clustered}">
+ <div class="fn-ebz-container" style="margin-left:1em" >
+ <label class="fn-ebz-text-label">Server:</label><BR>
+ <div class="form-field" att-select="broadcastSites" ng-model="broadcastMessage.siteCd"></div>
+ </div>
+ </c:if>
+ <br>
+ <div align="left" >
+ <button type="submit" ng-click="save();" att-button
+ btn-type="primary" size="small">Save</button>
+ </div>
+</div>
+<script>
+app.controller('broadcastController', function ($scope, modalService, $modal){
+ $scope.broadcastMessage=${broadcastMessage};
+ $scope.broadcastSites=${broadcastSites};
+ console.log($scope.broadcastMessage);
+
+ $scope.save = function() {
+ var uuu = "broadcast/save";
+ var postData={broadcastMessage: $scope.broadcastMessage};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ //console.log(data);
+ window.location.href = "broadcast_list";
+ },
+ error : function(data){
+ alert("Error while saving.");
+ }
+ });
+ };
+
+ $(function() {
+ $( "#startDatepicker" ).datepicker();
+ $( "#endDatepicker" ).datepicker();
+
+ var startDateLong = $scope.broadcastMessage.startDate;
+ var tempStartDate = new Date(startDateLong);
+ tempStartDate = moment(tempStartDate).format('MM/DD/YY');//03 Jun 2013 04:15PM EDT
+ console.log(tempStartDate.toString());
+ $( "#startDatepicker" ).val(tempStartDate.toString());
+
+ var endDateLong = $scope.broadcastMessage.endDate;
+ var tempendDate = new Date(endDateLong);
+ tempendDate = moment(tempendDate).format('MM/DD/YY');//03 Jun 2013 04:15PM EDT
+ console.log(tempendDate.toString());
+ $( "#endDatepicker" ).val(tempendDate.toString());
+
+ $( "#startDatepicker" ).change(function() {
+ var tempStartDate = moment($( "#startDatepicker" ).val()).format('YYYY-MM-DD hh:mm:ss.S');
+ $scope.broadcastMessage.startDate = new Date(tempStartDate.toString());
+ });
+ $( "#endDatepicker" ).change(function() {
+ var tempEndDate = moment($( "#endDatepicker" ).val()).format('YYYY-MM-DD hh:mm:ss.S');
+ $scope.broadcastMessage.endDate = new Date(tempEndDate.toString());
+ });
+ });
+});
+
+
+</script> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp
new file mode 100644
index 00000000..401f413b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp
@@ -0,0 +1,201 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="com.fasterxml.jackson.databind.ObjectMapper" %>
+<%@ page import="org.json.JSONObject" %>
+<%@ page import="java.io.StringWriter" %>
+<%@ page import="org.openecomp.portalsdk.core.web.support.ControllerProperties" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+ <script src="static/fusion/raptor/dy3/js/moment.min.js"></script>
+ <script>
+ function editMessage(messageLocationId, messageLocation, messageId) {
+ window.location='broadcast.htm?message_location_id='+messageLocationId + '&message_location=' + messageLocation + ((messageId != null) ? '&message_id=' + messageId : '');
+ }
+ </script>
+
+ <div class="pageTitle">
+ <h3>
+ Broadcast Messages
+ </h3>
+ </div>
+
+ <%-- Display a table for the broadcast messages of each message location --%>
+<div ng-controller="broadcastListController" >
+
+ <div ng-repeat="location in messageLocations" >
+ {{location.label}} Messages
+ <div title="{{location.label}} Messages" >
+
+ <table att-table table-data="location.messages" current-page="1">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" width="10%">No.</th>
+ <th att-table-header sortable="false" width="30%">Message Text</th>
+ <th att-table-header sortable="false" width="10%">Start Date</th>
+ <th att-table-header sortable="false" width="10%">End Date</th>
+ <th att-table-header sortable="false" width="10%">Sort Order</th>
+ <th att-table-header sortable="false" width="10%">Server</th>
+ <th att-table-header sortable="false" width="10%">Active?</th>
+ <th att-table-header sortable="false" width="10%">Delete?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="message in location.messages" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr>
+ {{message.id}}
+ <td width="10%"><a href="javascript:editMessage({{location.value}},'{{location.label}}',{{message.id}});">{{$index+1}}</a></td>
+ <td width="30%">{{message.messageText}}</td>
+ <td width="10%">
+ {{message.displayStartDate}}
+ </td>
+ <td width="10%">{{message.displayEndDate}}</td>
+ <td width="10%">{{message.sortOrder}}</td>
+ <td width="10%">{{message.siteCd}}</td>
+ <td width="10%">
+ <div ng-click="toggleActive(message);">
+ <input type="checkbox" ng-model="message.active" att-toggle-main>
+ </div>
+ </td>
+ <td att-table-body width="10%">
+ <div ng-click="remove(message);" style="font-size:20px;"><a href="javascript:void(0)" class="icon-trash"></a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </div>
+ <input att-button btn-type="primary" size="small" class="button" type="button" value="Add" ng-click="editMessage(location);"/>
+ <br/><br/><br/>
+ </div>
+</div>
+
+<script>
+app.controller('broadcastListController', function ($scope){
+ //$scope.model.messagesList=${model.messagesList};
+ var messagesMap = {};
+ <%
+ ObjectMapper mapper = new ObjectMapper();
+ HashMap hmMessages = new HashMap();
+
+ HashMap objModel = (HashMap)request.getAttribute("model");
+
+ Object objMessages = objModel.get("messagesList");
+ //System.out.println("messagesList: "+objMessages);
+ if((objMessages!=null) && (objMessages instanceof HashMap))
+ {
+ hmMessages= (HashMap)objMessages;
+ Iterator it = hmMessages.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ //System.out.println(pair.getKey() + " = " + pair.getValue());
+ String pairValue = mapper.writeValueAsString(pair.getValue());
+ //System.out.println(pairValue);
+ %>
+ messagesMap['<%=pair.getKey()%>'] = '<%=pairValue%>'
+ <%
+ }
+ }
+
+ Object messageLocationsObject = objModel.get("messageLocations");
+ //System.out.println("messageLocations: "+messageLocationsObject);
+ String messageLocationsString = mapper.writeValueAsString(messageLocationsObject);
+ //System.out.println(messageLocationsString);
+ %>
+ $scope.messagesList=messagesMap;
+ $scope.messageLocations=<%=messageLocationsString%>;
+ console.log($scope.messageLocations);
+
+ $.each($scope.messageLocations, function(i, a){
+ //var result = [];
+ angular.forEach($scope.messagesList, function(value, key) {
+ if (key+'' === a.value+'') {
+ var objsJSON = JSON.parse(value);
+
+ $.each(objsJSON, function(i, a){
+ var startDateLong = a.startDate;
+ var tempStartDate = new Date(startDateLong);
+ tempStartDate = moment(tempStartDate).format('DD MMM YYYY');//03 Jun 2013 04:15PM EDT - 'DD MMM YYYY hh:mmA zz'
+ a.displayStartDate=tempStartDate.toString();
+
+ var endDateLong = a.endDate;
+ var tempEndDate = new Date(endDateLong);
+ tempEndDate = moment(tempEndDate).format('DD MMM YYYY');//03 Jun 2013 04:15PM EDT
+ a.displayEndDate=tempEndDate.toString();
+ });
+ a.messages = objsJSON;
+ }
+ });
+ console.log(a.messages);
+ });
+ ;
+
+ $scope.editMessage = function(location) {
+ editMessage(location.value, location.label);
+ };
+
+ $scope.toggleActive = function(broadcastMessage) {
+
+ //alert('deleted'+role.name);
+ var uuu = "broadcast_list/toggleActive";
+ var postData={broadcastMessage:broadcastMessage};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ //window.location.reload();
+ },
+ error : function(data){
+ console.log(data);
+ alert("Error while toggling: "+ data.responseText);
+ }
+ });
+
+
+ };
+
+ $scope.remove = function(broadcastMessage) {
+
+ //alert('deleted'+role.name);
+ var uuu = "broadcast_list/remove";
+ var postData={broadcastMessage:broadcastMessage};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ window.location.reload();
+ },
+ error : function(data){
+ console.log(data);
+ alert("Error while deleting: "+ data.responseText);
+ }
+ });
+
+
+ };
+});
+</script> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp
new file mode 100644
index 00000000..f3fb7a74
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp
@@ -0,0 +1,20 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+${model.output_string}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp
new file mode 100644
index 00000000..ac210a3f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp
@@ -0,0 +1,101 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
+
+<!DOCTYPE html>
+<html>
+ <head>
+<%-- <%@ include file="/WEB-INF/fusion/jsp/ds2/meta.jsp" %> --%>
+ <!-- B2b Library -->
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/b2b/css/b2b-angular/b2b-angular.css">
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/b2b/css/b2b-angular/font_icons.css">
+
+ <!-- icons in open source -->
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ds2/css/digital-ng-library/ionicons.css">
+
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/angular-bootstrap/ui-bootstrap-csp.css">
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/angular-gridster/dist/angular-gridster.min.css">
+ <!-- digital-design-library must be loaded late -->
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ds2/css/digital-ng-library/digital-design-library.css">
+ <link rel="stylesheet" type="text/css" href="app/fusion/styles/ecomp.css">
+
+
+ <!-- Common scripts -->
+ <script src="app/fusion/external/jquery/dist/jquery.min.js"></script>
+ <!-- Report Dashboard Specific items -->
+ <script src="app/fusion/ase/scripts/menus/bootstrap.min.js"></script>
+ <script src="app/fusion/ase/scripts/menus/jquery-ui.min.js"></script>
+ <script src="app/fusion/external/lodash/4.5.1/lodash.js"></script>
+ <script src="app/fusion/external/showdown/0.3.4/showdown.js"></script>
+
+ <!--<script src="app/fusion/external/angular-1.5/angular.min.js"></script>
+ <script src="app/fusion/external/angular-1.5/angular-messages.js"></script>
+ <script src="app/fusion/external/angular-1.5/angular-touch.js"></script>
+ <script src="app/fusion/external/angular-1.5/angular-sanitize.js"></script>
+ <script src="app/fusion/external/angular-1.5/angular-route.min.js"></script>
+ <script src="app/fusion/external/angular-1.5/angular-cookies.min.js"></script>-->
+ <script src="app/fusion/external/angular-1.4.8/angular.min.js"></script>
+ <script src="app/fusion/external/angular-1.4.8/angular-messages.js"></script>
+ <script src="app/fusion/external/angular-1.4.8/angular-touch.js"></script>
+ <script src="app/fusion/external/angular-1.4.8/angular-sanitize.js"></script>
+ <script src="app/fusion/external/angular-1.4.8/angular-route.min.js"></script>
+ <script src="app/fusion/external/angular-1.4.8/angular-cookies.min.js"></script>
+ <script src="app/fusion/external/b2b/js/b2b-angular/b2b-library.min.js"></script>
+ <script src="app/fusion/external/ds2/js/digital-ng-library/digital-design-library.js"></script>
+ <script src="app/fusion/external/javascript-detect-element-resize/jquery.resize.js"></script>
+ <script src="app/fusion/external/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
+ <script src="app/fusion/external/angular-gridster/dist/angular-gridster.min.js"></script>
+ <script src="app/fusion/external/angular-gridster/dist/angular-gridster.min.js"></script>
+
+ <!-- EPSDK App scripts and common services -->
+ <script src="app/fusion/scripts/DS2-services/ds2-modal/modalService.js"></script>
+ <script src="app/fusion/external/ds2/js/appDS2.js"></script>
+
+ <script src="app/fusion/scripts/DS2-services/userInfoServiceDS2.js"></script>
+ <script src="app/fusion/scripts/DS2-services/headerServiceDS2.js"></script>
+ <script src="app/fusion/scripts/DS2-services/leftMenuServiceDS2.js"></script>
+ <script src="app/fusion/scripts/DS2-services/manifestService.js"></script>
+
+ <script src="app/fusion/scripts/DS2-directives/footer.js"></script>
+ <script src="app/fusion/scripts/DS2-directives/ds2Header.js"></script>
+ <script src="app/fusion/scripts/DS2-directives/ds2LeftMenu.js"></script>
+ <script src="app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js"></script>
+ <script src= "app/fusion/scripts/DS2-services/userInfoServiceDS2.js"></script>
+
+ </head>
+ <body class="appBody" ng-app="abs">
+ <div ds2-Header class="header-container" ></div>
+ <div ds2-menu id="menuContainer" class="menu-container" ></div>
+<%-- <div>
+ <tiles:insertAttribute name="header" />
+ </div> --%>
+
+ <div class="applicationWindow">
+ <br>
+ <div class="content" id="mContent">
+ <div class="body-content-jsp">
+ <tiles:insertAttribute name="body" />
+ </div>
+ </div>
+ <br>
+ <div ds2-Footer class="footer-container"></div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp
new file mode 100644
index 00000000..bd5206eb
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp
@@ -0,0 +1,41 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+
+
+
+<script src="app/fusion/external/ebz/js/footer.js"></script>
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/footer.css" >
+<div class="footerContainer" id="footerContainer">
+ <div class="footerWrapper" id="footerWrapper">
+ <div class="attFooterInfo" style="text-align: center;">
+ <div class="footerLastSection">
+ <div class="footerText">
+ <p class="copyright-text">
+ </p>
+ </div>
+ <div class="displayInline">
+ <a href="#" class="footer-logo">
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp
new file mode 100644
index 00000000..1d3ba8e7
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp
@@ -0,0 +1,747 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ page isELIgnored="false"%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties"%>
+<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants"%>
+<%@ page import="org.openecomp.portalsdk.core.domain.MenuData"%>
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/header.css">
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css">
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
+
+
+<script src= "app/fusion/external/ebz/angular_js/angular.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/app.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
+<script src="static/js/jquery-1.10.2.js"></script>
+<script src="app/fusion/scripts/modalService.js"></script>
+<script src="static/js/jquery.mask.min.js" type="text/javascript"></script>
+<script src="static/js/jquery-ui.js" type="text/javascript"></script>
+<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
+<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script>
+<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
+<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
+<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
+<script src="app/fusion/scripts/services/userInfoService.js"></script>
+<script src="app/fusion/scripts/services/leftMenuService.js"></script>
+
+
+<jsp:include page="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" ></jsp:include>
+
+<c:set var="UserName" value="<%= session.getAttribute(\"fullName\")%>" />
+<c:set var="UserFirstName" value="<%= session.getAttribute(\"first_name\")%>" />
+
+<%
+ String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK);
+ String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL);
+ String portalUrl = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/process_csp";
+ String getAccessLink = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/get_access";
+%>
+<c:set var="returnPortalUrl" value="<%=portalUrl%>" />
+<c:set var="contactUsLink" value="<%=contactUsLink%>" />
+<c:set var="getAccessLink" value="<%=getAccessLink%>" />
+<style>
+.att-drawer{
+ z-index:997 !important;
+}
+
+.secondaryMenuContainer{
+ z-index:1000;
+}
+.megamenu-tabs .megamenu__item {
+ padding: 0 0;
+}
+.megamenu-tabs .megamenu__item span {
+ font-size: 18px;
+}
+
+.submenu-tabs {
+ line-height:50px;
+}
+.submenu-tabs .sub__menu{
+ top:54px;
+}
+
+.top-megamenu .megamenu-tabs ul{
+ width:98%;
+ list-style: none;
+}
+
+</style>
+<%@include file="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" %>
+
+<div style="position: relative; z-index: 999;">
+ <div ng-controller="headerController">
+
+ <div class="headerContainer" id="headerContainer" ng-cloak ng-show="{{showHeader}}">
+ <div id="megaMenuContainer" class="megaMenuContainer" style="margin-top: 0; overflow: visible;">
+ <div>
+ <!--for mega Menu-->
+ <!-- Mega Menu parent-tab directive with three models menu-items, active-sub-menu, active-menu -->
+ <div id="topMenu" class="top-megamenu" ng-mouseleave="activeClickSubMenu.x.active=false; activeClickMenu.x.active=false">
+ <div style="float:left;width:100%;"parent-tab menu-items="megaMenuDataObject" active-sub-menu='activeClickSubMenu.x' active-menu='activeClickMenu.x'>
+ <div parentmenu-tabs mega-menu="true" menu-items="megaMenuDataObject" style="height:55px;">
+ <div style="float:left">
+ <li class="megamenu__item" style="line-height:55px;" onclick="returnToPortal()">
+ <img src="app/fusion/external/ebz/images/logo.png" class="logo" ></span>
+> <strong style="font-weight: 400 !important; font-family: Omnes-ECOMP-W02, Arial !important; font-size: 18px;" id='returnPortal' >ECOMP Portal</strong>
+ </li>
+ <div menu-tabs mega-menu="true" tab-name="item.text" menu-item="item" active-menu="activeClickMenu.x"
+ ng-repeat="item in megaMenuDataObject" style="font-size: 18px;" ng-mousedown="loadFavorites()" >
+ <div parentmenu-tabs sub-menu="true" ng-show="activeClickMenu.x.active && item.active" menu-items="activeClickMenu.x.children">
+ <!-- Second level menu -->
+ <div>
+ <div menu-tabs sub-menu="true" tab-name="subItem.text"
+ tab-url="subItem.url" menu-item="subItem"
+ ng-repeat="subItem in activeClickMenu.x.children | orderBy : 'column'" active-menu="activeClickSubMenu.x"
+ sub-item-active="{{subItem.active}}" style="float:left;" aria-label="{{subItem.text}}"
+ ng-mouseenter="submenuLevelAction(subItem.text,subItem.column)"
+ ng-mouseleave="submenuLevelAction(subItem.text,subItem.column)"
+ ng-click="submenuLevelAction(subItem.text,subItem.column)" >
+ <i ng-if="subItem.text=='Favorites'" id="favorite-star"
+ class="icon-star favorites-icon-active">
+ </i>
+ </div>
+
+ <div class="sub__menu" ng-mouseleave="activeClickSubMenu.x.active=false" >
+ <ul ng-show="activeClickSubMenu.x.active" role="menubar" class="columns">
+ <!-- Third level menu -->
+ <div menu-tabs menu-item="subItem"
+ class="columns-div"
+ ng-repeat="subItem in activeClickSubMenu.x.children | orderBy : 'column'"
+ ng-show="activeClickSubMenu.x.active">
+
+ <i id="favorite-selector-third-level"
+ ng-show="isUrlFavorite(subItem.menuId)==false"
+ class="icon-star favorites-icon-inactive"
+ ng-if="subItem.url.length > 1">
+ </i>
+ <i id="favorite-selector-third-level"
+ ng-show="isUrlFavorite(subItem.menuId)"
+ class="icon-star favorites-icon-active"
+ ng-if="subItem.url.length > 1">
+ </i>
+ <span class="title" aria-label="{{subItem.text}}"
+ ng-click="goToUrl(subItem)">{{subItem.text}}</span>
+ <!-- Fourth level menus -->
+ <div att-links-list="">
+ <i id="favorite-selector-fourth-level"
+ class="icon-star favorites-icon-inactive"
+ ng-show="isUrlFavorite(tabValue.menuId)==false"
+ ng-if="tabValue.url.length > 1">
+
+ </i>
+ <i id="favorite-selector-fourth-level"
+ class="icon-star favorites-icon-active"
+ ng-show="isUrlFavorite(tabValue.menuId)"
+ ng-if="tabValue.url.length > 1">
+
+ </i>
+ <span role="menuitem" att-links-list-item=""
+ ng-repeat="tabValue in subItem.children"
+ ng-click="goToUrl(tabValue)"
+ att-accessibility-click="13,32"
+ ng-class="{'disabled': tabValue.disabled}">{{tabValue.text}}</span>
+ </div>
+ <hr ng-show="!$last"/>
+
+ </div>
+ </ul>
+ <!-- Favorites level menu -->
+ <div class="favorites-window" ng-show='favoritesWindow' ng-mouseleave="hideFavoritesWindow()">
+ <div id="favorites-menu-items" ng-show="showFavorites">
+ <div ng-repeat="subItem in favoritesMenuItems" att-links-list="" style='display: inline'>
+ <i id="favorite-selector-favorites-list" class="icon-star favorites-icon-active">
+ </i>
+ <a id="favorites-list" aria-label="{{subItem.text}}"
+ ng-click="goToUrl(subItem)"
+ style="margin-left: 3px; margin-right: 20px; text-decoration: none; color: #666666;">
+ {{subItem.text}}
+ </a>
+ </div>
+ <div>
+ <br>
+ <p style='font-weight: 400; font-family: Omnes-ECOMP-W02, Arial !important;
+ font-size: 18px; text-align: center; background-color: lightgray;
+ width: 400px; margin-left: 25%; margin-right: 25%;'>
+ Manage favorites on ECOMP Portal.
+ </p>
+ </div>
+ </div>
+ <!-- Favorites when empty -->
+ <div id="favorites-empty" ng-show='favoritesWindow' ng-show="emptyFavorites">
+ <div id="favorites-empty" ng-show="emptyFavorites" class="favorites-window-empty">
+ <div>
+ <img src="app/fusion/external/ebz/images/no_favorites_star.png">
+ <p class='favoritesLargeText'>No Favorites</p>
+ <p class='favoritesNormalText'>Manage favorites on ECOMP Portal.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div >
+ <li class="megamenu__item" style="line-height:55px;" ng-if="loadMenufail">
+ <strong style="font-weight: 400 !important; font-family: Omnes-ECOMP-W02, Arial !important; font-size: 18px;" >Unable to load menus</strong>
+ </li>
+<!-- <li class="megamenu__item" style="width: 20%;">&nbsp;</li>
+ --> </div>
+ <!-- Login Snippet-->
+ <div style="float:right">
+ <li id="bcLoginSnippet" class="megamenu__item" style="width: 140px;" >
+ <div popover="loginSnippet.html" aria-label="Login Snippet" referby="loginSnippet" att-accessibility-click="13,32" popover-style="\" popover-placement="below" style="width: 200px;">
+ <div class="icon-user-small login-snippet-icon"></div>
+ <div class="login-snippet-text" style="display: inline-block; font-size:12px; margin-left:5px;overflow: hidden; max-height: 31px; max-width:120px; padding-top: 0px; margin-top: 0px; white-space: nowrap;" ng-bind="userProfile.firstName"></div>
+ </div>
+ </li>
+ <li class="megamenu__item" style="width:120px;">&nbsp;</li>
+ </div>
+
+ </div>
+ </div>
+ <div style="clear: both"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="license-notification" id="license-notification">
+ <a href="javascript:void(0)" style="background-color:#bbb;" class="button button--small" tooltip="Please contact ECOMP Portal team to get the license" tooltip-placement="below" tooltip-style="light" tooltip-popup-delay="500" >
+ <span style="">{{app_name_full}}</span>
+ </a>
+ </div>
+ <div style="position: relative; color: black; top: 70px;">
+ <div ng-cloak>
+ <span ng-style="adjustHLeftMenu('burgerIcon')" style="z-index:998; position:fixed; left:0%; font-size:35px; margin-left:10px;text-decoration:none;">
+ <a ng-click="toggleDrawer();isOpen = !isOpen" href="javascript:void(0);" class="arrow-icon-left" >
+ <span class="icon-hamburger"></span></a>
+ <span ng-init="isOpen = true" ng-show="isOpen" style="font-size:16px; position:relative; top:-8px; left:-15px;">&nbsp&nbsp&nbsp {{app_name}}</span>
+ </span>
+ <div att-drawer drawer-slide="left" drawer-custom-top="{{drawer_custom_top}}px" drawer-size="200px" drawer-open="drawerOpen" drawer-custom-height="100%" >
+ <div ng-style="adjustHLeftMenu('leftMenu')">
+ <div class="attDrawer" style="margin-top:{{drawer_margin_top}}px;">
+ <div style="margin-left:10px; margin-right:10px;">
+ <accordion close-others="true" css="att-accordion--no-box">
+ <accordion-group ng-repeat="parent in menuItems" heading="{{parent.parentLabel}}" child="{{parent.parentAction}}" parent-link="{{parent.parentAction}}" image-source="{{parent.parentImageSrc}}" child-length="{{parent.childItemList.length}}" is-open="parent.open">
+ <div ng-repeat="subMenu in parent.childItemList" style="font-size:12px; margin-left:10px;">
+ <a href="{{subMenu.action}}" style="font-size:12px; color:#666666;" >{{subMenu.label}}</a>
+ </div>
+ </accordion-group>
+ </accordion>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script>
+ function returnToPortal(){
+ window.location.href = "<c:out value='${returnPortalUrl}'/>";
+ }
+ detectScrollEvent = function() {
+ var footerOff = $('#footerContainer').offset().top;
+ var headOff = $('#headerContainer').offset().top;
+ var winHeight = $(window).height();
+ if ((footerOff - headOff) <= winHeight) {
+ $('.att-drawer').css({
+ "height" : footerOff - headOff - 55
+ });
+ } else {
+ $('.att-drawer').css({
+ "height" : "94vh"
+ });
+ }
+ }
+ $(window).scroll(function() {
+ if ($('.att-drawer').is(':visible')) {
+ detectScrollEvent();
+ }
+ });
+ app.controller("headerController", function($scope, $timeout, $log, $http, UserInfoService, $window, $cookies,LeftMenuService) {
+ // $log.debug('HeaderController started');
+ $scope.jsonMenuData = [];
+ $scope.loadMenufail=false;
+ $scope.app_name = "";
+ $scope.app_name_full = "";
+ $scope.megaMenuDataObject =[];
+ $scope.activeClickSubMenu = {
+ x: ''
+ };
+ $scope.activeClickMenu = {
+ x: ''
+ };
+ $scope.favoritesMenuItems = [];
+ $scope.favoriteItemsCount = 0;
+ $scope.showFavorites = false;
+ $scope.emptyFavorites = false;
+ $scope.favoritesWindow = false;
+ $scope.userProfile={
+ firstName:'',
+ lastName:'',
+ fullName:'',
+ email:''
+ }
+ /*Put user info into fields*/
+ $scope.inputUserInfo = function(userInfo){
+ if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){
+ if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='')
+ $scope.userProfile.firstName = userInfo.USER_FIRST_NAME;
+ if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='')
+ $scope.userProfile.lastName = userInfo.USER_LAST_NAME;
+ if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='')
+ $scope.userProfile.email = userInfo.USER_EMAIL;
+ }
+ }
+ /*getting user info from session*/
+ $scope.getUserNameFromSession = function(){
+ UserInfoService.getFunctionalMenuStaticDetailSession()
+ .then(function (res) {
+ $scope.userProfile.firstName = res.firstName;
+ $scope.redirectUrl = res.portalUrl;
+ });
+ }
+ $scope.getTopMenuStaticInfo=function() {
+ var promise = UserInfoService.getFunctionalMenuStaticDetailShareContext();
+ promise.then(
+ function(res) {
+ if(res==null || res==''){
+ $log.info('failed getting static User information');
+ $scope.getUserNameFromSession();
+ }else{
+ $log.info('Received static User information');
+ var resData = res;
+ $scope.inputUserInfo(resData);
+ $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName;
+ }
+ },
+ function(err) {
+ $log.info('failed getting static User information');
+ }
+ );
+ }
+
+ var unflatten = function( array, parent, tree ){
+ tree = typeof tree !== 'undefined' ? tree : [];
+ parent = typeof parent !== 'undefined' ? parent : { menuId: null };
+ var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; });
+
+ if( !_.isEmpty( children ) ){
+ if( parent.menuId === null ){
+ tree = children;
+ }else{
+ parent['children'] = children
+ }
+ _.each( children, function( child ){ unflatten( array, child ) } );
+ }
+
+ return tree;
+ }
+
+ var menuStructureConvert = function(menuItems) {
+ var megaMenuDataObjectTemp = [
+ {
+ text: "ECOMP",
+ children:menuItems
+ },
+ {
+ text: "Help",
+ children: [{
+ text:"Contact Us",
+ url:"<c:out value='${contactUsLink}'/>"
+ },
+ {
+ text:"Get Access",
+ url:"<c:out value='${getAccessLink}'/>"
+ }]
+ }
+ ];
+ return megaMenuDataObjectTemp;
+ };
+
+
+ /*Left Menu*/
+ LeftMenuService.getAppName().then(function(response){
+ var j = response;
+ try{
+ if(j && j !== "null" && j!== "undefined"){
+ // console.log("app name is " + $scope.app_name);
+ $scope.app_name_full = j.data;
+ var processed_app_name = j.data;
+ if(processed_app_name.indexOf("[")<=-1) {
+ if (document.getElementById('license-notification')!=null)
+ document.getElementById('license-notification').style.display = "none";
+ }
+ var n = processed_app_name.length;
+ if (n > 15) {
+ n = 15;
+ }
+ $scope.app_name = processed_app_name.substr(0, n);
+ }else{
+ throw "Get app_name response is not an object/is empty";
+ }
+ }catch (e) {
+ console.log("error happened while trying to get app name "+e);
+ return;
+ }
+ },function(error){
+ console.log('getAppName failed', error);
+ });
+
+ $scope.getTopMenuStaticInfo();
+ $scope.getMenu=function() {
+
+ $http({
+ method: "GET",
+ url: 'get_functional_menu',
+// TIMEOUT USED FOR LOCAL TESTING ONLY
+// timeout: 100
+ }).success(function (response) {
+ if(response == '101: Timeout') {
+ $log.error('Timeout attempting to get_functional_menu');
+ // TIMEOUT USED FOR LOCAL TESTING ONLY
+// $scope.createErrorMenu();
+ $scope.megaMenuDataObject = menuStructureConvert('');
+ }else {
+ $log.debug('get_functional_menu success: ' + response);
+ if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){
+// createErrorMenu() USED FOR LOCAL TESTING ONLY
+// $scope.createErrorMenu();
+ $scope.megaMenuDataObject = menuStructureConvert('');
+ // $scope.loadMenufail=true;
+ }else{
+ $scope.jsonMenuData = unflatten( response );
+ $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData);
+ }
+ }
+ }).error(function (response){
+// createErrorMenu() USED FOR LOCAL TESTING ONLY
+// $scope.createErrorMenu();
+
+ //$scope.loadMenufail=true;
+ $scope.megaMenuDataObject = menuStructureConvert('');
+ $log.debug('REST API failed get_functional_menu...'+ response);
+ });
+ }
+ $scope.adjustHLeftMenu = function (type){
+ $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header);
+
+ if($scope.showHeader == true) {
+ $scope.drawer_margin_top = 60;
+ $scope.drawer_custom_top = 54;
+ $scope.toggle_drawer_top = 55;
+ }
+ else {
+
+ $scope.drawer_margin_top = 50;
+ $scope.drawer_custom_top = 0;
+ $scope.toggle_drawer_top = 10;
+ }
+ if(type=='burgerIcon'){
+ return { "top": $scope.toggle_drawer_top+"px"};
+ }else if(type=='leftMenu'){
+ return { "margin-top": $scope.drawer_margin_top+"px"};
+ }else
+ return;
+ }
+ $scope.adjustHeader=function() {
+ $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header);
+
+ if($scope.showHeader == true) {
+ $scope.drawer_margin_top = 50;
+ $scope.drawer_custom_top = 54;
+ $scope.toggle_drawer_top = 55;
+ }
+ else {
+
+ $scope.drawer_margin_top = 40;
+ $scope.drawer_custom_top = 0;
+ $scope.toggle_drawer_top = 10;
+ }
+
+
+ }
+
+
+ //$scope.getMenu();
+ $scope.adjustHeader();
+
+
+ /* **************************************************************************/
+ /* Logic for the favorite menus is here */
+
+ $scope.loadFavorites = function () {
+ $log.debug('loadFavorites has happened.');
+ if ($scope.favoritesMenuItems == '') {
+ $scope.generateFavoriteItems();
+ $log.debug('loadFavorites is calling generateFavoriteItems()');
+ } else {
+ $log.debug('loadFavorites is NOT calling generateFavoriteItems()');
+ }
+ }
+
+ $scope.goToUrl = function (item) {
+ $log.info("goToUrl called")
+ $log.info(item);
+
+ var url = item.url;
+ var restrictedApp = item.restrictedApp;
+ $log.debug('Restricted app status is: ' + restrictedApp);
+ if (!url) {
+ $log.info('No url found for this application, doing nothing..');
+ return;
+ }
+ if (restrictedApp) {
+ $window.open(url, '_blank');
+ } else {
+ $window.open(url, '_self');
+ }
+
+ }
+
+ $scope.submenuLevelAction = function(index, column) {
+ if ($scope.favoritesMenuItems == '') {
+ $scope.generateFavoriteItems();
+ $log.debug('submenuLevelAction is calling generateFavoriteItems()');
+ }
+ $log.debug('item hovered/clicked: ' + index + '; column = ' + column);
+ if (column == 2) { // 2 is Design
+ $scope.favoritesWindow = false;
+ $scope.showFavorites = false;
+ $scope.emptyFavorites = false;
+ }
+ if (index=='Favorites' && $scope.favoriteItemsCount != 0) {
+ $log.debug('Showing Favorites window');
+ $scope.favoritesWindow = true;
+ $scope.showFavorites = true;
+ $scope.emptyFavorites = false;
+ }
+ if (index=='Favorites' && $scope.favoriteItemsCount == 0) {
+ $log.debug('Hiding Favorites window in favor of No Favorites Window');
+ $scope.favoritesWindow = true;
+ $scope.showFavorites = false;
+ $scope.emptyFavorites = true;
+ }
+ if (column > 2) {
+ $scope.favoritesWindow = false;
+ $scope.showFavorites = false;
+ $scope.emptyFavorites = false;
+ }
+ };
+
+ $scope.hideFavoritesWindow = function() {
+ $log.debug('$scope.hideFavoritesWindow has been called');
+ $scope.showFavorites = false;
+ $scope.emptyFavorites = false;
+ }
+
+ $scope.isUrlFavorite = function (menuId) {
+// $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId);
+ var jsonMenu = JSON.stringify($scope.favoritesMenuItems);
+ var isMenuFavorite = jsonMenu.indexOf('menuId\":' + menuId);
+ if (isMenuFavorite==-1) {
+ return false;
+ } else {
+ return true;
+ }
+
+ }
+
+ $scope.generateFavoriteItems = function() {
+ $http({
+ method: "GET",
+ url: 'get_favorites',
+ // TIMEOUT USED FOR LOCAL TESTING ONLY
+// timeout: 100
+ }).success(function (response) {
+ if (response == '101: Timeout') {
+ $log.error('Timeout attempting to get_favorites_menu');
+ } else {
+ if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){
+ $log.error('REST API failed get_favorites' + response);
+ }else{
+ $log.debug('get_favorites = ' + JSON.stringify(response));
+ $scope.favoritesMenuItems = response;
+ $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length;
+ $log.info('number of favorite menus: ' + $scope.favoriteItemsCount);
+ }
+ }
+ }).error(function (response){
+ $log.error('REST API failed get_favorites' + response);
+ //createFavoriteErrorMenu() USED FOR LOCAL TESTING ONLY
+// $scope.createFavoriteErrorMenu();
+ });
+ }
+
+ $scope.createFavoriteErrorMenu=function() {
+ $scope.favoritesMenuItems = [
+// {
+// "menuId": "93",
+// "text": "XXX",
+// "url": "XXX"
+// }
+ ];
+ $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length;
+ $log.info('number of favorite menus: ' + $scope.favoriteItemsCount);
+ }
+
+ /* end of Favorite Menu code */
+ /* **************************************************************************/
+
+
+ /* **************************************************************************/
+ // THIS IS USED FOR LOCAL TESTING ONLY
+ /* **************************************************************************/
+
+ $scope.createErrorMenu=function() {
+ $scope.jsonMenuData = [
+ {
+ "menuId": 1,
+ "column": 2,
+ "text": "Design",
+ "parentMenuId": null,
+ "url": ""
+ },
+ {
+ "menuId": 2,
+ "column": 3,
+ "text": "Infrastructure Ordering",
+ "parentMenuId": null,
+ "url": ""
+ },
+ {
+ "menuId": 3,
+ "column": 4,
+ "text": "Service Creation",
+ "parentMenuId": null,
+ "url": ""
+ },
+ {
+ "menuId": 4,
+ "column": 5,
+ "text": "Service Mgmt",
+ "parentMenuId": null,
+ "url": ""
+ },
+ {
+ "menuId": 99,
+ "column": 1,
+ "text": "Favorites",
+ "parentMenuId": null,
+ "url": ""
+ }
+ ];
+ $scope.jsonMenuData = unflatten( $scope.jsonMenuData );
+ $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData);
+// $log.debug(JSON.stringify($scope.jsonMenuData));
+ }
+ var childItemList="";
+ var parentList = "";
+ try{
+ childItemList = ${menu.childItemList};
+ parentList = ${menu.parentList};
+ }catch(err){
+ console.log("ebz_header: failed to get child/parent lists", err);
+ }
+
+ var pageUrl = window.location.href.split('/')[window.location.href.split('/').length-1];
+
+ $scope.menuItems = [];
+ for (var i = 0; i < parentList.length; i++) {
+ $scope.openCurrentMenu = false;
+ if(pageUrl==parentList[i].action)
+ $scope.openCurrentMenu = true;
+ $scope.childItemList = childItemList[i];
+ for(chIndex in $scope.childItemList){
+ if($scope.childItemList.length>0)
+ if($scope.childItemList[chIndex].action!=null){
+ if($scope.childItemList[chIndex].action==pageUrl)
+ $scope.openCurrentMenu = true;
+ }
+ }
+ $scope.item = {
+ parentLabel : parentList[i].label,
+ parentAction : parentList[i].action,
+ parentImageSrc : parentList[i].imageSrc,
+ open:$scope.openCurrentMenu,
+ childItemList : $scope.childItemList
+ }
+ $scope.menuItems.push($scope.item);
+ }
+ $scope.arrowShow = true;
+ $scope.drawerOpen = false;
+ $scope.subMenuContent = false;
+ $scope.toggleSubMenu = function() {
+ $scope.subMenuContent = !$scope.subMenuContent;
+ };
+
+ var drawerOpen = 'open';
+ if (drawerOpen == 'open') {
+ $scope.drawerOpen = true;
+ $scope.arrowShow = true;
+ } else {
+ $scope.arrowShow = false;
+ }
+ $scope.arrowShow = true;
+ $scope.drawerOpen = false;
+ $scope.toggleDrawer = function() {
+ $scope.drawerOpen = !($scope.drawerOpen);
+ if ($scope.drawerOpen) {
+ $scope.arrowShow = true;
+ if (document.getElementById('mContent')!=null)
+ document.getElementById('mContent').style.marginLeft = "0px";
+ } else {
+ $scope.arrowShow = false;
+ if (document.getElementById('mContent')!=null)
+ document.getElementById('mContent').style.marginLeft = "-150px";
+ }
+ };
+ //var drawerOpen = getCookie('drawerOpen');
+ if (drawerOpen == 'open') {
+ $scope.drawerOpen = true;
+ $scope.arrowShow = true;
+ } else {
+ $scope.arrowShow = false;
+ }
+ $timeout(function() {
+ detectScrollEvent();
+ }, 800);
+
+ });
+
+ app.filter("ellipsis", function(){
+ return function(text, length){
+ if (text) {
+ var ellipsis = text.length > length ? "..." : "";
+ return text.slice(0, length) + ellipsis;
+ };
+ return text;
+ }
+ });
+</script> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html
new file mode 100644
index 00000000..ae5e13ec
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html
@@ -0,0 +1,115 @@
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+<script type="text/ng-template" id="loginSnippet.html">
+ <div style="line-height: normal; right: 167px; min-height: 200px; height: auto; width: auto; " ng-controller="loginSnippetCtrl" >
+ <div id="reg-header-snippet">
+ <div class="reg-profilePicture" style="min-height: 215px; width: auto; " id="reg-profile-links">
+ <div id="reg-profileImage">
+ <div style="clear: both; height: 80px; position: relative; width: 80px;">
+
+ <span style=" background-position: -1px -1px; height: 81px;left: 0;position: absolute;top: 0;width: 81px;">&nbsp;</span>
+ </div>
+ </div>
+ <div id="reg-logout-div">
+ <a class="reg-logout-btn" href="logout.htm">Log Out</a>
+ </div>
+ </div>
+ <div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id">
+ <ul class="reg-Details-table" style="list-style: none;">
+ <li><div class="reg-userName-table"><div id="reg-userName-table-row"><div id="reg-userName-table-cell"><h3 id="reg-userName" ng-bind="userProfile.fullName"></h3><span class="visuallyhidden">.</span></div></div></div></li>
+ <li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn">EMAIL<span class="visuallyhidden">:</span></span></div></li>
+ <li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn" ng-bind="userProfile.email"><span class="visuallyhidden">.</span></span></div></li>
+ <li><div class="reg-userRole-label"><span class="reg-userRole-label-spn">orgUserId<span class="visuallyhidden">:</span></span></div></li>
+ <li><div class="reg-userRole-value"><span class="reg-userRole-value-spn" ng-bind="userProfile.orgUserId"><span class="visuallyhidden"></span></span></div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="chat_box.html">
+
+ <div style="width: auto;">
+
+ <div style="font-size: 24px; font-family: Omnes-ECOMP-W02, Arial;line-height: 26px;color: #444444;text-align: center;">
+ <span>Live Chat</span>
+ </div>
+
+ </div>
+ </script>
+
+<script>
+var loginSnippetCtrl = function ($scope,$http, $log,UserInfoService){
+ /*Define fields*/
+ $scope.userProfile={
+ firstName:'',
+ lastName:'',
+ fullName:'',
+ email:''
+ }
+ /*Put user info into fields*/
+ $scope.inputUserInfo = function(userInfo){
+ if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){
+ if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='')
+ $scope.userProfile.firstName = userInfo.USER_FIRST_NAME;
+ if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='')
+ $scope.userProfile.lastName = userInfo.USER_LAST_NAME;
+ if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='')
+ $scope.userProfile.email = userInfo.USER_EMAIL;
+
+ }
+ }
+ /*getting user info from session*/
+ $scope.getUserNameFromSession = function(){
+ UserInfoService.getFunctionalMenuStaticDetailSession()
+ .then(function (response) {
+ var j = response;
+ // console.log(response);
+ $scope.userProfile.fullName = response.userName;
+ $scope.userProfile.email = response.email;
+ });
+ }
+ /*getting user info from shared context*/
+ $scope.getUserName=function() {
+ var promise = UserInfoService.getFunctionalMenuStaticDetailShareContext();
+ promise.then(
+ function(res) {
+ if(res==null || res==''){
+ $log.info('loginSnippet::getUserName: failed to get user info from shared context');
+ $scope.getUserNameFromSession();
+ }else{
+ // $log.info('Received User information from shared context',res);
+ var resData = res;
+ $scope.inputUserInfo(resData);
+ $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName;
+ }
+ },
+ function(err) {
+ console.log('error');
+ }
+ );
+ };
+ /*call the get user info function*/
+ try{
+ $scope.getUserName();
+ }catch(err){
+ $log.info('Error while getting User information',err);
+ }
+}
+ </script> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp
new file mode 100644
index 00000000..93f96369
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp
@@ -0,0 +1,45 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
+
+<!DOCTYPE html>
+<html ng-app="abs">
+ <head>
+ <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %>
+ <script src="static/js/jquery-1.10.2.js" type="text/javascript"></script>
+ </head>
+ <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;">
+ <div class="applicationWindow">
+ <div>
+ <tiles:insertAttribute name="header" />
+ </div>
+ <br>
+ <div class="content" id="mContent">
+ <div class="body-content-jsp">
+ <tiles:insertAttribute name="body" />
+ </div>
+ </div>
+ <br>
+ <div>
+ <tiles:insertAttribute name="footer" />
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp
new file mode 100644
index 00000000..a579fdc0
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp
@@ -0,0 +1,35 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
+<!DOCTYPE html>
+<html>
+ <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %>
+ <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;">
+ <div class="applicationWindow">
+
+ <div class="content" style="margin-left:100px; margin-right:100px;">
+ <div>
+ <tiles:insertAttribute name="body" />
+ </div>
+ </div>
+
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp
new file mode 100644
index 00000000..4cdfe51d
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp
@@ -0,0 +1,48 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
+<!DOCTYPE html>
+<html ng-app="abs">
+ <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %>
+ <script src="static/js/jquery-1.10.2.js" type="text/javascript"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/app.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
+<script src="static/js/jquery-1.10.2.js"></script>
+<script src="static/js/modalService.js"></script>
+<script src="static/js/jquery.mask.min.js" type="text/javascript"></script>
+<script src="static/js/jquery-ui.js" type="text/javascript"></script>
+<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
+<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script>
+<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
+<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
+
+
+ <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;">
+ <div class="applicationWindow">
+ <div class="content">
+ <tiles:insertAttribute name="body" />
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp
new file mode 100644
index 00000000..61458524
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp
@@ -0,0 +1,97 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<!-- <link rel="stylesheet" type="text/css" href="app/fusion/elasticsearch/styles/styles.css" > -->
+<script>
+app.controller('elasticSearchController',['$scope','$http',function ($scope,$http) {
+ $scope.submenuId = "";
+ $scope.isNew="";
+ $scope.viewPerPage = 20;
+ $scope.currentPage = 2;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ $scope.tableData=[];
+ $scope.searchText='';
+ $scope.flagCount=0;
+ function escapeRegExp(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\&]/g, " ");
+ }
+ $scope.test = function(){
+ $scope.searchText=$scope.searchText;
+ var sendData ={
+ "data" : escapeRegExp($scope.searchText),
+ "size" : "100",
+ "fuzzy" : "true",
+ "resultname" : "custsuggest"
+ };
+
+ if($scope.flagCount<3 || $scope.searchText.length==0){
+ $scope.flagCount++;
+ $http.get('es_search/' + encodeURIComponent(JSON.stringify(sendData))).
+ then(function(response){
+ var data = JSON.parse(response.data.result);
+ $scope.tableData = data.hits.hits;
+ })
+ .catch(function(data,status){
+ console.log("Error: " + status + " : " + data);
+ })
+ .finally(function() {
+ $scope.flagCount--;
+ });
+ }
+ }
+ $scope.searchText='';
+}]);
+</script>
+
+<div style="margin-left:20px;" ng-app="eSearchApp">
+ <div style="margin-top:20px; margin-bottom:20px;"><span class="heading1">Elastic Search - </span><span class="heading2">Corporate Location Data System</span></div>
+ <div class="demoElas" ng-controller="elasticSearchController">
+ <div class="form-field" align="center">
+ <input type="text" placeholder="What are you looking for?" class="search__large-iconform" ng-model="searchText" ng-change="test()">
+ <i class="icon-search">&nbsp;</i>
+ </div>
+
+ <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header>Customer Name</th>
+ <th att-table-header>Phone</th>
+ <th att-table-header>Street</th>
+ <th att-table-header>City</th>
+ <th att-table-header>State</th>
+ <th att-table-header>ZIP</th>
+ <th att-table-header>CLLI</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="options in tableData">
+ <tr>
+ <td att-table-body >{{options._source.name}}</td>
+ <td att-table-body >{{options._source.suggest.payload.tn}}</td>
+ <td att-table-body >{{options._source.suggest.payload.addr}}</td>
+ <td att-table-body >{{options._source.suggest.payload.city}}</td>
+ <td att-table-body >{{options._source.suggest.payload.st}}</td>
+ <td att-table-body >{{options._source.suggest.payload.zip}}</td>
+ <td att-table-body >{{options._source.suggest.payload.clli}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp
new file mode 100644
index 00000000..abae598b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp
@@ -0,0 +1,97 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<!-- <link rel="stylesheet" type="text/css" href="app/fusion/elasticsearch/styles/styles.css" > -->
+<script>
+app.controller('elasticSearchController',['$scope','$http',function ($scope,$http) {
+ $scope.submenuId = "";
+ $scope.isNew="";
+ $scope.viewPerPage = 20;
+ $scope.currentPage = 2;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ $scope.tableData=[];
+ $scope.searchText='';
+ $scope.flagCount=0;
+ function escapeRegExp(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\&]/g, " ");
+ }
+ $scope.test = function(){
+ $scope.searchText=$scope.searchText;
+ var sendData ={
+ "data" : escapeRegExp($scope.searchText),
+ "size" : "20",
+ "fuzzy" : "true",
+ "resultname" : "custsuggest"
+ };
+
+ if($scope.flagCount<3 || $scope.searchText.length==0){
+ $scope.flagCount++;
+ $http.get('es_suggest/' + encodeURIComponent(JSON.stringify(sendData))).
+ then(function(response){
+ var data = JSON.parse(response.data.result);
+ $scope.tableData = data.custsuggest[0].options;
+ })
+ .catch(function(data,status){
+ console.log("Error: " + status + " : " + data);
+ })
+ .finally(function() {
+ $scope.flagCount--;
+ });
+ }
+ }
+ $scope.searchText='';
+}]);
+</script>
+
+<div style="margin-left:20px;" ng-app="eSearchApp">
+ <div style="margin-top:20px; margin-bottom:20px;"><span class="heading1">Elastic Search - </span><span class="heading2">Corporate Location Data System</span></div>
+ <div class="demoElas" ng-controller="elasticSearchController">
+ <div class="form-field" align="center">
+ <input type="text" placeholder="What are you looking for?" class="search__large-iconform" ng-model="searchText" ng-change="test()">
+ <i class="icon-search">&nbsp;</i>
+ </div>
+
+ <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header>Customer Name</th>
+ <th att-table-header>Phone</th>
+ <th att-table-header>Street</th>
+ <th att-table-header>City</th>
+ <th att-table-header>State</th>
+ <th att-table-header>ZIP</th>
+ <th att-table-header>CLLI</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="options in tableData">
+ <tr>
+ <td att-table-body >{{options.text}}</td>
+ <td att-table-body >{{options.payload.tn}}</td>
+ <td att-table-body >{{options.payload.addr}}</td>
+ <td att-table-body >{{options.payload.city}}</td>
+ <td att-table-body >{{options.payload.st}}</td>
+ <td att-table-body >{{options.payload.zip}}</td>
+ <td att-table-body >{{options.payload.clli}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp
new file mode 100644
index 00000000..ed50b5dd
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp
@@ -0,0 +1,44 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<iframe id="frame_insert" src="${frame_int}"></iframe>
+
+<script type="text/javascript">
+
+ var frameId = "#frame_insert";
+
+ $(frameId).load(function(){
+ iframeLoaded()
+
+ });
+
+
+ function iframeLoaded() {
+ var iFrameRef = $(frameId);
+ if(iFrameRef) {
+
+ var height = iFrameRef.contents().find("input[name='inner_height']");
+ var width = iFrameRef.contents().find("input[name='inner_width']");
+
+ iFrameRef.css('height', (height.val() != undefined ? height.val():"500px"));
+ iFrameRef.css('width', (width.val() != undefined ? width.val():"500px"));
+ iFrameRef.css('border','none');
+ }
+ }
+</script> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/include.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/include.jsp
new file mode 100644
index 00000000..cd6a5e09
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/include.jsp
@@ -0,0 +1,30 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties" %>
+<%@ page import="org.openecomp.portalsdk.core.web.support.AppUtils" %>
+
+<%@ page import="java.util.LinkedHashMap" %>
+
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<c:set var="request" value="<%=request%>"/>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp
new file mode 100644
index 00000000..0a361803
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp
@@ -0,0 +1,36 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/demo.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/base.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/btn.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/dtpk.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/frms.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/sldr.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/tbs.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css">
+
+</head> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html
new file mode 100644
index 00000000..0766cecd
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html
@@ -0,0 +1,324 @@
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+
+<script type="text/ng-template" id="modal_informative.html">
+ <div class="modal__informative font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Success!</h2>
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}</div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button>
+ </div>
+ </div>
+ </script>
+
+ <script type="text/ng-template" id="modal_message.html">
+ <div class="modal__informative font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Attention!</h2>
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}</div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button>
+ </div>
+ </div>
+ </script>
+
+ <script type="text/ng-template" id="delete_informative.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are you sure you want to delete the profile?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="email_report_informative.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Mailing your report...</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ The report will be sent to your email soon!
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Ok</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_authCode.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are you sure you want to delete the Authorization Code(s)?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_Schedule.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Schedule(s) ?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="alternate_number.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Number ?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="manage_device.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Line Port ?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_virtualOnNet.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete this Virtual On-Net User?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_user_meet_me_conference.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete this Conference?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="confirmation_informative.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">{{message.title}}</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}<br/></div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+
+ <script type="text/ng-template" id="confirmation_for_delete.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name"> <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This {{message.title}}?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">Deletions are not reversible. {{message.text}}<br/></div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+
+ <script type="text/ng-template" id="modal_warning.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Unable to process your request!</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content" style="white-space: pre-wrap;">Unable to process your request. <br/>{{message.text}}<br/>
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button>
+ </div>
+ </div>
+ </script>
+
+ <script type="text/ng-template" id="modal_warning_message.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Warning</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}<br/>
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button>
+ </div>
+ </div>
+ </script>
+
+
+
+ <script type="text/ng-template" id="modal_prompt.html">
+ <div class="modal__warning font-showcase">
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Unable to process your request. </h2>
+ <i class="icon-circle-action-close close-modal modal__header--close" ng-click="$dismiss()"></i>
+
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Unable to process your request. <br/> {{message.text}}
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_device.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Device?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+ <script type="text/ng-template" id="delete_multiple_device.html">
+ <div class="modal__warning font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name">Are You Sure You Want to Delete The Device(s)?</h2>
+
+ <div class="modal__header--icon"></div>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ Deletions are not reversible.<br/> {{message.text}}
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button>
+ </div>
+ </div>
+ </script>
+
+<script>
+
+//.controller('modalpopupController', function ($scope, $modalInstance){
+var modalpopupController = function ($scope, $modalInstance, message){
+
+ $scope.message = message;
+
+
+ $scope.hello = function () {
+ $modalInstance.close($scope.digitPattern);
+ };
+ $modalInstance.ok = function() {
+ //add the ok functionality
+ alert("Logout");
+ };
+ $modalInstance.cancel = function() {
+ //add the cancel functionality
+ alert("Keep Log in");
+ };
+ $modalInstance.cancelbutton = function() {
+ //add the cancel functionality
+ alert("Modal Waring popup close event");
+ };
+}
+
+
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html
new file mode 100644
index 00000000..c163002d
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html
@@ -0,0 +1,274 @@
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+
+<script type="text/ng-template" id="role_functions_popup.html">
+ <div class="modal__informative font-showcase" style="width:700px;height:500px;overflow:scroll">
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name" style="width: 500px;">Select Role Functions</h2>
+ </div>
+ <button align="right" class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ <table table-data="availableRoleFunctions" att-table>
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" width="10%"> </th>
+ <th att-table-header sortable="false" width="90%">Role Function</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="availableRoleFunction in availableRoleFunctions" style="max-height: 980px;" >
+ <tr>
+
+ <td width="10%">
+ <div ng-click="toggleRoleFunction(availableRoleFunction.selected,availableRoleFunction);">
+ <input type="checkbox" ng-model="availableRoleFunction.selected" att-toggle-main>
+ </div>
+ </td>
+ <td width="90%">{{ availableRoleFunction.name }}</td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</script>
+
+
+<script type="text/ng-template" id="child_roles_popup.html">
+ <div class="modal__informative font-showcase" style="width:700px;height:500px;overflow:scroll">
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name" style="width: 500px;">Select Child Roles</h2>
+ </div>
+ <button align="right" class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ <table table-data="availableRoles" att-table>
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" width="10%"> </th>
+ <th att-table-header sortable="false" width="90%">Role</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="availableRole in availableRoles" style="max-height: 980px;" >
+ <tr>
+ <td att-table-body width="10%">
+ <div ng-click="toggleChildRole(availableRole.selected,availableRole);">
+ <input type="checkbox" ng-model="availableRole.selected" att-toggle-main>
+ </div>
+ </td>
+ <td att-table-body width="90%">{{ availableRole.name }}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</script>
+
+<script>
+
+var rolepopupController = function ($scope, $modalInstance, role,modalService){
+ $scope.role = role;
+
+ if($scope.role.childRoles==null){
+ $scope.role.childRoles=[];
+ }
+
+ $scope.ociavailableRoles=${availableRoles};
+ console.log($scope.ociavailableRoles);
+ $scope.availableRoles=[];
+ if($scope.ociavailableRoles)
+ $.each($scope.ociavailableRoles, function(i, a){
+ var availableRole = a;
+ availableRole.selected = false;
+ if($scope.role.childRoles){
+ $.each($scope.role.childRoles, function(j, b){
+ if(a.id === b.id) {
+ availableRole.selected = true;
+ }
+ });
+ };
+ $scope.availableRoles.push(availableRole);
+ });
+ ;
+
+ $scope.ociavailableRoleFunctions=${availableRoleFunctions};
+
+ $scope.availableRoleFunctions = [];
+ if($scope.ociavailableRoleFunctions)
+ $.each($scope.ociavailableRoleFunctions, function(i, a){
+ var availableRoleFunction = a;
+ availableRoleFunction.selected = false;
+ $.each($scope.role.roleFunctions, function(j, b){
+ if(a.code === b.code) {
+ availableRoleFunction.selected = true;
+ }
+ });
+ $scope.availableRoleFunctions.push(availableRoleFunction);
+ });
+ ;
+
+ $scope.toggleRoleFunction = function(selected,availableRoleFunction) {
+ //alert('toggleRole: '+selected);
+
+ if(!selected) {
+ //remove role function
+ if(role.id==null){
+ var index = $scope.role.roleFunctions.indexOf(availableRoleFunction);
+ if(index>=0)
+ $scope.role.roleFunctions.splice(index, 1);
+ return;
+ }
+ var uuu = "role/removeRoleFunction.htm?role_id=${param.role_id}";
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to remove the role function "+availableRoleFunction.name+" from the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var postData={roleFunction:availableRoleFunction};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.role=data.role;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },
+ function(){
+ availableRoleFunction.selected=!availableRoleFunction.selected;
+ })
+
+ } else {
+ //add role function
+ if(role.id==null){
+ $scope.role.roleFunctions.push(availableRoleFunction);
+ return;
+ }
+ var uuu = "role/addRoleFunction.htm?role_id=${param.role_id}";
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to add the role function "+availableRoleFunction.name+" to the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var postData={roleFunction:availableRoleFunction};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.role=data.role;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },
+ function(){
+ availableRoleFunction.selected=!availableRoleFunction.selected;
+ })
+
+ }
+
+
+ };
+
+ $scope.toggleChildRole = function(selected,availableRole) {
+ //alert('toggleRole: '+selected);
+
+ if(!selected) {
+ //remove role
+ if(role.id==null){
+ var index = $scope.role.childRoles.indexOf(availableRole);
+ if(index>=0)
+ $scope.role.childRoles.splice(index, 1);
+ return;
+ }
+ var uuu = "role/removeChildRole.htm?role_id=${param.role_id}";
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to remove the child role "+availableRole.name+" from the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var postData={childRole:availableRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ console.log('role',data.role);
+ $scope.$apply(function(){$scope.role=data.role;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },
+ function(){
+ availableRole.selected=true;
+ })
+
+ } else {
+ //add role
+ if(role.id==null){
+ $scope.role.childRoles.push(availableRole);
+ return;
+ }
+ var uuu = "role/addChildRole.htm?role_id=${param.role_id}";
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to add the child role "+availableRole.name+" to the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var postData={childRole:availableRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.role=data.role;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },
+ function(){
+ availableRole.selected=false;
+ })
+
+
+ }
+
+
+ };
+
+
+ $scope.close = function() {
+ console.log('role', $scope.role);
+ $modalInstance.close({role:$scope.role});
+ };
+
+}
+
+
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html
new file mode 100644
index 00000000..ee0b5121
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html
@@ -0,0 +1,87 @@
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+<script type="text/ng-template" id="edit_role_function_popup.html">
+ <div class="modal__informative font-showcase" style="width:400px;">
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name" style="width: 500px;">{{label}}</h2>
+ </div>
+ <div class="divider-container"><hr> </div>
+ <div class="modal__content">
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Name:</label><br>
+ <input type="text" class="fn-ebz-text" ng-model="editRoleFunction.name"
+ maxlength="30" />
+ </div>
+ <br/>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Code:</label><br>
+ <input type="text" class="fn-ebz-text" ng-model="editRoleFunction.code" ng-disabled="disableCd"
+ maxlength="30" />
+ </div>
+ </div>
+ <div class="modal__footer">
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="saveRoleFunction(editRoleFunction);">Save</button>
+ <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button>
+ </div>
+ </div>
+</script>
+
+<script>
+
+var rolefunctionpopupController = function ($scope, $modalInstance, message){
+ if(message.availableRoleFunction==null)
+ $scope.label='Add Role Function'
+ else{
+ $scope.label='Edit Role Function'
+ $scope.disableCd=true;
+ }
+ $scope.editRoleFunction = message.availableRoleFunction;
+
+ $scope.saveRoleFunction = function(availableRoleFunction) {
+ var uuu = "role_function_list/saveRoleFunction.htm";
+ var postData={availableRoleFunction: availableRoleFunction};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ //$scope.availableRoleFunctions=[];$scope.$apply();
+ $scope.availableRoleFunctions=data.availableRoleFunctions;});
+ //alert("Update Successful.") ;
+ console.log($scope.availableRoleFunctions);
+
+ //$scope.editRoleFunction = null;
+ $modalInstance.close({availableRoleFunctions:$scope.availableRoleFunctions});
+ },
+ error : function(data){
+ alert("Error while saving.");
+ }
+ });
+ };
+
+ $scope.close = function() {
+ $modalInstance.close();
+ };
+}
+
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp
new file mode 100644
index 00000000..eacdfbe0
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp
@@ -0,0 +1 @@
+<iframe style="border:none" src="app/fusion/sequence/view-models/details.html" height="700" width="1300"></iframe> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp
new file mode 100644
index 00000000..9bf0ed74
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp
@@ -0,0 +1,494 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml" ng-app="abs">
+<head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <link type="text/css" rel="stylesheet" href="app/fusion/styles/layout/layout-default-latest.css" />
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/btn.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" >
+ <style type="text/css">
+ /*
+ * NOTE: All CSS is purely cosmetic - it does not affect functionality
+ * http://layout.jquery-dev.com/demos.cfm
+ */
+
+ /* customize borders to avoid double-borders around inner-layouts */
+ .ui-layout-pane {
+ border: 0; /* override layout-default-latest.css */
+ border-top: 1px solid #BBB;
+ border-bottom: 1px solid #BBB;
+ }
+ .ui-layout-pane-north ,
+ .ui-layout-pane-south {
+ border: 1px solid #BBB;
+ overflow: auto;
+ }
+ .ui-layout-pane-west ,
+ .ui-layout-pane-east {
+ }
+ .ui-layout-pane-center {
+ border-left: 0;
+ border-right: 0;
+ }
+ .inner-center {
+ border: 1px solid #BBB;
+ }
+
+ /* add shading to outer sidebar-panes */
+ .outer-west ,
+ .outer-east {
+ background-color: #EEE;
+ }
+ .middle-west ,
+ .middle-east {
+ background-color: #F8F8F8;
+ }
+
+ /* remove padding & scrolling from panes that are 'containers' for nested layouts */
+ .outer-center ,
+ .middle-center {
+ border: 0; /* cosmetic */
+ padding: 0;
+ overflow: auto;
+ }
+
+ /*
+ * customize borders on panes/resizers to make pretty
+ */
+ .ui-layout-pane-west { border-right: 0; }
+ .ui-layout-resizer-west { border-left: 1px solid #BBB; }
+ .ui-layout-pane-east { border-left: 0; }
+ .ui-layout-resizer-east { border-right: 1px solid #BBB; }
+ .ui-layout-pane-north { border-bottom: 0; }
+ .ui-layout-resizer-north { border-top: 1px solid #BBB; }
+ .ui-layout-pane-south { border-top: 0; }
+ .ui-layout-resizer-south { border-bottom: 1px solid #BBB; }
+ /*
+ * add borders to resizers when pane is 'closed'
+ *
+ *.ui-layout-resizer-closed { border: 1px solid #BBB; }
+ */
+ /*
+ * show both borders when the resizer is 'dragging'
+ */
+ .ui-layout-resizer-west-dragging ,
+ .ui-layout-resizer-east-dragging {
+ border-left: 1px solid #BBB;
+ border-right: 1px solid #BBB;
+ }
+ .ui-layout-resizer-north-dragging ,
+ .ui-layout-resizer-south-dragging {
+ border-top: 1px solid #BBB;
+ border-bottom: 1px solid #BBB;
+ }
+
+
+ /*
+ layout toggler background image
+ */
+ .ui-layout-toggler-west, .ui-layout-toggler-east {
+ border-width: 1px 0;
+ background-image: url("static/fusion/images/layout/panel-e-w-toggle.png");
+ background-size: 10px 10px;
+ background-repeat: no-repeat;
+ background-position: center;
+ }
+
+ .ui-layout-toggler-north, .ui-layout-toggler-south {
+ border-width: 0 1px;
+ background-image: url("static/fusion/images/layout/panel-n-s-toggle.png");
+ background-size: 10px 10px;
+ background-repeat: no-repeat;
+ background-position: center;
+ }
+
+ body{background-color:#fff;font-size:14px;font-size:.875rem;margin:0;padding:0px 0 20px;position:relative}
+
+ </style>
+
+
+ <!-- LAYOUT v 1.3.0 -->
+ <script type="text/javascript" src="app/fusion/scripts/layout/jquery-latest.js"></script>
+ <script type="text/javascript" src="app/fusion/scripts/layout/jquery-ui-latest.js"></script>
+ <script type="text/javascript" src="app/fusion/scripts/layout/jquery.layout-latest.js"></script>
+ <script type="text/javascript" src="app/fusion/scripts/webrtc/RTCMultiConnection.js"></script>
+ <script type="text/javascript" src="app/fusion/scripts/socket/peerBroadcast.js"></script>
+ <script type="text/javascript" src="app/fusion/scripts/layout/debug.js"></script>
+
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" >
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
+
+ <script src= "app/fusion/external/ebz/angular_js/angular.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/app.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
+
+ <%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+ <script src="app/fusion/scripts/modalService.js"></script>
+ <script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
+ <script src="app/fusion/scripts/att_angular_gridster/ui-gridster-tpls.js"></script>
+ <script src="app/fusion/scripts/att_angular_gridster/angular-gridster.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
+ <script type="text/javascript" src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script>
+ <style>
+ body{background-color:#fff;font-size:14px;font-size:.875rem;margin:0;padding:0px 0 20px;position:relative}
+ </style>
+
+ <script type="text/javascript">
+
+
+ var popupModalService;
+
+ app.controller("collaborationController", function ($scope,$http,modalService, $modal) {
+ popupModalService = modalService;
+
+ });
+
+
+ $(document).ready(function () {
+
+ // OUTER-LAYOUT
+ panelLayout = $('body').layout({
+ center__paneSelector: ".outer-center"
+ , west__paneSelector: ".outer-west"
+ , east__paneSelector: ".outer-east"
+ //, west__size: 800
+ //, east__size: 125
+ , spacing_open: 8 // ALL panes
+ , spacing_closed: 12 // ALL panes
+
+ , center__childOptions: {
+ center__paneSelector: ".inner-center"
+ , west__paneSelector: ".inner-west"
+ , east__paneSelector: ".inner-east"
+ , west__size: 75
+ , east__size: 75
+ , spacing_open: 8 // ALL panes
+ , spacing_closed: 8 // ALL panes
+ , west__spacing_closed: 12
+ , east__spacing_closed: 12
+ }
+
+
+
+
+ });
+
+
+ function initializeConnections() {
+
+ var channelId = null;
+ channelId = location.href.replace(/\/|:|#|%|\.|\[|\]/g, '');
+ var videoChannelId = channelId.concat("video");
+ var screenChannelId = channelId.concat("screen");
+
+ videoConnection = new RTCMultiConnection(videoChannelId);
+ screenConnection = new RTCMultiConnection(screenChannelId);
+
+ configConnection(videoConnection,true,true,false,true,false);
+ configConnection(screenConnection,false,false,true,false,true);
+
+ };
+
+ function configConnection(_connection, _audio, _video, _screen, _data, _oneway) {
+ _connection.session = {
+ audio: _audio, // by default, it is true
+ video: _video, // by default, it is true
+ screen: _screen,
+ data: _data,
+ oneway: _oneway,
+ broadcast: false
+ };
+
+ _connection.direction = "one-to-one";
+
+ if( _data == true ) {
+ _connection.onmessage = function(e) {
+ appendDIV(e.data);
+
+ console.debug(e.userid, 'posted', e.data);
+ console.log('latency:', e.latency, 'ms');
+ };
+ }
+
+
+ };
+
+ function assignStreamToDom() {
+
+
+ screenConnection.screenbody = document.querySelector('.screenContainer1');
+ screenConnection.videobody = document.querySelector('.videoContainer2');
+
+ videoConnection.screenbody = document.querySelector('.screenContainer2');
+ videoConnection.videobody = document.querySelector('.videoContainer1');
+ };
+
+ function maximizeLayout() {
+
+ // open the panes and maximize the window.
+ top.window.resizeTo(screen.availWidth,screen.availHeight);
+ panelLayout.open('west');
+ // panelLayout.open('south'); is not working due to state initialization problem; debug to find out. so replacing the call with work around below - hack.
+ $(".ui-layout-toggler-south-closed").first().click();
+
+ };
+
+ function minimizeLayout() {
+
+ // close the panes and minimize the window.
+ top.window.resizeTo(screen.availWidth - 2*screen.availWidth/3, screen.availHeight - screen.availHeight/2);
+ panelLayout.close('west');
+ // panelLayout.close('south'); is not working due to state initialization problem; debug to find out. so replacing the call with work around below - hack.
+ $(".ui-layout-toggler-south-opened").first().click();
+ };
+
+ function emptyContainers() {
+ $('.screenContainer1').empty();
+ $('.videoContainer2').empty();
+
+ $('.screenContainer2').empty();
+ $('.videoContainer1').empty();
+ };
+
+ function appendDIV(div, parent) {
+ if (typeof div === 'string') {
+ var content = div;
+ div = document.createElement('div');
+ div.innerHTML = content;
+ };
+
+ var chatOutput = document.getElementById('chat-output'),
+ fileProgress = document.getElementById('file-progress');
+
+ if (!parent) chatOutput.insertBefore(div, chatOutput.firstChild);
+ else fileProgress.insertBefore(div, fileProgress.firstChild);
+
+ div.tabIndex = 0;
+ $('#chat-input').focus();
+ };
+
+ function confirmClose() {
+ var message = "Are you sure you want to close the session?";
+
+ if(popupModalService != undefined) {
+ popupModalService.popupConfirmWin("Confirm", message, function(){ location.reload();});
+ }
+
+ else if (confirm(message) == true) {
+ location.reload();
+ //window.opener.location.reload(); // go to the parent window
+ //close();
+ } else {
+ // do nothing
+ }
+
+ };
+
+ function notifyOthers() {
+
+ // var websocket = localStorage.getItem('notifySocket');
+ //if( websocket != null) {
+ // handling websocket peer broadcast session
+ var currentUser = "${sessionScope.user.sbcid}";
+ var initialPageVisit = "${sessionScope.initialPageVisit}";
+ var remoteUser = '';
+
+ var userList = location.search.split('chat_id=')[1].split('-');
+ for(var i=0;i<userList.length;i++) {
+ if(userList[i] !== currentUser) {
+ remoteUser = userList[i];
+ break;
+ }
+ }
+
+ socketSetup(initialPageVisit, currentUser, remoteUser,"socketSend");
+
+
+
+
+
+
+ };
+
+ function makeChatVisible() {
+
+ $('#chat-input').css("visibility", 'visible');
+ };
+
+
+
+ /* on click button enabled*/
+ document.getElementById('share-screen').onclick = function() {
+
+ emptyContainers();
+ videoConnection.close();
+ screenConnection.close();
+
+ maximizeLayout();
+ emptyContainers();
+ makeChatVisible();
+
+ videoConnection.open();
+ screenConnection.open();
+
+
+ notifyOthers();
+
+
+
+ };
+
+ document.getElementById('stop-share-screen').onclick = function() {
+
+ emptyContainers();
+
+ videoConnection.close();
+ screenConnection.close();
+
+ confirmClose();
+
+ };
+
+ document.getElementById('view-screen').onclick = function() {
+
+ maximizeLayout();
+ emptyContainers();
+ makeChatVisible();
+
+ // timeout is required for the sharing to properly work
+ setTimeout(function() {
+ screenConnection.connect();
+ },2000);
+ setTimeout(function() {
+ videoConnection.connect();
+ },1000);
+
+
+ };
+
+ document.getElementById('chat-input').onkeypress = function(e) {
+ if (e.keyCode !== 13 || !this.value) return;
+ var message = "<b>${model.name}</b>: " + this.value;
+ appendDIV(message);
+
+ // sending text message
+ videoConnection.send(message);
+
+ this.value = '';
+ };
+
+ /*
+ document.getElementById('file').onchange = function() {
+ videoConnection.send(this.files[0]);
+ };
+ */
+
+
+ //document.querySelector('.screenContainerPane').appenChild(document.querySelector('.screenContainer'));
+ //document.querySelector('.videoContainerPane').appendChild(document.querySelector('.videoContainer'));
+
+ //panelLayout.bindButton($('#share-screen'), 'open', 'outer-west');
+ //panelLayout.bindButton($('#stop-share-screen'), 'close', 'outer-west');
+ var videoConnection = null, screenConnection = null;
+ initializeConnections();
+ assignStreamToDom();
+
+ // start the share
+ //document.getElementById('share-screen').click();
+ //
+ });
+
+
+</script>
+
+
+</head>
+
+<body>
+<!--
+ <button id="share-screen" hidden="true" style="display: none;" class="setup">Share Your Screen</button>
+ <button id="stop-share-screen" hidden="true" style="display: none;" class="setup">Stop Share Your Screen</button>
+ <button id="view-screen" hidden="true" style="display: none;" class="setup">View My Screen</button>
+
+ -->
+
+<div class="outer-center" style="position: absolute; left: 12px; right: 0px; top: 0px;bottom: 0px;">
+ <div class="inner-center">
+
+ <!-- <jsp:include page="/WEB-INF/fusion/zul/chatOne.zul" /> -->
+
+
+
+ <table style="width: 100%;">
+ <tbody><tr>
+ <td>
+ <button id="share-screen" class="button button--primary button--small setup">Start Session</button>
+ <button id="stop-share-screen" class="button button--primary button--small setup">Stop Session</button>
+ <button id="view-screen" class="button button--primary button--small setup">View</button>
+
+ </td>
+
+ </tr>
+ </tbody>
+
+ <tbody><tr>
+ <td>
+ <input type="text" id="chat-input" style="font-size: 1.2em;visibility:collapse;" placeholder="type here.."/>
+ <div id="chat-output"></div>
+ </td>
+ <!--
+ <td style="background: white;">
+ <input type="file" id="file">
+ <div id="file-progress"></div>
+ </td>
+ -->
+ </tr>
+ </tbody>
+ </table>
+
+
+ </div>
+ <div id="inner-south" class="ui-layout-south">
+ <div class="videoContainer1"></div>
+ <div class="videoContainer2"></div>
+
+ </div>
+</div>
+
+<div class="outer-west">
+ <div class="screenContainer1"></div>
+ <div class="screenContainer2"></div>
+ <div ng-controller="collaborationController">
+ </div>
+</div>
+
+
+
+
+
+</body>
+</html>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml
new file mode 100644
index 00000000..28060a7c
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml
@@ -0,0 +1,352 @@
+<?xml version="1.0"?>
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.openecomp.portalsdk.core.domain">
+
+ <!-- User class mapping details -->
+ <class name="User" table="FN_USER">
+ <id name="id" column="user_id" >
+ <generator class="native">
+ <param name="sequence">seq_fn_user</param>
+ </generator>
+ </id>
+
+ <property name="orgId" column="org_id"/>
+ <property name="managerId" column="manager_id"/>
+ <property name="firstName" column="first_name"/>
+ <property name="middleInitial" column="middle_name"/>
+ <property name="lastName" column="last_name"/>
+ <property name="phone" column="phone"/>
+ <property name="fax" column="fax"/>
+ <property name="cellular" column="cellular"/>
+ <property name="email" column="email"/>
+ <property name="addressId" column="address_id"/>
+ <property name="alertMethodCd" column="alert_method_cd"/>
+
+ <property name="address1" column="address_line_1"/>
+ <property name="address2" column="address_line_2"/>
+ <property name="city" column="city"/>
+ <property name="state" column="state_cd"/>
+ <property name="zipCode" column="zip_code"/>
+ <property name="country" column="country_cd"/>
+
+ <property name="hrid" column="hrid"/>
+ <property name="orgUserId" column="org_user_id"/>
+ <property name="orgCode" column="org_code"/>
+ <property name="loginId" column="login_id"/>
+ <property name="loginPwd" column="login_pwd"/>
+ <property name="lastLoginDate" column="last_login_date" type="timestamp"/>
+
+ <property name="locationClli" column="location_clli" />
+ <property name="orgManagerUserId" column="org_manager_userid" />
+ <property name="company" column="company" />
+ <property name="department" column="department" />
+ <property name="departmentName" column="department_name" />
+ <property name="businessUnit" column="business_unit" />
+ <property name="businessUnitName" column="business_unit_name" />
+ <property name="jobTitle" column="job_title" />
+ <property name="siloStatus" column="silo_status" />
+ <property name="financialLocCode" column="fin_loc_code" />
+
+ <property name="active" column="active_yn" type="yes_no"/>
+ <property name="internal" column="is_internal_yn" type="yes_no"/>
+
+ <property name="created" type="timestamp" column="created_date" />
+ <property name="modified" type="timestamp" column="modified_date" />
+
+ <property name="createdId" column="created_id" />
+ <property name="modifiedId" column="modified_id" />
+ <property name="timeZoneId" column="timezone" />
+
+ <set name="userApps" table="FN_USER_ROLE" lazy="false" sort="natural" inverse="true" cascade="all-delete-orphan">
+ <key column="user_id"/>
+ <one-to-many class="org.openecomp.portalsdk.core.domain.UserApp" />
+ </set>
+
+ <set name="pseudoRoles" table="FN_USER_PSEUDO_ROLE" lazy="false" sort="natural">
+ <key column="user_id"/>
+ <many-to-many column="pseudo_role_id" class="org.openecomp.portalsdk.core.domain.Role" />
+ </set>
+ </class>
+
+ <!-- Profile class mapping details;
+ dupe of User class, but fewer fields -->
+ <class name="Profile" table="FN_USER">
+ <id name="id" column="user_id" >
+ <generator class="increment"/>
+ </id>
+ <property name="first_name" column="first_name"/>
+ <property name="last_name" column="last_name"/>
+ <property name="email" column="email"/>
+ <property name="orgManagerUserId" column="org_manager_userid" />
+ <property name="active_yn" column="active_yn"/>
+ <property name="orgUserId" column="org_user_id"/>
+ </class>
+
+ <class name="UserApp" table="fn_user_role">
+ <composite-id>
+ <key-property name="userId" type="long">
+ <column name="user_id" precision="11" scale="0" />
+ </key-property>
+ <key-many-to-one name="app" class="org.openecomp.portalsdk.core.domain.App" column="app_id" />
+ <key-many-to-one name="role" class="org.openecomp.portalsdk.core.domain.Role" column="role_id" />
+ </composite-id>
+ <property name="priority" type="java.lang.Short">
+ <column name="priority" precision="4" scale="0" />
+ </property>
+ </class>
+
+ <!-- App class mapping details -->
+ <class name="App" table="fn_app">
+ <id name="id" column="app_id"/>
+ <property name="name" column="app_name"/>
+ <property name="appPassword" column="app_password"/>
+ <property name="username" column="app_username"/>
+ <property name="imageUrl" column="app_image_url"/>
+ <property name="description" column="app_description"/>
+ <property name="notes" column="app_notes"/>
+ <property name="url" column="app_url"/>
+ <property name="alternateUrl" column="app_alternate_url"/>
+ <property name="restEndpoint" column="app_rest_endpoint"/>
+ <property name="mlAppName" column="ml_app_name"/>
+ <property name="mlAppAdminId" column="ml_app_admin_id"/>
+ <property name="motsId" column="mots_id"/>
+ <property name="open" column="open"/>
+ <property name="enabled" column="enabled"/>
+ <property name="thumbnail" column="thumbnail" type="blob"/>
+ <property name="uebKey" column="ueb_key"/>
+ <property name="uebSecret" column="ueb_secret"/>
+ <property name="uebTopicName" column="ueb_topic_name"/>
+ </class>
+
+
+ <!-- Audit Log class mapping details -->
+ <class name="AuditLog" table="fn_audit_log">
+ <id name="id" column="log_id">
+ <!-- <generator class="sequence">
+ <param name="sequence">seq_fn_audit_log</param>
+ </generator> -->
+ <generator class="native">
+ <param name="sequence">seq_fn_audit_log</param>
+ </generator>
+ </id>
+ <property name="activityCode" column="activity_cd"/>
+ <property name="affectedRecordId" column="affected_record_id" />
+ <property name="comments" column="comments" />
+ <property name="createdId" column="user_id" />
+ </class>
+
+ <!-- User Role class mapping details -->
+ <class name="Role" table="FN_ROLE">
+ <id name="id" column="role_id">
+ <generator class="native">
+ <param name="sequence">seq_fn_role</param>
+ </generator>
+ </id>
+
+ <property name="name" column="role_name"/>
+ <property name="priority" column="priority" />
+ <property name="active" column="active_yn" type="yes_no"/>
+
+ <set name="roleFunctions" table="FN_ROLE_FUNCTION" lazy="false" sort="natural">
+ <key column="role_id"/>
+ <many-to-many column="function_cd" class="org.openecomp.portalsdk.core.domain.RoleFunction"/>
+ </set>
+
+ <set name="childRoles" table="FN_ROLE_COMPOSITE" lazy="false" sort="natural">
+ <key column="parent_role_id"/>
+ <many-to-many column="child_role_id" class="org.openecomp.portalsdk.core.domain.Role"/>
+ </set>
+
+ <set name="parentRoles" table="FN_ROLE_COMPOSITE" lazy="false" sort="natural">
+ <key column="child_role_id"/>
+ <many-to-many column="parent_role_id" class="org.openecomp.portalsdk.core.domain.Role"/>
+ </set>
+
+ </class>
+
+
+
+ <!-- User Role Function class mapping details -->
+ <class name="RoleFunction" table="FN_FUNCTION">
+ <id name="code" column="function_cd" />
+ <property name="name" column="function_name" />
+ </class>
+
+ <!-- Menu class mapping details -->
+ <class name="Menu" table="FN_MENU">
+ <id name="id" column="menu_id">
+ <generator class="native">
+ <param name="sequence">seq_fn_menu</param>
+ </generator>
+ </id>
+
+ <!-- <property name="menuLevel" column="level-1"/> -->
+ <property name="label" column="label"/>
+ <property name="parentId" column="parent_id"/>
+ <property name="action" column="action"/>
+ <property name="functionCd" column="function_cd"/>
+ <property name="sortOrder" column="sort_order"/>
+ <property name="servlet" column="servlet"/>
+ <property name="queryString" column="query_string"/>
+ <property name="externalUrl" column="external_url"/>
+ <property name="target" column="target"/>
+ <property name="menuSetCode" column="menu_set_cd"/>
+ <property name="active" column="active_yn" type="yes_no"/>
+ <property name="separator" column="separator_yn" type="yes_no"/>
+ <property name="imageSrc" column="image_src" />
+ </class>
+
+ <class name="MenuData" table="FN_MENU">
+ <!-- <id name="id" column="menu_id"/> -->
+ <id name="id" column="menu_id">
+ <generator class="native">
+ <param name="sequence">seq_fn_menu</param>
+ </generator>
+ </id>
+ <property name="label" column="label"/>
+ <property name="action" column="action"/>
+ <property name="functionCd" column="function_cd"/>
+ <property name="sortOrder" column="sort_order"/>
+ <property name="servlet" column="servlet"/>
+ <property name="queryString" column="query_string"/>
+ <property name="externalUrl" column="external_url"/>
+ <property name="target" column="target"/>
+ <property name="active" column="active_yn" type="yes_no"/>
+ <property name="separator" column="separator_yn" type="yes_no"/>
+ <property name="imageSrc" column="image_src" />
+ <property name="menuSetCode" column="menu_set_cd" />
+
+ <many-to-one name="parentMenu" column="parent_id" class="MenuData"/>
+
+ <set name="childMenus" lazy="false" sort="natural" inverse="true" where="active_yn = 'Y'">
+ <key column="parent_id"/>
+ <one-to-many class="MenuData"/>
+ </set>
+ </class>
+
+ <!-- Broadcast Message class mapping details -->
+ <class name="BroadcastMessage" table="fn_broadcast_message">
+ <id name="id" column="message_id">
+ <generator class="native">
+ <param name="sequence">seq_fn_broadcast_message</param>
+ </generator>
+ </id>
+ <property name="messageText" column="message_text"/>
+ <property name="locationId" column="message_location_id"/>
+
+ <property name="startDate" column="broadcast_start_date" type="timestamp"/>
+ <property name="endDate" column="broadcast_end_date" type="timestamp"/>
+
+ <property name="sortOrder" column="sort_order"/>
+ <property name="active" column="active_yn" type="yes_no"/>
+
+ <property name="siteCd" column="broadcast_site_cd" />
+ </class>
+
+ <!-- State Lookup class mapping details -->
+ <class name="LuState" table="FN_LU_STATE">
+ <id name="abbr" column="state_cd" />
+ <property name="state" />
+ </class>
+
+ <!-- Country Lookup class mapping details -->
+ <class name="LuCountry" table="FN_LU_COUNTRY">
+ <id name="abbr" column="country_cd" />
+ <property name="country" />
+ <property name="fullName" column="full_name" />
+ <property name="webphoneCountryLabel" column="fullwebphone_country_label_name" />
+ </class>
+
+ <class name="LuTimeZone" table="FN_LU_TIMEZONE">
+ <id name="timezoneId" column="timezone_id" />
+ <property name="name" column="timezone_name" />
+ <property name="value" column="timezone_value" />
+ </class>
+
+
+ <!-- Lookup (id/value bean) class mapping details -->
+ <class name="Lookup">
+ <composite-id name="nameValueId" class="org.openecomp.portalsdk.core.domain.support.NameValueId">
+ <key-property name="val"/>
+ <key-property name="lab" />
+ </composite-id>
+ </class>
+
+ <class name="UrlsAccessible" table="V_URL_ACCESS">
+ <composite-id name="urlsAccessibleKey" class="org.openecomp.portalsdk.core.domain.UrlsAccessibleKey">
+ <key-property name="url" column="url"/>
+ <key-property name="functionCd" column="function_cd"/>
+ </composite-id>
+ </class>
+
+
+ <query name="ParentIdForLabelList">
+ select distinct md.parentMenu.id from MenuData as md where md.label = :paramLabel and md.label is not null
+ </query>
+
+ <query name="IdForLabelList">
+ select distinct md.id from MenuData as md where md.label = :paramLabel
+ </query>
+
+ <query name="parentList">
+ select distinct md.id, md.label, md.parentMenu.id from MenuData as md where md.label is not null
+ </query>
+
+ <query name="functionCDlistOld">
+ select distinct functionCd from MenuData
+ </query>
+
+ <query name="functionCDlist">
+ select distinct code from RoleFunction
+ </query>
+
+ <query name="menuData">
+ from MenuData where menuSetCode = :menu_set_cd and parentMenu is null
+ </query>
+ <query name="restrictedUrls">
+ FROM UrlsAccessible A where upper(A.urlsAccessibleKey.url) = upper(:current_url)
+ </query>
+
+ <query name="getUserNameById">
+ select firstName, lastName from User where id = :user_id
+ </query>
+
+ <query name="getUserEmail">
+ select email from User where id = :user_id
+ </query>
+
+ <query name="getAllUsers">
+ select id, firstName, lastName from User where active = true order by lastName, firstName
+ </query>
+
+ <query name="getRoleNameById">
+ select name from Role where id = :role_id
+ </query>
+
+ <query name="getAllRoles">
+ select id, name from Role order by name
+ </query>
+</hibernate-mapping>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml
new file mode 100644
index 00000000..3d8852cb
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ -->
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.openecomp.portalsdk.workflow.domain">
+
+
+ <!-- WorkflowSchedule mapping details -->
+ <class name="WorkflowSchedule" table="fn_schedule_workflows">
+ <id name="id" column="id_schedule_workflows">
+ <generator class="native">
+ </generator>
+ </id>
+
+ <property name="serverUrl" column="workflow_server_url"/>
+ <property name="workflowKey" column="workflow_key"/>
+ <property name="arguments" column="workflow_arguments"/>
+ <property name="cronDetails" column="startDateTimeCron"/>
+ <property name="startDateTime" column="start_date_time"/>
+ <property name="endDateTime" column="endDateTime"/>
+ <property name="recurrence" column="recurrence"/>
+
+ </class>
+
+
+
+</hibernate-mapping>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp
new file mode 100644
index 00000000..0bd373b7
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp
@@ -0,0 +1,135 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<%@ page import="java.net.*" %>
+
+
+<script src='dwr/engine.js'></script>
+<script src='dwr/util.js'></script>
+<script src='dwr/interface/fusionAjax.js'></script>
+
+<%@ include file="/WEB-INF/fusion/jsp/include.jsp" %>
+
+<%
+ String url = request.getParameter("returnUrl");
+
+ if (url != null) {
+ request.setAttribute("returnUrl", URLDecoder.decode(url, "UTF-8"));
+ }
+
+%>
+
+<BODY height="100%">
+<form name="listForm" action="<%=request.getAttribute("returnUrl")%>" method="POST" target="_parent">
+ <input type="hidden" name="selected" value=""/>
+</form>
+
+
+<!-- Submit record action functionality -->
+<script type="text/javascript">
+ function submitAction(actionUrl, task, actionUrlParameters) {
+
+ var formFieldParameters = "";
+ var actionUrlHtml = actionUrl;
+
+ <!-- Keep track of form field params to ensure the refreshed list matches -->
+ <c:if test="${(param['reset_action'] ne 'Y') && (param['reset_action'] ne 'y')}">
+ <c:forEach items="${param}" var="request_param">
+ <c:if test="${fn:startsWith(request_param.key,\"ff\")}">
+ <c:if test="${!empty request_param.value}">
+ formFieldParameters += "&${request_param.key}=${v:decodeUrl(request_param.value)}";
+ </c:if>
+ </c:if>
+ </c:forEach>
+ </c:if>
+
+ if (task != null) {
+ actionUrlHtml += "?task=" + task;
+ }
+
+ if (actionUrlParameters != null) {
+ actionUrlHtml += "&" + actionUrlParameters;
+ }
+
+
+ document.listForm.action = actionUrlHtml + formFieldParameters;
+ document.listForm.submit();
+ }
+</script>
+
+<!-- Select Profile functionality -->
+<script type="text/javascript">
+ function submitSelection() {
+ var selectedProfiles = document.listForm.selected;
+ var allProfiles = document.formd.selected;
+ var numRows = null;
+
+ if (allProfiles) {
+ numRows = allProfiles.length;
+
+ if (numRows) {
+ for (i=0; i < numRows; i++) {
+ if (allProfiles[i].checked) {
+ selectedProfiles.value += allProfiles[i].value + ",";
+ }
+ }
+
+ if (selectedProfiles.value != '') {
+ selectedProfiles.value = selectedProfiles.value.substring(0, selectedProfiles.value.length-1);
+ }
+ }
+ else {
+ if (allProfiles.checked) {
+ selectedProfiles.value += allProfiles.value;
+ }
+ }
+ }
+
+ //alert(selectedProfiles.value);
+ document.listForm.submit();
+ }
+</script>
+
+
+<!-- Profile Search activation/deactivation functionality -->
+<script type="text/javascript">
+ function toggleUserActive(element, userId) {
+ var user_id = "'"+${user.id}+"'";
+ if(user_id.length == 0) user_id = 1;
+ else
+ fusionAjax.toggleUserActive(${user.id}, userId, toggleUserActiveCB);
+ return false;
+ }
+
+ function toggleUserActiveCB(data) {
+ var element = document.getElementById('user_active_' + data);
+ if(element.alt == "Activate") {
+ element.src = "static/fusion/images/active.gif";
+ element.alt = "Inactivate";
+ }
+ else {
+ element.src = "static/fusion/images/inactive.gif";
+ element.alt = "Activate";
+ }
+ }
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp
new file mode 100644
index 00000000..5abbb5ad
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp
@@ -0,0 +1,31 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%-- <!--<script>
+ function getSessionTime() {
+ var session_Time = '<%=session.getMaxInactiveInterval()%>';
+ if (session_Time.length <=0) {
+ session_Time = '1800';
+ }
+ return eval(session_Time);
+ }
+</script>-->
+
+<script type='text/javascript' src="static/inc/SessionWarningTimer.js"></script>
+--%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp
new file mode 100644
index 00000000..fd2f9c36
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp
@@ -0,0 +1,38 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+
+<script language="JavaScript">
+ function postSQL() {
+ document.formb.<%= AppConstants.RI_FORMATTED_SQL %>.value=window.opener.forma.rangeEndDateSQL.value;
+ window.opener.setDefaultVerifyFlag();
+ document.formb.submit();
+ }
+
+</script>
+<body onLoad="postSQL()">
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.popup.testrun.sql">
+ <input type="hidden" name="<%= AppConstants.RI_FORMATTED_SQL %>" value="">
+</form>
+</body>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp
new file mode 100644
index 00000000..69827262
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp
@@ -0,0 +1,39 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+
+<script language="JavaScript">
+
+ function postSQL() {
+ document.formb.<%= AppConstants.RI_FORMATTED_SQL %>.value=window.opener.forma.rangeStartDateSQL.value;
+ window.opener.setDefaultVerifyFlag();
+ document.formb.submit();
+ }
+
+</script>
+<body onLoad="postSQL()">
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.popup.testrun.sql">
+ <input type="hidden" name="<%= AppConstants.RI_FORMATTED_SQL %>" value="">
+</form>
+</body>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp
new file mode 100644
index 00000000..95c99f37
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp
@@ -0,0 +1,39 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+
+<script language="JavaScript">
+
+ function postSQL() {
+ document.formb.<%= AppConstants.RI_FORMATTED_SQL %>.value=window.opener.forma.fieldDefaultSQL.value;
+ window.opener.setDefaultVerifyFlag();
+ document.formb.submit();
+ }
+
+</script>
+<body onLoad="postSQL()">
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.popup.testrun.sql">
+ <input type="hidden" name="<%= AppConstants.RI_FORMATTED_SQL %>" value="">
+</form>
+</body>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp
new file mode 100644
index 00000000..d5d25249
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp
@@ -0,0 +1,38 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<% if(org.openecomp.portalsdk.analytics.system.Globals.getShowDisclaimer()) { %>
+
+ <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
+ <tr><td>&nbsp;</td></tr>
+ <%if(!org.openecomp.portalsdk.analytics.system.Globals.hideRaptorFooter()) { %>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;</td>
+
+ </tr>
+ <% } %>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;</td>
+
+ </tr>
+ <tr><td>&nbsp;</td></tr>
+ </table>
+
+<% } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp
new file mode 100644
index 00000000..8158e604
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp
@@ -0,0 +1,58 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% ArrayList alErrorList = (ArrayList) request.getAttribute(AppConstants.RI_ERROR_LIST);
+ if((alErrorList!=null)&&(alErrorList.size()>0)) { %>
+<br>
+<table width="94%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align="center">
+ <tr class=rbg7>
+ <td class=rtabletext colspan=2 align=center>
+ <b class=rerrortext>Validation Errors Found</b><br>
+ Following errors need to be corrected to continue:
+ </td>
+ </tr>
+<% for(int i=0; i<alErrorList.size(); i++) {
+ String sErrorMsg = (String) alErrorList.get(i);
+ if(sErrorMsg!=null&&sErrorMsg.indexOf("|")>=0)
+ sErrorMsg = sErrorMsg.substring(sErrorMsg.indexOf("|")+1);
+ if((i%2)==0) { %>
+ <tr class=rbg6>
+<% } %>
+ <td class=rtabletext width=50%>
+ <font class=rerrortextsm><li class=rerrortextsm><%= sErrorMsg %></font>
+ </td>
+<% if((i%2)==1) { %>
+ </tr>
+<% }
+ } // for
+%>
+<% if((alErrorList.size()%2)==1) { %>
+ <tr>
+ <td class=rtabletext width=50%>
+ <font class=rerrortextsm>&nbsp;</font>
+ </td>
+ </tr>
+<% } %>
+</table>
+<% } // if
+%>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp
new file mode 100644
index 00000000..8ee73be0
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp
@@ -0,0 +1,229 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.io.*" %>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.error.UserAccessException"%>
+<%@ page import="org.openecomp.portalsdk.analytics.error.RaptorException"%>
+<%@ page import="org.openecomp.portalsdk.analytics.error.UserDefinedException"%>
+<%@ page isErrorPage="true" %>
+
+
+<% java.lang.Exception ex = (Exception) request.getAttribute(AppConstants.RI_EXCEPTION); %>
+<% boolean showEditLink = false;
+ if(AppUtils.getRequestNvlValue(request, "r_action").equals("report.run")) {
+ ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
+ if(rr!=null)
+ try {
+ rr.checkUserWriteAccess(request);
+ showEditLink = true;
+ } catch(Exception e) {}
+ } // if
+%>
+
+
+
+<html>
+
+<head>
+ <meta http-equiv="Content-Language" content="en-us">
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/ral.css">
+ <title>Application Error</title>
+ </head>
+
+<body bgcolor="#FFFFFF">
+<%-- jsp:include page="custom_header_include.jsp" flush="true" /--%>
+
+<form name="forma" action="raptor.htm" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.edit">
+ <input type="hidden" name="c_master" value="<%= AppUtils.getRequestNvlValue(request, "c_master") %>">
+ <input type="hidden" name="source_page" value="report_run">
+
+<br>
+<table class="mTAB" width="94%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr class=rbg1>
+ <td width="90%" class=rtext2 nowrap>
+<% if(showEditLink) { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit report" width="12" height="12">
+<% } %>
+ <b class=rtableheader>Error/User-Alert Message:</b>
+ </td>
+ </tr>
+<% if(ex!=null) { %>
+ <% if(ex instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException) { %>
+ <% if(AppUtils.isAdminUser(request)) { %>
+ <tr class=rowalt1>
+ <td width="90%" class=rtext2 nowrap>
+ <font class=rtabletext><b>Exception Class: </b><%= (ex!=null && ex instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException)?ex.getClass().toString():"" %></font>
+ </td>
+ </tr>
+ <% } %>
+ <tr class=rowalt2>
+ <td width="90%" class=rtext2 nowrap><font class=rtabletext><b>Message:</b>&nbsp;<%= (ex!=null && ex instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException)?ex.getMessage():"" %></font>
+ </td>
+ </tr>
+ <% } %>
+ <% if(ex!=null) ex.printStackTrace(); %>
+ <% if(AppUtils.isAdminUser(request)) {
+ if ((ex instanceof org.openecomp.portalsdk.analytics.error.ReportSQLException)||
+ (request.getAttribute("c_error_sql")!=null && !((String) request.getAttribute("c_error_sql")).trim().equals(""))) {
+ String sql = "";
+ if(ex instanceof org.openecomp.portalsdk.analytics.error.ReportSQLException)
+ sql = ((org.openecomp.portalsdk.analytics.error.ReportSQLException) ex).getReportSQL();
+ else
+ sql = (String) request.getAttribute("c_error_sql"); %>
+ <% if (sql!=null && sql.length() > 0) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>SQL Execution Error:</b>
+ </td>
+ </tr>
+ <tr class=rowalt2>
+ <td width="90%">
+ <font class=rtabletext><%= sql %></font>
+ </td>
+ </tr>
+ <% request.setAttribute("c_error_sql", sql);
+ %>
+ <% } %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>Error Message:</b><br>
+ <font class=rtabletext><%= AppUtils.getRequestNvlValue(request, "error_extra_msg") %><%= ex.getMessage() %></font>
+ </td>
+ </tr>
+ <% if(request.getAttribute("c_error_url")!=null && !((String) request.getAttribute("c_error_url")).trim().equals("")) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <font class=rtabletext>Please <a href="<%= (String) request.getAttribute("c_error_url") %>">click here</a> to edit report definition.</font>
+ </td>
+ </tr>
+ <% } // if %>
+ <% } else { // reportSQLException
+ if (ex instanceof RaptorException) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>Error Message:</b><br>
+ <font class=rtabletext><%= AppUtils.getRequestNvlValue(request, "error_extra_msg") %><%= ex.getMessage() %></font>
+ </td>
+ </tr>
+ <%} %>
+ <% } %>
+ <% } else {
+ if (ex instanceof UserAccessException) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>Error Message:</b><br>
+ <font class=rtabletext><%= AppUtils.getRequestNvlValue(request, "error_extra_msg") %><%= ex.getMessage() %></font>
+ </td>
+ </tr>
+ <% } else if (ex instanceof UserDefinedException) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>Error Message:</b><br>
+ <font class=rtabletext><%= AppUtils.getRequestNvlValue(request, "error_extra_msg") %><%= ex.getMessage() %></font>
+ </td>
+ </tr>
+ <% }
+ } %>
+ <tr class=rowalt2>
+ <td width="90%">
+ <font class=rtabletext>** The system administrator has been notified for this error.</font>
+ </td>
+ </tr>
+<% } else { %>
+<% if(exception instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException) { %>
+ <% if(AppUtils.isAdminUser(request)) { %>
+ <tr class=rowalt1>
+ <td width="90%" class=rtext2 nowrap>
+ <font class=rtabletext><b>Exception Class: </b><%= (exception!=null && exception instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException)?exception.getClass().toString():"" %></font>
+ </td>
+</tr>
+ <% } %>
+<tr class=rowalt2>
+ <td width="90%" class=rtext2 nowrap><font class=rtabletext><b>Message:</b>&nbsp;<%= (exception!=null && exception instanceof org.openecomp.portalsdk.analytics.error.RaptorSchedularException)?exception.getMessage():"" %></font>
+ </td>
+ <% if(exception!=null) exception.printStackTrace(); %>
+ </tr>
+<% } %>
+<% if(AppUtils.isAdminUser(request)) {
+ if ((exception instanceof org.openecomp.portalsdk.analytics.error.ReportSQLException)||
+ (request.getAttribute("c_error_sql")!=null && !((String) request.getAttribute("c_error_sql")).trim().equals(""))) {
+ String sql = "";
+ if(exception instanceof org.openecomp.portalsdk.analytics.error.ReportSQLException)
+ sql = ((org.openecomp.portalsdk.analytics.error.ReportSQLException) ex).getReportSQL();
+ else
+ sql = (String) request.getAttribute("c_error_sql"); %>
+ <% if (sql!=null && sql.length() > 0) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>SQL Execution Error:</b>
+ </td>
+ </tr>
+ <tr class=rowalt2>
+ <td width="90%">
+ <font class=rtabletext><%= sql %></font>
+ </td>
+ </tr>
+<% request.setAttribute("c_error_sql", sql);
+ %>
+ <% } %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <b class=rtabletext>Error Message:</b><br>
+ <font class=rtabletext><%= AppUtils.getRequestNvlValue(request, "error_extra_msg") %><%= ex.getMessage() %></font>
+ </td>
+ </tr>
+<% if(request.getAttribute("c_error_url")!=null && !((String) request.getAttribute("c_error_url")).trim().equals("")) { %>
+ <tr class=rowalt1>
+ <td width="90%">
+ <font class=rtabletext>Please <a href="<%= (String) request.getAttribute("c_error_url") %>">click here</a> to edit report definition.</font>
+ </td>
+ </tr>
+<% } %>
+<% } %>
+<% } %>
+ <tr class=rowalt2>
+ <td width="90%">
+ <font class=rtabletext>** The system administrator has been notified for this error.</font>
+ </td>
+ </tr>
+<% if(AppUtils.isAdminUser(request)) { %>
+<!-------------------------------------------------------
+EXCEPTION [<%= ex!=null? ex.getMessage():"" %>]
+<% if(ex!=null) ex.printStackTrace(new PrintWriter(out)); %>
+-------------------------------------------------------->
+<% } %>
+<% if(exception!=null) exception.printStackTrace(); %>
+
+<% } // else
+%>
+</table>
+
+</form>
+
+</body>
+</html>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp
new file mode 100644
index 00000000..c4fbe9e8
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp
@@ -0,0 +1,25 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+ <jsp:include page="disclaimer.jsp" flush="true" />
+
+ </body>
+</html>
+
+<%--<jsp:include page="prisms/footer.jsp" flush="true" />--%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp
new file mode 100644
index 00000000..6838f3ac
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp
@@ -0,0 +1,623 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ List reportCols = rdef.getAllColumns();
+ List rFormFields = null;
+ if(rdef.getFormFieldList()!=null&&rdef.getFormFieldList().getFormField().size()>0)
+ rFormFields = rdef.getFormFieldList().getFormField();
+
+ ReportFormFields ddReportFormFields = (ReportFormFields) request.getAttribute(AppConstants.RI_FORM_FIELDS);
+
+ String drillDownSuppress = AppUtils.getRequestNvlValue(request, "drillDownSuppress");
+ String drillDownParams = AppUtils.getRequestNvlValue(request, "drillDownParams");
+ String drillDownRequest = AppUtils.getRequestNvlValue(request, "drillDownRequest");
+
+ Hashtable paramDefinitions = new Hashtable();
+ StringTokenizer st = new StringTokenizer(drillDownParams, "&");
+ //Added for passing request parameters in Drill Down
+ String[] reqParameters = Globals.getRequestParams().split(",");
+ int icnt=0;
+ //
+ while(st.hasMoreTokens()) {
+ String param = st.nextToken();
+ DrillDownParamDef paramDef = new DrillDownParamDef(param);
+ if(paramDef.getFieldName().length()>0)
+ paramDefinitions.put(paramDef.getFieldName(), paramDef);
+ } // while
+%>
+
+<html>
+<head>
+ <title>Drill-down Parameters Configuration</title>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+
+<script language="JavaScript">
+<!--
+ var bCloseWindow = false;
+
+ function setParams(newParams) {
+ var suppressValue = document.dataform.v_suppress.value;
+ var showInPopup;
+ if(document.dataform.showInPopup.checked)
+ showInPopup = "true";
+ window.opener.document.forma.drillDownPopUp.value = showInPopup;
+ window.opener.setDrillDownValuesSuppress(newParams, suppressValue);
+ window.close();
+ } // setParams
+
+ function resetDrillDown() {
+ window.opener.document.forma.drillDownCtl.selectedIndex = 0;
+ window.opener.document.forma.drillDownURL.value = "";
+ window.opener.document.forma.drillDownParams.value = "";
+ window.opener.document.forma.drillDownSuppress.value = "";
+ window.opener.document.forma.drillDownPopUp.value = "";
+ } // setParams
+
+
+
+
+ window.onbeforeunload = check;
+ function check()
+ {
+ var opener = window.opener;
+ var newParams = collectValues();
+ //alert(newParams);
+ //console.log(newParams);
+ if(!newParams) {
+ if(opener) {
+ var oDom = opener.document;
+ var elem = oDom.getElementById("drillDownCtl");
+ var elements = elem.options;
+
+ for(var i = 0; i < elements.length; i++){
+ elements[i].selected = false;
+ }
+
+ }
+ }
+ } //-->
+</script>
+
+</head>
+<body onLoad="if(bCloseWindow) setParams('');">
+
+<form name="dataform" onSubmit="return false;">
+<table class="mTAB" width="94%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan="2">
+ <b class=rtableheader>DRILL-DOWN PARAMETERS CONFIGURATION</b>
+ </td>
+ </tr>
+
+<% if(ddReportFormFields!=null)
+ for(ddReportFormFields.resetNext(); ddReportFormFields.hasNext(); ) {
+ FormField ff = ddReportFormFields.getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+
+ DrillDownParamDef paramDef = (DrillDownParamDef) paramDefinitions.get(ff.getFieldName());
+ if(paramDef==null)
+ paramDef = new DrillDownParamDef(""); %>
+
+ <% if (ff!=null && (ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) ) {
+ %>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;<%= ff.getFieldDisplayName() %>
+ <input type="hidden" name="paramName" value="<%= ff.getFieldName() %>"></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" width="33%" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="None"<%= paramDef.getValType().equals("0")?" checked":"" %>>No value </font>
+ </td>
+ <td class=rbg3 align="left" width="67%" nowrap>
+ <font class=rtabletext>Accept default</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="Fixed"<%= paramDef.getValType().equals("1")?" checked":"" %>>Fixed value </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="text" size="30" maxlength="100" name="v_<%= ff.getFieldName() %>" value="<%= java.net.URLDecoder.decode(paramDef.getValValue(),"UTF8") %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[1].click();"></font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="Column"<%= paramDef.getValType().equals("2")?" checked":"" %>>Value of column </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="c_<%= ff.getFieldName() %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[2].click();">
+ <option value="this">--- Current drill-down column ---
+<% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ //if(dct.isVisible()) {
+ %>
+ <option value="<%= dct.getColId() %>"<%= paramDef.getValColId().equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+<% //}
+%>
+<% } %>
+ </select></font>
+ </td>
+ </tr>
+<% if(rFormFields!=null) { %>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="FormField"<%= paramDef.getValType().equals("3")?" checked":"" %>>Value of form field </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="f_<%= ff.getFieldName() %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[3].click();">
+<% for(Iterator iter=rFormFields.iterator(); iter.hasNext(); ) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ <option value="<%= fft.getFieldId() %>"<%= paramDef.getValFieldId().equals(fft.getFieldId())?" selected":"" %>><%= fft.getFieldName() %>
+<% } %>
+ </select></font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="ColFormSet"<%= paramDef.getValType().equals("4")?" checked":"" %>>Value set </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ Pass the value of the selected column if not empty,<br>
+ otherwise pass the value of the selected form field</font>
+ </td>
+ </tr>
+<% } // if
+
+%>
+<!-- END -->
+ <%
+ paramDef = (DrillDownParamDef) paramDefinitions.get(ff.getFieldName()+"_Hr");
+ if(paramDef==null)
+ paramDef = new DrillDownParamDef("");
+ %>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;<%= ff.getFieldDisplayName() %> (Hour)
+ <input type="hidden" name="paramName" value="<%= ff.getFieldName() %>_Hr"></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" width="33%" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Hr" value="None"<%= paramDef.getValType().equals("0")?" checked":"" %>>No value </font>
+ </td>
+ <td class=rbg3 align="left" width="67%" nowrap>
+ <font class=rtabletext>Accept default</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Hr" value="Column" <%= paramDef.getValType().equals("2")?" checked":"" %> >Value of column </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <font class=rtabletext>
+ <select name="c_<%= ff.getFieldName() %>_Hr" onChange="document.dataform.r_<%= ff.getFieldName() %>_Hr[1].click();">
+ <option value="this">--- Current drill-down column ---
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ //if(dct.isVisible()) {
+ %>
+ <option value="<%= dct.getColId() %>"<%= paramDef.getValColId().equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% //}
+ %>
+<% } %>
+ </select>
+ </font>
+ </td>
+ </tr>
+<%
+ if (ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
+%>
+ <%
+ paramDef = (DrillDownParamDef) paramDefinitions.get(ff.getFieldName()+"_Min");
+ if(paramDef==null)
+ paramDef = new DrillDownParamDef("");
+ %>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;<%= ff.getFieldDisplayName() %> (Minutes)
+ <input type="hidden" name="paramName" value="<%= ff.getFieldName() %>_Min"></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" width="33%" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Min" value="None"<%= paramDef.getValType().equals("0")?" checked":"" %>>No value </font>
+ </td>
+ <td class=rbg3 align="left" width="67%" nowrap>
+ <font class=rtabletext>Accept default</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Min" value="Column" <%= paramDef.getValType().equals("2")?" checked":"" %>>Value of column </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <font class=rtabletext>
+ <select name="c_<%= ff.getFieldName() %>_Min" onChange="document.dataform.r_<%= ff.getFieldName() %>_Min[1].click();">
+ <option value="this">--- Current drill-down column ---
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ //if(dct.isVisible()) {
+ %>
+ <option value="<%= dct.getColId() %>"<%= paramDef.getValColId().equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% //}
+ %>
+<% } %>
+ </select>
+ </font>
+ </td>
+ </tr>
+<%
+ }
+ if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
+%>
+ <%
+ paramDef = (DrillDownParamDef) paramDefinitions.get(ff.getFieldName()+"_Sec");
+ if(paramDef==null)
+ paramDef = new DrillDownParamDef("");
+ %>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;<%= ff.getFieldDisplayName() %> (Seconds)
+ <input type="hidden" name="paramName" value="<%= ff.getFieldName() %>_Sec"></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" width="33%" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Sec" value="None"<%= paramDef.getValType().equals("0")?" checked":"" %>>No value </font>
+ </td>
+ <td class=rbg3 align="left" width="67%" nowrap>
+ <font class=rtabletext>Accept default</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>_Sec" value="Column" <%= paramDef.getValType().equals("2")?" checked":"" %>>Value of column </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <font class=rtabletext>
+ <select name="c_<%= ff.getFieldName() %>_Sec" onChange="document.dataform.r_<%= ff.getFieldName() %>_Sec[1].click();">
+ <option value="this">--- Current drill-down column ---
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ //if(dct.isVisible()) {
+ %>
+ <option value="<%= dct.getColId() %>"<%= paramDef.getValColId().equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% //}
+ %>
+<% } %>
+ </select>
+ </font>
+ </td>
+ </tr>
+<%
+
+ }
+
+ } else {
+%>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;<%= ff.getFieldDisplayName() %>
+ <input type="hidden" name="paramName" value="<%= ff.getFieldName() %>"></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" width="33%" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="None"<%= paramDef.getValType().equals("0")?" checked":"" %>>No value </font>
+ </td>
+ <td class=rbg3 align="left" width="67%" nowrap>
+ <font class=rtabletext>Accept default</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="Fixed"<%= paramDef.getValType().equals("1")?" checked":"" %>>Fixed value </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="text" size="30" maxlength="100" name="v_<%= ff.getFieldName() %>" value="<%= java.net.URLDecoder.decode(paramDef.getValValue(),"UTF8") %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[1].click();"></font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="Column"<%= paramDef.getValType().equals("2")?" checked":"" %>>Value of column </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="c_<%= ff.getFieldName() %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[2].click();">
+ <option value="this">--- Current drill-down column ---
+<% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ //if(dct.isVisible()) {
+ %>
+ <option value="<%= dct.getColId() %>"<%= paramDef.getValColId().equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+<% //}
+%>
+<% } %>
+ </select></font>
+ </td>
+ </tr>
+<% if(rFormFields!=null) { %>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="FormField"<%= paramDef.getValType().equals("3")?" checked":"" %>>Value of form field </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="f_<%= ff.getFieldName() %>" onChange="document.dataform.r_<%= ff.getFieldName() %>[3].click();">
+<% for(Iterator iter=rFormFields.iterator(); iter.hasNext(); ) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ <option value="<%= fft.getFieldId() %>"<%= paramDef.getValFieldId().equals(fft.getFieldId())?" selected":"" %>><%= fft.getFieldName() %>
+<% } %>
+ </select></font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="radio" name="r_<%= ff.getFieldName() %>" value="ColFormSet"<%= paramDef.getValType().equals("4")?" checked":"" %>>Value set </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ Pass the value of the selected column if not empty,<br>
+ otherwise pass the value of the selected form field</font>
+ </td>
+ </tr>
+<% } // if
+ } // else
+ } // if BLANK
+ } // for
+%>
+
+<script language="JavaScript">
+<!--
+<% if(ddReportFormFields==null||ddReportFormFields.getFieldCount()==0) { %>
+ bCloseWindow = true;
+<% } %>
+ function replaceSC(strValue) {
+ var newValue = "";
+
+ for(var i=0; i<strValue.length; i++) {
+ var ch = strValue.charAt(i);
+
+ if(ch=='@')
+ newValue += "%40";
+ else if(ch=='+')
+ newValue += "%2B";
+ else if(ch=='/')
+ newValue += "%2F";
+ else
+ newValue += ch;
+ } // for
+
+ return newValue;
+ } // replaceSC
+
+ function collectValues() {
+ var newParams = "";
+ newParams += setCheckBoxValues();
+<% if(ddReportFormFields!=null) {
+ for(ddReportFormFields.resetNext(); ddReportFormFields.hasNext(); ) {
+ FormField ff = ddReportFormFields.getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+ String fieldName = ff.getFieldName();
+
+ if (ff!=null && !(ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) ) {
+%>
+ if(document.dataform.r_<%= fieldName %>[1].checked||document.dataform.r_<%= fieldName %>[2].checked<%= (rFormFields!=null)?"||document.dataform.r_"+fieldName+"[3].checked||document.dataform.r_"+fieldName+"[4].checked":"" %>) {
+ if(newParams!="")
+ newParams += "&";
+ newParams += "<%= fieldName %>=";
+ if(document.dataform.r_<%= fieldName %>[1].checked) {
+ newParams += replaceSC(escape(document.dataform.v_<%= fieldName %>.value));
+ } else if(document.dataform.r_<%= fieldName %>[2].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>.options[document.dataform.c_<%= fieldName %>.selectedIndex].value)+"]";
+ <% if(rFormFields!=null) { %>
+ } else if(document.dataform.r_<%= fieldName %>[3].checked) {
+ newParams += "[!"+escape(document.dataform.f_<%= fieldName %>.options[document.dataform.f_<%= fieldName %>.selectedIndex].value)+"]";
+ } else if(document.dataform.r_<%= fieldName %>[4].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>.options[document.dataform.c_<%= fieldName %>.selectedIndex].value)+"!"+escape(document.dataform.f_<%= fieldName %>.options[document.dataform.f_<%= fieldName %>.selectedIndex].value)+"]";
+ <% } %>
+ }
+ } // if
+<%
+ } //if non-timestamp
+ if (ff!=null && (ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) ) {
+
+ if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
+%>
+ if(document.dataform.r_<%= fieldName %>[1].checked||document.dataform.r_<%= fieldName %>[2].checked<%= (rFormFields!=null)?"||document.dataform.r_"+fieldName+"[3].checked||document.dataform.r_"+fieldName+"[4].checked":"" %>) {
+ if(newParams!="")
+ newParams += "&";
+ newParams += "<%= fieldName %>=";
+ if(document.dataform.r_<%= fieldName %>[1].checked) {
+ newParams += replaceSC(escape(document.dataform.v_<%= fieldName %>.value));
+ } else if(document.dataform.r_<%= fieldName %>[2].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>.options[document.dataform.c_<%= fieldName %>.selectedIndex].value)+"]";
+ <% if(rFormFields!=null) { %>
+ } else if(document.dataform.r_<%= fieldName %>[3].checked) {
+ newParams += "[!"+escape(document.dataform.f_<%= fieldName %>.options[document.dataform.f_<%= fieldName %>.selectedIndex].value)+"]";
+ } else if(document.dataform.r_<%= fieldName %>[4].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>.options[document.dataform.c_<%= fieldName %>.selectedIndex].value)+"!"+escape(document.dataform.f_<%= fieldName %>.options[document.dataform.f_<%= fieldName %>.selectedIndex].value)+"]";
+ <% } %>
+ }
+ } // if
+
+ if(document.dataform.r_<%= fieldName %>_Hr[1].checked) {
+ if(newParams!="")
+ newParams += "&";
+ newParams += "<%= fieldName %>_Hr=";
+ if(document.dataform.r_<%= fieldName %>_Hr[1].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>_Hr.options[document.dataform.c_<%= fieldName %>_Hr.selectedIndex].value)+"]";
+ }
+ } // if
+<%
+ }//hour
+%>
+<%
+ if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
+%>
+ if(document.dataform.r_<%= fieldName %>_Min[1].checked) {
+ if(newParams!="")
+ newParams += "&";
+ newParams += "<%= fieldName %>_Min=";
+ if(document.dataform.r_<%= fieldName %>_Min[1].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>_Min.options[document.dataform.c_<%= fieldName %>_Min.selectedIndex].value)+"]";
+ }
+ } // if
+ <%
+ } // min
+ if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
+%>
+ if(document.dataform.r_<%= fieldName %>_Sec[1].checked) {
+ if(newParams!="")
+ newParams += "&";
+ newParams += "<%= fieldName %>_Sec=";
+ if(document.dataform.r_<%= fieldName %>_Sec[1].checked) {
+ newParams += "["+escape(document.dataform.c_<%= fieldName %>_Sec.options[document.dataform.c_<%= fieldName %>_Sec.selectedIndex].value)+"]";
+ }
+ } // if
+<%
+ } // sec
+ }
+ } // BLANK
+ } // for
+ }
+%>
+ //alert(newParams);
+ return newParams;
+
+ } // collectValues
+
+ function setCheckBoxValues() {
+ var newValues ="";
+<%
+ icnt=0;
+ if(reqParameters.length>0) {
+%>
+ if(document.dataform.requestParam) {
+ for (i=0;i<document.dataform.requestParam.length;i++) {
+ <% icnt++;%>
+ if(document.dataform.requestParam[i].checked) {
+ newValues += escape("<%=reqParameters[icnt-1]%>")+"="+"[#"+escape("<%=reqParameters[icnt-1]%>")+"]";
+ }
+ }
+ }
+<% } %>
+ return newValues;
+ }
+
+//-->
+</script>
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;Parameter values not to be passed to the drill-down report</b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ Suppress values </font>
+ </td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="text" size="30" maxlength="100" name="v_suppress" value="<%= drillDownSuppress %>">
+ <br>separate by | if multiple values</font>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+ <% if(!Globals.getPassRequestParamInDrilldown() && (!(reqParameters.length==1 && reqParameters[0].length()<=0))) {
+ %>
+ <tr>
+ <td class=rbg1 colspan="2" height="30" align="left"><b class=rtableheader>
+ &nbsp;Request Parameter values to be passed to the drill-down report</b></td>
+ </tr>
+ <!-- <tr>
+ <td class=rbg2 align="left" height="30" nowrap>
+ <font class=rtabletext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ Request values </font>
+ </td>
+ </tr>
+ -->
+ <%
+ icnt=0;
+
+ for (int i = 0; i < reqParameters.length; i++) {
+ icnt++;
+
+ %>
+ <tr<%= (icnt%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <!--<td align="center" height="30"><font class=rtabletext><%= icnt %></font></td>-->
+ <td><font class=rtabletext><%= reqParameters[i]%></font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="requestParam" <%= ((drillDownRequest!=null)&&(drillDownRequest.indexOf(reqParameters[i])!=-1))?"checked":""%>>
+ </td>
+ </tr>
+ <%
+ } //for
+ %>
+ <input type="hidden" name="requestParam">
+ <%
+ } // if requestParam
+ %>
+ <tr>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ Show Drilled Down Report In Popup Window: <input type="checkbox" name="showInPopup">
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3" align="center"><input type="Button" class=button value="Complete" onClick="setParams(collectValues())"></td>
+ </tr>
+</table>
+</form>
+ <br><br>
+ <script>
+ if(window.opener.document.forma.drillDownPopUp.value == 'true')
+ document.dataform.showInPopup.checked = true;
+
+ </script>
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp
new file mode 100644
index 00000000..d73a7fe2
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp
@@ -0,0 +1,80 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% ArrayList importedList = (ArrayList) request.getAttribute(AppConstants.RI_DATA_SET); %>
+
+<html>
+<head>
+ <title>Advanced Display Formatting</title>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+
+<script language=JavaScript>
+<!--
+ function updateOpenerList() {
+<% if(importedList!=null&&importedList.size()>0)
+ for(Iterator iter=importedList.iterator(); iter.hasNext(); ) {
+ IdNameValue value = (IdNameValue) iter.next(); %>
+ window.opener.updateSemaphoreList("<%= value.getId() %>", "<%= value.getName() %>");
+<% } %>
+ } // updateOpenerList
+//-->
+</script>
+
+</head>
+<body onLoad="updateOpenerList()">
+<br>
+
+<table width=94% class="tableBorder" border=0 cellspacing=1 align=center>
+ <tr class=rbg1>
+ <td valign="middle" height="24"><b class=rtableheader>&nbsp;Advanced Display Formatting Import</b></td>
+ </tr>
+ <tr>
+ <td class=rbg3 align="center" valign="middle" height="100"><font class=rtabletext>
+<% if(importedList!=null&&importedList.size()>0) { %>
+ <%= importedList.size() %> Advanced Display Formattings successfully imported.
+<% } else { %>
+ The selected report does not have Advanced Display Formattings <br>
+ defined. No Advanced Display Formattings were imported.
+<% } %>
+ </font></td>
+ </tr>
+ <tr>
+ <td colspan="10" align="center">
+ <br>
+ <input type="Button" class=button value="Close" onClick="window.close();">
+ </td>
+ </tr>
+</table>
+
+</form>
+
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp
new file mode 100644
index 00000000..39eafb24
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp
@@ -0,0 +1,419 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+
+ String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphoreId");
+ String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreType");
+ SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
+ String semaphoreName = null;
+ List listColumns = rdef.getAllColumns();
+ if(semaphore!=null)
+ semaphoreName = semaphore.getSemaphoreName();
+ else
+ if(rdef.getSemaphoreList()!=null)
+ semaphoreName = "Display Formatting "+(rdef.getSemaphoreList().getSemaphore().size()+1);
+ else
+ semaphoreName = "Display Formatting 1";
+
+ String submitBtn = AppUtils.getRequestNvlValue(request, "submit_btn"); %>
+
+<html>
+<head>
+ <title>Advanced Display Formatting</title>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+
+<% if(submitBtn.startsWith("Save")) { %>
+<script language=JavaScript>
+<!--
+ function updateOpenerList() { // Returns the position of the current semaphore in the list
+ return window.opener.updateSemaphoreList("<%= semaphoreId %>", "<%= semaphoreName %>");
+ } // updateOpenerList
+
+ function saveAndClose() {
+ var idx = 0;
+ idx = updateOpenerList();
+ window.opener.document.forma.semaphore.selectedIndex = idx;
+ window.opener.document.forma.semaphoreTypeHidden.value='<%=semaphoreType%>';
+ window.close();
+ } // saveAndClose
+//-->
+</script>
+<% } %>
+
+<% if(submitBtn.equals("Save")) { %>
+</head>
+<body onLoad="saveAndClose()">
+ <b class=rerrortext>Please wait...</b>
+<% } else { %>
+
+<script language=JavaScript>
+<!--
+ function setBold(iCount) {
+ var flag = document.dataform.boldChk[iCount].checked;
+ document.dataform.bold[iCount].value = (flag?"Y":"N");
+ document.getElementById("preview"+iCount).style.fontWeight = (flag?"bold":"normal");
+ } // setBold
+
+ function setItalic(iCount) {
+ var flag = document.dataform.italicChk[iCount].checked;
+ document.dataform.italic[iCount].value = (flag?"Y":"N");
+ document.getElementById("preview"+iCount).style.fontStyle = (flag?"italic":"normal");
+ } // setItalic
+
+ function setUnderline(iCount) {
+ var flag = document.dataform.underlineChk[iCount].checked;
+ document.dataform.underline[iCount].value = (flag?"Y":"N");
+ document.getElementById("preview"+iCount).style.textDecorationUnderline = flag;
+ } // setUnderline
+
+ function setBgColor(iCount) {
+ var value = document.dataform.bgColor[iCount].options[document.dataform.bgColor[iCount].selectedIndex].value;
+ document.getElementById("preview"+iCount).style.backgroundColor = value;
+ } // setBgColor
+
+ function setFontColor(iCount) {
+ var value = document.dataform.fontColor[iCount].options[document.dataform.fontColor[iCount].selectedIndex].value;
+ document.getElementById("preview"+iCount).style.color = value;
+ } // setFontColor
+
+ function setFontFace(iCount) {
+ var value = document.dataform.fontFace[iCount].options[document.dataform.fontFace[iCount].selectedIndex].value;
+ document.getElementById("preview"+iCount).style.fontFamily = value;
+ } // setFontFace
+
+ function setFontSize(iCount) {
+ var value = document.dataform.fontSize[iCount].options[document.dataform.fontSize[iCount].selectedIndex].value;
+ document.getElementById("preview"+iCount).style.fontSize = value+"px";
+ } // setFontSize
+
+/* function setAlignment(iCount) {
+ var value = document.dataform.alignment[iCount].options[document.dataform.alignment[iCount].selectedIndex].value;
+ document.getElementById("preview"+iCount).style.textAlign = value;
+ } // setAlignment
+*/
+ var semaphoreIds = new Array(<%= 2+((rdef.getSemaphoreList()==null)?0:rdef.getSemaphoreList().getSemaphore().size()) %>);
+ var semaphoreNames = new Array(<%= 2+((rdef.getSemaphoreList()==null)?0:rdef.getSemaphoreList().getSemaphore().size()) %>);
+ <% int iCount = 0;
+ if(rdef.getSemaphoreList()!=null)
+ for(Iterator iter=rdef.getSemaphoreList().getSemaphore().iterator(); iter.hasNext(); iCount++) {
+ SemaphoreType sem = (SemaphoreType) iter.next(); %>
+ semaphoreIds[<%= iCount %>] = "<%= sem.getSemaphoreId() %>";
+ semaphoreNames[<%= iCount %>] = "<%= sem.getSemaphoreName() %>";
+ <% } // for
+ %>
+ semaphoreIds[<%= iCount %>] = "-";
+ semaphoreNames[<%= iCount++ %>] = "-";
+ semaphoreIds[<%= iCount %>] = "-";
+ semaphoreNames[<%= iCount++ %>] = "-";
+
+ function dataValidate() {
+ if(document.dataform.semaphoreName.value=="") {
+ alert("Please enter Display Name");
+ document.forma.semaphoreName.focus();
+ document.forma.semaphoreName.select();
+
+ return false;
+ } // if
+
+ for(var i=0; i<semaphoreIds.length; i++)
+ if((document.dataform.semaphoreName.value==semaphoreNames[i])&&(semaphoreIds[i]!="<%= semaphoreId %>")) {
+ alert("Advanced Formatting with that name already exists.\nPlease select another name");
+ document.dataform.semaphoreName.focus();
+ document.dataform.semaphoreName.select();
+
+ return false;
+ } // if
+
+ for(var i=0; i<document.dataform.lessThanValue.length; i++)
+ for(var j=i+1; j<document.dataform.lessThanValue.length; j++)
+ if( document.dataform.lessThanValue[i].value!=""&&
+ document.dataform.lessThanValue[j].value!=""&&
+ document.dataform.lessThanValue[i].value==document.dataform.lessThanValue[j].value) {
+ alert("You cannot have duplicate values in the list.\nPlease change one of the values ["+document.dataform.lessThanValue[j].value+"]");
+ document.dataform.lessThanValue[j].focus();
+ document.dataform.lessThanValue[j].select();
+
+ return false;
+ } // if
+
+ return true;
+ } // dataValidate
+
+ function doInit() {
+ <% if(submitBtn.startsWith("Save")) { %>
+ updateOpenerList();
+ <% } %>
+
+<% for(int i = 0; i<3+((semaphore==null)?2:semaphore.getFormatList().getFormat().size()); i++) {
+ FormatType ft = null;
+ if(semaphore!=null&&i<semaphore.getFormatList().getFormat().size())
+ ft = (FormatType) semaphore.getFormatList().getFormat().get(i);
+ if(ft!=null) { %>
+ setBold(<%= i %>);
+ setItalic(<%= i %>);
+ setUnderline(<%= i %>);
+ setBgColor(<%= i %>);
+ setFontColor(<%= i %>);
+ setFontFace(<%= i %>);
+ setFontSize(<%= i %>);
+ //setAlignment(<%= i %>);
+ <% } // if
+ } // for
+%>
+ } // doInit
+//-->
+</script>
+
+</head>
+<body onLoad="doInit()">
+
+<form name="dataform" action="<%= AppUtils.getBaseURL() %>" method="post" onSubmit="return dataValidate()">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.popup.semaphore.save">
+
+<table class="mTAB" width=94% border=0 cellspacing=1 align=center>
+ <tr class=rbg1>
+ <td valign="middle" colspan="10" height="24"><b class=rtableheader>&nbsp;Advanced Display Formatting Definition</b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 colspan="4" align="right" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Display Name: </font></td>
+ <td class=rbg3 colspan="6" align="left"><font class=rtabletext>
+ <input type="hidden" name="semaphoreId" value="<%= semaphoreId %>">
+ <input type="text" size="30" maxlength="30" name="semaphoreName" value="<%= semaphoreName %>"></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 colspan="4" align="right" height="30"><font class=rtabletext>Apply Formatting To: </font></td>
+ <td class=rbg3 colspan="6" align="left"><font class=rtabletext>
+ <% String sValue = AppConstants.ST_CELL;
+ if(semaphore!=null)
+ sValue = nvl(semaphore.getSemaphoreType(), AppConstants.ST_CELL); %>
+ <select name="semaphoreType">
+ <%
+ for (Iterator iterC = listColumns.iterator(); iterC.hasNext();) {
+ DataColumnType dc = (DataColumnType) iterC.next();
+ if(dc.isVisible()) {
+ %>
+ <option value="<%= AppConstants.ST_CELL+"|"+dc.getColId() %>"<%= sValue.equals(AppConstants.ST_CELL+"|"+dc.getColId() )?" selected":"" %>><%=dc.getColName() %>
+ <%
+ }
+ }
+ %>
+ <option value="<%= AppConstants.ST_CELL %>"<%= sValue.equals(AppConstants.ST_CELL)?" selected":"" %>>Current Value Only
+ <option value="<%= AppConstants.ST_ROW %>"<%= sValue.equals(AppConstants.ST_ROW) ?" selected":"" %>>The Entire Row
+ </select></font></td>
+ </tr>
+ <tr>
+ <td colspan="10">&nbsp;</td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="middle" colspan=2 height="30"><b class=rtableheader>Column Value Is</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Bold?</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Italic?</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Under-<br>line?</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Background Color</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Font Color</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Font Face</b></td>
+ <td align="center" valign="middle"><b class=rtableheader>Font Size</b></td>
+ <!--td align="center" valign="middle"><b class=rtableheader>Alignment</b></td-->
+ <td align="center" valign="middle"><b class=rtableheader>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Preview&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></td>
+ </tr>
+<% for(int i = 0; i<3+((semaphore==null)?2:semaphore.getFormatList().getFormat().size()); i++) {
+ FormatType ft = null;
+ if(semaphore!=null&&i<semaphore.getFormatList().getFormat().size())
+ ft = (FormatType) semaphore.getFormatList().getFormat().get(i); %>
+ <tr<%= (i%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <% if(i==0) { %>
+ <td align="center" valign="middle" colspan=2 height="30">
+ <font class=rtabletext>Any Other</font>
+ <input type="hidden" name="formatId" value="<%= (ft==null)?"":ft.getFormatId() %>">
+ <input type="hidden" name="expression" value="">
+ <input type="hidden" name="lessThanValue" value="">
+ <!-- <input type="hidden" name="anyFmt" value="Y"> -->
+ </td>
+ <% } else { %>
+ <!-- <input type="hidden" name="anyFmt" value="N"> -->
+ <td align="center" valign="middle" height="30">
+ <input type="hidden" name="formatId" value="<%= (ft==null)?"":ft.getFormatId() %>">
+ <% sValue = "=";
+ if(ft!=null)
+ sValue = nvl(ft.getExpression(), "="); %>
+ <select name="expression">
+ <option value="="<%= sValue.equals("=") ?" selected":"" %>>=
+ <option value="&lt;&gt;"<%= sValue.equals("<>")?" selected":"" %>>&lt;&gt;
+ <option value="&gt;"<%= sValue.equals(">") ?" selected":"" %>>&gt;
+ <option value="&gt;="<%= sValue.equals(">=")?" selected":"" %>>&gt;=
+ <option value="&lt;"<%= sValue.equals("<") ?" selected":"" %>>&lt;
+ <option value="&lt;="<%= sValue.equals("<=")?" selected":"" %>>&lt;=
+ </select>
+ </td>
+ <td align="center" valign="middle">
+ <input type="text" size="10" name="lessThanValue" value="<%= (ft==null)?"":ft.getLessThanValue() %>">
+ </td>
+ <% } %>
+ <td align="center" valign="middle">
+ <% boolean bValue = false;
+ if(ft!=null)
+ bValue = ft.isBold(); %>
+ <input type="hidden" name="bold" value="<%= bValue?"Y":"N" %>">
+ <input type="checkbox" name="boldChk" value="Y"<%= bValue?" checked":"" %> onClick="setBold(<%= i %>)">
+ </td>
+ <td align="center" valign="middle">
+ <% bValue = false;
+ if(ft!=null)
+ bValue = ft.isItalic(); %>
+ <input type="hidden" name="italic" value="<%= bValue?"Y":"N" %>">
+ <input type="checkbox" name="italicChk" value="Y"<%= bValue?" checked":"" %> onClick="setItalic(<%= i %>)">
+ </td>
+ <td align="center" valign="middle">
+ <% bValue = false;
+ if(ft!=null)
+ bValue = ft.isUnderline(); %>
+ <input type="hidden" name="underline" value="<%= bValue?"Y":"N" %>">
+ <input type="checkbox" name="underlineChk" value="Y"<%= bValue?" checked":"" %> onClick="setUnderline(<%= i %>)">
+ </td>
+ <td align="center" valign="middle">
+ <% sValue = "";
+ if(ft!=null)
+ sValue = nvl(ft.getBgColor()); %>
+ <select name="bgColor" onChange="setBgColor(<%= i %>)">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>
+ <option value="#00FFFF"<%= sValue.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= sValue.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= sValue.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= sValue.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= sValue.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= sValue.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= sValue.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= sValue.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= sValue.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= sValue.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= sValue.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= sValue.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= sValue.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= sValue.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= sValue.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= sValue.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= sValue.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </td>
+ <td align="center" valign="middle">
+ <% sValue = "";
+ if(ft!=null)
+ sValue = nvl(ft.getFontColor()); %>
+ <select name="fontColor" onChange="setFontColor(<%= i %>)">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>
+ <option value="#00FFFF"<%= sValue.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= sValue.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= sValue.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= sValue.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= sValue.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= sValue.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= sValue.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= sValue.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= sValue.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= sValue.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= sValue.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= sValue.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= sValue.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= sValue.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= sValue.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= sValue.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= sValue.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </td>
+ <td align="center" valign="middle">
+ <% sValue = "";
+ if(ft!=null)
+ sValue = nvl(ft.getFontFace()); %>
+ <select name="fontFace" onChange="setFontFace(<%= i %>)">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>--- Default ---
+ <option value="Arial,Helvetica,sans-serif"<%= sValue.equals("Arial,Helvetica,sans-serif") ?" selected":"" %>>Arial
+ <option value="Courier New,Courier,mono"<%= sValue.equals("Courier New,Courier,mono") ?" selected":"" %>>Courier New
+ <option value="Geneva,Arial,Helvetica,sans-serif"<%= sValue.equals("Geneva,Arial,Helvetica,sans-serif") ?" selected":"" %>>Geneva
+ <option value="Georgia,Times New Roman,Times,serif"<%= sValue.equals("Georgia,Times New Roman,Times,serif")?" selected":"" %>>Georgia
+ <option value="Times New Roman,Times,serif"<%= sValue.equals("Times New Roman,Times,serif") ?" selected":"" %>>Times New Roman
+ <option value="Verdana,Arial,Helvetica,sans-serif"<%= sValue.equals("Verdana,Arial,Helvetica,sans-serif") ?" selected":"" %>>Verdana
+ </select>
+ </td>
+ <td align="center" valign="middle">
+ <% sValue = "11";
+ if(ft!=null)
+ sValue = nvl(ft.getFontSize(), "11"); %>
+ <select name="fontSize" onChange="setFontSize(<%= i %>)">
+ <option value="6"<%= sValue.equals("6") ?" selected":"" %>>6
+ <option value="8"<%= sValue.equals("8") ?" selected":"" %>>8
+ <option value="9"<%= sValue.equals("9") ?" selected":"" %>>9
+ <option value="10"<%= sValue.equals("10")?" selected":"" %>>10
+ <option value="11"<%= sValue.equals("11")?" selected":"" %>>11
+ <option value="12"<%= sValue.equals("12")?" selected":"" %>>12
+ <option value="14"<%= sValue.equals("14")?" selected":"" %>>14
+ <option value="16"<%= sValue.equals("16")?" selected":"" %>>16
+ <option value="18"<%= sValue.equals("18")?" selected":"" %>>18
+ <option value="24"<%= sValue.equals("24")?" selected":"" %>>24
+ <option value="36"<%= sValue.equals("36")?" selected":"" %>>36
+ <option value="48"<%= sValue.equals("48")?" selected":"" %>>48
+ <option value="72"<%= sValue.equals("72")?" selected":"" %>>72
+ </select>
+ </td>
+ <!--td align="center" valign="middle">
+ < % sValue = "left";
+ if(ft!=null)
+ sValue = nvl(ft.getAlignment(), "left"); % >
+ <select name="alignment" onChange="setAlignment(< %= i % >)">
+ <option value="left" < %= sValue.equals("left") ?" selected":"" % >>Left
+ <option value="center"< %= sValue.equals("center")?" selected":"" % >>Center
+ <option value="right" < %= sValue.equals("right") ?" selected":"" % >>Right
+ </select>
+ </td-->
+ <td valign="middle">
+ <span id="preview<%= i %>" style="font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000000;width:100">Sample</span>
+ </td>
+ </tr>
+<% } // for
+%>
+ <tr>
+ <td colspan="10" align="center">
+ <br>
+ <input type="Submit" class=button name="submit_btn" value="Save">
+ <input type="Submit" class=button name="submit_btn" value="Save & More Rows">
+ <input type="Button" class=button value="Cancel" onClick="window.close();">
+ </td>
+ </tr>
+</table>
+
+</form>
+
+<% } // if(submitBtn.equals("Save")) { ... } else {
+%>
+
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp
new file mode 100644
index 00000000..c685bb13
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp
@@ -0,0 +1,55 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<html>
+<head>
+ <title><%= nvl((String) request.getAttribute(AppConstants.RI_PAGE_TITLE)) %></title>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+</head>
+<body>
+<table width="94%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 width="100%" valign="Middle">
+ <b class=rtableheader><%= nvl((String) request.getAttribute(AppConstants.RI_PAGE_SUBTITLE), nvl((String) request.getAttribute(AppConstants.RI_PAGE_TITLE))) %></b>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2<%= nvl((String) request.getAttribute("msg_align")) %>>
+ <font class=rtabletext><%= nvl((String) request.getAttribute(AppConstants.RI_FORMATTED_SQL)) %></font>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <br>
+ <input type="Submit" class=rsmallbutton value="Close" onClick="window.close();">
+ </td>
+ </tr>
+</table>
+<br>
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp
new file mode 100644
index 00000000..9dec6a53
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp
@@ -0,0 +1,171 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% String tableName = AppUtils.getRequestValue(request, AppConstants.RI_TABLE_NAME);
+ String remoteDbPrefix = (String) session.getAttribute("remoteDB");
+ Vector tableSources = null;
+ Vector dbColumns = null;
+ if(tableName==null) {
+ tableSources = DataCache.getReportTableSources(remoteDbPrefix);
+ if(tableSources.size()>0)
+ tableName = ((TableSource) DataCache.getReportTableSources(remoteDbPrefix).get(0)).getTableName();
+ }
+ if(tableName!=null)
+ dbColumns = DataCache.getReportTableDbColumns(tableName.toUpperCase(),remoteDbPrefix);
+
+
+ boolean isSingleValueChoice = AppUtils.getRequestFlag(request, "single_value");
+ boolean includeTableNameInResult = AppUtils.getRequestFlag(request, "return_table_name");
+ boolean includeColTypeInResult = AppUtils.getRequestFlag(request, "return_col_type"); %>
+
+<html>
+<head>
+ <title>Table Columns</title>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/ral.css">
+
+<script language=JavaScript>
+<!--
+ function setValue(newValue) {
+ window.opener.addText(newValue);
+ window.close();
+ } // setValue
+
+ function clearValue() {
+ window.opener.clearText();
+ window.close();
+ } // clearValue
+//-->
+</script>
+
+</head>
+<body>
+
+<% if(! isSingleValueChoice) { %>
+<script language=JavaScript>
+<!--
+ function getSelection() {
+ var selList = "";
+ <% if(dbColumns!=null) { %>
+ for(var i=0; i<<%= dbColumns.size() %>; i++)
+ if(document.dataform.dataChk[i].checked)
+ selList += ((selList=="")?"":", ")+document.dataform.dataChk[i].value;
+ <% } %>
+
+ setValue(selList);
+
+ return false;
+ } // getSelection
+//-->
+</script>
+<% } // if
+%>
+
+
+<form name="dataform" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.popup.table.cols">
+<% if(isSingleValueChoice) { %>
+ <input type="hidden" name="single_value" value="Y">
+<% } %>
+<% if(includeTableNameInResult) { %>
+ <input type="hidden" name="return_table_name" value="Y">
+<% } %>
+<% if(includeColTypeInResult) { %>
+ <input type="hidden" name="return_col_type" value="Y">
+<% } %>
+
+<table class="mTAB" width=94% border=0 cellspacing=1 align=center>
+ <tr class=rbg1>
+ <td align="center" valign="middle" height="30">&nbsp;
+ <% if(! isSingleValueChoice) { %>
+ <input type=image src='<%= AppUtils.getImgFolderURL() %>downloadicon.gif' alt='Store selection' width=12 height=12 border=0 onClick="return getSelection()">&nbsp;
+ <% } %>
+ </td>
+ <td colspan="2" valign="middle" nowrap>
+ <select name="<%= AppConstants.RI_TABLE_NAME %>" onChange="document.dataform.submit()">
+ <% for(Iterator iter=DataCache.getReportTableSources(remoteDbPrefix).iterator(); iter.hasNext(); ) {
+ String iTableName = ((TableSource) iter.next()).getTableName(); %>
+ <option value="<%= iTableName %>"<%= iTableName.equals(tableName)?" selected":"" %>><%= iTableName %>
+ <% } // for
+ %>
+ </select>
+ <b class=rtableheader> DB Table Columns</b>
+ </td>
+ </tr>
+ <% int rNum = 0;
+ if(dbColumns!=null)
+ for(rNum=0; rNum<dbColumns.size(); rNum++) {
+ DBColumnInfo dbCol = (DBColumnInfo) dbColumns.get(rNum);
+ String sValue = (includeTableNameInResult?(tableName+"."):"")+dbCol.getColName()+(includeColTypeInResult?("|"+dbCol.getColType()):"");
+ String sDisplay = "["+tableName+"]."+dbCol.getColName(); %>
+ <tr<%= (rNum%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" height="30"><font class=rtabletext><%= (rNum+1) %></font></td>
+ <% if(isSingleValueChoice) { %>
+ <td colspan="2"><font class=rtabletext><a href="javascript:setValue('<%= sValue %>')"><%= sDisplay %></a></font></td>
+ <% } else { %>
+ <td align="center" valign="middle">
+ <input type="checkbox" name="dataChk" value="<%= sValue %>">
+ </td>
+ <td><font class=rtabletext><%= sDisplay %></font></td>
+ <% } // else
+ %>
+ </tr>
+ <% } // for
+ if(rNum==0) { %>
+ <tr class=rbg3>
+ <td align="center" height="30" colspan="3"><font class=rtabletext>No columns found for table [<%= tableName %>]</font></td>
+ </tr>
+ <% } else { // if
+ %>
+ <tr class=rbg3>
+ <td colspan="3"><font class=rtabletext><a href="javascript:clearValue()"><%= "CLEAR VALUE" %></a></font></td>
+ </tr>
+ <%
+ }
+ %>
+ <tr class=rbg1>
+ <td align="center" valign="middle" height="30">&nbsp;
+ <% if(! isSingleValueChoice) { %>
+ <input type=image src='<%= AppUtils.getImgFolderURL() %>downloadicon.gif' alt='Store selection' width=12 height=12 border=0 onClick="return getSelection()">&nbsp;
+ <% } %>
+ </td>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+</table>
+
+ <input type="hidden" name="dataChk" value="">
+ <input type="hidden" name="dataChk" value="">
+</form>
+
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp
new file mode 100644
index 00000000..a5dbd502
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp
@@ -0,0 +1,103 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.io.*" %>
+<%@ page import="java.util.*" %>
+
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<% Exception ex = (Exception) request.getAttribute(AppConstants.RI_EXCEPTION);
+ DataSet ds = (DataSet) request.getAttribute(AppConstants.RI_DATA_SET); %>
+
+<html>
+<head>
+<title>SQL Statement Test Run</title>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+<script language="JavaScript">
+<!--
+function setOpenerConfirm() {
+<% if(AppUtils.getRequestNvlValue(request, AppConstants.RI_CHK_FIELD_SQL).equals("Y")&&ex==null) { %>
+ window.opener.setVerifyFlag();
+<% } %>
+} // setOpenerConfirm
+//-->
+</script>
+</head>
+<body onLoad="setOpenerConfirm()">
+<table class="mTAB" width="94%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 width="100%" valign="Middle"<%= (ds==null)?"":(" colspan="+(ds.getColumnCount()+1)) %>>
+ <b class=rtableheader>SQL Execution <%= (ex==null)?"Result - Success":"Generated Exception" %></b>
+ </td>
+ </tr>
+<% if(ex!=null) { %>
+ <tr>
+ <td class=rbg2>
+ <br>
+ <font class=rtabletext><%= nvl(ex.getMessage(), "&nbsp;") %></font>
+ <br><br>
+<!-------------------------------------------------------
+EXCEPTION [<%= ex.getMessage() %>]
+<% ex.printStackTrace(new PrintWriter(out)); %>
+-------------------------------------------------------->
+ </td>
+ </tr>
+<% } else if(ds!=null) { %>
+ <tr class=rbg1>
+ <td>&nbsp;</td>
+ <% for(int c=0; c<ds.getColumnCount(); c++) { %>
+ <td align="center" valign="Middle"><b class=rtabletext><%= ds.getColumnName(c) %></b></td>
+ <% } %>
+ </tr>
+ <% for(int r=0; r<Math.min(ds.getRowCount(), Globals.getDefaultPageSize()); r++) { %>
+ <tr<%= (r%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" valign="Middle"><font class=rtabletext><%= (r+1) %></font></td>
+ <% for(int c=0; c<ds.getColumnCount(); c++) { %>
+ <td valign="Middle"><font class=rtabletext><%= nvl(ds.getString(r, c), "&nbsp;") %></font></td>
+ <% } %>
+ </tr>
+ <% } // for r
+ if(ds.getRowCount()>Globals.getDefaultPageSize()) { %>
+ <tr<%= (Globals.getDefaultPageSize()%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" valign="Middle"><font class=rtabletext><%= (Globals.getDefaultPageSize()+1) %></font></td>
+ <td align="left" valign="Middle" colspan="<%= ds.getColumnCount() %>"><font class=rtabletext>...</font></td>
+ </tr>
+ <% } else if(ds.getRowCount()==0) { %>
+ <tr class=rbg3>
+ <td align="center" valign="Middle" colspan="<%= ds.getColumnCount()+1 %>"><font class=rtabletext>No data found</font></td>
+ </tr>
+ <% } // else if
+ } // else if
+%>
+ <tr>
+ <td align="center"<%= (ds==null)?"":(" colspan="+(ds.getColumnCount()+1)) %>>
+ <br>
+ <input type="Submit" class=button value="Close" onClick="window.close();">
+ </td>
+ </tr>
+</table>
+<br>
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp
new file mode 100644
index 00000000..81158047
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp
@@ -0,0 +1,89 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page trimDirectiveWhitespaces="true" %>
+<%@ page import="java.util.*" %><%@ page import="java.text.*" %><%@ page import="java.io.*" %><%@ page import="org.openecomp.portalsdk.analytics.model.*" %><%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %><%@ page import="org.openecomp.portalsdk.analytics.view.*" %><%@ page import="org.openecomp.portalsdk.analytics.system.*" %><%@ page import="org.openecomp.portalsdk.analytics.util.*" %><%
+ ReportRuntime rr = null;
+ ReportData rd = null;
+ String parent = "";
+ int parentFlag = 0;
+ if(!nvl(request.getParameter("parent"), "").equals("N")) parent = nvl(request.getParameter("parent"), "");
+ if(parent.startsWith("parent_")) parentFlag = 1;
+ if(parentFlag == 1) {
+ rr = (ReportRuntime) request.getSession().getAttribute(parent+"_rr");
+ rd = (ReportData) request.getSession().getAttribute(parent+"_rd");
+ }
+ if(rr==null) rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
+ if(rd==null) rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
+ String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName());
+ String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date());
+ String fName = formattedReportName+formattedDate+AppUtils.getUserID(request);
+ boolean raw = AppUtils.getRequestFlag(request, "raw");
+ if(true && !raw)
+ response.setContentType("application/octet-stream");
+ else
+ response.setContentType("application/csv");
+ String fileName = fName+".csv";
+ String sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
+ if(true && !raw)
+ response.setHeader("Content-disposition","attachment;filename="+fName+".zip");
+ else
+ response.setHeader("Content-disposition","attachment;filename="+fName+".csv");
+ try {(new ReportHandler()).createCSVFileContent(out, rd, rr, sql_whole, request,fName);
+ //out.flush();
+ //out.close();
+ if(true) {
+ // response.reset();
+ ServletOutputStream outS = response.getOutputStream();
+ java.io.File file = null;
+ if(true && !raw) {
+ response.setContentType("application/octet-stream");
+ response.setHeader("Content-disposition","attachment;filename="+fName+".zip");
+ file = new java.io.File(AppUtils.getTempFolderPath()+""+fName+".zip");
+ } else {
+ response.setContentType("application/csv");
+ response.setHeader("Content-disposition","attachment;filename="+fName+".csv");
+ file = new java.io.File(AppUtils.getTempFolderPath()+""+fName+".csv");
+ }
+ FileInputStream fileIn = new FileInputStream(file);
+ int c;
+ while((c=fileIn.read()) != -1){
+ outS.write(c);
+ }
+ outS.flush();
+ outS.close();
+ fileIn.close();
+
+
+ /*byte[] outputByte = new byte[4096];
+ //copy binary contect to output stream
+ while(fileIn.read(outputByte, 0, 4096) != -1) {
+ outS.write(outputByte, 0, 4096);
+ }
+ fileIn.close();
+ outS.flush();
+ outS.close();*/
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ Log.write("Fatal error [report_download_csv.jsp]: "+e.getMessage());
+ }
+%>
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp
new file mode 100644
index 00000000..e5ae9dde
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp
@@ -0,0 +1,40 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page trimDirectiveWhitespaces="true" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.pdf.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.view.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+<%
+ ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
+ ReportData rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
+ try {
+ new PdfReportHandler().createPdfFileContent(request,response, 3);
+ } catch(Exception e) {
+ Log.write("Fatal error [report_download_pdf.jsp]: "+e.getMessage());
+ e.printStackTrace();
+ }
+ out.clear();
+ out = pageContext.pushBody();
+%>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp
new file mode 100644
index 00000000..a82470d8
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp
@@ -0,0 +1,64 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.view.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+<%
+ReportRuntime rr = null;
+ReportData rd = null;
+String parent = "";
+int parentFlag = 0;
+if(!nvl(request.getParameter("parent"), "").equals("N")) parent = nvl(request.getParameter("parent"), "");
+if(parent.startsWith("parent_")) parentFlag = 1;
+if(parentFlag == 1) {
+ rr = (ReportRuntime) request.getSession().getAttribute(parent+"_rr");
+ rd = (ReportData) request.getSession().getAttribute(parent+"_rd");
+}
+if(rr==null) rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
+if(rd==null) rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
+
+ if(rr != null && rr.getReportType().equals(AppConstants.RT_DASHBOARD)) {
+ //rr = (ReportRuntime) request.getSession().getAttribute("FirstDashReport");
+ } else if (rr == null)
+ rr = (ReportRuntime) request.getSession().getAttribute("FirstDashReport");
+ //rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
+
+ //response.setContentType("application/vnd.ms-excel");
+ //response.setHeader("Content-disposition","attachment;filename=download_all_"+AppUtils.getUserID(request)+".xls");
+ String user_id = AppUtils.getUserID(request);
+ try {
+/* if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) {
+ int downloadLimit = (rr.getMaxRowsInExcelDownload()>0)?rr.getMaxRowsInExcelDownload():Globals.getDownloadLimit();
+ rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit,request);
+ }
+*/
+ new ReportHandler().createExcelFileContent(out, rd, rr, request, response, user_id, 3); //3 whole
+ } catch(Exception e) {
+ e.printStackTrace();
+ Log.write("Fatal error [report_download_xls.jsp]: "+e.getMessage());
+ }
+ out.clear();
+ out = pageContext.pushBody();
+%>
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp
new file mode 100644
index 00000000..8d42b65b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp
@@ -0,0 +1,179 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/header.css">
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css">
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
+
+
+<script src= "app/fusion/external/ebz/angular_js/angular.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script>
+<script src="app/fusion/external/ebz/angular_js/angular-touch.js"></script>
+<script src="app/fusion/external/ebz/angular_js/angular-animate.js"></script>
+
+<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
+<script src="static/js/jquery-1.10.2.js"></script>
+<script src="app/fusion/scripts/modalService.js"></script>
+<script src="static/js/jquery.mask.min.js" type="text/javascript"></script>
+<script src="static/js/jquery-ui.js" type="text/javascript"></script>
+<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
+<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script>
+<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script>
+<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
+<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
+<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
+<script src="app/fusion/scripts/services/userInfoService.js"></script>
+<script src="app/fusion/scripts/services/leftMenuService.js"></script>
+
+
+<script src="static/fusion/raptor/ebz/dynamicform.js"></script>
+<script src="static/fusion/raptor/ebz/multiselect.js"></script>
+<script src="static/fusion/raptor/ebz/report_search.js"></script>
+<script src="static/fusion/raptor/ebz/report_run.js"></script>
+<script src="static/fusion/raptor/ebz/quick_links.js"></script>
+
+<script src="static/fusion/raptor/uigrid/vfs_fonts.js"></script>
+<script src="static/fusion/raptor/uigrid/ui-grid.js"></script>
+
+<script src="static/fusion/raptor/ebz/report_chart_wizard.js"></script>
+
+
+<script src="app/fusion/scripts/controllers/modelpopupController.js"></script>
+
+<script src="static/fusion/raptor/ebz/date_time_picker.js"></script>
+<script src="static/fusion/raptor/ebz/moment.js"></script>
+<link rel="stylesheet" href="static/fusion/raptor/ebz/date_time_picker.css"/>
+
+
+<link rel="stylesheet" href="static/fusion/raptor/uigrid/ui-grid.css" type="text/css">
+
+<div ng-controller="reportMainController">
+ <div ng-if='isViewRendering || isDataLoading' style="font-size:50px;color:#2ca02c">Loading...</div>
+ <div ng-view style="min-height: 400px;"></div>
+</div>
+<div ng-include src="app/fusion/scripts/view-models/profile-page/popup_modal.html"></div>
+
+<style>
+#accBar .att-accordion__heading span{
+ font-weight:bold;
+ position:relative;
+ margin:-10px;
+}
+#accTimeChart .att-accordion__heading span{
+ font-weight:bold;
+ position:relative;
+ margin:-10px;
+}
+#accFlexTimeChart .att-accordion__heading span{
+ font-weight:bold;
+ position:relative;
+ margin:-10px;
+}
+#accCommonOptions .att-accordion__heading span{
+ font-weight:bold;
+ position:relative;
+ margin:-10px;
+}
+
+#additionalOptions .att-accordion__heading span{
+ font-weight:bold;
+ position:relative;
+ margin:-10px;
+}
+
+
+
+</style>
+<script>
+angular.module('abs').requires.push('quantum', 'ngAnimate', 'ngTouch', 'ngRoute', 'ui.grid',
+ 'ui.grid.pagination','ui.grid.resizeColumns',
+ 'ui.grid.pinning');
+app.config(['$routeProvider',
+ function($routeProvider) {
+ $routeProvider.
+ when('/report_search', {
+ templateUrl: 'static/fusion/raptor/ebz/report_search.html',
+ controller: 'reportSearchController'
+ }).
+ when('/report_run/:reportUrlParams*', {
+ templateUrl: 'static/fusion/raptor/ebz/report_run.html',
+ controller: 'reportRunController'
+ }).
+ when('/report_chart_wizard/:reportId', {
+ templateUrl: 'static/fusion/raptor/ebz/report_chart_wizard.html',
+ controller: 'ChartController'
+ }).
+ otherwise({
+ redirectTo: '/report_search'
+ });
+ }]);
+
+app.factory('redirectInterceptor',['$q','$location','$window','$rootScope', function($q,$location,$window,$rootScope){
+ return {
+ 'request':function(config){
+ $rootScope.isDataLoading = true;
+ return config;
+ },
+ 'response':function(response,config){
+ if(typeof response.data === 'string' && response.data=="session has timed out for user") {
+ $window.location.href = 'login.htm';
+ return $q.reject(response);
+ }else{
+ //console.log('Inside response else ');
+ $rootScope.isDataLoading = false;
+ return response;
+ }
+ }
+ }
+}]);
+
+app.config(['$httpProvider',function($httpProvider) {
+ $httpProvider.interceptors.push('redirectInterceptor');
+}]);
+
+app.controller("reportMainController", [ '$scope', '$rootScope', '$parse', 'Grid', function($scope,$rootScope,$parse,Grid) {
+ $rootScope.isViewRendering = true;
+ $rootScope.$on('$routeChangeStart', function() {
+ $rootScope.isViewRendering = true;
+ });
+
+ Grid.prototype.getCellValue = function getCellValue(row, col){
+ if(col.field.indexOf('==')>-1){
+ var customField = col.field.split('==');
+ var obj = row.entity.filter(function(d){if(d.columnId==customField[0]) return true; });
+ if(obj.length>0){
+ return obj[0].searchresultField[customField[1]];
+ }
+ }
+ if ( typeof(row.entity[ '$$' + col.uid ]) !== 'undefined' ) {
+ return row.entity[ '$$' + col.uid].rendered;
+ } else if (this.options.flatEntityAccess && typeof(col.field) !== 'undefined' ){
+ return row.entity[col.field];
+ } else {
+ if (!col.cellValueGetterCache) {
+ col.cellValueGetterCache = $parse(row.getEntityQualifiedColField(col));
+ }
+ return col.cellValueGetterCache(row);
+ }
+ };
+
+}]);
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp
new file mode 100644
index 00000000..bb62def0
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp
@@ -0,0 +1,84 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<html>
+<head>
+ <title>Import</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+ <style>
+ #page-content {
+ width:80%
+ }
+
+ table#pageContentTable,
+ table#pageContentTable td,
+ table#pageContentTable tr
+ {
+ border: none !important;
+ }
+ </style>
+</head>
+
+
+<br><br>
+
+<body>
+<div id="page-content" style="margin-right:20px">
+<form name="forma" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.import.save">
+
+<table width=94% class="tableBorder" border=0 cellspacing=1 cellpadding=3 align=center>
+ <tr class=rbg1>
+ <td>
+ <b class=rtableheader><%= Globals.getBaseTitle() %> > IMPORT REPORT XML</b>
+ </td>
+ </tr>
+ <tr class=rbg3>
+ <td align="center">
+ <font class=rtabletext>
+ <textarea name="reportXML" cols="62" rows="16"></textarea>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <br>
+ <input type="Submit" class=button value="Import" onClick="if(document.forma.reportXML.value=='') { alert('Please provide report XML.'); return false; }">
+ </td>
+ </tr>
+</table>
+
+
+
+</form>
+
+<%-- <jsp:include page="disclaimer.jsp" flush="true" /> --%>
+</div>
+</body>
+</html>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp
new file mode 100644
index 00000000..cfbfad14
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp
@@ -0,0 +1,40 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<h1 class="heading1" style="margin-bottom:20px">Customizable Analytics Dashboard</h1>
+ <iframe src="report_embedded#/report_run/c_master=3356&refresh=Y&hideGrid=true&width=550&height=400&leftMargin=0"
+ width="500" height="470"
+ scrolling="no" style="border: none; background-color: #f2f2f2; opacity: 1;"></iframe>
+
+ <iframe src="report_embedded#/report_run/c_master=3321&refresh=Y&hideGrid=true&width=550&height=300"
+ width="450" height="450"
+ scrolling="no" style="border: none; background-color: #f2f2f2; opacity: 1;"></iframe>
+
+<!-- <iframe src="report_embedded#/report_run/c_master=3323&refresh=Y&hideFormFields=true&ff1=2&ff1=4&ff1=5&ff1=6&ff1=7&ff1=8&display_content=Y&r_page=0"
+ width="625" height="250"
+ scrolling="no" style="border: none; background-color: #f2f2f2; opacity: 1;"></iframe>
+ -->
+ <iframe src="report_embedded#/report_run/c_master=3324&refresh=Y&hideFormFields=true&ff1=12/10/2015&display_content=Y&r_page=0"
+ width="625" height="425"
+ scrolling="no" style="border: none; background-color: #f2f2f2; opacity: 1;"></iframe>
+
+<!-- <iframe src="report_embedded#/report_run/c_master=3327&refresh=Y&hideFormFields=true&ff1=6&ff2=1&display_content=Y&r_page=0"
+ width="625" height="250"
+ scrolling="no" style="border: none; background-color: #f2f2f2; opacity: 1;"></iframe>
+ -->
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp
new file mode 100644
index 00000000..480bdbcb
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp
@@ -0,0 +1,2432 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-touch.js"></script>
+<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-animate.js"></script>
+<script src="http://ui-grid.info/release/ui-grid.js"></script>
+<link rel="stylesheet" href="http://ui-grid.info/release/ui-grid.css" type="text/css">
+
+<style></style>
+
+<div ng-controller="reportSearchController">
+ <div id="grid1" ui-grid="gridOptions" ui-grid-pagination ui-grid-selection ui-grid-exporter class="grid"></div>
+</div>
+
+<script>
+angular.module('abs').requires.push('ngAnimate', 'ngTouch', 'ui.grid','ui.grid.pagination','ui.grid.selection', 'ui.grid.exporter');
+app.controller("reportSearchController", function ($scope,$http,$parse,uiGridConstants,Grid) {
+ $scope.searchdData = {
+ "metaReport" : {
+ "pagination" : true,
+ "pageSize" : 20,
+ "totalSize" : 9,
+ "pageNo" : -1
+ },
+ "columns" : [ [ {
+ "columnId" : "no",
+ "columnTitle" : "No",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "No",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "rep_id",
+ "columnTitle" : "Report ID",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Report ID",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "rep_name",
+ "columnTitle" : "Report Name",
+ "columnWidth" : "25%",
+ "alignment" : "Left",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Report Name",
+ "columnWidthHtml" : " width=25%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "descr",
+ "columnTitle" : "Description",
+ "columnWidth" : "30%",
+ "alignment" : "Left",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Description",
+ "columnWidthHtml" : " width=30%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "owner",
+ "columnTitle" : "Report Owner",
+ "columnWidth" : "10%",
+ "alignment" : "Center",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Report Owner",
+ "columnWidthHtml" : " width=10%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "create_date",
+ "columnTitle" : "Create Date",
+ "columnWidth" : "10%",
+ "alignment" : "Center",
+ "linkURL" : null,
+ "linkTitle" : null,
+ "linkForm" : null,
+ "linkConfirmMsg" : null,
+ "linkImg" : null,
+ "linkImgWidth" : null,
+ "linkImgHeight" : null,
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Create Date",
+ "columnWidthHtml" : " width=10%",
+ "linkImgSizeHtml" : ""
+ }, {
+ "columnId" : "copy",
+ "columnTitle" : "&nbsp;&nbsp;Copy&nbsp;&nbsp;",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : "document.forma.r_action.value='report.copy';",
+ "linkTitle" : "Copy report",
+ "linkForm" : "forma",
+ "linkConfirmMsg" : "Are you sure you want to create a copy of this report?",
+ "linkImg" : "static/fusion/raptor/images/modify_icon.gif",
+ "linkImgWidth" : "13",
+ "linkImgHeight" : "12",
+ "copyLink" : true,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "&nbsp;&nbsp;Copy&nbsp;&nbsp;",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : " width=\"13\" height=\"12\""
+ }, {
+ "columnId" : "edit",
+ "columnTitle" : "&nbsp;&nbsp;Edit&nbsp;&nbsp;",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : "document.forma.r_action.value='report.edit';",
+ "linkTitle" : "Edit report",
+ "linkForm" : "forma",
+ "linkConfirmMsg" : null,
+ "linkImg" : "static/fusion/raptor/images/pen_paper.gif",
+ "linkImgWidth" : "12",
+ "linkImgHeight" : "12",
+ "copyLink" : false,
+ "editLink" : true,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "&nbsp;&nbsp;Edit&nbsp;&nbsp;",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : " width=\"12\" height=\"12\""
+ }, {
+ "columnId" : "delete",
+ "columnTitle" : "Delete",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : "document.forma.r_action.value='report.delete';",
+ "linkTitle" : "Delete report",
+ "linkForm" : "forma",
+ "linkConfirmMsg" : "Are you sure you want to delete this report?",
+ "linkImg" : "static/fusion/raptor/images/deleteicon.gif",
+ "linkImgWidth" : "12",
+ "linkImgHeight" : "12",
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : true,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "Delete",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : " width=\"12\" height=\"12\""
+ }, {
+ "columnId" : "schedule",
+ "columnTitle" : "Schedule",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : "document.forma.r_action.value='report.schedule.report.submit_wmenu';",
+ "linkTitle" : "Schedule report",
+ "linkForm" : "forma",
+ "linkConfirmMsg" : null,
+ "linkImg" : "static/fusion/raptor/images/calendar_icon.gif",
+ "linkImgWidth" : "20",
+ "linkImgHeight" : "20",
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : true,
+ "columnTitleHtml" : "Schedule",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : " width=\"20\" height=\"20\""
+ }, {
+ "columnId" : "run",
+ "columnTitle" : "&nbsp;&nbsp;Run&nbsp;&nbsp;",
+ "columnWidth" : "5%",
+ "alignment" : "Center",
+ "linkURL" : "document.forma.r_action.value='report.run';",
+ "linkTitle" : "Run report",
+ "linkForm" : "forma",
+ "linkConfirmMsg" : null,
+ "linkImg" : "static/fusion/raptor/images/test_run.gif",
+ "linkImgWidth" : "12",
+ "linkImgHeight" : "12",
+ "copyLink" : false,
+ "editLink" : false,
+ "deleteLink" : false,
+ "scheduleLink" : false,
+ "columnTitleHtml" : "&nbsp;&nbsp;Run&nbsp;&nbsp;",
+ "columnWidthHtml" : " width=5%",
+ "linkImgSizeHtml" : " width=\"12\" height=\"12\""
+ } ] ],
+ "rows" : [ [ [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "1",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "1",
+ "displayValueHtml" : "1",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "610",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "610",
+ "displayValueHtml" : "610",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "610",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "610",
+ "displayValueHtml" : "610",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"610\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 1</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/02/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/02/2009",
+ "displayValueHtml" : "03/02/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/02/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/02/2009",
+ "displayValueHtml" : "03/02/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='610'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "2",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "2",
+ "displayValueHtml" : "2",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "630",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "630",
+ "displayValueHtml" : "630",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "630",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "630",
+ "displayValueHtml" : "630",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"630\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 2</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/03/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/03/2009",
+ "displayValueHtml" : "03/03/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/03/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/03/2009",
+ "displayValueHtml" : "03/03/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='630'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3",
+ "displayValueHtml" : "3",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "637",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "637",
+ "displayValueHtml" : "637",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "637",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "637",
+ "displayValueHtml" : "637",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"637\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Dashboard Type: Report 3 </a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/04/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/04/2009",
+ "displayValueHtml" : "03/04/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/04/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/04/2009",
+ "displayValueHtml" : "03/04/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='637'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "4",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "4",
+ "displayValueHtml" : "4",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3321",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3321",
+ "displayValueHtml" : "3321",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3321",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3321",
+ "displayValueHtml" : "3321",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3321\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_BAR_CHART_INTERACTIVE</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/06/2013",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/06/2013",
+ "displayValueHtml" : "03/06/2013",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/06/2013",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/06/2013",
+ "displayValueHtml" : "03/06/2013",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3321'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "5",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "5",
+ "displayValueHtml" : "5",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "1012",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "1012",
+ "displayValueHtml" : "1012",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "1012",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "1012",
+ "displayValueHtml" : "1012",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"1012\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Demo: Dashboard - 2</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "05/06/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "05/06/2009",
+ "displayValueHtml" : "05/06/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "05/06/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "05/06/2009",
+ "displayValueHtml" : "05/06/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Schedule report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/calendar_icon.gif\" width=\"20\" height=\"20\" border=\"0\" alt=\"Schedule report\" onClick=\"document.forma.r_action.value='report.schedule.report.submit_wmenu'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Schedule report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='1012'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "6",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "6",
+ "displayValueHtml" : "6",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3322",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3322",
+ "displayValueHtml" : "3322",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3322",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3322",
+ "displayValueHtml" : "3322",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3322\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_LINE_CHART_INTERACTIVE</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/06/2013",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/06/2013",
+ "displayValueHtml" : "03/06/2013",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "03/06/2013",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "03/06/2013",
+ "displayValueHtml" : "03/06/2013",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3322'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "7",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "7",
+ "displayValueHtml" : "7",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3304",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3304",
+ "displayValueHtml" : "3304",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "3304",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "3304",
+ "displayValueHtml" : "3304",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"3304\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>DEMO_PIE_CHART</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "12/11/2012",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "12/11/2012",
+ "displayValueHtml" : "12/11/2012",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "12/11/2012",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "12/11/2012",
+ "displayValueHtml" : "12/11/2012",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='3304'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "8",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "8",
+ "displayValueHtml" : "8",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "526",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "526",
+ "displayValueHtml" : "526",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "526",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "526",
+ "displayValueHtml" : "526",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"526\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>RS Report CrossTab 3</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "CrossTab ",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "CrossTab ",
+ "displayValueHtml" : "CrossTab ",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "CrossTab ",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "CrossTab ",
+ "displayValueHtml" : "CrossTab ",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "01/29/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "01/29/2009",
+ "displayValueHtml" : "01/29/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "01/29/2009",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "01/29/2009",
+ "displayValueHtml" : "01/29/2009",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='526'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ], [ {
+ "columnId" : "no",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "9",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "9",
+ "displayValueHtml" : "9",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "2671",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "2671",
+ "displayValueHtml" : "2671",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_id",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "2671",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "2671",
+ "displayValueHtml" : "2671",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "rep_name",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "displayValueHtml" : "<a class=\"hyperref1\" href='#' onClick='document.forma.r_action.value=\"report.run\";document.forma.c_master.value=\"2671\";document.forma.refresh.value=\"Y\";document.forma.submit();return false;'>Test: CROSSTAB</a>",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "descr",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "owner",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Super User",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "Super User",
+ "displayValueHtml" : "Super User",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "09/22/2010",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "09/22/2010",
+ "displayValueHtml" : "09/22/2010",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "create_date",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "09/22/2010",
+ "alignment" : "Center",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "09/22/2010",
+ "displayValueHtml" : "09/22/2010",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "copy",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Copy report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/modify_icon.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"Copy report\" onClick=\"if(! confirm('Are you sure you want to create a copy of this report?')) return false; document.forma.r_action.value='report.copy'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Copy report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "edit",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "delete",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "schedule",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "",
+ "alignment" : "Left",
+ "drillDownLink" : null,
+ "displayValueLinkHtml" : "&nbsp;",
+ "displayValueHtml" : "&nbsp;",
+ "alignmentHtml" : " align=Left"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ }, {
+ "columnId" : "run",
+ "searchresultField" : {
+ "columnId" : null,
+ "displayValue" : "Run report",
+ "alignment" : "Center",
+ "drillDownLink" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueLinkHtml" : "<input type=\"image\" src=\"static/fusion/raptor/images/test_run.gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"Run report\" onClick=\"document.forma.r_action.value='report.run'; document.forma.c_master.value='2671'; document.forma.refresh.value='Y';\">",
+ "displayValueHtml" : "Run report",
+ "alignmentHtml" : " align=Center"
+ }
+ } ] ] ]
+ };
+ var getByColumnId = function(input, id) {
+ var i=0, len=input.length;
+ for (; i<len; i++) {
+ if (+input[i].columnId == +id) {
+ return input[i];
+ }
+ }
+ return null;
+ };
+
+
+ var paginationOptions = {
+ pageNumber: 1,
+ pageSize: 25,
+ sort: null
+ };
+ Grid.prototype.getCellValue = function getCellValue(row, col){
+ if(col.field.indexOf('==')>-1){
+ var obj = row.entity.filter(function(d){if(d.columnId==col.field.substring(2)) return true; });
+ if(obj.length>0){
+ return obj[0].searchresultField.displayValue;
+ }
+ }
+ if ( typeof(row.entity[ '$$' + col.uid ]) !== 'undefined' ) {
+ return row.entity[ '$$' + col.uid].rendered;
+ } else if (this.options.flatEntityAccess && typeof(col.field) !== 'undefined' ){
+ return row.entity[col.field];
+ } else {
+
+ if (!col.cellValueGetterCache) {
+ col.cellValueGetterCache = $parse(row.getEntityQualifiedColField(col));
+ }
+ return col.cellValueGetterCache(row);
+ }
+ };
+
+ $scope.gridOptions = {
+ paginationPageSizes: [25, 50, 75],
+ paginationPageSize: 25,
+ enableGridMenu: true,
+ enableSelectAll: true,
+ exporterCsvFilename: 'myFile.csv',
+ exporterPdfDefaultStyle: {fontSize: 9},
+ exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
+ exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'},
+ exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
+ exporterPdfFooter: function ( currentPage, pageCount ) {
+ return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
+ },
+ exporterPdfCustomFormatter: function ( docDefinition ) {
+ docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
+ docDefinition.styles.footerStyle = { fontSize: 10, bold: true };
+ return docDefinition;
+ },
+ exporterPdfOrientation: 'portrait',
+ exporterPdfPageSize: 'LETTER',
+ exporterPdfMaxGridWidth: 500,
+ exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),
+ onRegisterApi: function(gridApi){
+ $scope.gridApi = gridApi;
+ },
+ useExternalPagination: true,
+ useExternalSorting: true,
+ columnDefs: [ ],
+ onRegisterApi: function(gridApi) {
+ $scope.gridApi = gridApi;
+ $scope.gridApi.core.on.sortChanged($scope, function(grid, sortColumns) {
+ if (sortColumns.length == 0) {
+ paginationOptions.sort = null;
+ } else {
+ paginationOptions.sort = sortColumns[0].sort.direction;
+ }
+ getPage();
+ });
+ gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
+ paginationOptions.pageNumber = newPage;
+ paginationOptions.pageSize = pageSize;
+ getPage();
+ });
+ }
+ };
+
+ //$scope.getCellValue = function() {
+ // $scope.gridOptions.data = $scope.searchdData.rows[0];
+ // console.log($scope.gridOptions.data[1][0].displayValue);
+ // };
+
+
+
+ var getPage = function() {
+ };
+ $scope.searchdData.columns[0].forEach(function(entry) {
+ $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: '=='+entry.columnId});
+ });
+ $scope.gridOptions.data = $scope.searchdData.rows[0].splice(1,8);
+
+ getPage();
+
+});
+
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp
new file mode 100644
index 00000000..8448b249
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp
@@ -0,0 +1,322 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%--
+ Name: report_wizard.jsp
+ Use : Master JSP which navigates to specific JSP when different tab is selected. Default it navigates to the wizard_definition.jsp
+
+ Change Log
+ ==========
+
+ 22-Jun-2009 : Version 8.4 (Sundar);
+
+ <UL>
+ <LI> Save button is suppressed from showing when wizard is in the last page (Run page).</LI>
+ <LI> width of the content_iframe is changed back to default one when navigated from >100% report's run page.</LI>
+ </UL>
+--%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<%@ page errorPage="error_page.jsp" %>
+<script language="Javascript" src="<%= AppUtils.getBaseFolderURL() %>js/form-field-tooltip.js"></script>
+<script language="Javascript" src="<%= AppUtils.getBaseFolderURL() %>js/other_scripts.js"></script>
+<style>
+td, th {
+ padding: 0px;
+}
+</style>
+<script>
+ <%
+ String paramString = "";
+ Enumeration en = request.getParameterNames();
+ if (en != null) {
+ while (en.hasMoreElements()) {
+ String name = (String) en.nextElement();
+ String values[] = request.getParameterValues(name);
+ if (name.equals(AppConstants.RI_ACTION) == false
+ && name.equals("c_master") == false && name.equals("action") == false
+ && values != null) {
+ for (int i = 0; i < values.length; i++) {
+ //values[i] = values[i].replaceAll("=", "%3d");
+ //values[i] = values[i].replaceAll("\\?", "%3f");
+ //values[i] = values[i].replaceAll("&", "%26");
+ //System.out.println(name + " (" + i + "): [" + values[i] + "]");
+ paramString = paramString + "&" + name + "=" + java.net.URLEncoder.encode(values[i],"UTF8");
+ }
+ }
+ }
+ }
+
+ %>
+ if (window.parent.document.getElementById('content_Iframe') || window.document.getElementById('content_Iframe')){
+ }else{
+ //window.location="<%= AppUtils.getRaptorActionURL() %>report.create.container&c_master=<%=request.getParameter("c_master")%><%=paramString%>";
+ }
+</script>
+<% ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+
+ String reportID = rdef.getReportID();
+ WizardSequence ws = rdef.getWizardSequence();
+
+ String curStep = ws.getCurrentStep();
+ String curSubStep = ws.getCurrentSubStep();
+
+ String dbInfo = null;
+ dbInfo = rdef.getDBInfo();
+ int sessionflag = 0;
+ if(dbInfo == null || dbInfo.length() == 0) {
+ dbInfo = (String) session.getAttribute("remoteDB");
+ sessionflag = 1;
+ }
+ session.setAttribute("remoteDB", dbInfo);
+ if((dbInfo == null) && (request.getParameter("dataSource")!=null))
+ session.setAttribute("remoteDB", request.getParameter("dataSource"));
+
+ String title = (reportID.equals("-1")?"Create Report":"Edit Report");
+ String navTitle = Globals.getBaseTitle()+" > " + title;
+
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+%>
+<!-- Set All variable to request, to enable included jsp to access it -->
+<%
+ request.setAttribute(AppConstants.SI_REPORT_DEFINITION,rdef);
+%>
+
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/ral.css">
+
+
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+
+<jsp:include page="error_include.jsp" flush="true" />
+
+
+<style>
+#page-content {
+ width:80%
+}
+
+table#pageContentTable,
+table#pageContentTable td,
+table#pageContentTable tr
+{
+ border: none !important;
+}
+</style>
+<div id="page-content">
+<table id="pageContentTable" width="100%" >
+<tr><td id="folderTreeContainer" width="1%" height='300' valign='top' ><table>
+ <!--<jsp:include page="tree/folderNav.jsp" flush="true" >
+ <jsp:param name="doCollapseTree" value="Y" />
+ </jsp:include>-->
+ </table>
+</td>
+<td id="searchContentContainer" valign='top' >
+<div id="contentDiv" style="position:absoulte;overflow:auto;">
+<jsp:include page="custom_js_include.jsp" flush="true" />
+<form id="forma" name="forma" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.wizard">
+ <input type="hidden" name="<%= AppConstants.RI_REPORT_ID %>" value="<%= reportID %>">
+ <input type="hidden" name="<%= AppConstants.RI_DETAIL_ID %>" id="<%= AppConstants.RI_DETAIL_ID %>" value="<%= AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID) %>">
+ <input type="hidden" id="<%= AppConstants.RI_GO_TO_STEP %>" name="<%= AppConstants.RI_GO_TO_STEP %>" value="">
+ <input type="hidden" id="<%= AppConstants.RI_WIZARD_ACTION %>" name="<%= AppConstants.RI_WIZARD_ACTION %>" value="<%= AppConstants.WA_BACK %>">
+ <input type="hidden" name="<%= AppConstants.RI_JAVASCRIPT_ITEM_ID %>" value="">
+
+<table style="border: none !important;" width="94%" border="0" cellspacing="0" cellpadding="0" align=center>
+<tr><td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0px;">
+ <tr>
+<% for(ws.resetNext(); ws.hasNext(); ) {
+ String sTab = ws.getNext(); %>
+ <td width="9" align="right"><img border="0" src="<%= AppUtils.getImgFolderURL() %><%= sTab.equals(curStep)?"tab_left_sel.gif":"tab_left.gif" %>" width="9" height="24"></td>
+ <td class=<%= sTab.equals(curStep)?"rbg1":"rbg1d" %> align="center" valign="middle">
+ <% if(sTab.equals(curStep)) { %>
+ &nbsp;<a href="javascript:document.forma.submit()" class=rtabselected onClick="document.getElementById('<%= AppConstants.RI_GO_TO_STEP %>').value='<%= sTab %>';"><%= clearSpaces(sTab) %></a>&nbsp;
+ <% } else if(reportID.equals("-1")) { %>
+ &nbsp;<b class=rtabtext><%= clearSpaces(sTab) %></b>&nbsp;
+ <% } else { %>
+ &nbsp;<a href="javascript:document.forma.submit()" class=rtabtext onClick="document.getElementById('<%= AppConstants.RI_GO_TO_STEP %>').value='<%= sTab %>';"><%= clearSpaces(sTab) %></a>&nbsp;
+ <% } %>
+ </td>
+ <td width="9" align="left"><img border="0" src="<%= AppUtils.getImgFolderURL() %><%= sTab.equals(curStep)?"tab_right_sel.gif":"tab_right.gif" %>" width="9" height="24"></td>
+<% } // for
+%>
+ <td width="80%">&nbsp;</td>
+ </tr>
+ </table>
+</td></tr><tr><td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="3" style="margin: 0px;">
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= navTitle %></b></td>
+ </tr>
+ </table>
+</td></tr><tr><td><% if(curStep.equals(AppConstants.WS_DEFINITION)) { %>
+ <% if(sessionflag == 1) dbInfo = ""; %>
+ <jsp:include page="wizard_definition.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_SQL)) { %>
+ <jsp:include page="wizard_sql_def.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_TABLES)&&curSubStep.equals("")) { %>
+ <jsp:include page="wizard_tables_list.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_TABLES)&&(curSubStep.equals(AppConstants.WSS_ADD)||curSubStep.equals(AppConstants.WSS_EDIT))) { %>
+ <jsp:include page="wizard_tables_edit.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_COLUMNS)&&curSubStep.equals("")) { %>
+ <jsp:include page="wizard_columns_list.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_COLUMNS)&&curSubStep.equals(AppConstants.WSS_ADD_MULTI)) { %>
+ <jsp:include page="wizard_columns_add_multi.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_COLUMNS)&&curSubStep.equals(AppConstants.WSS_ORDER_ALL)) { %>
+ <jsp:include page="wizard_columns_order_all.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_COLUMNS)&&(curSubStep.equals(AppConstants.WSS_ADD)||curSubStep.equals(AppConstants.WSS_EDIT) ||curSubStep.equals(AppConstants.WA_MODIFY))) { %>
+ <jsp:include page="wizard_columns_edit.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_FORM_FIELDS)&&curSubStep.equals("")||curSubStep.equals(AppConstants.WSS_ADD_BLANK)) { %>
+ <jsp:include page="wizard_form_fields_list.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_FORM_FIELDS)&&(curSubStep.equals(AppConstants.WSS_ADD)||curSubStep.equals(AppConstants.WSS_EDIT))) { %>
+ <jsp:include page="wizard_form_fields_edit.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_FILTERS)&&curSubStep.equals("")) { %>
+ <jsp:include page="wizard_filters_list.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_FILTERS)&&(curSubStep.equals(AppConstants.WSS_ADD)||curSubStep.equals(AppConstants.WSS_EDIT))) { %>
+ <jsp:include page="wizard_filters_edit.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_SORTING)&&curSubStep.equals("")) { %>
+ <jsp:include page="wizard_sorting_list.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_SORTING)&&curSubStep.equals(AppConstants.WSS_ORDER_ALL)) { %>
+ <jsp:include page="wizard_sorting_order_all.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_SORTING)&&(curSubStep.equals(AppConstants.WSS_ADD)||curSubStep.equals(AppConstants.WSS_EDIT))) { %>
+ <jsp:include page="wizard_sorting_edit.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_JAVASCRIPT)) { %>
+ <jsp:include page="wizard_javascript.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_CHART)) { %>
+ <jsp:include page="wizard_chart.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_USER_ACCESS)) { %>
+ <jsp:include page="wizard_user_access.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_SCHEDULE)) { %>
+ <jsp:include page="wizard_schedule.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_REPORT_LOG)) { %>
+ <jsp:include page="wizard_log.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_MAP)) { %>
+ <jsp:include page="wizard_map.jsp"/>
+<% } else if(curStep.equals(AppConstants.WS_DATA_FORECASTING)) { %>
+ <jsp:include page="wizard_data_forecasting.jsp"/>
+<% } else { %>
+ <jsp:include page="wizard_run.jsp"/>
+<% } %>
+
+</td></tr><tr><td>
+ <table style="border: none !important;" width="100%" border="0" cellspacing="1" cellpadding="3">
+ <tr>
+ <td width="10%" align="right">
+ &nbsp;
+ </td>
+ <td align=center>
+ <% if(! ws.isInitialStep()) { %>
+ <button type="submit" onClick="document.getElementById('<%= AppConstants.RI_WIZARD_ACTION %>').value='<%= AppConstants.WA_BACK %>';document.forma.submit();" att-button btn-type="primary" size="small" title='Back'>Back</button>
+ <% } %>
+
+ <% if(! ws.isFinalStep()) { %>
+ <button type="submit" onClick="if(! dataValidate()) return false; document.getElementById('<%= AppConstants.RI_WIZARD_ACTION %>').value='<%= AppConstants.WA_SAVE %>';document.forma.submit();" att-button btn-type="primary" size="small" title='Save'>Save</button>
+ <button type="submit" onClick="if(! dataValidate()) return false; document.getElementById('<%= AppConstants.RI_WIZARD_ACTION %>').value='<%= AppConstants.WA_NEXT %>';document.forma.submit();" att-button btn-type="primary" size="small" title='Next'>Next</button>
+ <% } %>
+ </td>
+ </tr>
+ </table>
+</td></tr>
+</table>
+
+</form>
+
+<script type="text/javascript">
+ document.title += ' <%=title%>';
+</script>
+
+ <jsp:include page="footer.jsp" flush="true" />
+
+</div>
+</td>
+</tr>
+</table>
+</div>
+<%--<jsp:include page="disclaimer.jsp" flush="true" />--%>
+<script>
+ //document.getElementById('loadingMessageDiv').style.display='none';
+ //adding the bread crumb on the folder tree
+ if (window.parent && window.parent.addBreadCrumb)
+ window.parent.addBreadCrumb(true, "000<%=rdef.getReportID()%>");
+ //displayTree("000<%=rdef.getReportID()%>");
+ <%
+ String isTreeHidden = "true";
+ if(request.getSession().getAttribute("isTreeHidden") != null && ((String)request.getSession().getAttribute("isTreeHidden")).equals("true")){
+ isTreeHidden = "true";
+ }else{
+ isTreeHidden = "false";
+ }
+ %>
+ //if ("<%=isTreeHidden%>" == "true"){
+ // hideTree();
+ //}
+ //document.getElementById('contentDiv').style.height=document.body.offsetHeight - 210;
+ function resizeDivScrollbar(){
+ var parentBody = window.parent.document.body;
+ var parentMenu = window.parent.document.getElementById("application");
+ var searchTD = document.getElementById("contentDiv");
+ var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //parentBody.style.width = window.screen.size;
+ //searchTD.style.width = parentBody.clientWidth - 200;
+ //parentMenu.style.width = 1263;
+ //javascript:resizeTo(screen.availWidth,screen.availHeight);
+ if(parentMenu) parentMenu.style.width = screen.availWidth - 150;
+ if(contentIframe) contentIframe.style.width = screen.availWidth - 30;
+ }
+ resizeDivScrollbar();
+</script>
+<%! private String HTMLEncode(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)=='<')
+ sb.replace(i, i+1, "&lt;");
+ else if(sb.charAt(i)=='>')
+ sb.replace(i, i+1, "&gt;");
+ else if(sb.charAt(i)=='"')
+ sb.replace(i, i+1, "&quot;");
+
+ return sb.toString();
+ } // HTMLEncode
+
+ private String clearSpaces(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)==' ')
+ sb.replace(i, i+1, "&nbsp;");
+
+ return sb.toString();
+ } // clearSpaces
+
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp
new file mode 100644
index 00000000..2fdcee46
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp
@@ -0,0 +1,39 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+
+<script language="JavaScript">
+
+ function postSQL() {
+ document.formb.<%= AppConstants.RI_FORMATTED_SQL %>.value=window.opener.forma.fieldSQL.value;
+ window.opener.setVerifyFlag();
+ document.formb.submit();
+ }
+
+</script>
+<body onLoad="postSQL()">
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.popup.testrun.sql">
+ <input type="hidden" name="<%= AppConstants.RI_FORMATTED_SQL %>" value="">
+</form>
+</body>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp
new file mode 100644
index 00000000..1c30437b
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp
@@ -0,0 +1,38 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+
+<script language="JavaScript">
+
+ function postSQL() {
+ document.formb.<%= AppConstants.RI_FORMATTED_SQL %>.value=window.opener.forma.reportSQL.value;
+ document.formb.submit();
+ }
+
+</script>
+<body onLoad="postSQL()">
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="r_action" value="report.popup.testrun.sql">
+ <input type="hidden" name="<%= AppConstants.RI_FORMATTED_SQL %>" value="">
+</form>
+</body>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp
new file mode 100644
index 00000000..38951994
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp
@@ -0,0 +1,464 @@
+<%@page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@page import="org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime"%>
+<%@page import="org.openecomp.portalsdk.analytics.util.AppConstants"%>
+<%@page import="org.openecomp.portalsdk.analytics.system.Globals"%>
+
+<%
+ boolean isFolderAllowed = false;
+ ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
+ boolean adminUser = AppUtils.isAdminUser(request);
+ if (Globals.isFolderTreeAllowed()) {
+ if(adminUser) {
+ isFolderAllowed = true;
+ } else if (!Globals.isFolderTreeAllowedOnlyForAdminUsers()) {
+ isFolderAllowed = true;
+ } else isFolderAllowed = false;
+ }
+
+
+
+%>
+
+
+<script src='dwr/engine.js'></script>
+<script src='dwr/util.js'></script>
+<script src='dwr/interface/folderNavAjax.js'></script>
+
+
+<script>
+ var imgFolder = '<%=AppUtils.getImgFolderURL()%>';
+ var isFolderAllowed = '<%= isFolderAllowed%>';
+</script>
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/ajax.js"></script>
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/context-menu.js"></script>
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/drag-drop-folder-tree.js">
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js">
+</script>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/drag-drop-folder-tree.css">
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/context-menu.css">
+<style type="text/css">
+/* CSS for the demo */
+img{
+ border:0px;
+}
+</style>
+<script>
+ var doCollapse = '<%=request.getParameter("doCollapseTree")%>';
+ var selectedFolderId;
+ var ajaxObjects = new Array();
+
+ // Use something like this if you want to save data by Ajax.
+ function saveMyTree()
+ {
+ saveString = treeObj.getNodeOrders();
+ alert(saveString);
+ var ajaxIndex = ajaxObjects.length;
+ ajaxObjects[ajaxIndex] = new sack();
+ var url = 'tree';
+ //var url = 'tree';
+ ajaxObjects[ajaxIndex].requestFile = url; // Specifying which file to get
+ ajaxObjects[ajaxIndex].onCompletion = function() { saveComplete(ajaxIndex); } ; // Specify function that will be executed after file has been found
+ ajaxObjects[ajaxIndex].runAJAX(url); // Execute AJAX function
+
+ }
+ function saveComplete(index)
+ {
+ alert(ajaxObjects[index].response);
+ }
+
+
+ // Call this function if you want to save it by a form.
+ function saveMyTree_byForm()
+ {
+ displayFolderInfo();
+ var data=folderNavAjax.saveFolderStructure(treeObj.getNodeOrders(), "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+
+ }
+
+ function cancelMyTree_byForm(){
+ //document.treeFrm.submit();
+ displayFolderInfo();
+ var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+ }
+
+ function deleteMyTree_byForm()
+ {
+ //document.treeForm.submit();
+ displayFolderInfo();
+ var data=folderNavAjax.deleteFolderStructure(document.treeFrm.deleteIds.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+ }
+
+ function addMyTree_byForm()
+ {
+ //document.treeFrm.submit();
+ displayFolderInfo();
+ selectedFolderId = document.treeFrm.saveString.value;
+ var data=folderNavAjax.createNewFolder(document.treeFrm.saveString.value, document.treeFrm.newName.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+
+ }
+
+ function renameMyTree_byForm()
+ {
+ //document.treeFrm.submit();
+ displayFolderInfo();
+ var data=folderNavAjax.renameFolder(document.treeFrm.renameId.value, document.treeFrm.newName.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+
+ }
+
+ function createFolder(){
+ if(JSTreeObj.selectedItem == null || JSTreeObj.selectedItem.parentNode.id.substr(0,3) == '000')
+ return;
+ if (JSTreeObj.isAddAllowed(JSTreeObj.selectedItem.parentNode.id) == false){
+ alert("You do not have rights on this folder");
+ return;
+ }
+ selectedFolderId = JSTreeObj.selectedItem.parentNode.id;
+ displayFolderInfo();
+ if (JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem) == false){
+ hideFolderInfo();
+ }
+ }
+
+ function deleteFolder(){
+ if(JSTreeObj.selectedItem == null) {
+ return;
+ }
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ if (JSTreeObj.isDeleteAllowed(id) == false){
+ alert("You do not have rights on this folder");
+ return;
+ }
+ if(id.substr(0,3) == '000') {
+ return;
+ }
+ displayFolderInfo();
+ if (JSTreeObj.deleteItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem) == false){
+ hideFolderInfo();
+ }
+ }
+
+ function runReport()
+ {
+
+ if (JSTreeObj == null || JSTreeObj.selectedItem == null){
+ return;
+ }
+
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ if(id.substr(0,3) != '000') {
+ return;
+ }
+ //displayFolderInfo();
+ id = id.substr(3, id.length);
+ addBreadCrumb(true, id);
+ if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
+ window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ }
+ else if (document.getElementById('searchContentContainer')){
+ document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
+ //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
+ resizeWindow();
+ document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+
+ }else{
+
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+
+ }
+ function editReport()
+ {
+ if (JSTreeObj == null || JSTreeObj.selectedItem == null){
+ return;
+ }
+
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ if(id.substr(0,3) != '000') {
+ return;
+ }
+ id = id.substr(3, id.length);
+ if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
+ window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ }
+ else if (document.getElementById('searchContentContainer')){
+ document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
+ //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
+ resizeWindow();
+ document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+
+ }else{
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+ }
+ function deleteReport()
+ {
+ if (JSTreeObj == null || JSTreeObj.selectedItem == null){
+ return;
+ }
+
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ if(id.substr(0,3) != '000') {
+ return;
+ }
+ id = id.substr(3, id.length);
+ if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
+ window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ }
+ else if (document.getElementById('searchContentContainer')){
+ document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
+ //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
+ resizeWindow();
+ document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+
+ }
+ else{
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+
+ }
+ function createReport()
+ {
+ if (JSTreeObj == null || JSTreeObj.selectedItem == null){
+ return;
+ }
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ addBreadCrumb(false, id);
+ if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
+ window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.create&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ }
+ else if (document.getElementById('searchContentContainer')){
+ document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.create&folder_id=" + id + "&c_master=' + id + '&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
+ //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
+ resizeWindow();
+ document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.create.container&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+
+ }
+ else{
+ displayFolderInfo();
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.create.container&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+ }
+ function getFolderReports(id)
+ {
+ addBreadCrumb(false, id);
+ if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
+ window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ }
+ else if (document.getElementById('searchContentContainer')){
+ document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
+ //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
+ resizeWindow();
+ document.getElementById('content_Iframe').location = "<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=" + id + "&PAGE_ID=HOME&refresh=Y";
+
+ }
+ else{
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.folderlist&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+ }
+
+ function getAllFolderReports()
+ {
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.folderlist&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.treeFrm.submit();
+ }
+
+
+ function displayFolderInfo()
+ {
+ var infoDiv = document.getElementById('loadingMessageDiv');
+ if (infoDiv == null)
+ return;
+ infoDiv.style.left = document.body.offsetWidth - 100 ;
+ infoDiv.style.top = document.getElementById('scrollableTable').style.top;
+ infoDiv.style.display='block';
+ }
+ function hideFolderInfo()
+ {
+ var infoDiv = document.getElementById('loadingMessageDiv');
+ if (infoDiv == null)
+ return;
+ infoDiv.style.display='none';
+ }
+
+ function displayTree(id){
+ if (isFolderAllowed ){
+ if (id != null)
+ selectedFolderId = id;
+ if (document.getElementById('reportFolderTree') == null){
+ displayFolderInfo();
+ var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+ }
+ document.getElementById('expandedTree').style.display='block';
+ document.getElementById('collapsedTree').style.display='none';
+ if (document.getElementById('folderTreeContainer'))
+ document.getElementById('folderTreeContainer').width="25%";
+
+ //document.getElementById('scrollableTable').style.height=window.screen.height - 320;
+ //document.getElementById('scrollableTable').style.height=document.body.offsetHeight - 260;
+ resizeWindow();
+ folderNavAjax.displayTree();
+ }
+
+
+ }
+ function hideTree(){
+ document.getElementById('expandedTree').style.display='none';
+ document.getElementById('collapsedTree').style.display='block';
+ //GET BREAD CRUMBS and assign
+ if (document.getElementById('folderTreeContainer'))
+ document.getElementById('folderTreeContainer').width="2px";
+ folderNavAjax.hideTree();
+ }
+ function refreshTree(id){
+
+ if (isFolderAllowed ){
+ if (id != null)
+ selectedFolderId = id;
+ displayFolderInfo();
+ var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
+
+ document.getElementById('expandedTree').style.display='block';
+ document.getElementById('collapsedTree').style.display='none';
+ if (document.getElementById('folderTreeContainer'))
+ document.getElementById('folderTreeContainer').width="25%";
+
+ //document.getElementById('scrollableTable').style.height=document.body.offsetHeight - 210;
+ resizeWindow();
+ folderNavAjax.displayTree(selectedFolderId);
+ }
+ }
+ function addBreadCrumb(isReport, id){
+ // if (id != null)
+ // var data=folderNavAjax.getBreadCrumb(isReport, id, addBreadCrumbCallback);
+
+ }
+ function addBreadCrumbCallback(data){
+ var collapsedTree = document.getElementById('breadCrumbArea');
+ if (collapsedTree == null)
+ return;
+ collapsedTree.innerHTML = "<font class=rtabletext style='background-color:white'>" + data + "</font>";
+ }
+ function collapseAllTree(){
+ treeObj.collapseAll();
+ }
+</script>
+
+<form name='treeFrm' method='post'>
+
+ <input type='hidden' id='newName' name='newName'/>
+ <input type='hidden' id='saveString' name='saveString'/>
+ <input type='hidden' id='deleteIds' name='deleteIds'/>
+ <input type='hidden' id='renameId' name='renameId'/>
+
+
+ <tr id="def" height="0">
+ <td colspan="10"></td>
+ </tr>
+
+ <tr width="100%" ><td valign='top' width='300'>
+ <% if(isFolderAllowed) { %>
+ <div id="expandedTree" style="position:absoulte;top:0;width:100%;height:25px;display:none;">
+ <table width="100%" border="0" cellspacing="1" align="left">
+ <tr>
+ <td colspan=2 align="right"><img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/grnarrowleft.gif" onClick="javascript:hideTree()" alt='Hide Folder Tree' style='cursor:hand'>
+ &nbsp;&nbsp;&nbsp;
+ </td>
+
+ </tr>
+ <tr>
+ <td colspan=3>
+ <div id="scrollableTable" class="scrollableTable" style="position:absoulte;top:0;width:100%;height:430px;display:block;overflow:scroll">
+ <table id="folderTree" width="100%" border="0" cellspacing="1" align="center">
+ <tr>
+ <td nowrap>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id='loadingMessageDiv' style="position:absolute;top:150;left:650;width:40px;height:25px;display:none">
+ <table><tr bgcolor='red'><td class=rcolheader> Loading...</td></tr></table>
+ </div>
+
+ </td>
+ </tr>
+ <tr>
+ <td class=rtabletext width='100%'>
+ <a href="#" onclick='javascript:createFolder();'>New Folder</a> |
+ <a href="#" onclick='javascript:deleteFolder();'>Delete Folder</a> |
+ <a href="#" onclick='javascript:runReport();'>Run</a> |
+ <a href="#" onclick="treeObj.collapseAll()">Collapse</a> |
+ <a href="#" onclick="treeObj.expandAll()">Expand</a> |
+ <a href="#" onclick="javascript:refreshTree()">Refresh Tree</a>
+ </td>
+ <td ></td>
+ </tr>
+
+ </table>
+ </div>
+ <% } %>
+
+
+ </td></tr>
+ <% if(isFolderAllowed) { %>
+ <div id="collapsedTree" style="position:absolute;top=122;display:block;width:550">
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/grnarrowright.gif" onClick="javascript:displayTree()" alt='Show Folder Tree' style='cursor:hand'>
+ </div>
+ <% } %>
+
+
+
+</form>
+
+
+<script type="text/javascript">
+
+ <% if(isFolderAllowed) { %>
+ document.body.scroll="no";
+ <% } %>
+
+ //window.onscroll = floatMenu;
+ window.onresize = resizeWindow;
+
+ function floatMenu()
+ {
+ var elem = document.getElementById("def");
+ var sy = document.body.scrollTop;
+ //elem.style.left = startX;
+ if (sy == null || sy == 0)
+ sy = 1;
+ elem.height = sy ;
+ }
+
+
+ function fillFolderStructure(data){
+ document.getElementById("folderTree").childNodes[0].childNodes[0].childNodes[0].innerHTML=data;
+ initializeTree();
+ hideFolderInfo();
+
+ }
+
+ function initializeTree(){
+ treeObj = new JSDragDropTree();
+ treeObj.setTreeId('reportFolderTree');
+ treeObj.setMaximumDepth(7);
+ treeObj.setMessageMaximumDepthReached('Maximum depth reached'); // If you want to show a message when maximum depth is reached, i.e. on drop.
+ treeObj.initTree(selectedFolderId);
+ treeObj.expandAll();
+ treeObj.collapseAll();
+ if (selectedFolderId && selectedFolderId != '0')
+ treeObj.showSelectedNode(selectedFolderId);
+
+ }
+
+ if (doCollapse == 'N')
+ refreshTree();
+</script>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp
new file mode 100644
index 00000000..1521790d
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp
@@ -0,0 +1,229 @@
+<%@page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <jsp:include page="header.jsp" flush="true" />
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Folder tree with Drag and Drop capabilities</title>
+ <script>
+ var imgFolder = '<%=AppUtils.getImgFolderURL()%>';
+ </script>
+ <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/ajax.js"></script>
+ <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/context-menu.js"></script>
+ <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/drag-drop-folder-tree.js">
+
+ /************************************************************************************************************
+ (C) www.dhtmlgoodies.com, July 2006
+
+ Update log:
+
+
+ This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.
+
+ Terms of use:
+ You are free to use this script as long as the copyright message is kept intact.
+
+ For more detailed license information, see http://www.dhtmlgoodies.com/index.html?page=termsOfUse
+
+ Thank you!
+
+ www.dhtmlgoodies.com
+ Alf Magne Kalleland
+
+ ************************************************************************************************************/
+ </script>
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/drag-drop-folder-tree.css">
+ <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/context-menu.css">
+
+ <style type="text/css">
+ /* CSS for the demo */
+ img{
+ border:0px;
+ }
+ </style>
+ <script type="text/javascript">
+ //--------------------------------
+ // Save functions
+ //--------------------------------
+ var ajaxObjects = new Array();
+
+ // Use something like this if you want to save data by Ajax.
+ function saveMyTree()
+ {
+ saveString = treeObj.getNodeOrders();
+ alert(saveString);
+ var ajaxIndex = ajaxObjects.length;
+ ajaxObjects[ajaxIndex] = new sack();
+ var url = 'tree';
+ //var url = 'tree';
+ ajaxObjects[ajaxIndex].requestFile = url; // Specifying which file to get
+ ajaxObjects[ajaxIndex].onCompletion = function() { saveComplete(ajaxIndex); } ; // Specify function that will be executed after file has been found
+ ajaxObjects[ajaxIndex].runAJAX(url); // Execute AJAX function
+
+ }
+ function saveComplete(index)
+ {
+ alert(ajaxObjects[index].response);
+ }
+
+
+ // Call this function if you want to save it by a form.
+ function saveMyTree_byForm()
+ {
+ document.myForm.elements['saveString'].value = treeObj.getNodeOrders();
+ document.myForm.elements['task'].value = 'save';
+ document.myForm.submit();
+ }
+
+ function cancelMyTree_byForm(){
+ document.myForm.elements['task'].value = '';
+ document.myForm.submit();
+ }
+
+ function deleteMyTree_byForm()
+ {
+ document.myForm.elements['task'].value = 'delete';
+ document.myForm.submit();
+ }
+
+ function addMyTree_byForm()
+ {
+ document.myForm.elements['task'].value = 'new';
+ document.myForm.submit();
+ }
+
+ function runReport()
+ {
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ alert("123" + id);
+ //document.myForm.action='<%=AppUtils.getReportExecuteActionURL()%>'+JSTreeObj.selectedItem;
+ document.myForm.action='dispatcher?action=raptor&r_action=report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+
+ document.myForm.submit();
+ }
+
+ function editReport()
+ {
+ var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
+ alert("123" + id);
+ document.myForm.action='dispatcher?action=raptor&r_action=report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
+ document.myForm.submit();
+ }
+
+ function expandTree(){
+ document.getElementById('expandedTree').style.display='block';
+ document.getElementById('expandedTreeHeader').style.display='block';
+ document.getElementById('collapsedTree').style.display='none';
+ }
+ function collapseTree(){
+ document.getElementById('expandedTree').style.display='none';
+ document.getElementById('expandedTreeHeader').style.display='none';
+ document.getElementById('collapsedTree').style.display='block';
+ }
+ </script>
+
+</head>
+<body>
+ <form name="reportForm" method="post">
+ <table width="94%" border="0" cellspacing="1" align="center">
+ <tr><td>
+ <div id="collapsedTree" style="position:absoulte;top:0;width:100%;height:25px;display:none;">
+ <table width="94%" border="0" cellspacing="1" align="left">
+ <tr>
+ <td class=rtabletext align=left>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/dhtmlgoodies_plus.gif" onClick="javascript:expandTree()" alt='Show Folder Tree'>
+ Root Node
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td></tr>
+
+
+ <tr><td>
+ <div id="expandedTreeHeader" style="position:absoulte;top:0;width:100%;height:25px;display:block;">
+ <table width="94%" border="0" cellspacing="1" align="left">
+ <tr>
+ <td class=rtabletext >
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/dhtmlgoodies_minus.gif" onClick="javascript:collapseTree()" alt='Hide Folder Tree'>
+ &nbsp;&nbsp;&nbsp;
+ <!--<input type='button' class=rsmallbutton id='createFolder' value='Create Folder' onclick='javascript:JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem);'/>
+ <input type='button' class=rsmallbutton id='createFolder' value='Run' onclick='javascript:JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem);'/>
+ <input type='button' class=rsmallbutton id='createFolder' value='Edit' onclick='javascript:JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem);'/>-->
+ <a href="#" onclick='javascript:JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem);'>Create Folder</a> |
+ <a href="#" onclick='javascript:JSTreeObj.deleteItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem);'>Delete Fodler</a> |
+ <a href="#" onclick='javascript:runReport();'>Run Report</a> |
+ <a href="#" onclick='javascript:editReport();'>Edit Report</a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td></tr>
+ <tr>
+ <td>
+ <div id="expandedTree" style="position:absoulte;top:0;width:100%;height:160px;display:block">
+ <table>
+ <tr>
+
+ <td width="50%">
+ <div id="scrollableTable" class="scrollableTable" style="position:absoulte;top:0;width:100%;height:150px;display:block">
+ <table width="94%" border="0" cellspacing="1" align="center">
+ <tr>
+ <td >
+ <%=request.getAttribute("folderList")%>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ <td width="50%" valign="bottom">
+ <table>
+ <tr><td width="100%" class=rtabletext >
+ <a href="#" onclick="treeObj.collapseAll()">Collapse all</a> |
+ <a href="#" onclick="treeObj.expandAll()">Expand all</a>
+ </td></tr>
+ <tr><td width="100%">
+ <input type="button" class=rsmallbutton onclick="saveMyTree_byForm()" value="Save">
+ <input type="button" class=rsmallbutton onclick="cancelMyTree_byForm()" value="Cancel">
+ </td></tr>
+ </table>
+
+ </td>
+ </tr>
+
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr><td colspan=2>
+ <div class="scrollableTable" style="width:100%;height:400px;">
+ <iframe id="reportFrame" name="reportFrame" width="100%" height="100%">
+
+ </iframe>
+ </div>
+ </td></tr>
+ </table>
+ </Form>
+ <script type="text/javascript">
+ treeObj = new JSDragDropTree();
+ treeObj.setTreeId('reportFolderTree');
+ treeObj.setMaximumDepth(7);
+ treeObj.setMessageMaximumDepthReached('Maximum depth reached'); // If you want to show a message when maximum depth is reached, i.e. on drop.
+ treeObj.initTree();
+ treeObj.expandAll();
+
+ </script>
+
+ <!-- Form - if you want to save it by form submission and not Ajax -->
+ <form name="myForm" action="tree" method="post">
+ <input type="hidden" name="saveString">
+ <input type="hidden" name="task">
+ <input type="hidden" name="newName">
+ <input type="hidden" name="deleteIds">
+ </form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp
new file mode 100644
index 00000000..76fe7a58
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp
@@ -0,0 +1,733 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%--
+ Name: wizard_adhoc_schedule.jsp
+ Use : This JSP is used for accepting user parameters for scheduling the report.
+
+ Change Log
+ ==========
+
+ 28-Aug-2009 : Version 8.4 (Sundar); initFormFields function is removed as it is handled in back end.
+ 23-Jun-2009 : Version 8.4 (Sundar);
+
+ <UL>
+ <LI> Bug related to creating startDate variable (in Javascript) for the Validation purpose is fixed.</LI>
+ </UL>
+
+
+--%>
+
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportSchedule" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+
+<%
+ ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
+ ReportDefinition rdefRecurrance = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
+ if(reportSchedule==null) reportSchedule = (ReportSchedule) request.getAttribute(AppConstants.SI_REPORT_SCHEDULE);
+ String remoteDbPrefix = (String) session.getAttribute("remoteDB");
+ boolean isSQLAllowed = Globals.getAllowSQLBasedReports();
+%>
+<%@page import="java.util.Calendar"%>
+<%@page import="java.text.DateFormat"%>
+<%@page import="java.text.SimpleDateFormat"%>
+<%@page import="java.util.TimeZone"%>
+<%@page import="java.util.Date"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.ReportLoader"%>
+<script language="JavaScript">
+<!--
+function showTestConditionPopup() {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.test.cond&remoteDbPrefix=<%=remoteDbPrefix%>&<%= AppConstants.RI_FORMATTED_SQL %>="+escape(""+document.forma.conditionSQL.value), "testCondSQLPopup", "width=450,height=180,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestConditionPopup
+
+function exclusiveCheckBox(which) {
+ var size = 2;
+ for (i=0; i<size; i++) {
+ if(document.getElementById("notify" + i) != which) {
+ document.getElementById("notify" + i).checked = false;
+ }
+ }
+ //alert("exclusive " + which.form.notify_type.value);
+}
+//-->
+</script>
+<script language="javascript" src="<%= AppUtils.getBaseFolderURL() %>js/other_scripts.js"></script>
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/CalendarPopup.js"></script>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/rounded-corners.js"></script>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/form-field-tooltip.js"></script>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/calendar.css">
+
+ <script type="text/javascript">
+var stat;
+var delay=0;//delay in milliseconds
+function show(){
+
+
+var oIfr = document.getElementById('calendarFrame');
+var oCal = document.getElementById('calendarDiv');
+oIfr.style.display=(oCal.style.display=='block')?'none':'block';
+oIfr.style.top=findPosY()
+oIfr.style.left=findPosX()-5
+
+}
+function hide(){
+
+// added to show Iframe behind calender
+var oIfr = document.getElementById('calendarFrame');
+var oCal = document.getElementById('calendarDiv');
+oIfr.style.display=(oCal.style.display=='none')?'block':'none';
+}
+
+ function findPosX()
+ {
+ var obj= oCalendar
+ var curleft = 0;
+ if(obj.offsetParent)
+ while(1)
+ {
+ curleft += obj.offsetLeft;
+ if(!obj.offsetParent)
+ break;
+ obj = obj.offsetParent;
+ }
+ else if(obj.x)
+ curleft += obj.x;
+ return curleft;
+
+ }
+
+ function findPosY()
+ {
+
+ var obj= oCalendar
+ var curtop = 0;
+ if(obj.offsetParent)
+ while(1)
+ {
+ curtop += obj.offsetTop;
+ if(!obj.offsetParent)
+ break;
+ obj = obj.offsetParent;
+ }
+ else if(obj.y)
+ curtop += obj.y;
+ //alert(curtop)
+ return curtop;
+ }
+
+ //frameborder="0"
+ </SCRIPT>
+
+<iframe id="calendarFrame" class="nav" z-index:199; scrolling="no" frameborder="0" width=165px height=165px src="" style="position:absolute; display:none;">
+</iframe>
+
+ <div id="calendarDiv" name="calendarDiv" style="position:absolute; z-index:200; visibility:none; background-color:white;layer-background-color:white;"></div>
+ <%
+ Calendar startCalendarDate = Calendar.getInstance();
+ startCalendarDate.add(Calendar.DAY_OF_MONTH, - 540);
+ Calendar endCalendarDate = Calendar.getInstance();
+ endCalendarDate.add(Calendar.DAY_OF_MONTH, 540);
+ SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
+ SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss");
+ Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime());
+ SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
+ Calendar systemCalendar = Calendar.getInstance();
+ systemCalendar.setTime(sysdate);
+ Date sysNext15date = oracleDateFormat.parse(ReportLoader.getNext15MinutesOfSystemDateTime());
+ //dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
+ Calendar systemNext15Calendar = Calendar.getInstance();
+ systemNext15Calendar.setTime(sysNext15date);
+ Date sysNext30date = oracleDateFormat.parse(ReportLoader.getNext30MinutesOfSystemDateTime());
+ //dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
+ Calendar systemNext30Calendar = Calendar.getInstance();
+ systemNext30Calendar.setTime(sysNext30date);
+
+ System.out.println(" systemNext15Calendar " + systemNext15Calendar);
+ System.out.println(" systemNext30Calendar " + systemNext30Calendar);
+
+ //dtimestamp.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
+
+%>
+
+
+
+
+ <SCRIPT LANGUAGE="JavaScript">
+ var oCalendar = new CalendarPopup("calendarDiv", "calendarFrame");
+
+ oCalendar.addDisabledDates(null, "<%=dtf.format(startCalendarDate.getTime())%>");
+ oCalendar.addDisabledDates("<%=dtf.format(endCalendarDate.getTime())%>", null);
+
+
+ oCalendar.setCssPrefix("raptor");
+
+ function fillStartEndDate(varSelect) {
+ var flag = 0;
+ <% if(!(nvl(reportSchedule.getStartDate()).length() > 0)) { %>
+ a:
+ for (var i = 0; i < varSelect.options.length; i++) {
+ if (varSelect.options[ i ].selected) {
+ if(!(varSelect.options[i].value.length > 0)) {
+ var d = new Date();
+ //alert(d.getMonth() + " " + d.getDate() + " " + d.getYear());
+ //alert(d.getMonth()+1+"/"+d.getDate()+"/"+d.getYear());
+ document.forma.schedStartDate.value = addZero(d.getMonth()+1)+"/"+addZero(d.getDate())+"/"+addZero(d.getYear());
+ document.forma.schedEndDate.value = addZero(d.getMonth()+1)+"/"+addZero(d.getDate())+"/"+addZero(d.getYear());
+ //alert(document.forma.schedStartDate.value);
+ flag = 1;
+ break a;
+ }
+ }
+ }
+ if(flag == 0) {
+ //alert("Here");
+ document.forma.schedStartDate.value = "";
+ document.forma.schedEndDate.value = "";
+ }
+ <% } %>
+ }
+
+ function initStartEndDate() {
+ var flag = 0;
+ var varSelect = document.forma.schedRecurrence;
+ var d = new Date();
+ var d_end = null;
+ d.setFullYear(<%=systemCalendar.get(Calendar.YEAR)%>, <%=systemCalendar.get(Calendar.MONTH)%>,<%=systemCalendar.get(Calendar.DAY_OF_MONTH)%>);
+ d.setHours(<%=systemCalendar.get(Calendar.HOUR_OF_DAY)%>);
+ d.setMinutes(<%=systemCalendar.get(Calendar.MINUTE)%>);
+ d.setSeconds(<%=systemCalendar.get(Calendar.SECOND)%>);
+ d_end = new Date();
+ d_end.setFullYear(<%=systemNext15Calendar.get(Calendar.YEAR)%>, <%=systemNext15Calendar.get(Calendar.MONTH)%>,<%=systemNext15Calendar.get(Calendar.DAY_OF_MONTH)%>);
+ d_end.setHours(<%=23%>);
+ d_end.setMinutes(<%=45%>);
+ d_end.setSeconds(<%=systemNext15Calendar.get(Calendar.SECOND)%>);
+
+ if(d.getHours() == 23 && d.getMinutes()>=30) {
+ d_end.setFullYear(<%=systemNext30Calendar.get(Calendar.YEAR)%>, <%=systemNext30Calendar.get(Calendar.MONTH)%>,<%=systemNext30Calendar.get(Calendar.DAY_OF_MONTH)%>);
+ d_end.setHours(<%=23%>);
+ d_end.setMinutes(<%=45%>);
+ d_end.setSeconds(<%=systemNext30Calendar.get(Calendar.SECOND)%>);
+ document.forma.schedEndDate.value = addZero(d_end.getMonth()+1)+"/"+addZero(d_end.getDate())+"/"+addZero(d_end.getYear());
+ var obj = document.forma.schedEndHour;
+ var hr = d_end.getHours();
+ //alert("end hr " + hr);
+ //if(d_end.getMinutes()>=45)
+ // hr = hr + 1;
+ if(hr > 12) hr = hr - 12;
+ if(hr == 0) hr = 12;
+ for (var i=0; i<obj.options.length; i++) {
+ if (eval(obj.options[i].value) == hr) {
+ obj.options[i].selected = true;
+ break;
+ }
+ }
+ var obj1 = document.forma.schedEndMin;
+ for (var i=0; i<obj1.options.length; i++) {
+ if (d_end.getMinutes() <= eval(obj1.options[i].value)) {
+ obj1.options[i].selected = true;
+ break;
+ }
+ }
+ var obj2 = document.forma.schedEndAMPM;
+
+ for (var i=0; i<obj2.options.length; i++) {
+ if (d_end.getHours() < 12 && obj2.options[i].value == 'AM') {
+ obj2.options[i].selected = true;
+ } else if (d_end.getHours() >= 12 && obj2.options[i].value == 'PM')
+ obj2.options[i].selected = true;
+ }
+
+ }
+
+
+ <% if(!(nvl(reportSchedule.getStartDate()).length() > 0)) { %>
+
+ //alert(d.getMonth() + " " + d.getDate() + " " + d.getYear());
+ //alert(d.getMonth()+1+"/"+d.getDate()+"/"+d.getYear());
+ //alert(d.getHours());
+ <%-- System.out.println(reportSchedule.getStartDate());
+ if(!(nvl(reportSchedule.getStartDate()).length() > 0)) { --%>
+ if(d.getHours() == 23 && d.getMinutes() > 45) {
+ //d.setDate(d.getDate() + 1);
+ document.forma.schedStartDate.value = addZero(d.getMonth()+1)+"/"+addZero(d.getDate()+1)+"/"+addZero(d.getYear());
+ }
+ else
+ document.forma.schedStartDate.value = addZero(d.getMonth()+1)+"/"+addZero(d.getDate())+"/"+addZero(d.getYear());
+ //document.forma.schedEndDate.value = addZero(d.getMonth()+1)+"/"+addZero(d.getDate())+"/"+addZero(d.getYear());
+ document.forma.schedEndDate.value = addZero(d_end.getMonth()+1)+"/"+addZero(d_end.getDate())+"/"+addZero(d_end.getYear());
+
+ var obj = document.forma.schedHour;
+ var hr = d.getHours();
+ if(d.getMinutes()>=45)
+ hr = hr + 1;
+ if(hr > 12) hr = hr - 12;
+ if(hr == 0) hr = 12;
+ for (var i=0; i<obj.options.length; i++) {
+ if (eval(obj.options[i].value) == hr) {
+ obj.options[i].selected = true;
+ break;
+ }
+ }
+ var obj1 = document.forma.schedMin;
+ for (var i=0; i<obj1.options.length; i++) {
+ if (d.getMinutes() <= eval(obj1.options[i].value)) {
+ obj1.options[i].selected = true;
+ break;
+ }
+ }
+ var obj2 = document.forma.schedAMPM;
+
+ for (var i=0; i<obj2.options.length; i++) {
+ //alert(d.getHours() + " " + d.getMinutes());
+ if(d.getHours() == 23 && d.getMinutes() >= 45) {
+ if(obj2.options[i].value == 'AM') {
+ //alert("hello");
+ obj2.options[i].selected = true;
+ }
+ } else {
+ //alert("hello2");
+ if ((d.getHours() < 12) && obj2.options[i].value == 'AM') {
+ obj2.options[i].selected = true;
+ } else if ((d.getHours() >= 12) && obj2.options[i].value == 'PM') {
+ obj2.options[i].selected = true;
+ }
+ }
+ }
+
+
+
+ <% } %>
+ }
+
+ function addZero(num) {
+ var numInt = 0;
+ numInt = num;
+ if(numInt < 10) {
+ return "0"+numInt;
+ }
+ else return ""+numInt;
+ }
+ </SCRIPT>
+<table width="100%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr class="rbg1">
+ <td class=rbg1 colspan="2" align="left">
+ <%if(nvl(Globals.getScheduleHelpMessage()).trim().length()>0) { %>
+ <a href="javascript:uitmpl_qh('sch_help_text'); if(typeof window.parent.resizeWindow == 'function') window.parent.resizeWindow();" class="qh-link" style="position:fixed;"></a>
+ <% } %>
+ <b class=rtableheader>Please enter Time in <%= Globals.getTimeZone()%>. The Current System Time is <%=dtimestamp.format(sysdate)%>&nbsp;<%=Globals.getTimeZone()%></b>
+ </td>
+
+ </tr>
+
+ <%if(nvl(Globals.getScheduleHelpMessage()).length()>0) { %>
+ <tr>
+ <td colspan="2" class="nopad"><!-- quick help text -->
+ <div id="sch_help_text" class="mQH">
+ <p><span class="label">Report Desc:</span>
+ <%= Globals.getScheduleHelpMessage() %></p>
+ </div>
+ <!-- /quick help text --></td>
+ </tr>
+ <% } %>
+
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Schedule Emails: </font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap><font class=rtabletext>
+ <input type='radio' name='schedEnabled' id='schedEnabled' value='Y' <%= reportSchedule.getSchedEnabled().equals("Y")?" checked":"" %> toolTipText="This is used for the enabling or disabling the scheduling feature for this report."/>Yes
+ &nbsp;
+ <input type='radio' name='schedEnabled' id='schedEnabled' value='N' <%= reportSchedule.getSchedEnabled().equals("N")?" checked":"" %> toolTipText="This is used for the enabling or disabling the scheduling feature for this report."/>No
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Email Attachment:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap>
+ <font class=rtabletext>
+ <%if(!rdefRecurrance.getReportType().equals(AppConstants.RT_HIVE)) {%>
+ <input type='radio' name='notify' id='notify' value='2' <%= reportSchedule.getNotify_type().equals("2")?" checked":(reportSchedule.getNotify_type().length()<=0)?" checked":(!reportSchedule.getNotify_type().equals("4"))? " checked " :"" %> toolTipText="Provides the capability to attach reports as PDF format to the email."/>PDF Attachment
+ &nbsp;&nbsp;
+ <input type='radio' name='notify' id='notify' value='4' <%= reportSchedule.getNotify_type().equals("4")?" checked":"" %> toolTipText="Provides the capability to attach reports as Excel format to the email."/>Excel Attachment
+ &nbsp;&nbsp;
+ <% } %>
+ <input type='radio' name='notify' id='notify' value='5' <%= reportSchedule.getNotify_type().equals("5")?" checked":"" %> toolTipText="Provides the capability to attach reports as Excel format to the email."/>Excelx Attachment
+ &nbsp;&nbsp;
+ <input type='radio' name='notify' id='notify' value='3' <%= reportSchedule.getNotify_type().equals("3")?" checked":"" %> toolTipText="Provides the capability to attach reports as CSV format to the email."/>CSV Attachment
+ <%if(!rdefRecurrance.getReportType().equals(AppConstants.RT_HIVE)) {%>
+ <% if(nvl(Globals.getShellScriptDir()).length()>1) { %>
+ <input type='radio' name='notify' id='notify' value='6' <%= reportSchedule.getNotify_type().equals("6")?" checked":"" %> toolTipText="Provides the capability to send only links to the generated report in the email."/>Link to Generated report
+ <% } %>
+ <% } %>
+ <input type='hidden' name='notify_type' value='1'/>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Recurrence: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="schedRecurrence" toolTipText="This is used to select recurrence frequency.">
+ <%if (rdefRecurrance.getIsOneTimeScheduleAllowed() == null || rdefRecurrance.getIsOneTimeScheduleAllowed().equals("Y")){ %><option value="" <%= reportSchedule.getRecurrence().equals("" )?" selected":"" %>>One Time<%} %>
+ <%if (rdefRecurrance.getIsHourlyScheduleAllowed() == null || rdefRecurrance.getIsHourlyScheduleAllowed().equals("Y")){ %><option value="<%= AppConstants.SR_HOURLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_HOURLY )?" selected":"" %>>Hourly<%} %>
+ <%if (rdefRecurrance.getIsDailyScheduleAllowed() == null || rdefRecurrance.getIsDailyScheduleAllowed().equals("Y")){ %><option value="<%= AppConstants.SR_DAILY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_DAILY )?" selected":"" %>>Daily<%} %>
+ <%if (rdefRecurrance.getIsDailyMFScheduleAllowed() == null || rdefRecurrance.getIsDailyMFScheduleAllowed().equals("Y")){ %><option value="<%= AppConstants.SR_DAILY_MO_FR %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_DAILY_MO_FR)?" selected":"" %>>Daily Mo-Fr<%} %>
+ <%if (rdefRecurrance.getIsWeeklyScheduleAllowed() == null || rdefRecurrance.getIsWeeklyScheduleAllowed().equals("Y")){ %><option value="<%= AppConstants.SR_WEEKLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_WEEKLY )?" selected":"" %>>Weekly<%} %>
+ <%if (rdefRecurrance.getIsMonthlyScheduleAllowed() == null || rdefRecurrance.getIsMonthlyScheduleAllowed().equals("Y")){ %><option value="<%= AppConstants.SR_MONTHLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_MONTHLY )?" selected":"" %>>Monthly<%} %>
+ </select></font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>First Schedule Date: </font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <input type="text" size="10" maxlength="10" name="schedStartDate" value="<%= reportSchedule.getStartDate() %>" toolTipText="Enter the date and time scheduling is to start.">
+ <!--<a href="#" onClick="window.dateField = document.forma.schedStartDate;calendar = window.open('<%= AppUtils.getRaptorActionURL() %>popup.calendar','cal','WIDTH=200,HEIGHT=250');return false;">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20">
+ </a>-->
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar = new CalendarPopup('calendarDiv', 'calendarFrame');oCalendar.addDisabledDates(null, '<%=dtf.format(startCalendarDate.getTime())%>');oCalendar.addDisabledDates('<%=dtf.format(endCalendarDate.getTime())%>', null);oCalendar.setCssPrefix('raptor');oCalendar.select(document.getElementById('schedStartDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <select name="schedHour">
+ <option value="01"<%= reportSchedule.getRunHour().equals("01")?" selected":"" %>>1
+ <option value="02"<%= reportSchedule.getRunHour().equals("02")?" selected":"" %>>2
+ <option value="03"<%= reportSchedule.getRunHour().equals("03")?" selected":"" %>>3
+ <option value="04"<%= reportSchedule.getRunHour().equals("04")?" selected":"" %>>4
+ <option value="05"<%= reportSchedule.getRunHour().equals("05")?" selected":"" %>>5
+ <option value="06"<%= reportSchedule.getRunHour().equals("06")?" selected":"" %>>6
+ <option value="07"<%= reportSchedule.getRunHour().equals("07")?" selected":"" %>>7
+ <option value="08"<%= reportSchedule.getRunHour().equals("08")?" selected":"" %>>8
+ <option value="09"<%= reportSchedule.getRunHour().equals("09")?" selected":"" %>>9
+ <option value="10"<%= reportSchedule.getRunHour().equals("10")?" selected":"" %>>10
+ <option value="11"<%= reportSchedule.getRunHour().equals("11")?" selected":"" %>>11
+ <option value="12"<%= reportSchedule.getRunHour().equals("12")?" selected":"" %>>12
+ </select>
+ <select name="schedMin">
+ <option value="00"<%= reportSchedule.getRunMin().equals("00")?" selected":"" %>>00
+ <option value="15"<%= reportSchedule.getRunMin().equals("15")?" selected":"" %>>15
+ <option value="30"<%= reportSchedule.getRunMin().equals("30")?" selected":"" %>>30
+ <option value="45"<%= reportSchedule.getRunMin().equals("45")?" selected":"" %>>45
+ </select>
+ <select name="schedAMPM">
+ <option value="AM"<%= reportSchedule.getRunAMPM().equals("AM")?" selected":"" %>>AM
+ <option value="PM"<%= reportSchedule.getRunAMPM().equals("PM")?" selected":"" %>>PM
+ </select>
+ <%= Globals.getTimeZone()%>
+
+ </font>
+ </td>
+ </tr>
+<!-- /quick help text -->
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Last Schedule Date: </font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <input type="text" size="10" maxlength="10" name="schedEndDate" value="<%= reportSchedule.getEndDate() %>" toolTipText="Enter the date scheduling is to end. This is mandatory for recurring reports.">
+ <!--<a href="#" onClick="window.dateField = document.forma.schedEndDate;calendar = window.open('<%= AppUtils.getRaptorActionURL() %>popup.calendar','cal','WIDTH=200,HEIGHT=250');return false;">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20">
+ </a>-->
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar = new CalendarPopup('calendarDiv', 'calendarFrame');oCalendar.addDisabledDates(null, '<%=dtf.format(startCalendarDate.getTime())%>');oCalendar.addDisabledDates('<%=dtf.format(endCalendarDate.getTime())%>', null);oCalendar.setCssPrefix('raptor');oCalendar.select(document.getElementById('schedEndDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <select name="schedEndHour">
+ <option value="01"<%= reportSchedule.getEndHour().equals("01")?" selected":"" %>>1
+ <option value="02"<%= reportSchedule.getEndHour().equals("02")?" selected":"" %>>2
+ <option value="03"<%= reportSchedule.getEndHour().equals("03")?" selected":"" %>>3
+ <option value="04"<%= reportSchedule.getEndHour().equals("04")?" selected":"" %>>4
+ <option value="05"<%= reportSchedule.getEndHour().equals("05")?" selected":"" %>>5
+ <option value="06"<%= reportSchedule.getEndHour().equals("06")?" selected":"" %>>6
+ <option value="07"<%= reportSchedule.getEndHour().equals("07")?" selected":"" %>>7
+ <option value="08"<%= reportSchedule.getEndHour().equals("08")?" selected":"" %>>8
+ <option value="09"<%= reportSchedule.getEndHour().equals("09")?" selected":"" %>>9
+ <option value="10"<%= reportSchedule.getEndHour().equals("10")?" selected":"" %>>10
+ <option value="11"<%= reportSchedule.getEndHour().equals("11")?" selected":"" %>>11
+ <option value="12"<%= reportSchedule.getEndHour().equals("12")?" selected":"" %>>12
+ </select>
+ <select name="schedEndMin">
+ <option value="00"<%= reportSchedule.getEndMin().equals("00")?" selected":"" %>>00
+ <option value="15"<%= reportSchedule.getEndMin().equals("15")?" selected":"" %>>15
+ <option value="30"<%= reportSchedule.getEndMin().equals("30")?" selected":"" %>>30
+ <option value="45"<%= reportSchedule.getEndMin().equals("45")?" selected":"" %>>45
+ </select>
+ <select name="schedEndAMPM">
+ <option value="AM"<%= reportSchedule.getEndAMPM().equals("AM")?" selected":"" %>>AM
+ <option value="PM"<%= reportSchedule.getEndAMPM().equals("PM")?" selected":"" %>>PM
+ </select>
+ <%= Globals.getTimeZone()%>
+
+ </font>
+ </td>
+ </tr>
+
+ <script type="text/javascript">initStartEndDate();</script>
+
+ <% if(AppUtils.isAdminUser(request) || isSQLAllowed ) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Use Condition:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap><font class=rtabletext>
+ <input type="checkbox" name="conditional" value="Y"<%= reportSchedule.getConditional().equals("Y")?" checked":"" %>> Send Emails Only When Condition Is Met
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Condition SQL:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap>
+ <textarea name="conditionSQL" cols="40" rows="3"><%= nvl(reportSchedule.getConditionSQL()) %></textarea>
+ <input type="Button" class=button value="Test" onClick="showTestConditionPopup()">
+ &nbsp;
+ </font></td>
+ </tr>
+ <% } %>
+
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Max rows in attachment:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap>
+ <input type='text' name='downloadLimit' value="<%=Integer.parseInt(reportSchedule.getDownloadLimit())>0?reportSchedule.getDownloadLimit(): Integer.toString(rdefRecurrance.getMaxRowsInExcelDownload())%>" size='4' toolTipText="Specify the maximum number of rows that can be sent in an attachment."/>
+ </font>
+ </td>
+ </tr>
+ <tr class="rbg1">
+ <td class=rbg1 colspan="2" align="left">
+ <b class=rtableheader>Form Fields</b>
+ </td>
+
+ </tr>
+ <jsp:include page="wizard_schedule_formfield_include.jsp" flush="true" />
+ <tr>
+ <td colspan=4><hr></hr></td>
+ </tr>
+ <input type="hidden" name="toListUpdated" value="false" />
+
+<% List emailToUsers = reportSchedule.getEmailToUsers();
+ for(int i=0; i<emailToUsers.size(); i++) {
+ IdNameValue userValue = (IdNameValue) emailToUsers.get(i); %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (i==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <%= userValue.getName() %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.all.toListUpdated.value='true'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= userValue.getId() %>'; }">
+ </font></td>
+ </tr>
+<% } // for
+ List emailToRoles = reportSchedule.getEmailToRoles();
+ for(int i=0; i<emailToRoles.size(); i++) {
+ IdNameValue roleValue = (IdNameValue) emailToRoles.get(i); %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (emailToUsers.size()==0&&i==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>Everyone With Role:&nbsp;
+ <%= roleValue.getName() %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_ROLE %>'; document.all.toListUpdated.value='true'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= roleValue.getId() %>'; }">
+ </font></td>
+ </tr>
+<% } // for
+
+ Vector remainingUsers = Utils.getUsersNotInList(emailToUsers,request);
+ Vector remainingRoles = Utils.getRolesNotInList(emailToRoles,request);
+ if((emailToUsers.size()+emailToRoles.size()==0)||(remainingUsers.size()>0)||(remainingRoles.size()>0)) { %>
+ <tr>
+ <td colspan="2" align="center">
+ <table width="100%" cellspacing="1" cellpadding="3" align="center" border="0"> <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (emailToUsers.size()+emailToRoles.size()==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+<% if(remainingUsers.size()>0) { %>
+ <select name="schedEmailAdd" onChange="if(! dataValidate()) {selectedIndex=0;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_USER %>'; document.all.toListUpdated.value='true'; document.forma.submit();}" toolTipText="Select users and/or roles the report should be sent to">
+ <option value="" selected>--- Select User ---
+<% for(int i=0; i<remainingUsers.size(); i++) {
+ IdNameValue userValue = (IdNameValue) remainingUsers.get(i); %>
+ <option value="<%= userValue.getId() %>"><%= userValue.getName() %>
+<% } // for %>
+ </select>
+<% } else { %>
+ No user emails available
+<% } %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<% if(remainingRoles.size()>0) { %>
+ <select name="schedEmailAddRole" onChange="if(! dataValidate()) {selectedIndex=0;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_ROLE %>'; document.all.toListUpdated.value='true'; document.forma.submit();}" toolTipText="Select users and/or roles the report should be sent to">
+ <option value="" selected>--- Select Role ---
+<% for(int i=0; i<remainingRoles.size(); i++) {
+ IdNameValue roleValue = (IdNameValue) remainingRoles.get(i); %>
+ <option value="<%= roleValue.getId() %>"><%= roleValue.getName() %>
+<% } // for %>
+ </select>
+<% } else { %>
+ No roles available
+<% } %>
+ </font>
+ </td>
+ <% if ( nvl(Globals.getEncryptedSMTPServer(),"").length() > 0 ) { %>
+ <td align="right" width="27%"><font class=rtabletext>Encrypt Attachment</font>
+ <input type='radio' name='encryptMode' id='encryptMode' value='Y' <%= reportSchedule.getEncryptMode().equals("Y")?"":" checked" %> toolTipText="Choose the encryption mode."/>Yes
+ &nbsp;&nbsp;
+ <input type='radio' name='encryptMode' id='encryptMode' value='N' <%= reportSchedule.getEncryptMode().equals("N")?"":(reportSchedule.getEncryptMode().length()<=0)?" checked":(!reportSchedule.getEncryptMode().equals("N"))? " " :" checked " %> toolTipText="Choose the encryption mode."/>No
+ </td>
+ <% } %>
+ <% if (Globals.generateSchedReportsInFileSystem()) { %>
+ <td align="right" width="27%"><font class=rtabletext>Send as Attachment</font>
+ <input type='radio' name='sendAttachment' id='sendAttachment' value='Y' <%= reportSchedule.isAttachmentMode()?" checked ":""%> toolTipText="Send As Attachment"/>Yes
+ &nbsp;&nbsp;
+ <input type='radio' name='sendAttachment' id='sendAttachment' value='N' <%= !reportSchedule.isAttachmentMode()?" checked":"" %> toolTipText="Store it in file system."/>No
+ </td>
+ <% } %>
+ </tr>
+ </table>
+ </td>
+ </tr>
+<% } // if
+%>
+</table>
+
+
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ //alert("dataValidate called");
+ var startDate = new Date(document.forma.schedStartDate.value);
+ var startHour = eval(document.forma.schedHour.value);
+ if(document.forma.schedAMPM.value == 'PM') {
+ if (startHour != 12) startHour = startHour + 12;
+ } else {
+ if (startHour == 12) startHour = startHour - 12;
+ }
+ startDate.setHours(startHour);
+ startDate.setMinutes(eval(document.forma.schedMin.value));
+
+ var endDate = new Date(document.forma.schedEndDate.value);
+ var endHour = eval(document.forma.schedEndHour.value);
+ if(document.forma.schedEndAMPM.value == 'PM') {
+ if (endHour != 12) endHour = endHour + 12;
+ } else {
+ if (endHour == 12) endHour = endHour - 12;
+ }
+ endDate.setHours(endHour);
+ endDate.setMinutes(eval(document.forma.schedEndMin.value));
+
+ //alert ("System Calendar " + "<%=systemCalendar.get(Calendar.YEAR)+ " " + (systemCalendar.get(Calendar.MONTH)+1)+ " " + systemCalendar.get(Calendar.DAY_OF_MONTH) + " " + systemCalendar.get(Calendar.HOUR_OF_DAY) + " " + systemCalendar.get(Calendar.MINUTE) + " " + systemCalendar.get(Calendar.SECOND)%>");
+ var currDate = new Date();
+ var curr1Date = new Date();
+ currDate.setFullYear(<%=systemCalendar.get(Calendar.YEAR)%>, <%=systemCalendar.get(Calendar.MONTH)%>,<%=systemCalendar.get(Calendar.DAY_OF_MONTH)%>);
+ currDate.setHours(<%=systemCalendar.get(Calendar.HOUR_OF_DAY)%>);
+ currDate.setMinutes(<%=systemCalendar.get(Calendar.MINUTE)%>);
+ currDate.setSeconds(<%=systemCalendar.get(Calendar.SECOND)%>);
+
+ //alert(startDate+ " " + currDate + " " + (startDate-currDate) + " " + (startDate.toString()==currDate.toString()));
+
+
+ if(! checkDate(document.forma.schedStartDate.value, false)) {
+ alert("Invalid Start Date. The date format should be MM/DD/YYYY");
+ document.forma.schedStartDate.focus();
+ document.forma.schedStartDate.select();
+ return false;
+ }
+ if(! checkDate(document.forma.schedEndDate.value, false)) {
+ alert("Invalid End Date. The date format should be MM/DD/YYYY");
+ document.forma.schedEndDate.focus();
+ document.forma.schedEndDate.select();
+ return false;
+ }
+ if (startDate >= endDate){
+ alert("Start Date has to be less than the End Date.");
+ return false;
+ }
+
+ if (startDate - currDate < 0){
+ if(startDate.toString()!=currDate.toString()) {
+ var m_names = new Array("January", "February", "March",
+ "April", "May", "June", "July", "August", "September",
+ "October", "November", "December");
+ var curr_min = currDate.getMinutes();
+ curr_min = curr_min + "";
+ if (curr_min.length == 1) {
+ curr_min = "0" + curr_min;
+ }
+ alert("Start Date/Time has to be greater or equal to the System Date/Time ("+m_names[currDate.getMonth()]+" "+ currDate.getDate() + ", " + currDate.getYear() + " " + currDate.getHours()+ ":" + curr_min+ ").");
+ return false;
+ }
+ }
+ /*if(! checkDate(document.forma.schedRunDate.value, true)) {
+ alert("Invalid Execution Date. The date format should be MM/DD/YYYY");
+ document.forma.schedRunDate.focus();
+ document.forma.schedRunDate.select();
+ return false;
+ }*/
+<% if (AppUtils.isAdminUser(request) || isSQLAllowed){ %>
+ if(document.forma.conditional.checked&&document.forma.conditionSQL.value=="") {
+ alert("Please provide Condition SQL");
+ document.forma.conditionSQL.focus();
+ document.forma.conditionSQL.select();
+ return false;
+ }
+<% } %>
+ if(! checkNonNegativeInteger(document.forma.downloadLimit.value)) {
+ alert("Max row in attachment is not a valid integer.\nPlease enter a valid value.");
+ document.forma.downloadLimit.focus();
+ document.forma.downloadLimit.select();
+ return false;
+ }
+ else
+ {
+ if((document.forma.downloadLimit.value) > <%=Globals.getDownloadLimit()%>) {
+ alert("Max row you can download should not be more than <%=Globals.getDownloadLimit()%> rows.\nPlease enter a valid value.");
+ document.forma.downloadLimit.focus();
+ document.forma.downloadLimit.select();
+ return false;
+ }
+
+ }
+ for (var i=0; i < document.forma.notify.length; i++) {
+ if (document.forma.notify[i].checked) {
+ document.forma.notify_type.value = document.forma.notify[i].value;
+ }
+ }
+ return validateForm();
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<script type="text/javascript">
+var tooltipObj = new DHTMLgoodies_formTooltip();
+tooltipObj.setTooltipPosition('right');
+tooltipObj.setPageBgColor('#EEEEEE');
+//tooltipObj.setPageBgColor('#FFFFFF');
+tooltipObj.setTooltipCornerSize(15);
+tooltipObj.setTooltipBgColor("#99CCFF");
+tooltipObj.initFormFieldTooltip();
+</script>
+
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp
new file mode 100644
index 00000000..959adc23
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp
@@ -0,0 +1,1335 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%--
+ Name: wizard_chart.jsp
+ Use : This JSP is invoked when chart tab is selected. This is used for creating chart configuration for the report.
+
+ Change Log
+ ==========
+
+ 12-Aug-2009 : Version 8.5 (Sundar);
+ <UL>
+ <LI> For Line Chart Category can be configured. For this UI is added.</LI>
+ <LI> Line Chart can be displayed as 3D or 2D.</LI>
+ </UL>
+ 29-Jun-2009 : Version 8.4 (Sundar);
+ <UL>
+ <LI> For Bar Chart Last Series/Category can be configured as Line Chart or Bar Chart. For this UI is added.</LI>
+ <LI> UI options for compare to prev year chart has been added. </LI>
+ </UL>
+
+ 23-Jun-2009 : Version 8.4 (Sundar);
+ <UL>
+ <LI> Hiding/ Unhiding parameters based on chart type is checked throughly and missing elements were added.</LI>
+ <LI> Table width is made 100% for special input parameters </LI>
+ </UL>
+
+ 22-Jun-2009 : Version 8.4 (Sundar);
+
+ <UL>
+ <LI> Calendar JS and CSS were added to this page as it is used in customizable input parameters for Time Difference Chart. </LI>
+ <LI> JS method and configurable input parameters were added for Multiple Pie Chart, Bar Chart 3D, Pareto, Time Difference Chart and Multiple
+ Time Series Chart. </LI>
+ </UL>
+--%>
+<%@page import="org.openecomp.portalsdk.analytics.model.runtime.FormField"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.runtime.ReportFormFields"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.DataCache"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.ReportHandler"%>
+<%@page import="java.util.Vector"%>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.Reports"%>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED) || rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED_DATAMIN);
+
+ String legendColId = null;
+ String valueColId = null;
+
+ //String firstColId = null;
+ //String firstNumColId = null;
+
+ List reportCols = rdef.getAllColumns();
+ List chartValueCols = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null);
+
+ ArrayList unusedNumCols = new ArrayList(reportCols.size());
+ int numColsCount = 0;
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+
+ if(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))
+ legendColId = dct.getColId();
+
+ if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) {
+ numColsCount++;
+ if(nvl(dct.getColOnChart()).length()==0) //dct.getChartSeq()<0)
+ unusedNumCols.add(dct);
+ } // if
+
+/* if(dct.getChartSeq()>0)
+ valueColId = dct.getColId();
+
+ if(firstColId==null)
+ firstColId = dct.getColId();
+ if(firstNumColId==null)
+ if(isSQLBased)
+ firstNumColId = dct.getColId();
+ else
+ if(nvl(dct.getColType()).equals(AppConstants.CT_NUMBER))
+ firstNumColId = dct.getColId();*/
+ } // for
+
+ String chartType = nvl(rdef.getChartType()); %>
+
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/CalendarPopup.js"></script>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/calendar.css">
+
+<script language="javascript">
+
+
+
+function refreshWizard() {
+ var selectBox = document.forma.chartType;
+ var selectedString = selectBox.options[selectBox.selectedIndex].value;
+
+ if(selectedString == '<%=AppConstants.GT_TIME_SERIES%>'){
+ document.getElementById("seriesDiv").style.display='block';
+ var selObj = document.getElementById('chartSeries');
+ if(selObj) {
+ var selIndex = selObj.selectedIndex;
+ var value = selObj.options[selIndex].value;
+ var value = <%=chartValueCols.size()%>;
+ if(value > 1) {
+ document.getElementById("multiseriesDiv").style.display='block';
+
+ } else {
+ document.getElementById("multiseriesDiv").style.display='none';
+ document.getElementById("multiSeries").value='N';
+ }
+ }
+ <% int col1Idx = 1; %>
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="block";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="block";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display="block";
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='none';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='block';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+
+
+ } else {
+ <%
+ col1Idx = 1;
+ for(int i=1; i<chartValueCols.size(); i++) {
+ col1Idx++;
+ %>
+ document.getElementById("newChartDiv<%=col1Idx%>").style.visibility='hidden';
+ //document.getElementById("chartGroupDiv<%=col1Idx%>").style.visibility='hidden';
+ document.getElementById("seriesDiv").style.display='none';
+ document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+
+
+ <%
+ }
+ %>
+
+ if(selectedString == "<%=AppConstants.GT_PIE_MULTIPLE%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="block";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="block";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if(selectedString == "<%=AppConstants.GT_SCATTER%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+
+ } else if(selectedString == "<%=AppConstants.GT_REGRESSION%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="none";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+
+ } else if(selectedString == "<%=AppConstants.GT_STACKED_VERT_BAR%>" || selectedString == "<%=AppConstants.GT_STACKED_HORIZ_BAR%>" || selectedString == "<%=AppConstants.GT_STACKED_VERT_BAR_LINES%>"
+ || selectedString == "<%=AppConstants.GT_STACKED_HORIZ_BAR_LINES%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="block";
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if(selectedString == "<%=AppConstants.GT_BAR_3D%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="block";
+ if (document.getElementById("BarChartOptions")) document.getElementById("BarChartOptions").style.display='block';
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display='block';
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='block';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='block';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if(selectedString == "<%=AppConstants.GT_LINE%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='block';
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='block';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='block';
+
+ } else if (selectedString == "<%=AppConstants.GT_PARETO_CHART%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="none";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='block';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if (selectedString == "<%=AppConstants.GT_TIME_DIFFERENCE_CHART%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="none";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='block';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='block';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if (selectedString == "<%=AppConstants.GT_COMPARE_PREVYEAR_CHART%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='block';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="none";
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='block';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ }else if (selectedString != "<%=AppConstants.GT_TIME_SERIES%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="block";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="block";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ //if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='block';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else if (selectedString == "<%=AppConstants.GT_MULTIPLE_TIMESERIES_CHART%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='none';
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='block';
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("chartOptions")) document.getElementById("chartOptions").style.display="block";
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsLineChartDiv")) document.getElementById("lastSeriesAsLineChartDiv").style.display='none';
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="block";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+
+ } else {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ if (document.getElementById("animatedDiv")) document.getElementById("animatedDiv").style.display="none";
+ if (document.getElementById("regressionChartDiv")) document.getElementById("regressionChartDiv").style.display='none';
+ if (document.getElementById("LabelAngleForOtherCharts")) document.getElementById("LabelAngleForOtherCharts").style.display='block';
+ if (document.getElementById("LabelAngleForTimeSeriesCharts")) document.getElementById("LabelAngleForTimeSeriesCharts").style.display='none';
+ if (document.getElementById("maxLabelsInDomainAxisForOtherCharts")) document.getElementById("maxLabelsInDomainAxisForOtherCharts").style.display='none';
+ if (document.getElementById("CustomizingYAxisDiv")) document.getElementById("CustomizingYAxisDiv").style.display='none';
+ if (document.getElementById("drillDownOptions")) document.getElementById("drillDownOptions").style.display="none";
+ if (document.getElementById("lastSeriesAsBarChartDiv")) document.getElementById("lastSeriesAsBarChartDiv").style.display='none';
+ if (document.getElementById("seriesDiv")) document.getElementById("seriesDiv").style.display='none';
+ if (document.getElementById("multiseriesDiv")) document.getElementById("multiseriesDiv").style.display='none';
+ if (document.getElementById("multiplePieChartOptions")) document.getElementById("multiplePieChartOptions").style.display="none";
+ if (document.getElementById("barChartOptions")) document.getElementById("barChartOptions").style.display="none";
+ if (document.getElementById("stackBarChartOptions")) document.getElementById("stackBarChartOptions").style.display="none";
+ if (document.getElementById("AddRangeAxisDiv")) document.getElementById("AddRangeAxisDiv").style.display="none";
+ if (document.getElementById("TimeDifferenceChartOptions")) document.getElementById("TimeDifferenceChartOptions").style.display='none';
+ if (document.getElementById("BarLineChartOptions")) document.getElementById("BarLineChartOptions").style.display='none';
+ if (document.getElementById("keepAsString")) document.getElementById("keepAsString").style.display='none';
+ }
+ }
+ }
+
+
+</script>
+
+<iframe id="calendarFrame" class="nav" z-index:199; scrolling="no" frameborder="0" width=165px height=165px src="" style="position:absolute; display:none;">
+</iframe>
+
+ <div id="calendarDiv" name="calendarDiv" style="position:absolute; z-index:200; visibility:none; background-color:white;layer-background-color:white;"></div>
+
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+<% if(numColsCount==0) { %>
+ <tr>
+ <td class=rbg2 colspan=5 align="center" height="30"><font class=rtabletext>No numeric columns found - chart not available</font></td>
+ </tr>
+ <input type="hidden" name="chartType" value="">
+ <input type="hidden" name="chartWidth" value="">
+ <input type="hidden" name="chartHeight" value="">
+
+<% } else { %>
+
+ <tr>
+ <td colspan="4">
+ <table><tr>
+ <td class=rbg2 align="right" width="50%" height="30"><font class=rtabletext>Chart Type: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="chartType" onChange="showAlertForTimeSeries()">
+ <option value="" <%= chartType.equals("" )?" selected":"" %>>--- Do Not Include Chart ---
+ <option value="<%= AppConstants.GT_BAR_3D %>"<%= chartType.equals(AppConstants.GT_BAR_3D ) || chartType.equals(AppConstants.GT_HORIZ_BAR ) || chartType.equals(AppConstants.GT_VERT_BAR ) || chartType.equals(AppConstants.GT_BAR_LINES)?" selected":"" %>>Bar Chart
+ <option value="<%= AppConstants.GT_TOTAL_BAR %>"<%= chartType.equals(AppConstants.GT_TOTAL_BAR)?" selected":"" %>>Bar Chart With Running Total
+ <% if(!Globals.getJFreeVersion().equals(AppConstants.JFV_0911)) { %>
+ <option value="<%= AppConstants.GT_STACKED_VERT_BAR %>"<%= chartType.equals(AppConstants.GT_STACKED_VERT_BAR)?" selected":"" %>>Vertical Stacked Bar
+ <option value="<%= AppConstants.GT_STACKED_HORIZ_BAR %>"<%= chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR)?" selected":"" %>>Horizontal Stacked Bar
+ <option value="<%= AppConstants.GT_STACKED_VERT_BAR_LINES %>"<%= chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)?" selected":"" %>>Vertical Stacked Bar With Lines Chart
+ <option value="<%= AppConstants.GT_STACKED_HORIZ_BAR_LINES %>"<%= chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)?" selected":"" %>>Horizontal Stacked Bar With Lines Chart
+ <% } %>
+ <option value="<%= AppConstants.GT_LINE %>"<%= chartType.equals(AppConstants.GT_LINE )?" selected":"" %>>Line Chart
+ <option value="<%= AppConstants.GT_PIE_3D %>"<%= chartType.equals(AppConstants.GT_PIE_3D )?" selected":"" %>>Pie Chart 3D
+ <option value="<%= AppConstants.GT_PIE %>"<%= chartType.equals(AppConstants.GT_PIE )?" selected":"" %>>Pie Chart
+ <option value="<%= AppConstants.GT_PIE_MULTIPLE %>"<%= chartType.equals(AppConstants.GT_PIE_MULTIPLE )?" selected":"" %>>Multiple Pie Chart
+ <option value="<%= AppConstants.GT_PARETO_CHART %>"<%= chartType.equals(AppConstants.GT_PARETO_CHART )?" selected":"" %>>Pareto Chart
+ <option value="<%= AppConstants.GT_MULTIPLE_TIMESERIES_CHART %>"<%= chartType.equals(AppConstants.GT_MULTIPLE_TIMESERIES_CHART )?" selected":"" %>>Multiple TimeSeries Chart
+ <option value="<%= AppConstants.GT_TIME_DIFFERENCE_CHART %>"<%= chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART )?" selected":"" %>>Time Difference Chart
+ <option value="<%= AppConstants.GT_COMPARE_PREVYEAR_CHART %>"<%= chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART )?" selected":"" %>>Compare Previous Year Chart
+ <option value="<%= AppConstants.GT_SCATTER %>"<%= chartType.equals(AppConstants.GT_SCATTER )?" selected":"" %>>Scatter Plot Chart
+ <option value="<%= AppConstants.GT_REGRESSION %>"<%= chartType.equals(AppConstants.GT_REGRESSION )?" selected":"" %>>Regression Chart
+ <option value="<%= AppConstants.GT_HIERARCHICAL %>"<%= chartType.equals(AppConstants.GT_HIERARCHICAL )?" selected":"" %>>Hierarchical (HTML5) Chart
+ <option value="<%= AppConstants.GT_HIERARCHICAL_SUNBURST %>"<%= chartType.equals(AppConstants.GT_HIERARCHICAL_SUNBURST )?" selected":"" %>>Hierarchical (HTML5) Sun Burst Chart
+
+<% if(!Globals.getJFreeVersion().equals(AppConstants.JFV_0911)) { %>
+ <option value="<%= AppConstants.GT_TIME_SERIES%>"<%= chartType.equals(AppConstants.GT_TIME_SERIES )?" selected":"" %>>Time Series Chart
+<% } //It is supported only when chart library is above 0911 %>
+<% if(Globals.getShowNonstandardCharts()) { %>
+ <option value="<%= AppConstants.GT_MTD_BAR %>"<%= chartType.equals(AppConstants.GT_MTD_BAR )?" selected":"" %>>Month To Date Bar Chart
+<% } // if(Globals.getShowNonstandardCharts
+%>
+ </select></font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="chartTypeFixed" value="Y"<%= rdef.isChartTypeFixed()?" checked":"" %>>
+ &nbsp;Do NOT allow user to change chart type at runtime
+ </td>
+ <td id="animatedDiv" style ="display:none;">
+ <select name="animatedOption">
+ <option value="static" <%=!rdef.isChartAnimate()?" selected":""%>> Static </option>
+ <option value="animate" <%=rdef.isChartAnimate()?" selected":""%>> Animate </option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Chart Width (px): </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type="text" name="chartWidth" value="<%= ""+rdef.getChartWidthAsInt() %>" size="10" maxlength="4"></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Chart Height (px): </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type="text" name="chartHeight" value="<%= ""+rdef.getChartHeightAsInt() %>" size="10" maxlength="4"></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Domain Axis: </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <select name="legendCol">
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next(); %>
+ <option value="<%= dct.getColId() %>"<%= nvl(legendColId /*, firstColId*/).equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% } %>
+ </select></font></td>
+ </tr>
+ <tr id="seriesDiv">
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Category:</font></td>
+ <td class=rbg3 colspan=4 align="left" ><font class=rtabletext>
+ <select name="chartSeries" onChange="refreshWizard()">
+ <% int isThereChartSeries = 0;
+ if(rdef.hasSeriesColumn()) isThereChartSeries = 1;
+ if(isThereChartSeries == 0) {
+ %>
+ <option value="-1" selected> -->select series <-- </option>
+ <%
+ } else {
+ %>
+ <option value="-1"> -->select series <-- </option>
+ <%
+ } // else
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(dct.isChartSeries()!=null && dct.isChartSeries().booleanValue()) {
+ %>
+ <option value="<%= dct.getColId() %>" selected><%= dct.getDisplayName() %>
+ <%
+ } else {
+
+ %>
+ <option value="<%= dct.getColId() %>"><%= dct.getDisplayName() %>
+ <%
+ } // else Chart Series
+ } // for
+
+ %>
+ </select></font></td>
+ </tr>
+ <tr id = "lastSeriesAsLineChartDiv">
+ <td> last Category display As Line Chart
+ </td>
+ <td class=rbg3 colspan=3 align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="lastSeriesALineChart" value="Y"<%= rdef.isLastSeriesALineChart()?" checked":"" %>>
+ </td>
+ </tr>
+
+ <tr id = "lastSeriesAsBarChartDiv">
+ <td> last Category display As Bar Chart
+ </td>
+ <td class=rbg3 colspan=3 align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="lastSeriesABarChart" value="Y"<%= rdef.isLastSeriesABarChart()?" checked":"" %>>
+ </td>
+ </tr>
+
+ <tr id = "multiseriesDiv">
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Multi Series</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%">
+ <input type=radio name="multiSeries" value="Y" <%= (AppUtils.getRequestNvlValue(request, "multiSeries").trim().length()>0? (AppUtils.getRequestNvlValue(request, "multiSeries").equals("Y")? " checked ":""): (rdef.isMultiSeries() ? " checked ":" checked ")) %>><font class=rtabletext>Yes</font>
+ <input type=radio name="multiSeries" value="N" <%= (AppUtils.getRequestNvlValue(request, "multiSeries").trim().length()>0? (AppUtils.getRequestNvlValue(request, "multiSeries").equals("N")? " checked ":""): (!rdef.isMultiSeries() ? " checked":"")) %>><font class=rtabletext>No</font>
+ </tr>
+
+<% if(chartValueCols.size()==0) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Range Axis:</font></td>
+ <td class=rbg3 colspan=3 align="left" width="50%"><font class=rtabletext>
+ <select name="valueCol1">
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) {%>
+ <option value="<%= dct.getColId() %>"><%= dct.getDisplayName() %>
+ <% } // if
+ } // for
+ %>
+ </select></font></td>
+ <td class=rbg3 align="center" nowrap><font class=rtabletext>
+ <% String sValue = ""; %>
+ <select name="valueCol1Color">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>Color: Default
+ <option value="#00FFFF"<%= sValue.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= sValue.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= sValue.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= sValue.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= sValue.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= sValue.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= sValue.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= sValue.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= sValue.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= sValue.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= sValue.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= sValue.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= sValue.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= sValue.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= sValue.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= sValue.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= sValue.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </font></td>
+ </tr>
+<% } else {
+ int count = 1;
+ String colIdx = "";
+ for(Iterator iterV=chartValueCols.iterator(); iterV.hasNext(); count++) {
+ colIdx = "";
+ DataColumnType dctV = (DataColumnType) iterV.next();
+ colIdx = dctV.getColId();
+ int colAxisIdx = 0;
+ boolean newChart = false;
+ try {
+ colAxisIdx = Integer.parseInt(dctV.getColOnChart());
+ } catch(Exception e) {}
+ newChart = (dctV.isCreateInNewChart()!=null)?dctV.isCreateInNewChart().booleanValue():false;
+ %>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Range Axis <%= count %>:</font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="valueCol<%= count %>">
+ <% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) {%>
+ <option value="<%= dct.getColId() %>"<%= dct.getColId().equals(dctV.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% } // if
+ } // for
+ %>
+ </select>
+ <% if(count>1) { %>
+ &nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dctV.getColId() %>';">
+ <% } %>
+ &nbsp;
+ </font></td>
+ <td class=rbg3 align="center" nowrap>
+ <%
+ String chartGroupOrg = dctV.getChartGroup();
+ String yAxisGroup = dctV.getYAxis();
+ String chartGroup = (chartGroupOrg!=null && chartGroupOrg.length()>0 && chartGroupOrg.indexOf("|")!= -1)?chartGroupOrg.substring(0,chartGroupOrg.lastIndexOf("|")):"";
+ String yAxis = (yAxisGroup!=null && yAxisGroup.length()>0 && yAxisGroup.indexOf("|")!= -1)?yAxisGroup.substring(0,yAxisGroup.lastIndexOf("|")):"";
+ %>
+ <div id="chartGroupDiv<%=colIdx%>">
+ <font class=rtabletext>Chart Title:</font><input type="text" name="chartGroup<%= colIdx%>Axis" value="<%=nvl(chartGroup).length()>0?chartGroup:""%>"/>
+ <font class=rtabletext>YAxis:</font><input type="text" name="YAxisLabel<%= colIdx%>" value="<%=nvl(yAxis).length()>0?yAxis:""%>"/>
+ </div>
+
+ </td>
+ <td class=rbg3 align="center" nowrap><font class=rtabletext>
+ <% String sValue = nvl(dctV.getChartColor()); %>
+ <select name="valueCol<%= count %>Color">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>Color: Default
+ <option value="#00FFFF"<%= sValue.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= sValue.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= sValue.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= sValue.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= sValue.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= sValue.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= sValue.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= sValue.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= sValue.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= sValue.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= sValue.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= sValue.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= sValue.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= sValue.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= sValue.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= sValue.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= sValue.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </font></td>
+ <td class=rbg3 align="left" nowrap valign="middle"><font class=rtabletext>
+ <% if(count>1) { %>
+ <div id="newChartDiv<%=count%>">
+ <input type="checkbox" name="newChart<%= count %>Axis" value="Y"<%= (newChart)?" checked":"" %>>
+ &nbsp;Create in New Chart
+ </div>
+ <input type="checkbox" name="valueCol<%= count %>Axis" value="Y"<%= (colAxisIdx>0)?" checked":"" %>>
+ &nbsp;Use secondary axis (Line chart only)
+ <% } %>
+ &nbsp;</font></td>
+ </tr>
+<% } // for
+ } // else (chartValueCols.size()==0)
+ if(unusedNumCols.size()>0) { %>
+ <tr id="AddRangeAxisDiv">
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Add Values Column:</font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="valueColNew" onChange="if(! checkValueColNew()) return; document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_USER %>'; document.forma.submit();">
+ <option value="" selected>--- Select Column ---
+ <% for(Iterator iter=unusedNumCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) {%>
+ <option value="<%= dct.getColId() %>"><%= dct.getDisplayName() %>
+ <% } // if
+ } // for
+ %>
+ </select>
+ </font></td>
+ <td class=rbg3 align="center" nowrap><font class=rtabletext>
+ <% String sValue = ""; %>
+ <select name="valueColNewColor">
+ <option value=""<%= sValue.equals("") ?" selected":"" %>>Color: Default
+ <option value="#00FFFF"<%= sValue.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= sValue.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= sValue.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= sValue.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= sValue.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= sValue.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= sValue.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= sValue.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= sValue.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= sValue.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= sValue.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= sValue.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= sValue.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= sValue.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= sValue.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= sValue.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= sValue.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </font></td>
+ <td colspan="2" class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="valueColNewAxis" value="Y">
+ &nbsp;Use secondary axis (Line chart only)
+ </font></td>
+ </tr>
+<% } // if(unusedNumCols.size()==0)
+ if(chartValueCols.size()>1 || rdef.hasSeriesColumn()) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Primary Axis Label:</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type="text" name="leftAxisLabel" class=rtabletext value="<%= nvl(rdef.getChartLeftAxisLabel()) %>" size="40">
+ &nbsp;(Multi-series Chart Only)</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Secondary Axis Label:</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type="text" name="rightAxisLabel" class=rtabletext value="<%= nvl(rdef.getChartRightAxisLabel()) %>" size="40">
+ &nbsp;(Multi-series Chart Only)</font></td>
+ </tr>
+<% } // if(chartValueCols.size()>1)
+%>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>&nbsp;</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ Note: Some chart types (like Pie) will only display Series 1 Values.</font></td>
+ </tr>
+ <tr>
+ <td colspan=5>
+
+ <div id="multiplePieChartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="3"><font class=rtabletext>Additional Multiple Pie Charts options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Order by </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="multiplePieOrder" value="row" <%= AppUtils.getRequestNvlValue(request, "multiplePieOrder").equals("row")?" checked": ((AppUtils.getRequestNvlValue(request, "multiplePieOrder").length()<=0)? (rdef.isMultiplePieOrderByRow() ?" checked": (rdef.isMultiplePieOrderByColumn()?"":" checked")):"") %>>Table By Row
+ <input type=radio name="multiplePieOrder" value="column" <%= AppUtils.getRequestNvlValue(request, "multiplePieOrder").equals("column") ? " checked":((AppUtils.getRequestNvlValue(request, "multiplePieOrder").length()<=0)? (rdef.isMultiplePieOrderByColumn() ?" checked": (rdef.isMultiplePieOrderByRow()?"":" checked")):"") %>>Table By Column
+ </font></td>
+ <td>
+ <input type="checkbox" name="multiplePieOrderInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()<=0)?(rdef.displayPieOrderinRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Label Options</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="multiplePieLabelDisplay" value="percentage"
+ <%= AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").equals("percentage")?" checked": ((AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").length()<=0)? (nvl(rdef.getMultiplePieLabelDisplay()).length() > 0 ? (rdef.getMultiplePieLabelDisplay().equals("percentage")?" checked":""):" checked"):"") %>>Display Percentage
+ <input type=radio name="multiplePieLabelDisplay" value="value"
+ <%= AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").equals("value")?" checked": ((AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").length()<=0)? (nvl(rdef.getMultiplePieLabelDisplay()).length() > 0 ? (rdef.getMultiplePieLabelDisplay().equals("value")?" checked":""):""):"") %>>Display Value
+ <input type=radio name="multiplePieLabelDisplay" value="novalue"
+ <%= AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").equals("novalue")?" checked": ((AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").length()<=0)? (nvl(rdef.getMultiplePieLabelDisplay()).length() > 0 ? (rdef.getMultiplePieLabelDisplay().equals("novalue")?" checked":""):" checked"):"") %>>Blank
+ </font>
+ </td>
+ <td>
+ <input type="checkbox" name="multiplePieLabelDisplayInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()<=0)?(rdef.displayPieLabelDisplayinRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Display Options</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="chartDisplay" value="3D" <%= AppUtils.getRequestNvlValue(request, "chartDisplay").equals("3D")?" checked": ((AppUtils.getRequestNvlValue(request, "chartDisplay").length()<=0)? (rdef.isChartDisplayIn3D()?" checked":""):"") %>>Display in 3D
+ <input type=radio name="chartDisplay" value="normal" <%= AppUtils.getRequestNvlValue(request, "chartDisplay").equals("normal")?" checked": ((AppUtils.getRequestNvlValue(request, "chartDisplay").length()<=0)? (!rdef.isChartDisplayIn3D()?" checked":""):"") %>>Display in 2D
+ </font></td>
+ <td>
+ <input type="checkbox" name="chartDisplayInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()<=0)?(rdef.displayChartDisplayinRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ </table>
+ </div>
+
+ <div id="regressionChartDiv" style="display:none;">
+ <table width="100%" id = "regressionDiv">
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Regression Type </font></td>
+ <td class=rbg3 colspan=4 align="left" width="80%"><font class=rtabletext>
+ <input type=checkbox name="LinearRegressionType" value="Y" <%= (AppUtils.getRequestNvlValue(request, "regressionType").trim().length()>0? (AppUtils.getRequestNvlValue(request, "regressionType").charAt(0) == 'Y'? " checked ":""): (nvl(rdef.getLinearRegression()).length()>0 && rdef.getLinearRegression().charAt(0) == 'Y' ? " checked ":" checked ")) %>><font class=rtabletext>Linear</font>
+ <input type=checkbox name="ExpRegressionType" value="Y" <%= (AppUtils.getRequestNvlValue(request, "regressionType").trim().length()>1? (AppUtils.getRequestNvlValue(request, "regressionType").charAt(1) == 'Y'? " checked ":""): (nvl(rdef.getLinearRegression()).length()>1 && rdef.getLinearRegression().charAt(1) == 'Y' ? " checked ":" ")) %>><font class=rtabletext>Exponential</font>
+ <input type="hidden" name="regressionType" value=""/>
+ </font> </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Linear Regression Color </font></td>
+ <td class=rbg3 align="left" colspan=4 width=80% nowrap><font class=rtabletext>
+ <% String linearColor = nvl(rdef.getLinearRegressionColor()); %>
+ <select name="valueLinearRegressionColor">
+ <option value=""<%= linearColor.equals("") ?" selected":"" %>>Color: Default
+ <option value="#00FFFF"<%= linearColor.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= linearColor.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= linearColor.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= linearColor.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= linearColor.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= linearColor.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= linearColor.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= linearColor.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= linearColor.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= linearColor.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= linearColor.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= linearColor.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= linearColor.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= linearColor.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= linearColor.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= linearColor.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= linearColor.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </font></td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Exponential Regression Color </font></td>
+ <td class=rbg3 align="left" colspan=4 width=80% nowrap><font class=rtabletext>
+ <% String expColor = nvl(rdef.getExponentialRegressionColor()); %>
+ <select name="valueExponentialRegressionColor">
+ <option value=""<%= expColor.equals("") ?" selected":"" %>>Color: Default
+ <option value="#00FFFF"<%= expColor.equals("#00FFFF")?" selected":"" %>>Aqua
+ <option value="#000000"<%= expColor.equals("#000000")?" selected":"" %>>Black
+ <option value="#0000FF"<%= expColor.equals("#0000FF")?" selected":"" %>>Blue
+ <option value="#FF00FF"<%= expColor.equals("#FF00FF")?" selected":"" %>>Fuchsia
+ <option value="#808080"<%= expColor.equals("#808080")?" selected":"" %>>Gray
+ <option value="#008000"<%= expColor.equals("#008000")?" selected":"" %>>Green
+ <option value="#00FF00"<%= expColor.equals("#00FF00")?" selected":"" %>>Lime
+ <option value="#800000"<%= expColor.equals("#800000")?" selected":"" %>>Maroon
+ <option value="#000080"<%= expColor.equals("#000080")?" selected":"" %>>Navy
+ <option value="#808000"<%= expColor.equals("#808000")?" selected":"" %>>Olive
+ <option value="#FF9900"<%= expColor.equals("#FF9900")?" selected":"" %>>Orange
+ <option value="#800080"<%= expColor.equals("#800080")?" selected":"" %>>Purple
+ <option value="#FF0000"<%= expColor.equals("#FF0000")?" selected":"" %>>Red
+ <option value="#C0C0C0"<%= expColor.equals("#C0C0C0")?" selected":"" %>>Silver
+ <option value="#008080"<%= expColor.equals("#008080")?" selected":"" %>>Teal
+ <option value="#FFFFFF"<%= expColor.equals("#FFFFFF")?" selected":"" %>>White
+ <option value="#FFFF00"<%= expColor.equals("#FFFF00")?" selected":"" %>>Yellow
+ </select>
+ </font></td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Regression Point customization (in Numbers)</font></td>
+ <td class=rbg3 colspan=4 align="left" width="80%"><font class=rtabletext>
+ <input type=text name="regressionPointCustomization" value="<%=nvl(rdef.getCustomizedRegressionPoint(),"")%>">
+ </font></td>
+
+ </table>
+
+ </div>
+
+ <div id="CustomizingYAxisDiv" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Range Axis (Minimum Range)</font></td>
+ <td class=rbg3 colspan=4 align="left" width="80%"><font class=rtabletext>
+ <input type=text name="yAxisLowerLimit" value="<%=nvl(rdef.getRangeAxisLowerLimit(),"")%>">
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="20%" height="30"><font class=rtabletext>Range Axis (Maximum Range)</font></td>
+ <td class=rbg3 colspan=4 align="left" width="80%"><font class=rtabletext>
+ <input type=text name="yAxisUpperLimit" value="<%=nvl(rdef.getRangeAxisUpperLimit(),"")%>">
+ </font></td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div id="BarLineChartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="3"><font class=rtabletext>Additional Bar/Line Chart options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Orientation </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="chartOrientation" value="vertical" <%= AppUtils.getRequestNvlValue(request, "chartOrientation").equals("vertical")?" checked": ((AppUtils.getRequestNvlValue(request, "chartOrientation").length()<=0)? (rdef.isVerticalOrientation() ?" checked": (rdef.isVerticalOrientation()?" checked":"")):"") %>>Vertical
+ <input type=radio name="chartOrientation" value="horizontal" <%= AppUtils.getRequestNvlValue(request, "chartOrientation").equals("horizontal") ? " checked":((AppUtils.getRequestNvlValue(request, "chartOrientation").length()<=0)? (rdef.isHorizontalOrientation() ?" checked": (rdef.isHorizontalOrientation()?" checked":"")):"") %>>Horizontal
+ </font></td>
+ <td>
+ <input type="checkbox" name="chartOrientationInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()<=0)?(rdef.displayChartOrientationInRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Display Options</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="chartDisplay" value="3D" <%= AppUtils.getRequestNvlValue(request, "chartDisplay").equals("3D")?" checked": ((AppUtils.getRequestNvlValue(request, "chartDisplay").length()<=0)? (rdef.isChartDisplayIn3D()?" checked":""):"") %>>Display in 3D
+ <input type=radio name="chartDisplay" value="normal" <%= AppUtils.getRequestNvlValue(request, "chartDisplay").equals("normal")?" checked": ((AppUtils.getRequestNvlValue(request, "chartDisplay").length()<=0)? (!rdef.isChartDisplayIn3D()?" checked":""):"") %>>Display in 2D
+ </font></td>
+ <td>
+ <input type="checkbox" name="chartDisplayInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()<=0)?(rdef.displayChartDisplayinRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="BarChartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Renderer for Secondary Axis</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="secondaryChartRenderer" value="line"
+ <%= AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").equals("line")?" checked": ((AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").length()<=0)? ((nvl(rdef.getSecondaryChartRenderer()).length() > 0) ? (rdef.getSecondaryChartRenderer().equals("line")?" checked":""):" checked"):"") %>>Line chart Renderer
+ <input type=radio name="secondaryChartRenderer" value="level"
+ <%= AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").equals("level")?" checked": ((AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").length()<=0)? ((nvl(rdef.getSecondaryChartRenderer()).length() > 0) ? (rdef.getSecondaryChartRenderer().equals("level")?" checked":""):""):"") %>>Level chart Renderer
+ </font>
+ </td>
+ <td>
+ <input type="checkbox" name="secondaryChartRendererInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()<=0)?(rdef.displaySecondaryChartRendererInRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ </table>
+ </div>
+
+ <div id="stackBarChartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="3"><font class=rtabletext>Additional Bar Chart options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Overlay Item Value:</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="overlayItemValue" value="Y"
+ <%= AppUtils.getRequestNvlValue(request, "overlayItemValue").equals("Y")?" checked": ((AppUtils.getRequestNvlValue(request, "overlayItemValue").length()<=0)? ((nvl(rdef.getOverlayItemValueOnStackBar()).length() > 0) ? (rdef.getOverlayItemValueOnStackBar().equals("Y")?" checked":""):" checked"):"") %>>Yes
+ <input type=radio name="overlayItemValue" value="N"
+ <%= AppUtils.getRequestNvlValue(request, "overlayItemValue").equals("N")?" checked": ((AppUtils.getRequestNvlValue(request, "overlayItemValue").length()<=0)? ((nvl(rdef.getOverlayItemValueOnStackBar()).length() > 0) ? (rdef.getOverlayItemValueOnStackBar().equals("N")?" checked":""):""):"") %>>No
+ </font>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div id="TimeDifferenceChartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="3"><font class=rtabletext>Additional Time Difference Chart options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="15%" height="30"><font class=rtabletext>Interval Marker </font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type="text" size="10" maxlength="10" name="intervalFromDate" value="<%=rdef.getIntervalFromdate()%>" toolTipText="Enter the starting interval date">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar = new CalendarPopup('calendarDiv', 'calendarFrame');oCalendar.setCssPrefix('raptor');oCalendar.select(document.getElementById('intervalFromDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ <input type="text" size="10" maxlength="10" name="intervalToDate" value="<%=rdef.getIntervalTodate()%>" toolTipText="Enter the Ending interval date">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar = new CalendarPopup('calendarDiv', 'calendarFrame');oCalendar.setCssPrefix('raptor');oCalendar.select(document.getElementById('intervalToDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ <input type="text" size="50" maxlength="100" name="intervalLabel" value="<%=rdef.getIntervalLabel()%>" toolTipText="Enter the interval Label">
+ </font></td>
+ <td>
+ <input type="checkbox" name="intervalInputInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "intervalInputInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "intervalInputInRunPage").length()<=0)?(rdef.displayIntervalInputInRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+
+ </tr>
+ </table>
+ </div>
+
+ <div id="chartOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="3"><font class=rtabletext>Additional chart options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Legend Position</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="legendPosition" value="bottom" <%= AppUtils.getRequestNvlValue(request, "legendPosition").equals("bottom")?" checked": ((AppUtils.getRequestNvlValue(request, "legendPosition").length()<=0)? (nvl(rdef.getLegendPosition()).length()>0 ? (rdef.getLegendPosition().equals("bottom")?" checked":""):" checked"):"") %>>Bottom
+ <input type=radio name="legendPosition" value="top" <%= AppUtils.getRequestNvlValue(request, "legendPosition").equals("top")?" checked": ((AppUtils.getRequestNvlValue(request, "legendPosition").length()<=0)? (nvl(rdef.getLegendPosition()).length()>0 ? (rdef.getLegendPosition().equals("top")?" checked":""):""):"") %>>Top
+ <input type=radio name="legendPosition" value="left" <%= AppUtils.getRequestNvlValue(request, "legendPosition").equals("left")?" checked": ((AppUtils.getRequestNvlValue(request, "legendPosition").length()<=0)? (nvl(rdef.getLegendPosition()).length()>0 ? (rdef.getLegendPosition().equals("left")?" checked":""):""):"") %>>Left
+ <input type=radio name="legendPosition" value="right" <%= AppUtils.getRequestNvlValue(request, "legendPosition").equals("right")?" checked": ((AppUtils.getRequestNvlValue(request, "legendPosition").length()<=0)? (nvl(rdef.getLegendPosition()).length()>0 ? (rdef.getLegendPosition().equals("right")?" checked":""):""):"") %>>Right
+ </font></td>
+ <td>
+ &nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Hide Tooltips</font></td>
+ <td>
+ <input type="checkbox" name="hideTooltips" value="Y"<%= AppUtils.getRequestNvlValue(request, "hideToolTips").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "hideToolTips").length()<=0)?(rdef.hideChartToolTips()?" checked":""):"") %>> &nbsp;
+ </td>
+ <td> &nbsp;</td>
+ </tr>
+ <tr id="keepAsString">
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Keep Domain Axis Value As String</font></td>
+ <td>
+ <input type="checkbox" name="keepAsString" value="Y"<%= AppUtils.getRequestNvlValue(request, "keepAsString").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "keepAsString").length()<=0)?(rdef.keepDomainAxisValueInChartAsString()?" checked":""):"") %>> &nbsp;
+ </td>
+ <td> &nbsp;</td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Hide Legend</font></td>
+ <td>
+ <input type="checkbox" name="hideLegend" value="Y"<%= AppUtils.getRequestNvlValue(request, "hideLegend").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "hideLegend").length()<=0)?(rdef.hideChartLegend()?" checked":""):"") %>> &nbsp;
+ </td>
+ <td>
+ <input type="checkbox" name="showLegendDisplayOptionsInRunPage" value="Y"<%= AppUtils.getRequestNvlValue(request, "showLegendDisplayOptionsInRunPage").equals("Y")? " checked":((AppUtils.getRequestNvlValue(request, "showLegendDisplayOptionsInRunPage").length()<=0)?(rdef.showLegendDisplayOptionsInRunPage()?" checked":""):"") %>> Display in run page
+ </td>
+ </tr>
+ <tr id ="maxLabelsInDomainAxisForOtherCharts">
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Maximum Number of Labels in Domain Axis:</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=text name="maxLabelsInDomainAxis" class=rtabletext value="<%= AppUtils.getRequestNvlValue(request, "maxLabelsInDomainAxis").trim().length()>0?
+ AppUtils.getRequestNvlValue(request, "maxLabelsInDomainAxis"):
+ ((AppUtils.getRequestNvlValue(request, "maxLabelsInDomainAxis").length()<=0)?
+ (nvl(rdef.getMaxLabelsInDomainAxis()).length()>0 ? rdef.getMaxLabelsInDomainAxis():"1"):"1")%>" maxlength="2" size="2">
+ </font>
+ </td>
+ </tr>
+ <tr id ="LabelAngleForTimeSeriesCharts">
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Legend Label Angle</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="labelAngle" value="UP45" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("UP45")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("UP45")?" checked":""):" checked"):"") %>>Standard
+ <input type=radio name="labelAngle" value="UP90" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("UP90")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("UP90")?" checked":""):" checked"):"") %>>90 &deg;
+ </font></td>
+ <td>
+ &nbsp;
+ </td>
+ </tr>
+ <tr id ="LabelAngleForOtherCharts">
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Legend Label Angle</font></td>
+ <td class=rbg3 colspan=4 align="left" width="50%"><font class=rtabletext>
+ <input type=radio name="labelAngle" value="UP45" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("UP45")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("UP45")?" checked":""):" checked"):"") %>>Up 45 &deg;
+ <input type=radio name="labelAngle" value="UP90" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("UP90")?" checked":
+ ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)?
+ (nvl(rdef.getLegendLabelAngle()).length()>0 ?
+ (rdef.getLegendLabelAngle().equals("UP90")?" checked":""):""):"") %>>Up 90 &deg;
+ <input type=radio name="labelAngle" value="DOWN45" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("DOWN45")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("DOWN45")?" checked":""):" checked"):"") %>>Down 45 &deg;
+ <input type=radio name="labelAngle" value="DOWN90" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("DOWN90")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("DOWN90")?" checked":""):" checked"):"") %>>Down 90 &deg;
+ <input type=radio name="labelAngle" value="STANDARD" <%= AppUtils.getRequestNvlValue(request, "labelAngle").equals("STANDARD")?" checked": ((AppUtils.getRequestNvlValue(request, "labelAngle").length()<=0)? (nvl(rdef.getLegendLabelAngle()).length()>0 ? (rdef.getLegendLabelAngle().equals("STANDARD")?" checked":""):" checked"):"") %>>Standard
+ </font></td>
+ <td>
+ &nbsp;
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="drillDownOptions" style="display:none;">
+ <table width="100%">
+ <tr>
+ <td colspan="2"><font class=rtabletext>Drilldown options:</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Drilldown report:</font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="drillDownReport" onChange="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='GET_DRILLDOWN_FORMFIELDS'; document.forma.submit();">
+ <option value="-1">Please Select</option>
+ <%
+ Vector publicReportIdNames = DataCache.getPublicReportIdNames();
+ for(int i=0; i<publicReportIdNames.size(); i++) {
+ IdNameValue reportIdName = (IdNameValue) publicReportIdNames.get(i); %>
+ <option value="<%= reportIdName.getId() %>"<%= (nvl(rdef.getDrillReportIdForChart()).equals(reportIdName.getId()))?" selected":"" %>>Public Report: <%= reportIdName.getName() %></option>
+ <% } %>
+ <%
+ Vector groupReportIdNames = DataCache.getGroupAccessibleReportIdNames(AppUtils.getUserID(request),AppUtils.getUserRoles(request));
+ for(int j=0; j<groupReportIdNames.size(); j++) {
+ IdNameValue reportIdName = (IdNameValue) groupReportIdNames.get(j); %>
+ <option value="<%= reportIdName.getId() %>"<%= (nvl(rdef.getDrillReportIdForChart()).equals(reportIdName.getId()))?" selected":"" %>>Group Report: <%= reportIdName.getName() %></option>
+ <% } %>
+ <%
+ Vector privateReportIdNames = DataCache.getPrivateAccessibleReportIdNames(AppUtils.getUserID(request),AppUtils.getUserRoles(request));
+ for(int j=0; j<privateReportIdNames.size(); j++) {
+ IdNameValue reportIdName = (IdNameValue) privateReportIdNames.get(j); %>
+ <option value="<%= reportIdName.getId() %>"<%= (nvl(rdef.getDrillReportIdForChart()).equals(reportIdName.getId()))?" selected":"" %>>Private Report: <%= reportIdName.getName() %></option>
+ <% } %>
+
+ </select>
+ </font></td></tr>
+ <%
+ if(nvl(rdef.getDrillReportIdForChart()).length()>0) {
+ ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, rdef.getDrillReportIdForChart(),
+ false);
+ if (ddRr != null)
+ request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
+ }
+ %>
+
+
+ <% if(request.getAttribute("CHART_FORMFIELDS")!=null) { %>
+ <% ReportFormFields ddReportFormFields = (ReportFormFields) request.getAttribute("CHART_FORMFIELDS");
+ if(ddReportFormFields!=null) {
+ for(ddReportFormFields.resetNext(); ddReportFormFields.hasNext(); ) {
+ FormField ff = ddReportFormFields.getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+
+ %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%=ff.getFieldDisplayName()%>:</font></td>
+ <td class=rbg3 align="left" width="50%">
+ <font class=rtabletext>
+ <select name="drillDown_<%=ff.getFieldName()%>">
+ <option value="<%= ff.getFieldName() %>_xaxis" <%= rdef.isChartDrillDownContainsName(ff.getFieldName()+"_xaxis")?" selected":""%>> X Axis </option>
+ <option value="<%= ff.getFieldName() %>_yaxis" <%= rdef.isChartDrillDownContainsName(ff.getFieldName()+"_yaxis")?" selected":"" %>> Y Axis </option>
+ <option value="<%= ff.getFieldName() %>_series" <%= rdef.isChartDrillDownContainsName(ff.getFieldName()+"_series")?" selected":"" %>> Series </option>
+ </select>
+ </font>
+ </td>
+ </tr>
+ <% }
+ }
+ }
+ }
+ %>
+
+
+ </div>
+
+ </td>
+ </tr>
+
+
+<% } // else (numColsCount==0)
+%>
+</table>
+<br>
+
+ <script language="javascript">
+ refreshWizard();
+ </script>
+
+<script language="JavaScript">
+<!--
+<% if(numColsCount>0) { %>
+function checkValueColNew() {
+ if(document.forma.valueColNew.selectedIndex==0)
+ return false;
+
+ var newColId = "";
+ newColId = document.forma.valueColNew.options[document.forma.valueColNew.selectedIndex].value;
+<% for(int idx=1; idx<Math.max(chartValueCols.size(), 1)+1; idx++) { %>
+ if(newColId==document.forma.valueCol<%= idx %>.options[document.forma.valueCol<%= idx %>.selectedIndex].value) {
+ alert("A column cannot be used as Chart Values Column more than once.");
+ document.forma.valueColNew.focus();
+ return false;
+ } // if
+<% } // for
+%>
+
+ return true;
+} // checkValueColNew
+<% } %>
+
+
+function showAlertForTimeSeries() {
+ var selectBox = document.forma.chartType;
+ var selectedString = selectBox.options[selectBox.selectedIndex].value;
+ refreshWizard();
+ if(selectedString == "<%=AppConstants.GT_PIE_MULTIPLE%>") {
+ //var contentIframe = window.parent.document.getElementById("content_Iframe");
+ //contentIframe.style.height = contentIframe.clientHeight + 120;
+ document.getElementById("multiplePieChartOptions").style.display="block";
+ }
+ else {
+ document.getElementById("multiplePieChartOptions").style.display="none";
+ }
+ if(selectedString == "<%=AppConstants.GT_TIME_SERIES%>"){
+ document.getElementById("animatedDiv").style.display="block";
+ return confirm("WARNING: Please make sure that the Domain Axis contains only\nDATE type of values, otherwise it will throw error.\nPress Ok to continue, or Cancel to re-examine the selection.");
+ } else if (selectedString == "<%=AppConstants.GT_BAR_3D%>"){
+ document.getElementById("animatedDiv").style.display="block";
+ } else if (selectedString == "<%=AppConstants.GT_PIE%>"){
+ document.getElementById("animatedDiv").style.display="block";
+ } else if (selectedString == "<%=AppConstants.GT_PIE_3D%>"){
+ document.getElementById("animatedDiv").style.display="block";
+ } else if (selectedString == "<%=AppConstants.GT_SCATTER%>"){
+ document.getElementById("animatedDiv").style.display="block";
+ } else
+ document.getElementById("animatedDiv").style.display="none";
+ return true;
+}
+function dataValidate() {
+ if(document.forma.maxLabelsInDomainAxis!="") {
+ var iVal = 0;
+ iVal = parseInt(document.forma.maxLabelsInDomainAxis.value);
+ if(isNaN(iVal)||iVal>100||iVal<=0) {
+ alert("Maximum Labels in Domain Axis must be a valid integer between 1 and 100 (or blank).\nPlease correct.");
+ document.forma.maxLabelsInDomainAxis.select();
+ document.forma.maxLabelsInDomainAxis.focus();
+ return;
+ } // if
+ document.forma.maxLabelsInDomainAxis.value = ""+iVal;
+ }
+
+ if(document.forma.chartWidth.value!="") {
+ var iVal = 0;
+ iVal = parseInt(document.forma.chartWidth.value);
+ if(isNaN(iVal)||iVal<100||iVal>1600) {
+ alert("Chart Width must be a valid integer between 100 and 1600 (or blank).\nPlease correct the Chart Width.");
+ document.forma.chartWidth.select();
+ document.forma.chartWidth.focus();
+ return;
+ } // if
+ document.forma.chartWidth.value = ""+iVal;
+ } // if
+ if(document.forma.chartHeight.value!="") {
+ var iVal = 0;
+ iVal = parseInt(document.forma.chartHeight.value);
+ if(isNaN(iVal)||iVal<100||iVal>1600) {
+ alert("Chart Height must be a valid integer between 100 and 1600 (or blank).\nPlease correct the Chart Height.");
+ document.forma.chartHeight.select();
+ document.forma.chartHeight.focus();
+ return;
+ } // if
+ document.forma.chartHeight.value = ""+iVal;
+ } // if
+<% if(chartValueCols.size()>1)
+ for(int ci=1; ci<chartValueCols.size(); ci++) {
+ for(int idx=ci+1; idx<chartValueCols.size()+1; idx++) { %>
+ if(document.forma.valueCol<%= ci %>.options[document.forma.valueCol<%= ci %>.selectedIndex].value==document.forma.valueCol<%= idx %>.options[document.forma.valueCol<%= idx %>.selectedIndex].value) {
+ alert("A column cannot be used as Chart Values Column more than once.");
+ document.forma.valueCol<%= idx %>.focus();
+ return false;
+ } // if
+<% } // for
+ }
+ if(isSQLBased) { %>
+ var selectBox = document.forma.chartType;
+ var selectedString = selectBox.options[selectBox.selectedIndex].value;
+ if(document.forma.chartType.selectedIndex>0) {
+ if(selectedString == "<%=AppConstants.GT_SCATTER%>" || selectedString == "<%=AppConstants.GT_REGRESSION%>") {
+ if(document.forma.chartSeries.selectedIndex<=0) {
+ alert (" Please choose category for this Chart Type." );
+ return false;
+ }
+ if (selectedString == "<%=AppConstants.GT_REGRESSION%>") {
+ if(document.forma && document.forma.LinearRegressionType) {
+ document.forma.regressionType.value = (document.forma.LinearRegressionType.checked?"Y":"N")+(document.forma.ExpRegressionType.checked?"Y":"N");
+ if (!checkNonNegativeFloat(document.forma.regressionPointCustomization.value)) {
+ alert("Please enter positive number for Customizing regression Point");
+ return false;
+ }
+
+ }
+ }
+ }
+
+ /* if (selectedString == "<%=AppConstants.GT_STACKED_VERT_BAR%>" || selectedString == "<%=AppConstants.GT_STACKED_HORIZ_BAR%>" || selectedString == "<%=AppConstants.GT_STACKED_VERT_BAR_LINES%>"
+ || selectedString == "<%=AppConstants.GT_STACKED_HORIZ_BAR_LINES%>") {
+ var selectSeries = document.forma.chartSeries;
+ var selectedSeriesString = selectSeries.options[selectSeries.selectedIndex].value;
+ if(selectedSeriesString == -1) {
+ alert("Please select category for Stacked Chart. This is Mandatory.");
+ return false;
+ }
+
+ } */
+
+ }
+
+ if (!checkNonNegativeFloat(document.forma.yAxisLowerLimit.value)) {
+ alert("Please enter positive number for Range Axis (Minimum Range) ");
+ return false;
+ }
+
+ if (!checkNonNegativeFloat(document.forma.yAxisUpperLimit.value)) {
+ alert("Please enter positive number for Range Axis (Maximum Range) ");
+ return false;
+ }
+
+ if(document.forma.chartType.selectedIndex>0)
+ return confirm("WARNING: Please make sure that the Values column contains only\nnumeric values, otherwise your chart will not be properly displayed.\nPress Ok to continue, or Cancel to re-examine the selection.");
+ <% } %>
+
+
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp
new file mode 100644
index 00000000..ab67b802
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp
@@ -0,0 +1,96 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page errorPage="error_page.jsp" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+%>
+<table class="mTAB" width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=3 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="79%"><b class=rtableheader>Column</b></td>
+ <td align="center" valign="Middle" width="14%">
+ <b class=rtableheader>Add To Report?</b>
+ <br>
+ <input type=checkbox name="selectAll" value="Y" onClick="setAllChk(this.checked);">
+ </td>
+ </tr>
+<% int icnt = 0;
+ String remoteDbPrefix = (String) session.getAttribute("remoteDB");
+ for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next();
+
+ Vector dbColumns = DataCache.getReportTableDbColumns(dst.getTableName().toUpperCase(),remoteDbPrefix);
+ if(dbColumns!=null)
+ for(int i=0; i<dbColumns.size(); i++) {
+ DBColumnInfo dbCol = (DBColumnInfo) dbColumns.get(i);
+ icnt++; %>
+ <tr<%= (icnt%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" height="30"><font class=rtabletext><%= icnt %></font></td>
+ <td><font class=rtabletext>[<%= dst.getDisplayName() %>].<%= dbCol.getLabel() %></font></td>
+ <td align="center" valign="middle">
+ <input type="checkbox" name="dataChk" onClick="document.forma.addColumn[<%= icnt-1 %>].value=(this.checked?'Y':'');">
+ <input type="hidden" name="addColumn" value="">
+ <input type="hidden" name="tableId" value="<%= dst.getTableId() %>">
+ <input type="hidden" name="columnName" value="<%= dbCol.getColName() %>">
+ <input type="hidden" name="columnType" value="<%= dbCol.getColType() %>">
+ <input type="hidden" name="displayName" value="<%= dbCol.getLabel() %>">
+ </td>
+ </tr>
+<% } // for i
+ } // for
+%>
+</table>
+ <input type="hidden" name="dataChk" value="">
+ <input type="hidden" name="dataChk" value="">
+ <input type="hidden" name="addColumn" value="">
+ <input type="hidden" name="addColumn" value="">
+<br>
+
+<script language="JavaScript">
+<!--
+function setAllChk(toSelected) {
+ for(var i=0; i<document.forma.addColumn.length-2; i++) {
+ document.forma.addColumn[i].value = (toSelected?"Y":"");
+ document.forma.dataChk[i].checked = toSelected;
+ } // for
+} // setAllChk
+
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp
new file mode 100644
index 00000000..cc6b68b0
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp
@@ -0,0 +1,1127 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@page import="java.util.Map"%>
+<%@page import="java.util.HashMap"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.ReportLoader"%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+ String dbInfo = null;
+ dbInfo = rdef.getDBInfo();
+ boolean isEdit = curSubStep.equals(AppConstants.WSS_EDIT) || curSubStep.equals(AppConstants.WA_MODIFY);
+ DataColumnType currColumn = null;
+ if(isEdit)
+ currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ Vector reportTableSources = DataCache.getReportTableSources((String) session.getAttribute("remoteDB"));
+
+ List reportCols = rdef.getAllColumns();
+
+ HashMap actionImgMap = ReportLoader.loadActionImgLookUp();
+
+ String[] numberFormats = { "9999999990", "9,999,999,990", "9999999990.99", "9,999,999,990.99", "$9,999,999,990.99", "$9,999,999,990.999" };
+ String[] dateFormats = { "MM/DD/YYYY", "MM/YYYY", "DD-MON-YYYY", "Month DD, YYYY", "Month, YYYY", "MM/DD/YYYY HH24:MI:SS", "YYYY" };
+ String[] charFormats = { "N/A" };
+
+ String dispName = "";
+ String dbColType = "";
+ String colType = "";
+ if(isEdit) {
+ dbColType = currColumn.getDbColType();
+ colType = currColumn.getColType();
+ }
+
+ String dependsOnFormField = currColumn.getDependsOnFormField();
+ %>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/editabledropdown.js"></script>
+<script language="JavaScript">
+<!--
+var tableDrillDownCount = 0;
+
+function verifyCrossTabDrillDown() {
+<% if(isCrossTab) { %>
+ if( (document.forma.crossTabValue.options[document.forma.crossTabValue.selectedIndex].value!="<%= AppConstants.CV_VALUE %>")
+ &&(document.forma.drillDownCtl.selectedIndex!=0)) {
+ alert("You cannot assign drill-down to this column unless the Column Usage in Cross-Tab is Report values.");
+ document.forma.drillDownURL.value = "";
+ document.forma.drillDownParams.value = "";
+ document.forma.drillDownSuppress.value = "";
+ document.forma.drillDownRequest.value = "";
+ document.forma.drillDownCtl.selectedIndex = 0;
+ return false;
+ }
+<% } %>
+ return true;
+} // verifyCrossTabDrillDown
+
+function showDrillDownPopup(resetParams) {
+ if(! verifyCrossTabDrillDown())
+ return;
+
+ if(resetParams) {
+ document.forma.drillDownParams.value = "";
+ document.forma.drillDownSuppress.value = "";
+ document.forma.drillDownRequest.value = "";
+ }
+
+ if(document.forma.drillDownCtl.selectedIndex==0) {
+ document.forma.drillDownURL.value = "";
+ return;
+ }
+
+ var ddValue = "";
+ ddValue = document.forma.drillDownCtl.options[document.forma.drillDownCtl.selectedIndex].value;
+
+ var url = "";
+ if(document.forma.drillDownCtl.selectedIndex<=tableDrillDownCount) {
+ document.forma.drillDownURL.value = ddValue;
+ url = "<%= AppUtils.getRaptorActionURL() %>report.popup.drilldown.table&<%= AppConstants.RI_VIEW_ACTION %>="+ddValue;
+ } else {
+ document.forma.drillDownURL.value = ddValue;
+ url = "<%= AppUtils.getRaptorActionURL() %>report.popup.drilldown.report&<%= AppConstants.RI_REPORT_ID %>="+ddValue+"&drillDownParams="+escape(document.forma.drillDownParams.value)+"&drillDownSuppress="+escape(document.forma.drillDownSuppress.value)+"&drillDownRequest="+escape(document.forma.drillDownRequest.value);
+ }
+ var w = window.open(url, "drillDownPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showArgPopup
+
+function setDrillDownValuesSuppress(newParams, newSuppress) {
+ document.forma.drillDownParams.value = newParams;
+ document.forma.drillDownSuppress.value = newSuppress;
+} // setDrillDownValuesSuppress
+
+function setDrillDownValues(newParams) {
+ setDrillDownValuesSuppress(newParams, "")
+} // setDrillDownValues
+
+function setTotalDropDownValues(canHaveTotal) {
+<% if(! isSQLBased) { %>
+ if(canHaveTotal) {
+ if(document.forma.displayTotal.options.length>1)
+ return;
+ } else {
+ if(document.forma.displayTotal.options.length==1)
+ return;
+ }
+
+ document.forma.displayTotal.options.length = 0;
+ document.forma.displayTotal.options[0] = new Option("--- Do Not Display (Faster Report Execution) ---", "");
+<% if(isCrossTab) { %>
+ document.forma.displayTotalPerRow.options.length = 0;
+ document.forma.displayTotalPerRow.options[0] = new Option("--- Do Not Display (Faster Report Execution) ---", "");
+<% } %>
+
+ if(canHaveTotal) {
+ <% for(int i=0; i<AppConstants.TOTAL_FUNCTIONS.getCount(); i++) {
+ IdNameValue tValue = AppConstants.TOTAL_FUNCTIONS.getValue(i); %>
+ document.forma.displayTotal.options[<%= (i+1) %>] = new Option("<%= tValue.getName() %>", "<%= tValue.getId() %>");
+ <% if(isCrossTab) { %>
+ document.forma.displayTotalPerRow.options[<%= (i+1) %>] = new Option("<%= tValue.getName() %>", "<%= tValue.getId() %>");
+ <% } %>
+ <% } // for
+ %>
+ } // if
+
+ document.forma.displayTotal.selectedIndex = 0;
+<% if(isCrossTab) { %>
+ document.forma.displayTotalPerRow.selectedIndex = 0;
+ if(document.layers)
+ history.go(0);
+<% } %>
+<% } // if(! isSQLBased)
+%>
+} // setTotalDropDownValues
+
+<% if(! isSQLBased) { %>
+<%--
+function showFormatPopup() {
+ if((document.forma.colType.value!="< %= AppConstants.CT_NUMBER % >")&&(document.forma.colType.value!="< %= AppConstants.CT_DATE % >")) {
+ alert("Display Format is not applicable to this column");
+ return;
+ }
+
+ var w = window.open("", "formatHint", "width=200,height=300,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Display Formats</title>");
+ //w.document.writeln("<link rel=stylesheet type=text/css href='< %= AppUtils.getBaseFolderURL() % >css/raptor.css'>");
+ w.document.writeln("<script language=JavaScript>");
+ w.document.writeln("function setValue(newValue) {");
+ w.document.writeln(" window.opener.document.forma.displayFormat.value=newValue;");
+ w.document.writeln(" window.close();");
+ w.document.writeln("} // setValue");
+ w.document.writeln("</"+"script>");
+ w.document.writeln("</head><body>");
+ if(document.forma.colType.value=="< %= AppConstants.CT_NUMBER % >") {
+ w.document.writeln("<font face='Arial, Helvetica, sans-serif' size=2><b>Number formats:</b></font><ul>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('9999999990.99')\">9999999990.99</a></b></font></li>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('9,999,999,990.99')\">9,999,999,990.99</a></b></font></li>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('$9,999,999,990.99')\">$9,999,999,990.99</a></b></font></li>");
+ w.document.writeln("</ul>");
+ } else if(document.forma.colType.value=="< %= AppConstants.CT_DATE % >") {
+ w.document.writeln("<font face='Arial, Helvetica, sans-serif' size=2><b>Date formats:</b></font><ul>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('MM/DD/YYYY')\">MM/DD/YYYY</a></b></font></li>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('MM/YYYY')\">MM/YYYY</a></b></font></li>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('DD-MON-YYYY')\">DD-MON-YYYY</a></b></font></li>");
+ w.document.writeln("<li><font face='Arial, Helvetica, sans-serif' size=2><b><a href=\"javascript:setValue('MONTH DD, YYYY')\">MONTH DD, YYYY</a></b></font></li>");
+ w.document.writeln("</ul>");
+ }
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showFormatPopup
+--%>
+
+function showFormFieldPopup() {
+ var w = window.open("", "fieldPopup", "width=400,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Form Fields</title>");
+ w.document.writeln("<link rel=stylesheet type=text/css href='<%= AppUtils.getBaseFolderURL() %>css/raptor.css'>");
+ w.document.writeln("<script language=JavaScript>");
+ w.document.writeln("function setValue(newValue) {");
+ w.document.writeln(" window.opener.document.forma.exprFormula.selectedIndex = 12;");
+ w.document.writeln(" window.opener.exprFormulaChange(true);");
+ w.document.writeln(" window.opener.document.forma.exprText.value += newValue;");
+ w.document.writeln(" window.close();");
+ w.document.writeln("} // setValue");
+ w.document.writeln("</"+"script>");
+ w.document.writeln("</head><body>");
+
+ w.document.writeln("<table width=94% border=0 cellspacing=1 align=center>");
+ w.document.writeln(" <tr class=rbg1>");
+ w.document.writeln(" <td height=30>&nbsp;</td>");
+ w.document.writeln(" <td><b class=rtableheader>Report Form Fields</b></td>");
+ w.document.writeln(" </tr>");
+<% int iCnt = 0;
+ if(rdef.getFormFieldList()!=null)
+ for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); iCnt++) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ w.document.writeln(" <tr<%= (iCnt%2==0)?" class=rbg8":"" %>>");
+ w.document.writeln(" <td align=center valign=middle height=30><font class=rtabletext><%= (iCnt+1) %></font></td>");
+ w.document.writeln(" <td valign=middle>");
+ w.document.writeln(" <b class=rtabletext><a href=\"javascript:setValue('[<%= fft.getFieldName() %>]')\"><%= fft.getFieldName() %></a></b>");
+ w.document.writeln(" </td>");
+ w.document.writeln(" </tr>");
+<% } // for
+ if(iCnt==0) { %>
+ w.document.writeln(" <tr class=rbg3 height=30>");
+ w.document.writeln(" <td colspan=2 align=center valign=middle><b class=rtabletext>There are no form fields defined</b></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr>");
+ w.document.writeln(" <td colspan=2 align=center><br><input type=Submit class=button value=Close onClick=\"window.close();\"></td>");
+ w.document.writeln(" </tr>");
+<% } else { %>
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" </tr>");
+<% } // if
+%>
+ w.document.writeln("</table>");
+
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showFormFieldPopup
+
+function exprFormulaChange(handleText) {
+ var exprValue = "";
+ exprValue = document.forma.exprFormula.options[document.forma.exprFormula.selectedIndex].value;
+
+ if(handleText)
+ if(exprValue!='_exprText_') {
+ document.forma.exprText.value = '';
+ document.forma.exprText.disabled = true;
+ } else
+ document.forma.exprText.disabled = false;
+
+ var oldColType = "";
+ oldColType = document.forma.colType.value;
+
+ if((exprValue=="")||(exprValue=="MAX(")||(exprValue=="MIN(")||(exprValue=="_exprText_"))
+ document.forma.colType.value = document.forma.dbColType.value;
+ else
+ document.forma.colType.value = "<%= AppConstants.CT_NUMBER %>";
+
+ if(document.forma.colType.value!=oldColType) {
+ // Updating displayFormat select list
+ document.forma.displayFormat.options.length = 0;
+
+ if(document.forma.colType.value=="<%= AppConstants.CT_NUMBER %>") {
+ <% for(int i=0; i<numberFormats.length; i++) { %>
+ document.forma.displayFormat.options[<%= i %>] = new Option("<%= numberFormats[i] %>", "<%= numberFormats[i] %>");
+ <% } %>
+ } else if(document.forma.colType.value=="<%= AppConstants.CT_DATE %>") {
+ <% for(int i=0; i<dateFormats.length; i++) { %>
+ document.forma.displayFormat.options[<%= i %>] = new Option("<%= dateFormats[i] %>", "<%= dateFormats[i] %>");
+ <% } %>
+ } else {
+ <% for(int i=0; i<charFormats.length; i++) { %>
+ document.forma.displayFormat.options[<%= i %>] = new Option("<%= charFormats[i] %>", "<%= charFormats[i].equals("N/A")?"":charFormats[i] %>");
+ <% } %>
+ } // else
+
+ document.forma.displayFormat.selectedIndex = 0;
+<% if(! isCrossTab) { %>
+ setTotalDropDownValues(document.forma.colType.value=="<%= AppConstants.CT_NUMBER %>");
+<% } %>
+ if(document.layers)
+ history.go(0);
+ } // if
+} // exprFormulaChange
+
+<% if(! isEdit) { %>
+function columnDetailsChange() {
+ var selText = "";
+ selText = document.forma.columnDetails.options[document.forma.columnDetails.selectedIndex].text;
+ document.forma.displayName.value = selText.substr(selText.indexOf('.')+1);
+
+ var selValue = "";
+ selValue = document.forma.columnDetails.options[document.forma.columnDetails.selectedIndex].value;
+ document.forma.dbColType.value = selValue.substr(selValue.lastIndexOf('|')+1);
+
+ exprFormulaChange(false);
+
+ document.forma.displayFormat.selectedIndex = 0;
+} // columnDetailsChange
+<% } %>
+
+function showMapPopup() {
+ var colType = document.forma.colType.value;
+ var displayName = document.forma.displayName.value;
+ var displayFormat = document.forma.displayFormat.options[document.forma.displayFormat.selectedIndex].value;
+<% if(isEdit) { %>
+ var colName = "<%= currColumn.getDbColName() %>";
+ var tableId = "<%= rdef.getColumnTableById(currColumn.getColId()).getTableId() %>";
+<% } else { %>
+ var selValue = "";
+ selValue = document.forma.columnDetails.options[document.forma.columnDetails.selectedIndex].value;
+ var colName = selValue.substr(selValue.indexOf('|')+1, selValue.lastIndexOf('|')-selValue.indexOf('|')-1);
+ var tableId = selValue.substr(0, selValue.indexOf('|'));
+<% } %>
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.map&colName="+colName+"&colType="+colType+"&displayName="+escape(displayName)+"&displayFormat="+escape(displayFormat)+"&tableId="+tableId, "mapPopup", "width=400,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showMapPopup
+<% } // if(! isSQLBased)
+%>
+
+function verifyCrossTabSemaphore() {
+<% if(isCrossTab) { %>
+ if( (document.forma.crossTabValue.options[document.forma.crossTabValue.selectedIndex].value!="<%= AppConstants.CV_VALUE %>")
+ &&(document.forma.semaphore.selectedIndex!=0)) {
+ alert("You cannot assign Advanced Formatting to this column unless the Column Usage in Cross-Tab is Report values.");
+ document.forma.semaphore.selectedIndex = 0;
+ return false;
+ }
+<% } %>
+ return true;
+} // verifyCrossTabSemaphore
+
+function showSemaphorePopup() {
+ var semaphoreId = "";
+ semaphoreId = document.forma.semaphore.options[document.forma.semaphore.selectedIndex].value;
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.semaphore&semaphoreId="+semaphoreId, "semaphorePopup", "width=720,height=400,location=no,menubar=no,toolbar=no,status=yes,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showSemaphorePopup
+
+function updateSemaphoreList(semId, semName) { // Returns the position of the current semaphore in the list
+ var lSize = 0;
+ var selIdx = 0;
+ lSize = document.forma.semaphore.options.length;
+ selIdx = document.forma.semaphore.selectedIndex;
+ for(var i=0; i<lSize; i++)
+ if(document.forma.semaphore.options[i].value==semId) {
+ if(document.forma.semaphore.options[i].text!=semName) {
+ document.forma.semaphore.options[i] = new Option(semName, semId);
+ document.forma.semaphore.selectedIndex = selIdx;
+ } // if
+
+ return i;
+ } // if
+
+ document.forma.semaphore.options[lSize] = new Option(semName, semId);
+ return lSize;
+} // updateSemaphoreList
+
+function showSemaphoreImportPopup() {
+ if(document.forma.drillDownCtl.selectedIndex==0||document.forma.drillDownCtl.selectedIndex<=tableDrillDownCount) {
+ alert("You need to select a report from the list, and then click this button\n"+
+ "to import all the Advanced Display Formattings from selected report into\n"+
+ "this report. No Advanced Display Formattings have been imported.");
+ return;
+ } // if
+
+ var ddValue = "";
+ ddValue = document.forma.drillDownCtl.options[document.forma.drillDownCtl.selectedIndex].value;
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.import.semaphore&<%= AppConstants.RI_REPORT_ID %>="+ddValue, "semaphoreImportPopup", "width=400,height=250,location=no,menubar=no,toolbar=no,status=yes,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showSemaphoreImportPopup
+
+function showImageOptions() {
+ var selectionType= document.forma.anchor.options[document.forma.anchor.selectedIndex].value;
+ if (selectionType == "IMAGE") {
+ //document.getElementById("imageSelectionDiv").style.display='block';
+ } else {
+ document.getElementById("imageSelectionDiv").style.display='none';
+ }
+}
+
+function showDisplayFormats() {
+
+ var colType= document.forma.colType.options[document.forma.colType.selectedIndex].value;
+ if (colType == "<%=AppConstants.CT_HYPERLINK%>") {
+ document.getElementById("dataFormatDiv").style.display='none';
+ //document.getElementById("hyperlinkDiv").style.display='block';
+ } else {
+ document.getElementById("hyperlinkDiv").style.display='none';
+ //document.getElementById("dataFormatDiv").style.display='block';
+ }
+ var dataFormat = document.forma.colDataFormat;
+ dataFormat.options.length = 0;
+
+ dataFormat.options[dataFormat.options.length] = new Option('Select', -1);
+ if (colType == "<%=AppConstants.CT_NUMBER%>") {
+ dataFormat.options[dataFormat.options.length] = new Option('9999999990','9999999990');
+ dataFormat.options[dataFormat.options.length] = new Option('9,999,999,990','9,999,999,990');
+ dataFormat.options[dataFormat.options.length] = new Option('9999999990.99','9999999990.99');
+ dataFormat.options[dataFormat.options.length] = new Option('9,999,999,990.99','9,999,999,990.99');
+ dataFormat.options[dataFormat.options.length] = new Option('$9,999,999,990.99','$9,999,999,990.99');
+ dataFormat.options[dataFormat.options.length] = new Option('$9,999,999,990.999','$9,999,999,990.999');
+ var lSize = dataFormat.options.length;
+ for(var i=0; i<lSize; i++) {
+ if(dataFormat.options[i].value=="<%=currColumn.getColFormat()%>") {
+ dataFormat.options[i].selected = true;
+ }
+ }
+ if(document.getElementById("filterDateColumn")) document.getElementById("filterDateColumn").style.display = "none";
+
+ }
+ if (colType == "<%=AppConstants.CT_DATE%>") {
+ dataFormat.options[dataFormat.options.length] = new Option('MM/DD/YYYY','MM/DD/YYYY');
+ dataFormat.options[dataFormat.options.length] = new Option('MM/YYYY','MM/YYYY');
+ dataFormat.options[dataFormat.options.length] = new Option('DD-MON-YYYY','DD-MON-YYYY');
+ dataFormat.options[dataFormat.options.length] = new Option('Month DD, YYYY','Month DD, YYYY');
+ dataFormat.options[dataFormat.options.length] = new Option('Month, YYYY','Month, YYYY');
+ dataFormat.options[dataFormat.options.length] = new Option('MM/DD/YYYY HH24:MI:SS','MM/DD/YYYY HH24:MI:SS');
+ dataFormat.options[dataFormat.options.length] = new Option('YYYY/MM/DD HH24:MI:SS','YYYY/MM/DD HH24:MI:SS');
+ dataFormat.options[dataFormat.options.length] = new Option('YYYY','YYYY');
+ var lSize = dataFormat.options.length;
+ for(var i=0; i<lSize; i++) {
+ if(dataFormat.options[i].value=="<%=currColumn.getColFormat()%>") {
+ dataFormat.options[i].selected = true;
+ }
+ }
+ //if(document.getElementById("filterDateColumn")) document.getElementById("filterDateColumn").style.display = "block";
+
+ }
+ if (colType == "<%=AppConstants.CT_CHAR%>") {
+ dataFormat.options[dataFormat.options.length] = new Option('N/A','N/A');
+ if(document.getElementById("filterDateColumn")) document.getElementById("filterDateColumn").style.display = "none";
+ }
+
+
+}
+//-->
+</script>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+<% if(isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Column ID: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <%= currColumn.getColId() %>
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Depends on formfield: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <input type="text" style="width: 200px;" name="dependsOnFormField" value="<%= nvl(dependsOnFormField,"")%>"></input> </tr>
+<% } // if(! isSQLBased)
+%>
+<% if(isCrossTab) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Column Usage in Cross-Tab: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="crossTabValue"onChange="setTotalDropDownValues(this.options[this.selectedIndex].value=='<%= AppConstants.CV_VALUE %>')">
+ <option value="<%= AppConstants.CV_ROW %>"<%= isEdit?(nvl(currColumn.getCrossTabValue()).equals(AppConstants.CV_ROW)?" selected":""):" selected" %>><%= rdef.getCrossTabDisplayValue(AppConstants.CV_ROW) %>
+ <option value="<%= AppConstants.CV_COLUMN %>"<%= (isEdit&&nvl(currColumn.getCrossTabValue()).equals(AppConstants.CV_COLUMN))?" selected":"" %>><%= rdef.getCrossTabDisplayValue(AppConstants.CV_COLUMN) %>
+ <option value="<%= AppConstants.CV_VALUE %>"<%= (isEdit&&nvl(currColumn.getCrossTabValue()).equals(AppConstants.CV_VALUE))?" selected":"" %>><%= rdef.getCrossTabDisplayValue(AppConstants.CV_VALUE) %>
+ <option value=""<%= (isEdit&&(nvl(currColumn.getCrossTabValue()).length()==0))?" selected":"" %>>Invisible/Filter
+ </select></font></td>
+ </tr>
+<% } %>
+<% if(! isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Table Column: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% if(isEdit) { %>
+ <%= nvl(rdef.getColumnLabel(currColumn), currColumn.getDbColName()) /*currColumn.getColName()*/ %>
+ <% } else { %>
+ <select name="columnDetails" onChange="columnDetailsChange();">
+<% int icnt = 0;
+ String remoteDbPrefix = dbInfo;
+ for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next();
+
+ Vector dbColumns = DataCache.getReportTableDbColumns(dst.getTableName().toUpperCase(),remoteDbPrefix);
+ if(dbColumns!=null)
+ for(int i=0; i<dbColumns.size(); i++) {
+ DBColumnInfo dbCol = (DBColumnInfo) dbColumns.get(i);
+ //if(dst.getTableName().toUpperCase().equals(dbCol.getTableName())) {
+%>
+ <option value="<%= dst.getTableId() %>|<%= dbCol.getColName() %>|<%= dbCol.getColType() %>"<%= (icnt==0)?" selected":"" %>>[<%= dst.getDisplayName() %>].<%= dbCol.getLabel() %>
+<% if(icnt==0) {
+ dispName = dbCol.getLabel();
+ dbColType = dbCol.getColType();
+ colType = dbColType;
+ }
+ icnt++;
+ //} // if
+ } // for
+ } // for
+%>
+ </select>
+ <% } %>
+ <input type="hidden" name="dbColType" value="<%= dbColType %>">
+ <input type="hidden" name="colType" value="<%= colType %>">
+ </font></td>
+ </tr>
+<% } // if(! isSQLBased)
+%>
+
+<% if(isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Datatype: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="colType" style="width: 100px;" onChange="showDisplayFormats();">
+ <option value="0"> Select</option>
+ <option value="<%=AppConstants.CT_NUMBER%>" <%=currColumn.getColType().equals(AppConstants.CT_NUMBER)?" selected": ""%>> Number </option>
+ <option value="<%=AppConstants.CT_DATE%>" <%=currColumn.getColType().equals(AppConstants.CT_DATE)?" selected": ""%>> Date</option>
+ <option value="<%=AppConstants.CT_CHAR%>" <%=currColumn.getColType().equals(AppConstants.CT_CHAR)?" selected": ""%>> Character</option>
+ <option value="<%=AppConstants.CT_HYPERLINK%>" <%=currColumn.getColType().equals(AppConstants.CT_HYPERLINK)?" selected": ""%>> Hyperlink</option>
+ </select>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Group By Pos: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="groupByPos" style="width: 100px;">
+ <option value="0"> Select</option>
+ <option value="1" <%=(currColumn.getGroupByPos()!=null && currColumn.getGroupByPos()==1)?" selected": ""%>> 1 </option>
+ </select>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Custom Text for Sub-Total: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <font class=rtabletext>
+ <input type="text" size="30" maxlength="500" style="width: 100px;" class=rtabletext name="subTotalCustomText" value="<%= isEdit?(currColumn.getSubTotalCustomText()!=null?currColumn.getSubTotalCustomText():"Sub Total"):"Sub Total" %>"/>
+ </font>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Hide Repeated Values : </font></td>
+ <td class=rbg3 width="50%" align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="hideRepeatedKeys" value="Y" <%=(currColumn.isHideRepeatedKey()!=null && currColumn.isHideRepeatedKey().booleanValue())?" checked":"" %>>
+ </font>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Multi group Column Level: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="multiGroupColLevel" style="width: 100px;">
+ <option value="0"> Select</option>
+ <option value="-1" <%=(currColumn.getLevel()!=null && currColumn.getLevel()==-1)?" selected": ""%>> AUXILIARY-COLUMN </option>
+ <option value="1" <%=(currColumn.getLevel()!=null && currColumn.getLevel()==1)?" selected": ""%>> 1 </option>
+ <option value="2" <%=(currColumn.getLevel()!=null && currColumn.getLevel()==2)?" selected": ""%>> 2 </option>
+ <option value="3" <%=(currColumn.getLevel()!=null && currColumn.getLevel()==3)?" selected": ""%>> 3 </option>
+ <option value="4" <%=(currColumn.getLevel()!=null && currColumn.getLevel()==4)?" selected": ""%>> 4 </option>
+ </select>
+ </font>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Multi group Column Range : </font>
+ <font class=rtabletext>Colspan : </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <font class=rtabletext>
+ <input type="text" size="30" style="width: 100px;" maxlength="500" class=rtabletext name="colspan" value="<%= isEdit?(currColumn.getColspan()!=null?currColumn.getColspan():""):"" %>"/>
+
+ </font>
+ </td>
+ </tr>
+
+ <tr id ="dataFormatDiv">
+ <td colspan="2" class=rbg2>
+ <table width="100%" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg2 width="25%" align="right" height="30"><font class=rtabletext>Dataformat: </font></td>
+ <td class=rbg3 width="50%" align="left" nowrap><font class=rtabletext>
+ <select name="colDataFormat" style="width: 100px;">
+ </select>
+ </font>
+ </td>
+ </tr>
+ <% if(!isCrossTab) { %>
+ <tr id="filterDateColumn">
+ <td class=rbg2 width="25%" align="right" height="30"><font class=rtabletext>Enhanced Pagination: </font></td>
+ <td class=rbg3 width="50%" align="left" nowrap><font class=rtabletext>
+ <input type="checkbox" name="enhancedPagination" value="Y" <%=(currColumn.isEnhancedPagination()!=null && currColumn.isEnhancedPagination().booleanValue())?" checked":"" %> />
+ </font>
+ </td>
+ </tr>
+ <%} %>
+
+ </table>
+ </td>
+ </tr>
+ <tr id ="hyperlinkDiv">
+ <td colspan="2">
+ <table width="100%" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg2 width="25%" align="right" height="30"><font class=rtabletext>URL: </font></td>
+ <td class=rbg3 width="50%" align="left" nowrap><font class=rtabletext>
+ <input type="text" size="30" maxlength="500" class=rtabletext name="hyperlinkURL" value="<%= isEdit?currColumn.getHyperlinkURL():"" %>"/>
+ </font>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 width="25%" align="right" height="30"><font class=rtabletext>Anchor: </font></td>
+ <td class=rbg3 width="50%" align="left" nowrap><font class=rtabletext>
+ <select name="anchor" onChange="showImageOptions()">
+ <option value="0"> Select</option>
+ <option value="VALUE" <%=nvl(currColumn.getHyperlinkType()).equals("VALUE")?" selected": ""%>> Value Of the Column </option>
+ <option value="IMAGE" <%=nvl(currColumn.getHyperlinkType()).equals("IMAGE")?" selected": ""%>> IMAGE</option>
+ </select>
+ </font>
+ </td>
+ </tr>
+ <tr id="imageSelectionDiv" style="display:none;">
+ <td class=rbg2 width="25%" height="30" align="right">
+ <font class=rtabletext>Select Image for anchor: </font>
+ </td>
+ <td width="50%" align="left">
+ <font class=rtabletext>
+ <select id = "actionImg" name="actionImg" >
+ <option value=''> <!-- SELECT --></option>
+ <%
+ if(!actionImgMap.isEmpty()) {
+ for( Iterator itr=actionImgMap.entrySet().iterator(); itr.hasNext(); ) {
+ Map.Entry e = (Map.Entry)itr.next();
+ String image_id = (String)e.getKey();
+ String image_loc = (String)e.getValue();
+ %>
+ <%
+ if (nvl(AppUtils.getRequestNvlValue(request, "actionImg")).length()>0 && !(AppUtils.getRequestNvlValue(request, "pdfImg").equals(currColumn.getActionImg())) ) {
+ if(image_loc .equals (AppUtils.getRequestNvlValue(request, "actionImg"))) {
+ %>
+
+ <option value='<%= image_loc %>' selected> <%=image_id %></option>
+ <%
+ } else {
+ %>
+ <option value='<%= image_loc %>'> <%=image_id %></option>
+ <%
+ }
+ } else {
+ if(image_loc .equals (currColumn.getActionImg())) {
+ %>
+
+ <option value='<%= image_loc %>' selected> <%=image_id %> </option>
+ <%
+
+ } else {
+ %>
+ <option value='<%= image_loc %>'> <%=image_id %></option>
+ <%
+ }
+ }
+ %>
+
+ <% }
+ }
+ %>
+ </select>
+ </font>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+<% } %>
+ <tr>
+ <td class=rbg2 align="right" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Display Name: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <input type="text" style="width: 100px;" size="30" maxlength="60" class=rtabletext name="displayName" value="<%= isEdit?currColumn.getDisplayName():dispName %>"></font></td>
+ </tr>
+<% if(! isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display Format: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <!--input type="text" size="20" maxlength="30" name="displayFormat" value="< %= isEdit?nvl(currColumn.getColFormat()):"" % >" onFocus="blur();"></font>
+ <a href="javascript:showFormatPopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Select from list" width="12" height="12"></a-->
+ <select name="displayFormat" style="width: 100px;" >
+ <% String[] fmt;
+ if(colType.equals(AppConstants.CT_NUMBER))
+ fmt = numberFormats;
+ else if(colType.equals(AppConstants.CT_DATE))
+ fmt = dateFormats;
+ else
+ fmt = charFormats;
+ for(int i=0; i<fmt.length; i++) { %>
+ <option value="<%= fmt[i].equals("N/A")?"":(fmt[i].startsWith("Month")?("fm"+fmt[i]):fmt[i]) %>"<%= (isEdit&&(nvl(currColumn.getColFormat()).toUpperCase().equals(fmt[i].toUpperCase())||("fm"+nvl(currColumn.getColFormat())).toUpperCase().equals(fmt[i].toUpperCase())))?" selected":"" %>><%= fmt[i] %>
+ <% } %>
+ </select></font></td>
+ </tr>
+<% } // if(! isSQLBased)
+%>
+
+<% if (false) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display Width: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <% if (currColumn.getDisplayWidth()<=0) { currColumn.setDisplayWidth(10); } %>
+ <select name="displayWidth" style="width: 100px;" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="10"<%= (isEdit&&(currColumn.getDisplayWidth()<=0 || currColumn.getDisplayWidth()==10))?"":" selected" %>>10%
+ <option value="20"<%= (isEdit&&(currColumn.getDisplayWidth()==20))?" selected":"" %>>20%
+ <option value="30"<%= (isEdit&&(currColumn.getDisplayWidth()==30))?" selected":"" %>>30%
+ <option value="40"<%= (isEdit&&(currColumn.getDisplayWidth()==40))?" selected":"" %>>40%
+ <option value="50"<%= (isEdit&&(currColumn.getDisplayWidth()==50))?" selected":"" %>>50%
+ <option value="60"<%= (isEdit&&(currColumn.getDisplayWidth()==60))?" selected":"" %>>60%
+ <option value="70"<%= (isEdit&&(currColumn.getDisplayWidth()==70))?" selected":"" %>>70%
+ <option value="80"<%= (isEdit&&(currColumn.getDisplayWidth()==80))?" selected":"" %>>80%
+ <option value="90"<%= (isEdit&&(currColumn.getDisplayWidth()==90))?" selected":"" %>>90%
+ <option value="100"<%= (isEdit&&(currColumn.getDisplayWidth()==100))?" selected":"" %>>100%
+ <% if(!((currColumn.getDisplayWidth()%10 == 0) && (currColumn.getDisplayWidth() > 100)) ) {
+ %>
+ <option value="<%=currColumn.getDisplayWidth()%>" selected><%=currColumn.getDisplayWidth()%>%</option>
+ <%
+ }
+ %>
+
+ </select></font></td>
+ </tr>
+ <% } %>
+ <% System.out.println("WidthInPxls " + currColumn.getDisplayWidthInPxls()); %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display Width (In Pxls): </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <input type="text" style="width: 100px;" class="rtabletext" size="40" maxlength="100" id="widthInPxls" name="widthInPxls" value="<%= (nvl(AppUtils.getRequestNvlValue(request, "widthInPxls")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "widthInPxls").equals(currColumn.getDisplayWidthInPxls()))?
+ AppUtils.getRequestNvlValue(request, "widthInPxls"):currColumn.getDisplayWidthInPxls()):
+ currColumn.getDisplayWidthInPxls() %>">
+
+</font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>No Wrap ? </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="nowrap" style="width: 100px;" >
+ <option value="Y"<%= isEdit?(nvl(currColumn.getNowrap(),"N").startsWith("Y")?" selected":(!nvl(currColumn.getNowrap(),"False").startsWith("N") && org.openecomp.portalsdk.analytics.system.Globals.IsGlobalNoWrap()?" selected": "")):"" %>>Yes
+ <option value="N"<%= (isEdit&&(nvl(currColumn.getNowrap(),"False").startsWith("N")))?" selected":"" %>>No
+ </select></font></td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right"><font class=rtabletext>Indent Parameter to display value </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="indentation" style="width: 100px;" >
+ <option value="0"> Select</option>
+ <option value="1" <%= AppUtils.getRequestNvlValue(request, "indentation").equals("1") ? " selected":((AppUtils.getRequestNvlValue(request, "indentation").length()<=0)?(currColumn.getIndentation()!=null && currColumn.getIndentation().intValue()==1?" selected":""):"") %>> 1 </option>
+ <option value="2" <%= AppUtils.getRequestNvlValue(request, "indentation").equals("2") ? " selected":((AppUtils.getRequestNvlValue(request, "indentation").length()<=0)?(currColumn.getIndentation()!=null && currColumn.getIndentation().intValue()==2?" selected":""):"") %>> 2 </option>
+ <option value="3" <%= AppUtils.getRequestNvlValue(request, "indentation").equals("3") ? " selected":((AppUtils.getRequestNvlValue(request, "indentation").length()<=0)?(currColumn.getIndentation()!=null && currColumn.getIndentation().intValue()==3?" selected":""):"") %>> 3 </option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display Alignment: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="displayAlign" style="width: 100px;" >
+ <option value="Left"<%= isEdit?(nvl(currColumn.getDisplayAlignment(), "Left").equals("Left")?" selected":""):" selected" %>>Left
+ <option value="Center"<%= (isEdit&&nvl(currColumn.getDisplayAlignment()).equals("Center"))?" selected":"" %>>Center
+ <option value="Right"<%= (isEdit&&nvl(currColumn.getDisplayAlignment()).equals("Right"))?" selected":"" %>>Right
+ </select></font></td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display (Header) Alignment: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="displayHeaderAlign" style="width: 100px;" >
+ <option value="Left"<%= isEdit?(nvl(currColumn.getDisplayHeaderAlignment(), "Left").equals("Left")?" selected":""):" selected" %>>Left
+ <option value="Center"<%= (isEdit&&nvl(currColumn.getDisplayHeaderAlignment()).equals("Center"))?" selected":"" %>>Center
+ <option value="Right"<%= (isEdit&&nvl(currColumn.getDisplayHeaderAlignment()).equals("Right"))?" selected":"" %>>Right
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Sortable? </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="sortable" style="width: 100px;" >
+ <option value="N"<%= isEdit?((currColumn.isIsSortable()!=null && !currColumn.isIsSortable())?" selected":""):" selected" %>>No
+ <option value="Y"<%= (isEdit&&currColumn.isIsSortable()!=null && currColumn.isIsSortable())?" selected":"" %>>Yes
+ </select></font></td>
+ </tr>
+
+
+ <% if(! isCrossTab) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Visible? </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="visible" style="width: 100px;" >
+ <option value="Y"<%= isEdit?(currColumn.isVisible()?" selected":""):" selected" %>>Yes
+ <option value="N"<%= (isEdit&&(! currColumn.isVisible()))?" selected":"" %>>No
+ </select></font></td>
+ </tr>
+ <% if(! isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Group By? </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="groupBreak" style="width: 100px;" >
+ <option value="Y"<%= (isEdit&&currColumn.isGroupBreak())?" selected":"" %>>Yes
+ <option value="N"<%= isEdit?(currColumn.isGroupBreak()?"":" selected"):" selected" %>>No
+ </select></font></td>
+ </tr>
+ <% } %>
+ <% } %>
+ <!--tr class=rbg2>
+ <td class=rbg2 height="30" align="right" width="25%"><font face="Arial, Helvetica, sans-serif" size="1" class=rtabletext>Column Type </font></td>
+ <td align="left" width="50%" class=rbg3><font face="Arial, Helvetica, sans-serif" size="1" class=rtabletext>
+ <select name="calculated">
+ <option value="N"< %= (isEdit&&currColumn.isCalculated())?"":" selected" % >>Table Column
+ <option value="Y"< %= (isEdit&&currColumn.isCalculated())?" selected":"" % >>Expression
+ </select></font></td>
+ </tr-->
+ <% if(! isSQLBased) { %>
+<%
+boolean isOtherExpr = isEdit&&currColumn.isCalculated()&&
+ (! nvl(currColumn.getColName()).startsWith("SUM( "))&&
+ (! nvl(currColumn.getColName()).startsWith("MAX( "))&&
+ (! nvl(currColumn.getColName()).startsWith("MIN( "))&&
+ (! nvl(currColumn.getColName()).startsWith("COUNT(*)"))&&
+ (! nvl(currColumn.getColName()).startsWith("COUNT(ALL "))&&
+ (! nvl(currColumn.getColName()).startsWith("COUNT(DISTINCT "))&&
+ (! nvl(currColumn.getColName()).startsWith("AVG(ALL "))&&
+ (! nvl(currColumn.getColName()).startsWith("AVG(DISTINCT "))&&
+ (! nvl(currColumn.getColName()).startsWith("STDDEV(ALL "))&&
+ (! nvl(currColumn.getColName()).startsWith("STDDEV(DISTINCT "))&&
+ (! nvl(currColumn.getColName()).startsWith("VARIANCE(ALL "))&&
+ (! nvl(currColumn.getColName()).startsWith("VARIANCE(DISTINCT "));
+%>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Expression: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="exprFormula" onChange="exprFormulaChange(true);" style="width: 100px;" >
+ <option value=""<%= (isEdit&&currColumn.isCalculated())?"":" selected" %>>
+ <option value="SUM("<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("SUM( "))?" selected":"" %>>Sum
+ <option value="MAX("<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("MAX( "))?" selected":"" %>>Max
+ <option value="MIN("<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("MIN( "))?" selected":"" %>>Min
+ <option value="COUNT(*)"<%= (isEdit&&currColumn.isCalculated()&&(nvl(currColumn.getColName()).startsWith("COUNT(*)")||nvl(currColumn.getColName()).startsWith("COUNT(ALL ")))?" selected":"" %>>Count All
+ <option value="COUNT(DISTINCT"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("COUNT(DISTINCT "))?" selected":"" %>>Count Distinct
+ <option value="AVG(ALL"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("AVG(ALL "))?" selected":"" %>>Average All
+ <option value="AVG(DISTINCT"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("AVG(DISTINCT "))?" selected":"" %>>Average Distinct
+ <option value="STDDEV(ALL"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("STDDEV(ALL "))?" selected":"" %>>Standard Deviation All
+ <option value="STDDEV(DISTINCT"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("STDDEV(DISTINCT "))?" selected":"" %>>Standard Deviation Distinct
+ <option value="VARIANCE(ALL"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("VARIANCE(ALL "))?" selected":"" %>>Variance All
+ <option value="VARIANCE(DISTINCT"<%= (isEdit&&currColumn.isCalculated()&&nvl(currColumn.getColName()).startsWith("VARIANCE(DISTINCT "))?" selected":"" %>>Variance Distinct
+ <option value="_exprText_"<%= isOtherExpr?" selected":"" %>>---------- Other ----------
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Expression Other: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <input type="text" size="30" name="exprText"<%= isOtherExpr?" value=\""+nvl(currColumn.getColName())+"\"":" value=\"\" disabled" %> onFocus="if(document.forma.exprFormula.options[document.forma.exprFormula.selectedIndex].value!='_exprText_') blur();"></font>
+ <a href="javascript:showMapPopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Define custom values mapping" width="12" height="12"></a>&nbsp;
+ <a href="javascript:showFormFieldPopup()"><font class=rtabletext>Form Fields</font></a>
+ </td>
+ </tr>
+<% } // if(! isSQLBased)
+%>
+<%-- if(! isCrossTab) { --%>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Drill-down Link: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <input type="hidden" name="drillDownURL" value="<%= isEdit?nvl(currColumn.getDrillDownURL()):"" %>">
+ <input type="hidden" name="drillDownParams" value="<%= isEdit?nvl(currColumn.getDrillDownParams()):"" %>">
+ <input type="hidden" name="drillDownSuppress" value="<%= isEdit?nvl(currColumn.getDrillDownType()):"" %>">
+ <input type="hidden" name="drillDownRequest" value="<%= isEdit?getRequestParam(currColumn.getDrillDownParams()):"" %>">
+ <input type="hidden" name="drillDownPopUp" value="<%= isEdit?(currColumn.isDrillinPoPUp()!=null?currColumn.isDrillinPoPUp():""):"" %>">
+ <select name="drillDownCtl" onChange="showDrillDownPopup(true)" style="width: 300px;" >
+ <option value=""<%= (isEdit&&nvl(currColumn.getDrillDownURL()).length()>0)?"":" selected" %>>----- No Drill-down -----
+ <% int tableDrillDownCount = 0;
+ if(! isCrossTab)
+ for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i);
+ if(nvl(tableSource.getViewAction()).length()>0&&rdef.getTableByDBName(tableSource.getTableName())!=null) {
+ tableDrillDownCount++; %>
+ <option value="<%= tableSource.getViewAction() %>"<%= (isEdit&&nvl(currColumn.getDrillDownURL()).equals(AppUtils.getBaseActionURL()+tableSource.getViewAction()))?" selected":"" %>><%= tableSource.getDisplayName() %> Record Details
+ <% } // if
+ } // for
+
+ Vector publicReportIdNames = DataCache.getPublicReportIdNames();
+ for(int i=0; i<publicReportIdNames.size(); i++) {
+ IdNameValue reportIdName = (IdNameValue) publicReportIdNames.get(i); %>
+ <option value="<%= reportIdName.getId() %>"<%= (isEdit&&nvl(currColumn.getDrillDownURL()).equals(reportIdName.getId()))?" selected":"" %>>Public Report: <%= reportIdName.getName() %>
+ <% } %>:
+
+ <%
+ //if(!AppUtils.isSuperUser(request)) {
+ Vector groupReportIdNames = DataCache.getGroupAccessibleReportIdNames(AppUtils.getUserID(request),AppUtils.getUserRoles(request));
+ for(int j=0; j<groupReportIdNames.size(); j++) {
+ IdNameValue reportIdName = (IdNameValue) groupReportIdNames.get(j); %>
+ <option value="<%= reportIdName.getId() %>"<%= (isEdit&&nvl(currColumn.getDrillDownURL()).equals(reportIdName.getId()))?" selected":"" %>>Group Report: <%= reportIdName.getName() %>
+ <% } %>
+ <%// }
+ %>
+ <%
+ //if(!AppUtils.isSuperUser(request)) {
+ Vector privateReportIdNames = DataCache.getPrivateAccessibleReportIdNames(AppUtils.getUserID(request),AppUtils.getUserRoles(request));
+ for(int j=0; j<privateReportIdNames.size(); j++) {
+ IdNameValue reportIdName = (IdNameValue) privateReportIdNames.get(j); %>
+ <option value="<%= reportIdName.getId() %>"<%= (isEdit&&nvl(currColumn.getDrillDownURL()).equals(reportIdName.getId()))?" selected":"" %>>Private Report: <%= reportIdName.getName() %>
+ <% } %>
+ <% // }
+%>
+ </select></font>
+ <a href="javascript:showDrillDownPopup(false)"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Set new parameters configuration" width="12" height="12"></a>
+ &nbsp;&nbsp;
+ <a href="javascript:showSemaphoreImportPopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>lookup_arrow.gif" alt="Import advanced formatting from selected report" width="17" height="17"></a>
+ </td>
+ </tr>
+<script language="JavaScript">
+<!--
+ tableDrillDownCount = <%= tableDrillDownCount %>;
+//-->
+</script>
+ <% String curSemId = "";
+ if(isEdit)
+ curSemId = nvl(currColumn.getSemaphoreId()); %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Advanced Display Formatting: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <select name="semaphore"" onChange="verifyCrossTabSemaphore()" style="width: 300px;" >
+ <option value=""<%= (curSemId.length()==0)?" selected":"" %>>----- Do Not Use Advanced Formatting -----
+ <% if(rdef.getSemaphoreList()!=null)
+ for(Iterator iter=rdef.getSemaphoreList().getSemaphore().iterator(); iter.hasNext(); ) {
+ SemaphoreType semaphore = (SemaphoreType) iter.next(); %>
+ <option value="<%= semaphore.getSemaphoreId() %>"<%= curSemId.equals(semaphore.getSemaphoreId())?" selected":"" %>><%= semaphore.getSemaphoreName() %>
+ <% } // for
+ %>
+ </select></font>
+ <input type="hidden" name="semaphoreTypeHidden" value=""/>
+ <a href="javascript:showSemaphorePopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Define advanced formatting" width="12" height="12"></a>
+ </td>
+ </tr>
+<%-- } --%>
+
+<% boolean canHaveTotal = false;
+ if(isSQLBased) {
+ //canHaveTotal = (! isCrossTab);
+ canHaveTotal = (!isCrossTab)||(isEdit&&nvl(currColumn.getCrossTabValue()).equals(AppConstants.CV_VALUE));
+ } else {
+ if(isCrossTab)
+ canHaveTotal = (isEdit&&nvl(currColumn.getCrossTabValue()).equals(AppConstants.CV_VALUE));
+ else
+ canHaveTotal = colType.equals(AppConstants.CT_NUMBER);
+ }
+
+ String colTotalRow = "";
+ String colTotal = isEdit?nvl(currColumn.getDisplayTotal()):"";
+ if(isCrossTab&&colTotal.indexOf('|')>=0) {
+ colTotalRow = colTotal.substring(colTotal.indexOf('|')+1);
+ colTotal = colTotal.substring(0, colTotal.indexOf('|'));
+ } %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Total for <%= isCrossTab?"each":"the" %> column: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="displayTotal" style="width: 300px;" >
+ <option value=""<%= (colTotal.length()>0)?"":" selected" %>>--- Do Not Display (Faster Report Execution) ---
+ <% if(canHaveTotal) {
+ for(int i=0; i<AppConstants.TOTAL_FUNCTIONS.getCount(); i++) {
+ IdNameValue tValue = AppConstants.TOTAL_FUNCTIONS.getValue(i); %>
+ <option value="<%= tValue.getId() %>"<%= (colTotal.startsWith(tValue.getId()))?" selected":"" %>><%= tValue.getName() %>
+ <% } // for
+ } // if
+ %>
+ </select></font></td>
+ </tr>
+<% if(isCrossTab) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Total for each row </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="displayTotalPerRow">
+ <option value=""<%= (colTotalRow.length()>0)?"":" selected" %>>--- Do Not Display (Faster Report Execution) ---
+ <% if(canHaveTotal) {
+ for(int i=0; i<AppConstants.TOTAL_FUNCTIONS.getCount(); i++) {
+ IdNameValue tValue = AppConstants.TOTAL_FUNCTIONS.getValue(i); %>
+ <option value="<%= tValue.getId() %>"<%= (colTotalRow.startsWith(tValue.getId()))?" selected":"" %>><%= tValue.getName() %>
+ <% } // for
+ } // if
+ %>
+ </select></font></td>
+ </tr>
+<% } // if(isCrossTab)
+%>
+<% if(isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>&nbsp; </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <input type="Checkbox" name="no_parse_date" value="Y"<%= (isEdit&&rdef.getColumnNoParseDateFlag(currColumn))?" checked":"" %>>
+ Do not attempt to parse values as date</font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+<% if(isCrossTab) {
+ /*if(rdef.getCrossTabColColumns().size()>0) {
+ // Col headings column already defined
+ }*/ %>
+
+ if(document.forma.crossTabValue.options[document.forma.crossTabValue.selectedIndex].value=="<%= AppConstants.CV_VALUE %>") {
+<% DataColumnType valueCol = rdef.getCrossTabValueColumn();
+ if((valueCol!=null)&&((currColumn==null)||(! currColumn.getColId().equals(valueCol.getColId())))) {
+ // Report data column already defined
+%>
+ alert("There is a column already designated for the report values.\nYou cannot have more than one column for that purpose.\nPlease change the Column Usage in Cross-Tab.");
+ document.forma.crossTabValue.focus();
+
+ return false;
+<% } else if(! isSQLBased) { %>
+ if(document.forma.exprFormula.selectedIndex==0) {
+ alert("The column designated for the report values must be an expression.\nPlease change the Column Type and select Expression.");
+ document.forma.exprFormula.focus();
+
+ return false;
+ }
+<% } %>
+ } else {
+ verifyCrossTabDrillDown();
+ verifyCrossTabSemaphore();
+ }
+<% } %>
+
+if(document.forma.displayWidth!=null && document.forma.displayWidth.options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.displayWidth.options[document.forma.displayWidth.options.selectedIndex].text)) {
+ alert("Please enter positive number greater than 1% in \"Display Width\". No Characters are allowed.");
+ return false;
+ } else {
+/* if(eval(document.forma.displayWidth.options[document.forma.displayWidth.options.selectedIndex].text) < 10) {
+ alert("Please enter positive number less than 10% in \"Desired Container Height\". No Characters are allowed.");
+ return false;
+ }
+*/
+ if(eval(document.forma.displayWidth.options[document.forma.displayWidth.options.selectedIndex].text) > 100) {
+ alert("Please enter positive number less than 100% in \"Display Width\". No Characters are allowed.");
+ return false;
+ }
+ document.forma.displayWidth.options[document.forma.displayWidth.options.selectedIndex].value=document.forma.displayWidth.options[document.forma.displayWidth.options.selectedIndex].text;
+ }
+}
+
+ if(document.forma.displayName.value=="")
+ <% if(isEdit) { %>
+ document.forma.displayName.value = "<%= currColumn.getDisplayName() %>";
+ <% } else { %>
+ document.forma.displayName.value = document.forma.tableName.options[document.forma.tableName.selectedIndex].text.substr(document.forma.tableName.options[document.forma.tableName.selectedIndex].text.indexOf('.')+1);
+ <% } %>
+
+<% if(reportCols.size()>0) { %>
+ if(false
+<% for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dc = (DataColumnType) iter.next();
+
+ if(! (isEdit&&dc.getColId().equals(currColumn.getColId()))) { %>
+ ||(document.forma.displayName.value=="<%= dc.getDisplayName() %>")
+<% }
+ } %>
+ ) {
+ alert("A column with display name "+document.forma.displayName.value+" already exists.\nPlease select another name.");
+ document.forma.displayName.focus();
+ document.forma.displayName.select();
+
+ return false;
+ }
+<% } %>
+
+ return true;
+} // dataValidate
+//-->
+showDisplayFormats();
+showImageOptions();
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+ private String getRequestParam(String s) {
+ if(nvl(s).equals("")) return s;
+ else {
+ String requestParam="";
+ int pos = 0;
+ int iCnt = 0;
+ while(s.indexOf("#",pos)!=-1) {
+ iCnt++;
+ if(iCnt>1) requestParam += "|";
+ pos = s.indexOf("#",pos)+1;
+ requestParam += s.substring(s.indexOf("#")+1,s.indexOf("]",pos));
+ }
+ return requestParam;
+ }
+
+ }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp
new file mode 100644
index 00000000..454cf7d5
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp
@@ -0,0 +1,157 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+%>
+<table class=mTAB width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=<%= isSQLBased?"5":"7" %> valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="58%"><b class=rtableheader>Column</b></td>
+<% if(isSQLBased) { %>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>ID</b></td>
+ <% if(isCrossTab) { %>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Cross-Tab Usage</b></td>
+ <% } %>
+ <td align="center" valign="Middle" width="7%"<%= isCrossTab?"":" colspan=2" %>><b class=rtableheader>Edit</b></td>
+<% } else { %>
+ <% if(isCrossTab) { %>
+ <td align="center" valign="Middle" width="14%" colspan=2><b class=rtableheader>Cross-Tab Usage</b></td>
+ <% } else { %>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Group By</b></td>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Visible</b></td>
+ <% } %>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Re-order</b></td>
+ <td align="center" valign="Middle" width="14%" colspan=2 nowrap>
+ <% if(isCrossTab) { %>
+ <input type="button" class=button value="Add" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit();">
+ <% } else { %>
+ <table border="0" cellspacing="0" cellpadding="0"><tr>
+ <td height="28"><input type="button" class=button value="Add One" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit()"></td>
+ </tr><tr>
+ <td height="28"><input type="button" class=button value="Add Multiple" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_MULTI %>';document.forma.submit()"></td>
+ </tr><tr>
+ <td height="28"><input type="button" class=button value="Re-order All" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ORDER_ALL %>';document.forma.submit()"></td>
+ </tr></table>
+ <% } %>
+ </td>
+<% } %>
+ </tr>
+<% int iCount = 0;
+ boolean visibleColExist = false;
+ boolean rowColExist = false;
+ boolean colColExist = false;
+ boolean valColExist = false;
+ List reportCols = rdef.getAllColumns();
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(dct.isVisible())
+ visibleColExist = true;
+ if(nvl(dct.getCrossTabValue()).equals(AppConstants.CV_ROW))
+ rowColExist = true;
+ if(nvl(dct.getCrossTabValue()).equals(AppConstants.CV_COLUMN))
+ colColExist = true;
+ if(nvl(dct.getCrossTabValue()).equals(AppConstants.CV_VALUE))
+ valColExist = true; %>
+ <tr class=<%=(iCount % 2 == 0)?"rowalt1":"rowalt2"%>>
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %><!--dct.getOrderSeq(): <%= dct.getOrderSeq() %>--></font></td>
+ <td><font class=rtabletext><%= dct.getDisplayName() %></font></td>
+<% if(isSQLBased) { %>
+ <td align="center"><font class=rtabletext><%= dct.getColId() %></font></td>
+ <% if(isCrossTab) { %>
+ <td align="center"><font class=rtabletext><%= nvl(rdef.getCrossTabDisplayValue(dct), "&nbsp;") %></font></td>
+ <% } %>
+ <td align="center"<%= isCrossTab?"":" colspan=2" %>><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.getElementById('<%= AppConstants.RI_WIZARD_ACTION %>').value='<%= AppConstants.WA_MODIFY %>'; document.getElementById('<%= AppConstants.RI_DETAIL_ID %>').value='<%= dct.getColId() %>'; document.forma.submit();"></td>
+<% } else { %>
+ <% if(isCrossTab) { %>
+ <td align="center" colspan=2><font class=rtabletext><%= nvl(rdef.getCrossTabDisplayValue(dct), "&nbsp;") %></font></td>
+ <% } else { %>
+ <td align="center"><font class=rtabletext><%= dct.isGroupBreak()?"Yes":"&nbsp;" %></font></td>
+ <td align="center"><font class=rtabletext><%= dct.isVisible()?"Yes":"No" %></font></td>
+ <% } %>
+ <td align="center" nowrap>
+ <% if(iCount==0) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankdown.gif" width="25" height="7">
+ <% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columnup.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_UP %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>';">
+ <% } %>
+ <% if(iCount==reportCols.size()-1) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankup.gif" width="25" height="7">
+ <% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columndown.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_DOWN %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>';">
+ <% } %>
+ </td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_EDIT %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>'; document.forma.submit();"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove column <%= dct.getDisplayName() %>?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>'; document.forma.submit();}"></td>
+<% } %>
+ </tr>
+<% } %>
+<% if(iCount==0) { %>
+ <tr class=rbg2>
+ <td colspan=<%= isSQLBased?"5":"7" %> align="center" height="30"><font class=rtabletext>No columns defined</font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+<% if(isCrossTab) {
+ if(! rowColExist) { %>
+ alert("You must have at least one column used for cross-tab row headings in the report.\nPlease add a column.");
+ return false;
+ <% } else if(! colColExist) { %>
+ alert("You must have at least one column used for cross-tab column headings in the report.\nPlease add a column.");
+ return false;
+ <% } else if(! valColExist) { %>
+ alert("You must have at least one column used for cross-tab report values in the report.\nPlease add a column.");
+ return false;
+ <% } else { %>
+ return true;
+ <% }
+ } else {
+ if(visibleColExist) { %>
+ return true;
+ <% } else { %>
+ alert("You must have at least one visible column in the report.\nPlease add a column.");
+ return false;
+ <% }
+ } %>
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp
new file mode 100644
index 00000000..fc1870c6
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp
@@ -0,0 +1,88 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+%>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=4 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="65%"><b class=rtableheader>Column</b></td>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Re-order To<br>Position</b></td>
+ </tr>
+<% int icnt = 0;
+ for(Iterator iter=rdef.getAllColumns().iterator(); iter.hasNext(); icnt++) {
+ DataColumnType dct = (DataColumnType) iter.next(); %>
+ <tr<%= (icnt%2==0)?" class=rbg8":"" %>>
+ <td align="center" height="30"><font class=rtabletext><%= icnt+1 %></font></td>
+ <td><font class=rtabletext><%= dct.getDisplayName() %></font></td>
+ <td align="center" valign="middle">
+ <input type="hidden" name="colId" value="<%= dct.getColId() %>">
+ <input type="text" size="5" maxlength="5" name="colOrder" value="<%= dct.getOrderSeq() %>">
+ </td>
+ </tr>
+<% } // for
+%>
+</table>
+ <input type="hidden" name="colOrder" value="">
+ <input type="hidden" name="colOrder" value="">
+<br>
+
+<script language="JavaScript">
+<!--
+var colNames = new Array(<%= rdef.getAllColumns().size() %>);
+<% for(int i=0; i<rdef.getAllColumns().size(); i++) {
+ DataColumnType dct = (DataColumnType) rdef.getAllColumns().get(i); %>
+colNames[<%= i %>] = "<%= dct.getDisplayName() %>";
+<% } %>
+
+function dataValidate() {
+ var val = "";
+ for(var i=0; i<document.forma.colOrder.length; i++) {
+ val = document.forma.colOrder[i].value;
+ if(val!="")
+ if(! checkPositiveInteger(val)) {
+ alert("Order Position for column "+colNames[i]+" should be a positive integer.\nPlease enter a valid value.");
+ document.forma.colOrder[i].focus();
+ document.forma.colOrder[i].select();
+
+ return false;
+ } // if
+ } // for
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp
new file mode 100644
index 00000000..33cabe7e
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp
@@ -0,0 +1,184 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="java.text.SimpleDateFormat"%>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ //boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+ String dependsOnHelp = "Custom SQL can be defined";
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED_DATAMIN);
+
+ String classifiers = nvl(rdef.getClassifier());
+ System.out.println(classifiers);
+ List reportCols = rdef.getAllColumns();
+
+ String dateAttrColId = null;
+ DataColumnType dct = null;
+
+ HashMap<String, DataColumnType> unusedNumColsMap = new HashMap<String,DataColumnType>();
+ int numColsCount = 0;
+ Iterator iter = null;
+
+ for(iter=reportCols.iterator(); iter.hasNext(); ) {
+ dct = (DataColumnType) iter.next();
+
+ if(nvl(dct.getDataMiningCol()).equals(AppConstants.DM_DATE_ATTR))
+ dateAttrColId = dct.getColId();
+
+ if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) {
+ numColsCount++;
+ if(nvl(dct.getDataMiningCol()).length()==0)
+ unusedNumColsMap.put(dct.getColId(), dct);
+ } // if
+ }
+
+ String[] fmt = { "Default", "MM/DD/YYYY", "MM/YYYY", "DD-MON-YYYY", "Month DD, YYYY", "Month, YYYY" };
+%>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" width="10%" height="30"><font class=rtabletext>Classifiers: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="classifiers">
+ <option value="" <%= classifiers.equals("")?" selected":"" %>>--- Choose Classifiers ---
+ <option value="<%= AppConstants.DM_SVM_CLASSIFIER%>" <%= classifiers.equals(AppConstants.DM_SVM_CLASSIFIER)?" selected":"" %>>SMOreg
+ <option value="<%= AppConstants.DM_GAUSSIAN_CLASSIFIER%>" <%= classifiers.equals(AppConstants.DM_GAUSSIAN_CLASSIFIER)?" selected":"" %>>Gaussian Process
+ </select></font>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Date Attribute: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="timeAttribute">
+ <% for(iter=reportCols.iterator(); iter.hasNext(); ) {
+ dct = (DataColumnType) iter.next(); %>
+ <option value="<%= dct.getColId() %>"<%= nvl(dateAttrColId /*, firstColId*/).equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+ <% } %>
+ </select></font></td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Date Format: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="timeFormat">
+ <% for(int i=0; i<fmt.length; i++) { %>
+ <option value="<%= fmt[i].equals("N/A")?"":fmt[i] %>"<%= (nvl(rdef.getForecastingTimeFormat()).equals(fmt[i].toUpperCase()))?" selected":"" %>><%= fmt[i] %>
+ <% } %>
+ </select>
+ </font></td>
+ </tr>
+
+
+ <tr>
+ <td class=rbg2 align="center" colspan="2" height="30"><font class=rtabletext>Forecasting Column:</font></td>
+ </tr>
+
+ <% for(iter=reportCols.iterator(); iter.hasNext(); ) {
+ dct = (DataColumnType) iter.next();
+ if(!nvl(dct.getDataMiningCol()).equals(AppConstants.DM_DATE_ATTR) ) {
+
+ %>
+ <tr>
+ <td class=rbg3 align="right" width="50%"><font class=rtabletext>
+
+ <% if (! unusedNumColsMap.containsKey(dct.getColId()) ) { %>
+ <% if (!dct.getDataMiningCol().equals(AppConstants.DM_DATE_ATTR)) %>
+ <input name="forecastCol" type="checkbox" value="<%=dct.getColId() %>" checked></font></td><td class=rbg3 align="left"> <%=dct.getColName() %> </td>
+ <% } else if(isSQLBased||nvl(dct.getColType()).equals(AppConstants.CT_NUMBER)) { %>
+ <input name="forecastCol" type="checkbox" value="<%=dct.getColId() %>"></font></td> <td class=rbg3 align="left"> <%=dct.getColName() %> </td>
+ <% } %>
+
+
+
+ </tr>
+ <% } %>
+ <% } %>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Forecasting Period: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="forecastingPeriod" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="-1" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="2"<%= (rdef.getForecastingPeriod()==2 )?" selected":"" %>>2
+ <option value="4"<%= (rdef.getForecastingPeriod()==4 )?" selected":"" %>>4
+ <option value="6"<%= (rdef.getForecastingPeriod()==6 )?" selected":"" %>>6
+ <option value="8"<%= (rdef.getForecastingPeriod()==8)?" selected":"" %>>8
+ <option value="10"<%= (rdef.getForecastingPeriod()==10)?" selected":"" %>>10
+ <option value="20"<%= (rdef.getForecastingPeriod()==20)?" selected":"" %>>20
+ <option value="25"<%= (rdef.getForecastingPeriod()==25)?" selected":"" %>>25
+ <option value="30"<%= (rdef.getForecastingPeriod()==30)?" selected":"" %>>30
+ </select>
+ </td>
+ </tr>
+
+</table>
+
+<script language="JavaScript">
+ function dataValidate() {
+ return true;
+ } // dataValidate
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+ private boolean isNumber(String value) { // As per Raptor def, like
+
+ // -$3,270.56
+ value = value.trim();
+ if(value.length()>2) return false;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (!(Character.isDigit(c) || c == '.' || c == '-' || c == '+' || c == ','
+ || c == '$' || c == '%'))
+ return false;
+ } // for
+
+ return true;
+ } // isNumber
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp
new file mode 100644
index 00000000..ec61e3fd
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp
@@ -0,0 +1,1122 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%--
+ Name: wizard_definition.jsp
+ Use : Shows edit page of the meta information of the report.
+
+ Change Log
+ ==========
+
+ 14-Jul-2009 : Version 8.4 (Sundar);
+
+ <UL>
+ <LI> Schedule functionality is available for Dashboard.</LI>
+ </UL>
+--%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.Set" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.Reports"%>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ String dbInfo = null;
+ dbInfo = rdef.getDBInfo();
+ HashMap hashMap = ReportLoader.loadReportsToAddInDashboard(request);
+ Set mapSet = hashMap.entrySet();
+ Map.Entry me;
+
+ HashMap pdfImgMap = ReportLoader.loadPDFImgLookUp();
+%>
+<% /*boolean displayAdditionalFields = AppUtils.getRequestNvlValue(request, "showAdditionalFields").equals("Y")||
+ AppUtils.getRequestNvlValue(request, "additionalFieldsShown").equals("Y")||
+ rdef.isRuntimeColSortDisabled()||
+ rdef.isDisplayOptionHideForm()||
+ rdef.isDisplayOptionHideChart()||
+ rdef.isDisplayOptionHideData()||
+ rdef.isDisplayOptionHideBtns()||
+ (rdef.getNumFormColsAsInt()>1)||
+ (nvl(rdef.getReportTitle()).length()>0)||
+ (nvl(rdef.getReportSubTitle()).length()>0)||
+ (nvl(rdef.getReportHeader()).length()>0)||
+ (nvl(rdef.getReportFooter()).length()>0); */%>
+
+
+<%
+ boolean displayDashboard = false;
+ /*displayDashboard = AppUtils.getRequestNvlValue(request, "showDashboardOptions").equals("Y")||
+ AppUtils.getRequestNvlValue(request, "dashboardOptionsShown").equals("Y")||
+ rdef.isDashboardOptionHideBtns()||
+ rdef.isDashboardOptionHideChart()||
+ rdef.isDashboardOptionHideData();
+ */
+ //displayDashboard = AppUtils.getRequestNvlValue(request, "showDashboardOptions").equals("Y");
+ boolean dashboard = rdef.isDashboardType();
+ //if(AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()>0) dashboard=displayDashboard;
+%>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/script.js"></script>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/editabledropdown.js"></script>
+
+<script type="text/javascript" language="JavaScript">
+<!-- Copyright 2006,2007 Bontrager Connection, LLC
+// http://bontragerconnection.com/ and http://willmaster.com/
+// Version: July 28, 2007
+var cX = 0; var cY = 0; var rX = 0; var rY = 0;
+function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
+function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}
+if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
+else { document.onmousemove = UpdateCursorPosition; }
+function AssignPosition(d) {
+if(self.pageYOffset) {
+ rX = self.pageXOffset;
+ rY = self.pageYOffset;
+ }
+else if(document.documentElement && document.documentElement.scrollTop) {
+ rX = document.documentElement.scrollLeft;
+ rY = document.documentElement.scrollTop;
+ }
+else if(document.body) {
+ rX = document.body.scrollLeft;
+ rY = document.body.scrollTop;
+ }
+if(document.all) {
+ cX += rX;
+ cY += rY;
+ }
+d.style.left = (cX+10) + "px";
+d.style.top = (cY+10) + "px";
+}
+function HideContent(d) {
+if(d.length < 1) { return; }
+document.getElementById(d).style.display = "none";
+}
+function HideAllContent() {
+ var uniquearrays = new Array();
+ uniquearrays[0] = "uniquename1";
+ uniquearrays[1] = "uniquename2";
+ uniquearrays[2] = "uniquename3";
+ uniquearrays[3] = "uniquename4";
+
+ for (i=0;i<uniquearrays.length;i++) {
+ document.getElementById(uniquearrays[i]).style.display = "none";
+ }
+}
+function ShowContent(d) {
+ var uniquearrays = new Array();
+ uniquearrays[0] = "uniquename1";
+ uniquearrays[1] = "uniquename2";
+ uniquearrays[2] = "uniquename3";
+ uniquearrays[3] = "uniquename4";
+
+ for (i=0;i<uniquearrays.length;i++) {
+ //if(uniquearrays[i]==d) {
+ document.getElementById(uniquearrays[i]).style.display = "none";
+ //}
+ }
+if(d.length < 1) { return; }
+var dd = document.getElementById(d);
+AssignPosition(dd);
+dd.style.display = "block";
+}
+function ShowContentWAssign(d) {
+if(d.length < 1) { return; }
+var dd = document.getElementById(d);
+dd.style.display = "block";
+}
+function ReverseContentDisplay(d) {
+if(d.length < 1) { return; }
+var dd = document.getElementById(d);
+AssignPosition(dd);
+if(dd.style.display == "none") { dd.style.display = "block"; }
+else { dd.style.display = "none"; }
+}
+//var popupwin ;
+function showPreview(src)
+{
+ try{
+
+ //if(popupwin != null){popupwin.focus();popupwin.close();}
+ /*
+ var ww = 300, hh = 300;
+ var LeftPosition = (screen.width) ? (screen.width-ww)/2 : 0;
+ var TopPosition = (screen.height) ? (screen.height-hh)/2 : 0;
+ var popupwin = window.open ('about:blank',"fusionPopupWindow","menubar=0,resizable=0,height="+hh+",width="+ww+",top="+TopPosition+",left="+LeftPosition+",scrollbars=yes");
+
+
+ popupwin.document.write('<html><body align=center>');
+ popupwin.document.write('<style>table{border-width:thin; border-color:black}');
+ popupwin.document.write('</style>');
+
+ popupwin.document.write($('dashboardPreview').value);
+ popupwin.document.write('</body></html>');
+
+ popupwin.document.title = 'Preview';
+ popupwin.focus();
+ */
+
+ if($('PreviewButton').value == 'Preview')
+ {
+ $('tempHidden').innerHTML = $('editingArea').innerHTML;
+
+ $('editingArea').innerHTML = $('dashboardPreview').value;
+
+ $('PreviewButton').value = 'Edit';
+ }else if($('PreviewButton').value == 'Edit')
+ {
+ $('editingArea').innerHTML = $('tempHidden').innerHTML;
+ $('PreviewButton').value = 'Preview';
+
+ }
+ }catch(e){alert(e.message);}
+ return false;
+
+}
+
+function insertAtCursor(myField, myValue) {
+ //IE support
+ if (document.selection) {
+ myField.focus();
+ sel = document.selection.createRange();
+ sel.text = myValue;
+ }
+ //MOZILLA/NETSCAPE support
+ else if (myField.selectionStart || myField.selectionStart == '0') {
+ var startPos = myField.selectionStart;
+ var endPos = myField.selectionEnd;
+ myField.value = myField.value.substring(0, startPos)
+ + myValue
+ + myField.value.substring(endPos, myField.value.length);
+ } else {
+ myField.value += myValue;
+ }
+ }
+
+
+function udpateTemplate(val)
+{
+ $('dashboardPreview').value = layoutTemplates[val];
+}
+function addType(type)
+{
+ try{
+
+ //alert($('dashboardTemplateReports').selectedIndex);
+
+ if($('dashboardTemplateReports').selectedIndex == 0){ return; }
+
+ insertAtCursor($('dashboardPreview'),'['+type+'#'+$('dashboardTemplateReports').value+']');
+
+ }catch(e){alert(e.message);}
+ return false;
+}
+var layoutTemplates = {
+ "empty": " ",
+ "2x2": "<table border=1 width='100%' height='100%'><tr><td>[Report]</td><td>[Report]</td></tr><tr><td>[Report]</td><td>[Report]</td></tr></table>",
+ "2x1": "<table border=1 width='100%' height='100%'><tr><td>[Report]</td></tr><tr><td>[Report]</td></tr></table>",
+ "1x2": "<table border=1 width='100%' height='100%'><tr><td>[Report]</td><td>[Report]</td></tr></table>",
+ "3x1": "<table border=1 width='100%' height='100%'><tr><td>[Report]</td></tr><tr><td>[Report]</td></tr><tr><td>[Report]</td></tr></table>",
+ "custom1": "<table border=1 width='100%' height='100%'><tr><td colspan='2'>[Report]</td></tr><tr><td>[Report]</td><td>[Report]</td></tr></table>",
+ "custom2": "<table border=1 width='100%' height='100%'><tr rowspan='2'><td>[Report]</td></tr><tr><td>[Report]</td><td>[Report]</td></tr></table>",
+ "custom3": "<table border=1 width='100%' height='100%'><tr><td>[Report]</td></tr><tr><td>[Report]</td></tr></table>"
+}
+//-->
+</script>
+<script type="text/javascript">
+ function show(object,val) {
+ document.getElementById(object).style.visibility = val;
+ }
+</script>
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <% if(nvl(rdef.getReportID()).length()>0 && (! rdef.getReportID().equals("-1"))) { %>
+ <tr>
+ <td class=rbg2 height="30" align="right" width="35%">
+ <font class=rtabletext>Report ID: </font>
+ </td>
+ <td align="left" width="65%" class=rbg3>
+ <font class=rtabletext><%= rdef.getReportID() %></font>
+ </td>
+ </tr>
+ <% } %>
+ <tr>
+ <td class=rbg2 height="30" align="right" width="35%" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;">
+ <font class=rtabletext>Report Name: </font>
+ </td>
+ <td align="left" width="65%" class=rbg3>
+ <input type="text" class="rtabletext" size="40" style="width: 200px;" maxlength="100" id="reportName" name="reportName" value="<%= (nvl(AppUtils.getRequestNvlValue(request, "reportName")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "reportName").equals(rdef.getReportName()))?
+ AppUtils.getRequestNvlValue(request, "reportName"):rdef.getReportName()):
+ rdef.getReportName() %>">
+ </td>
+ </tr>
+ <input type="hidden" name="folder_id"
+ value="<%= (nvl(AppUtils.getRequestNvlValue(request, "folder_id")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "folder_id").equals(rdef.getFolderId()))?
+ AppUtils.getRequestNvlValue(request, "folder_id"):rdef.getFolderId()):
+ rdef.getFolderId() %>">
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Report Description: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="reportDescr" class="rtabletext" style="width: 200px;" cols="40" rows="3"><%= (nvl(AppUtils.getRequestNvlValue(request, "reportDescr")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "reportDescr").equals(rdef.getReportDescr()))?
+ AppUtils.getRequestNvlValue(request, "reportDescr"):rdef.getReportDescr()):
+ rdef.getReportDescr() %></textarea>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Report Type </font>
+ </td>
+ <td class=rbg3 align="left">
+ <% if(nvl(rdef.getReportType()).length()>0) { %>
+ <font class=rtabletext><%= rdef.getReportType().equals(AppConstants.RT_LINEAR)?"Linear":(rdef.getReportType().equals(AppConstants.RT_CROSSTAB)?"Cross-tab":(rdef.getReportType().equals(AppConstants.RT_DASHBOARD)?"Dashboard":rdef.getReportType())) %></font>
+ <input type="hidden" id="reportType" name="reportType" value="<%= rdef.getReportType() %>">
+ <% } else { %>
+ <select id="reportType" name="reportType" style="width: 200px;" onChange="document.forma.<%= AppConstants.RI_GO_TO_STEP %>.value='<%= rdef.getWizardSequence().getCurrentStep() %>'; document.forma.submit();">
+ <option value="-1"> Select Type </option>
+ <option value="<%= AppConstants.RT_LINEAR %>" <%= AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_LINEAR) ? " selected":"selected" %>> Linear </option>
+<!-- <option value="<%= AppConstants.RT_CROSSTAB %>"<%= AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) ? " selected":"" %>> Cross-tab </option>
+ <option value="<%= AppConstants.RT_DASHBOARD %>"<%= AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_DASHBOARD) ? " selected":"" %>> Dashboard </option>
+ <option value="<%= AppConstants.RT_HIVE %>"<%= AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_HIVE) ? " selected":"" %>> Hive Based Report </option>
+ -->
+ </select>
+ <% } %>
+ </td>
+ </tr>
+ <% if((AppUtils.getRequestNvlValue(request, "reportType").length() > 0) || (rdef.getReportType().length() > 0)) { %>
+ <!-- Dashboard Begin -->
+ <% if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_DASHBOARD) || rdef.getReportType().equals(AppConstants.RT_DASHBOARD)) { %>
+ <tr>
+ <td class=rbg2 height="30" align="right"><font class=rtabletext>Select HTML Template:</font></td>
+ <td><select id="dashboardTemplate" style="width: 200px;" name="dashboardTemplate" onchange="return udpateTemplate(this.value);">
+ <option value="empty">-- select --</option>
+ <option value="2x2">2 Rows x 2 Columns</option>
+ <option value="2x1">2 Rows x 1 Column</option>
+ <option value="1x2">1 Row x 2 Columns</option>
+ <option value="3x1">3 Rows x 1 Column</option>
+ <option value="custom1">2 Rows with 1st Row with 1 column and 2nd Row with 2 Columns</option>
+ <option value="custom2">2 Rows with 1st Column expanded to 2 rows</option>
+ <option value="custom3">Hybrid Layout</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right"><font class=rtabletext>Dashboard HTML:</font></td>
+
+ <td>
+ <div id='editingArea' style="width: 600px; height: 200px; overflow: none">
+ <textarea id='dashboardPreview' name="dashboardLayoutHTML" style="width: 200px; height: 100%">
+ <% if(rdef != null && nvl(rdef.getDashboardLayoutHTML()).length()>0 ) {%><%= rdef.getDashboardLayoutHTML().trim() %><%} %>
+ </textarea></div>
+ <div id='tempHidden' style="display: none;"></div>
+ <br/><select name="dashboardTemplateReports">
+ <option value="-1" selected>-->select report <--</option>
+ <%
+ for (Iterator iter = mapSet.iterator(); iter.hasNext();) {
+ me = (Map.Entry) iter.next();
+ %>
+ <%
+ if (rdef != null && rdef.getDashBoardReports() != null && (rdef.getDashBoardReports().getReportsList().get(0) != null)
+ && (((Reports) rdef.getDashBoardReports().getReportsList().get(0)).getReportId().equals((String) me.getKey()))) {
+ %>
+ <option value="<%=(String) me.getKey()%>" selected><%=(String) me.getValue()%></option>
+ <%
+ } else {
+ %>
+ <option value="<%=(String) me.getKey()%>"><%=(String) me.getValue()%></option>
+ <%
+ }
+ %>
+ <%
+ }
+ %>
+ </select>
+ &nbsp;<input type="button" class='button' onclick="return addType();" value='Insert Report Id' />
+ &nbsp;<input id='PreviewButton' style="width: 100px" type='button' class='button' value="Preview" onclick="return showPreview(this);" />
+ <br />
+ </td>
+ </tr>
+
+
+ <!-- Dashboard Ends -->
+ <% } else { %>
+
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Data Source:</font>
+ </td>
+ <td align="left" class=rbg3>
+ <%
+ org.openecomp.portalsdk.analytics.util.RemDbInfo remDbInfo = new org.openecomp.portalsdk.analytics.util.RemDbInfo();
+ HashMap remDbMap = remDbInfo.getDbHash();
+
+ %>
+ <% if (dbInfo != null && dbInfo.length()>0 && !dbInfo.equalsIgnoreCase("null") && !remDbMap.isEmpty()) { %>
+ <font class=rtabletext><%= (AppUtils.nvl(remDbInfo.getDesc(dbInfo)).length()>0)?remDbInfo.getDesc(dbInfo):" No Desc " %></font>
+ <%
+ }
+ else {
+ %>
+ <%-- dbInfo.equals(AppConstants.DB_PROD)? "selected":"" --%>
+ <select id = "selectDS" name="dataSource" style="width: 200px;">
+ <%
+ if(!remDbMap.isEmpty()) {
+ for( Iterator itr=remDbMap.entrySet().iterator(); itr.hasNext(); ) {
+ Map.Entry e = (Map.Entry)itr.next();
+ String prefix = (String)e.getKey();
+ String desc = (String)e.getValue();
+ %>
+ <option value='<%= prefix %>'
+ <% if(prefix.equals(nvl(AppUtils.getRequestNvlValue(request, "dataSource")))) { %>
+ <%=(nvl(AppUtils.getRequestNvlValue(request, "dataSource")).length()>0?
+ (
+ prefix.equals(nvl(AppUtils.getRequestNvlValue(request, "dataSource")))?"selected ":
+ (prefix.equals(AppConstants.DB_LOCAL)?"selected ":"")
+ )
+ :prefix.equals(AppConstants.DB_LOCAL)?"selected ":"")%>
+ <% } %>
+ ><%= desc%>
+ <%
+ }
+
+ %>
+ <% } else { %>
+ <option value='<%= AppConstants.DB_LOCAL%>' selected>Default
+ <% } %>
+
+ </select>
+ <% if(!remDbMap.isEmpty() && nvl(AppUtils.getRequestNvlValue(request, "dataSource")).length() <= 0){ %>
+ <script language="Javascript">
+ var selectDS = document.getElementById("selectDS");
+ var flag = 0;
+ for (i = selectDS.length - 1; i>=0; i--) {
+ if (selectDS.options[i].selected) {
+ flag = 2;
+ break;
+ }
+ }
+ if(flag==2) {
+ for (i = selectDS.length - 1; i>=0; i--) {
+ if(selectDS.options[i].value == '<%= AppConstants.DB_LOCAL%>' ){
+ selectDS.options[i].selected = true;
+ }
+ }
+ }
+ </script>
+
+ <% } %>
+
+ <% } %>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Form Help Text: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="formHelp" style="width: 200px;" cols="40" rows="3"><%=rdef.getFormHelpText()%></textarea>
+ </td>
+ </tr>
+
+ <% if(Globals.getAllowSQLBasedReports()||AppUtils.isAdminUser(request)) { %>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Report Definition: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <font class=rtabletext>
+ <% if(rdef.getReportDefType().length()>0) { %>
+ <%= rdef.getReportDefType().equals(AppConstants.RD_VISUAL)?"Visual":(rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)?"SQL-based":rdef.getReportDefType()) %>
+ <% } else { %>
+ <!-- <input type=radio name="reportDefType" value="<%= AppConstants.RD_VISUAL %>" <%= AppUtils.getRequestNvlValue(request, "reportDefType").equals(AppConstants.RD_VISUAL)?" checked": ((AppUtils.getRequestNvlValue(request, "reportDefType").length()<=0)?" checked":"") %>>Visual -->
+ <input type=radio name="reportDefType" checked value="<%= AppConstants.RD_SQL_BASED %>" <%= AppUtils.getRequestNvlValue(request, "reportDefType").equals(AppConstants.RD_SQL_BASED) ? " checked":"" %>>SQL-based
+ <!-- <input type=radio name="reportDefType" value="<%= AppConstants.RD_SQL_BASED_DATAMIN %>" <%= AppUtils.getRequestNvlValue(request, "reportDefType").equals(AppConstants.RD_SQL_BASED_DATAMIN) ? " checked":"" %>>Data Forecasting -->
+ <% } %>
+ </font>
+ </td>
+ </tr>
+ <% } // if
+ %>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Page Size: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="pageSize" style="width: 200px;" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="10"<%= (rdef.getPageSize()==10 )?" selected":"" %>>10
+ <option value="25"<%= (rdef.getPageSize()==25 )?" selected":"" %>>25
+ <option value="50"<%= (rdef.getPageSize()==50 )?" selected":"" %>>50
+ <option value="100"<%= (rdef.getPageSize()==100)?" selected":"" %>>100
+ <option value="500"<%= (rdef.getPageSize()==500)?" selected":"" %>>500
+ <% if(rdef.getPageSize()!=10 && rdef.getPageSize()!=20 && rdef.getPageSize()!=50
+ && rdef.getPageSize()!=100 && rdef.getPageSize()!=500) {
+ %>
+ <option value="<%=rdef.getPageSize()%>" selected><%=rdef.getPageSize()%></option> <!-- This is the Editable Option -->
+ <%
+ }
+ %>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Display Area: </font>
+ </td>
+ <td class=rbg3 align="left" valign="top" nowrap>
+ <select name="menuID" size="3" multiple style="width: 100px;">
+ <!-- need one more blank to deselect since approval checkbox is taken out -->
+ <option value="">
+ <% for(int i=0; i<AppUtils.getQuickLinksMenuIDs().size(); i++) {
+ String qMenu = (String) AppUtils.getQuickLinksMenuIDs().get(i); %>
+ <option value="<%= qMenu %>"<%= rdef.checkMenuIDSelected(qMenu)?" selected":"" %>><%= AppUtils.getMenuLabel(qMenu) %>
+ <% } // for
+ %>
+ </select>
+<%-- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="checkbox" name="menuApproved" value="Y"<%= rdef.isMenuApproved()?" checked":"" %><%= AppUtils.isAdminUser(request)?"":" disabled onClick='checked="+(rdef.isMenuApproved()?"true":"false")+"';" %>>
+ <font class=rtabletext>Approved?</font> --%>
+ </td>
+ </tr>
+<%-- <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Generate report in a New Window?</font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="reportInNewWindow" value="Y"
+ <%= rdef.isReportInNewWindow()? " checked " : "" %>>
+ </td>
+ </tr> --%>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Hide Form fields after run?</font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="hideFormFieldsAfterRun" value="Y"
+ <%= rdef.isHideFormFieldAfterRun()? " checked " : "" %>>
+ </td>
+ </tr>
+
+<%-- <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Display Folder Tree?</font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="displayFolderTree" value="Y"
+ <%= rdef.isDisplayFolderTree()? " checked " : "" %>
+ >
+ </td>
+ </tr> --%>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Max Rows in Excel/CSV Download </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="excelDownloadSize" style="width: 80px;">
+ <option value="500"<%= (rdef.getMaxRowsInExcelDownload()==500 )?" selected":"" %>>500
+ <option value="1000"<%= (rdef.getMaxRowsInExcelDownload()==1000 )?" selected":"" %>>1000
+ <option value="2000"<%= (rdef.getMaxRowsInExcelDownload()==2000 )?" selected":"" %>>2000
+ <option value="3000"<%= (rdef.getMaxRowsInExcelDownload()==3000 )?" selected":"" %>>3000
+ <option value="4000"<%= (rdef.getMaxRowsInExcelDownload()==4000 )?" selected":"" %>>4000
+ <option value="5000"<%= (rdef.getMaxRowsInExcelDownload()==5000 )?" selected":"" %>>5000
+ <option value="10000"<%= (rdef.getMaxRowsInExcelDownload()==10000 )?" selected":"" %>>10000
+ <option value="15000"<%= (rdef.getMaxRowsInExcelDownload()==15000 )?" selected":"" %>>15000
+ <option value="20000"<%= (rdef.getMaxRowsInExcelDownload()==20000 )?" selected":"" %>>20000
+ <option value="25000"<%= (rdef.getMaxRowsInExcelDownload()==25000 )?" selected":"" %>>25000
+ <option value="30000"<%= (rdef.getMaxRowsInExcelDownload()==30000 )?" selected":"" %>>30000
+ <option value="35000"<%= (rdef.getMaxRowsInExcelDownload()==35000 )?" selected":"" %>>35000
+ <option value="40000"<%= (rdef.getMaxRowsInExcelDownload()==40000)?" selected":"" %>>40000
+ <option value="45000"<%= (rdef.getMaxRowsInExcelDownload()==45000 )?" selected":"" %>>45000
+ <option value="50000"<%= (rdef.getMaxRowsInExcelDownload()==50000)?" selected":"" %>>50000
+ <option value="65000"<%= (rdef.getMaxRowsInExcelDownload()==65000)?" selected":"" %>>65000
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Columns to be Frozen: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="frozenColumns" style="width: 50px;" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="0"<%= (rdef.getFrozenColumns()==0 )?" selected":"" %>>0
+ <option value="1"<%= (rdef.getFrozenColumns()==1 )?" selected":"" %>>1
+ <option value="2"<%= (rdef.getFrozenColumns()==2 )?" selected":"" %>>2
+ <option value="3"<%= (rdef.getFrozenColumns()==3)?" selected":"" %>>3
+ <option value="4"<%= (rdef.getFrozenColumns()==4)?" selected":"" %>>4
+ <% if(rdef.getFrozenColumns()!=0 && rdef.getFrozenColumns()!=1 && rdef.getFrozenColumns()!=2
+ && rdef.getFrozenColumns()!=3 && rdef.getFrozenColumns()!=4) {
+ %>
+ <option value="<%=rdef.getFrozenColumns()%>" selected><%=rdef.getFrozenColumns()%></option> <!-- This is the Editable Option -->
+ <%
+ }
+ %>
+ </select>
+ </td>
+ </tr>
+
+ <% if(rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) { %>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Record # column width: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="text" class="rtabletext" style="width: 100px;" size="40" maxlength="100" id="widthNo" name="widthNo" value="<%= (nvl(AppUtils.getRequestNvlValue(request, "widthNo")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "widthNo").equals(rdef.getWidthNoColumn()))?
+ AppUtils.getRequestNvlValue(request, "widthNo"):rdef.getWidthNoColumn()):
+ rdef.getWidthNoColumn() %>">
+ </td>
+ </tr>
+
+
+
+ <% } %>
+
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Data Grid Align: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="dataGridAlign" style="width: 100px;">
+ <option value="left"<%= (nvl(rdef.getDataGridAlign()).length()>0 ? (rdef.getDataGridAlign().equals("left") ? " selected": ""):" selected ")%>> Left
+ <option value="right"<%= (nvl(rdef.getDataGridAlign()).length()>0 ? (rdef.getDataGridAlign().equals("right") ? " selected": ""):"")%>> Right
+ <option value="center"<%= (nvl(rdef.getDataGridAlign()).length()>0 ? (rdef.getDataGridAlign().equals("center") ? " selected": ""):"")%>> Center
+
+ </select>
+ </td>
+ </tr>
+
+ <%
+ if(pdfImgMap.size() > 0) {
+ %>
+
+ <%-- dbInfo.equals(AppConstants.DB_PROD)? "selected":"" --%>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Select logo for PDF download: </font>
+ </td>
+ <td>
+ <select id = "pdfImg" name="pdfImg" style="width: 100px;">
+ <option value=''> <!-- SELECT --></option>
+ <%
+ if(!pdfImgMap.isEmpty()) {
+ for( Iterator itr=pdfImgMap.entrySet().iterator(); itr.hasNext(); ) {
+ Map.Entry e = (Map.Entry)itr.next();
+ String image_id = (String)e.getKey();
+ String image_loc = (String)e.getValue();
+ %>
+ <%
+ if (nvl(AppUtils.getRequestNvlValue(request, "pdfImg")).length()>0 && !(AppUtils.getRequestNvlValue(request, "pdfImg").equals(rdef.getPdfImg())) ) {
+ if(image_loc .equals (AppUtils.getRequestNvlValue(request, "pdfImg"))) {
+ %>
+
+ <option value='<%= image_loc %>' selected> <%=image_id %></option>
+ <%
+ } else {
+ %>
+ <option value='<%= image_loc %>'> <%=image_id %></option>
+ <%
+ }
+ } else {
+ if(image_loc .equals (rdef.getPdfImg())) {
+ %>
+
+ <option value='<%= image_loc %>' selected> <%=image_id %> </option>
+ <%
+
+ } else {
+ %>
+ <option value='<%= image_loc %>'> <%=image_id %></option>
+ <%
+ }
+ }
+ %>
+ </select>
+ </td>
+ <% }
+ }
+ %>
+ </tr>
+ <%
+ }
+%>
+
+ <tr>
+ <td class=rbg2 height="30" align="right" width="35%">
+ <font class=rtabletext>Empty message: </font>
+ </td>
+ <td align="left" width="65%" class=rbg3>
+ <input type="text" class="rtabletext" style="width: 200px;" size="40" maxlength="100" id="emptyMessage" name="emptyMessage" value="<%= (nvl(AppUtils.getRequestNvlValue(request, "emptyMessage")).length() > 0)?
+ (!(AppUtils.getRequestNvlValue(request, "emptyMessage").equals(rdef.getEmptyMessage()))?
+ AppUtils.getRequestNvlValue(request, "emptyMessage"):rdef.getEmptyMessage()):
+ rdef.getEmptyMessage() %>">
+ </td>
+ </tr>
+
+ <% } %>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Height of the Data Container </font>
+ </td>
+ <td class=rbg3 align="left">
+ <% if (nvl(rdef.getDataContainerHeight(), "100").equals ("auto") || nvl(rdef.getDataContainerHeight(), "100").equals ("100")) { rdef.setDataContainerHeight("100"); } %>
+ <select name="heightContainer" style="width: 70px;" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="200" <%= (nvl(rdef.getDataContainerHeight(),"200").equals("200"))?" selected":"" %>>200%</option>
+ <option value="190" <%= (nvl(rdef.getDataContainerHeight(),"190").equals("190"))?" selected":"" %>>190%</option>
+ <option value="180" <%= (nvl(rdef.getDataContainerHeight(),"180").equals("180"))?" selected":"" %>>180%</option>
+ <option value="170" <%= (nvl(rdef.getDataContainerHeight(),"170").equals("170"))?" selected":"" %>>170%</option>
+ <option value="160" <%= (nvl(rdef.getDataContainerHeight(),"160").equals("160"))?" selected":"" %>>160%</option>
+ <option value="150" <%= (nvl(rdef.getDataContainerHeight(),"150").equals("150"))?" selected":"" %>>150%</option>
+ <option value="140" <%= (nvl(rdef.getDataContainerHeight(),"140").equals("140"))?" selected":"" %>>140%</option>
+ <option value="130" <%= (nvl(rdef.getDataContainerHeight(),"130").equals("130"))?" selected":"" %>>130%</option>
+ <option value="120" <%= (nvl(rdef.getDataContainerHeight(),"120").equals("120"))?" selected":"" %>>120%</option>
+ <option value="110" <%= (nvl(rdef.getDataContainerHeight(),"110").equals("110"))?" selected":"" %>>110%</option>
+ <option value="100" <%= (nvl(rdef.getDataContainerHeight(),"100").equals("100"))?" selected":"" %>>100%</option>
+ <option value="90" <%= (nvl(rdef.getDataContainerHeight(),"90").equals("90"))?" selected":"" %>>90%</option>
+ <option value="80" <%= (nvl(rdef.getDataContainerHeight(),"80").equals("80"))?" selected":"" %>>80%</option>
+ <option value="70" <%= (nvl(rdef.getDataContainerHeight(),"70").equals("70"))?" selected":"" %>>70%</option>
+ <option value="60" <%= (nvl(rdef.getDataContainerHeight(),"60").equals("60"))?" selected":"" %>>60%</option>
+ <option value="50" <%= (nvl(rdef.getDataContainerHeight(),"50").equals("50"))?" selected":"" %>>50%</option>
+ <option value="40" <%= (nvl(rdef.getDataContainerHeight(),"40").equals("40"))?" selected":"" %>>40%</option>
+ <option value="30" <%= (nvl(rdef.getDataContainerHeight(),"30").equals("30"))?" selected":"" %>>30%</option>
+ <option value="20" <%= (nvl(rdef.getDataContainerHeight(),"20").equals("20"))?" selected":"" %>>20%</option>
+ <option value="10" <%= (nvl(rdef.getDataContainerHeight(),"10").equals("10"))?" selected":"" %>>10%</option>
+
+
+ <% if(!((new Integer(nvl(rdef.getDataContainerHeight(), "100")).intValue()%10 == 0) && (new Integer(nvl(rdef.getDataContainerHeight(), "100")).intValue() <= 200)) ) {
+ %>
+ <option value="<%=rdef.getDataContainerHeight()%>" selected><%=rdef.getDataContainerHeight()%>%</option>
+ <%
+ }
+ %>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Width of the Data Container </font>
+ </td>
+ <td class=rbg3 align="left">
+ <% if (nvl(rdef.getDataContainerWidth(), "100").equals ("auto") || nvl(rdef.getDataContainerWidth(), "100").equals ("100")) { rdef.setDataContainerWidth("100"); } %>
+ <select name="widthContainer" style="width: 70px;" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <option value="200" <%= (nvl(rdef.getDataContainerWidth(),"200").equals("200"))?" selected":"" %>>200%</option>
+ <option value="190" <%= (nvl(rdef.getDataContainerWidth(),"190").equals("190"))?" selected":"" %>>190%</option>
+ <option value="180" <%= (nvl(rdef.getDataContainerWidth(),"180").equals("180"))?" selected":"" %>>180%</option>
+ <option value="170" <%= (nvl(rdef.getDataContainerWidth(),"170").equals("170"))?" selected":"" %>>170%</option>
+ <option value="160" <%= (nvl(rdef.getDataContainerWidth(),"160").equals("160"))?" selected":"" %>>160%</option>
+ <option value="150" <%= (nvl(rdef.getDataContainerWidth(),"150").equals("150"))?" selected":"" %>>150%</option>
+ <option value="140" <%= (nvl(rdef.getDataContainerWidth(),"140").equals("140"))?" selected":"" %>>140%</option>
+ <option value="130" <%= (nvl(rdef.getDataContainerWidth(),"130").equals("130"))?" selected":"" %>>130%</option>
+ <option value="120" <%= (nvl(rdef.getDataContainerWidth(),"120").equals("120"))?" selected":"" %>>120%</option>
+ <option value="110" <%= (nvl(rdef.getDataContainerWidth(),"110").equals("110"))?" selected":"" %>>110%</option>
+ <option value="100" <%= (nvl(rdef.getDataContainerWidth(),"100").equals("100"))?" selected":"" %>>100%</option>
+ <option value="90" <%= (nvl(rdef.getDataContainerWidth(),"90").equals("90"))?" selected":"" %>>90%</option>
+ <option value="80" <%= (nvl(rdef.getDataContainerWidth(),"80").equals("80"))?" selected":"" %>>80%</option>
+ <option value="70" <%= (nvl(rdef.getDataContainerWidth(),"70").equals("70"))?" selected":"" %>>70%</option>
+ <option value="60" <%= (nvl(rdef.getDataContainerWidth(),"60").equals("60"))?" selected":"" %>>60%</option>
+ <option value="50" <%= (nvl(rdef.getDataContainerWidth(),"50").equals("50"))?" selected":"" %>>50%</option>
+ <option value="40" <%= (nvl(rdef.getDataContainerWidth(),"40").equals("40"))?" selected":"" %>>40%</option>
+ <option value="30" <%= (nvl(rdef.getDataContainerWidth(),"30").equals("30"))?" selected":"" %>>30%</option>
+ <option value="20" <%= (nvl(rdef.getDataContainerWidth(),"20").equals("20"))?" selected":"" %>>20%</option>
+ <option value="10" <%= (nvl(rdef.getDataContainerWidth(),"10").equals("10"))?" selected":"" %>>10%</option>
+
+
+ <% if(!((new Integer(nvl(rdef.getDataContainerWidth(), "100")).intValue()%10 == 0) && (new Integer(nvl(rdef.getDataContainerWidth(), "100")).intValue() <= 200)) ) {
+ %>
+ <option value="<%=rdef.getDataContainerWidth()%>" selected><%=rdef.getDataContainerWidth()%>%</option>
+ <%
+ }
+ %>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Allow Schedule? </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="checkbox" class ="rtabletext" size="4" name="allowSchedule" value="Y" <%=((rdef.getAllowSchedule()!=null)?(rdef.getAllowSchedule().toUpperCase().charAt(0)== 'Y' ?" checked":""): (ReportLoader.isReportsAlreadyScheduled(rdef.getReportID())?" checked":"")) %>/>
+ </td>
+ </tr>
+
+<%-- <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Column Multi Group? </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="checkbox" class ="rtabletext" size="4" name="multiGroupColumn" value="Y" <%=(rdef.getMultiGroupColumn()!=null)?(rdef.getMultiGroupColumn().toUpperCase().charAt(0)== 'Y' ?" checked":""): "" %>/>
+ </td>
+ </tr> --%>
+ </tr>
+
+ <% if (!(AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_DASHBOARD) || rdef.getReportType().equals(AppConstants.RT_DASHBOARD))) { %>
+
+<%-- <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Render Top - Down </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="checkbox" class ="rtabletext" size="4" name="topDown" value="Y" <%=(rdef.getTopDownOption()!=null)?(rdef.getTopDownOption().toUpperCase().charAt(0)== 'Y' ?" checked":""):(AppUtils.getRequestNvlValue(request, "topDown").equals("Y")?" checked":"") %>/>
+ </td>
+ </tr> --%>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext> Sized By Content </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="checkbox" class ="rtabletext" size="4" name="sizedByContent" value="Y" <%=(rdef.getSizedByContentOption()!=null)?(rdef.getSizedByContentOption().toUpperCase().charAt(0)== 'Y' ?" checked":""):(AppUtils.getRequestNvlValue(request, "sizedByContent").equals("Y")?" checked":"") %>/>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Display Options: </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="hideForm" value="Y"<%= rdef.isDisplayOptionHideForm()?" checked":"" %>>
+ <font class=rtabletext>Hide Form Fields</font>
+ <input type="checkbox" name="hideChart" value="Y"<%= rdef.isDisplayOptionHideChart()?" checked":"" %>>
+ <font class=rtabletext>Hide Chart</font>
+ <input type="checkbox" name="hideData" value="Y"<%= rdef.isDisplayOptionHideData()?" checked":"" %>>
+ <font class=rtabletext>Hide Report Data</font>
+ <input type="checkbox" name="hideBtns" value="Y"<%= rdef.isDisplayOptionHideBtns()?" checked":"" %>>
+ <font class=rtabletext>Hide Download Buttons</font>
+ <input type="checkbox" name="hideMap" value="Y"<%= rdef.isDisplayOptionHideMap()?" checked":"" %>>
+ <font class=rtabletext>Hide Map</font>
+ <input type="checkbox" name="hideExcelIcons" value="Y"<%= rdef.isDisplayOptionHideExcelIcons()?" checked":"" %>>
+ <font class=rtabletext>Hide Excel Icons</font>
+ <input type="checkbox" name="hidePDFIcons" value="Y"<%= rdef.isDisplayOptionHidePDFIcons()?" checked":"" %>>
+ <font class=rtabletext>Hide PDF Icons</font>
+ </td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>&nbsp; </font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="runtimeColSortDisabled" value="Y"<%= rdef.isRuntimeColSortDisabled()?" checked":"" %>>
+ <font class=rtabletext>Disable column sort at runtime?</font>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Run-time Form Number Columns: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <select name="numFormCols" style="width: 70px;">
+ <option value="1"<%= (rdef.getNumFormColsAsInt()==1)?" selected":"" %>>1
+ <option value="2"<%= (rdef.getNumFormColsAsInt()==2)?" selected":"" %>>2
+ <option value="3"<%= (rdef.getNumFormColsAsInt()==3)?" selected":"" %>>3
+ <option value="4"<%= (rdef.getNumFormColsAsInt()==4)?" selected":"" %>>4
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Report Title<br>(if blank, the Report Name will be displayed): </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="reportTitle" style="width: 200px;" cols="40" rows="3"><%= nvl(rdef.getReportTitle()) %></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Report Sub-Title: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="reportSubTitle" style="width: 200px;" cols="40" rows="3"><%= nvl(rdef.getReportSubTitle()) %></textarea>
+ </td>
+ </tr>
+<%-- <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Page Header (HTML): </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="reportHeader" style="width: 200px;" cols="40" rows="3"><%= Utils.htmlEncode(nvl(rdef.getReportHeader())) %></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Page Footer (HTML): </font>
+ </td>
+ <td class=rbg3 align="left">
+ <textarea name="reportFooter" style="width: 200px;" cols="40" rows="3"><%= Utils.htmlEncode(nvl(rdef.getReportFooter())) %></textarea>
+ </td>
+ </tr> --%>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Allowed Recurrance in Schedule: </font>
+ </td>
+ <td class=rbg3 align="left">
+ <input type="checkbox" name="isOneTimeScheduleAllowed" value="Y" <%if (rdef.getIsOneTimeScheduleAllowed() == null || rdef.getIsOneTimeScheduleAllowed().equals("Y")){ %>checked <%} %>>One Time<br>
+ <input type="checkbox" name="isHourlyScheduleAllowed" value="Y" <%if (rdef.getIsHourlyScheduleAllowed() == null || rdef.getIsHourlyScheduleAllowed().equals("Y")){ %>checked<%} %> >Hourly<br>
+ <input type="checkbox" name="isDailyScheduleAllowed" value="Y" <%if (rdef.getIsDailyScheduleAllowed() == null || rdef.getIsDailyScheduleAllowed().equals("Y")){ %>checked<%} %> >Daily<br>
+ <input type="checkbox" name="isDailyMFScheduleAllowed" value="Y" <%if (rdef.getIsDailyMFScheduleAllowed() == null || rdef.getIsDailyMFScheduleAllowed().equals("Y")){ %>checked<%} %> >Daily Monday - Friday<br>
+ <input type="checkbox" name="isWeeklyScheduleAllowed" value="Y" <%if (rdef.getIsWeeklyScheduleAllowed() == null || rdef.getIsWeeklyScheduleAllowed().equals("Y")){ %>checked<%} %> >Weekly<br>
+ <input type="checkbox" name="isMonthlyScheduleAllowed" value="Y" <%if (rdef.getIsMonthlyScheduleAllowed() == null || rdef.getIsMonthlyScheduleAllowed().equals("Y")){ %>checked<%} %> >Monthly<br>
+ </td>
+ </tr>
+ <input type="hidden" name="additionalFieldsShown" value="Y">
+<% } // else
+%>
+
+<% } // if report type is empty %>
+
+</table>
+<br>
+
+ <script language="JavaScript">
+ <!--
+ <%
+ Vector reportIdNames = ReportLoader.getUserReportNames(request); %>
+ var reportIds = new Array(<%= reportIdNames.size() %>);
+ var reportNames = new Array(<%= reportIdNames.size() %>);
+ <% for(int i=0; i<reportIdNames.size(); i++) {
+ IdNameValue value = (IdNameValue) reportIdNames.get(i); %>
+ reportIds[<%= i %>] = "<%= value.getId() %>";
+ reportNames[<%= i %>] = "<%= Utils.javaSafe(value.getName()) %>";
+ <% } %>
+
+ var dashboardReports = new Array ('reports1', 'reports2', 'reports3', 'reports4');
+ function dataValidate() {
+ if(document.getElementById('reportType').value=="-1") {
+ alert("Please enter Report Type");
+ document.getElementById('reportType').focus();
+ document.getElementById('reportType').select();
+ return false;
+ }
+
+
+ if(document.getElementById('reportName').value=="") {
+ alert("Please enter Report Name");
+ document.forma.reportName.focus();
+ document.forma.reportName.select();
+ return false;
+ } // if
+
+ if(document.forma.pageSize!=null && document.forma.pageSize.options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.pageSize.options[document.forma.pageSize.options.selectedIndex].text)) {
+ alert("Please enter number in pageSize. No Characters are allowed.");
+ return false;
+ } else {
+ document.forma.pageSize.options[document.forma.pageSize.options.selectedIndex].value=document.forma.pageSize.options[document.forma.pageSize.options.selectedIndex].text;
+ }
+ }
+
+ if(document.forma.frozenColumns!=null && document.forma.frozenColumns.options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.frozenColumns.options[document.forma.frozenColumns.options.selectedIndex].text)) {
+ alert("Please enter number in frozenColumns. No Characters are allowed.");
+ return false;
+ } else {
+ document.forma.frozenColumns.options[document.forma.frozenColumns.options.selectedIndex].value=document.forma.frozenColumns.options[document.forma.frozenColumns.options.selectedIndex].text;
+ }
+ }
+
+ if(document.forma.heightContainer!=null && document.forma.heightContainer.options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.heightContainer.options[document.forma.heightContainer.options.selectedIndex].text)) {
+ alert("Please enter positive number greater than 10% in \"Desired Container Height\". No Characters are allowed.");
+ return false;
+ } else {
+ if(eval(document.forma.heightContainer.options[document.forma.heightContainer.options.selectedIndex].text) < 10) {
+ alert("Please enter positive number less than 10% in \"Desired Container Height\". No Characters are allowed.");
+ return false;
+ }
+ if(eval(document.forma.heightContainer.options[document.forma.heightContainer.options.selectedIndex].text) > 300) {
+ alert("Please enter positive number greater than 300% in \"Desired Container Height\". No Characters are allowed.");
+ return false;
+ }
+ document.forma.heightContainer.options[document.forma.heightContainer.options.selectedIndex].value=document.forma.heightContainer.options[document.forma.heightContainer.options.selectedIndex].text;
+ }
+ }
+
+ if(document.forma.widthContainer!=null && document.forma.widthContainer.options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.widthContainer.options[document.forma.widthContainer.options.selectedIndex].text)) {
+ alert("Please enter positive number greater than 10% in \"Desired Container Width\". No Characters are allowed.");
+ return false;
+ } else {
+ if(eval(document.forma.widthContainer.options[document.forma.widthContainer.options.selectedIndex].text) < 10) {
+ alert("Please enter positive number less than 10% in \"Desired Container Width\". No Characters are allowed.");
+ return false;
+ }
+ if(eval(document.forma.widthContainer.options[document.forma.widthContainer.options.selectedIndex].text) > 300) {
+ alert("Please enter positive number greater than 300% in \"Desired Container Width\". No Characters are allowed.");
+ return false;
+ }
+ document.forma.widthContainer.options[document.forma.widthContainer.options.selectedIndex].value=document.forma.widthContainer.options[document.forma.widthContainer.options.selectedIndex].text;
+ }
+ }
+
+ for(var i=0; i<reportIds.length; i++)
+ if((document.getElementById('reportName').value==reportNames[i])&&(reportIds[i]!="<%= reportID %>")) {
+ alert("Report with that name created by you already exists.\nPlease select another name");
+ document.forma.reportName.focus();
+ document.forma.reportName.select();
+ return false;
+ } // if
+ return true;
+ } // dataValidate
+ //-->
+ </script>
+<!-- Start Floating Layer -->
+<div
+ id="uniquename1"
+ style="display:none;
+ position:absolute;
+ border-style: solid;
+ background-color: white;
+ padding: 5px;">
+ <!-- place your HTML content here-->
+ <h3>Background color selector</h3>
+ <% if (rdef !=null && rdef.getDashBoardReports()!=null && (rdef.getDashBoardReports().getReportsList().get(0)!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(0)).getBgcolor()!=null) &&(((Reports)rdef.getDashBoardReports().getReportsList().get(0)).getBgcolor().length()>0)) {%>
+ <input id="hashCode1" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="<%=((Reports)rdef.getDashBoardReports().getReportsList().get(0)).getBgcolor()%>" type="text" />
+ <%} else { %>
+ <input id="hashCode1" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="#FFFFFF" type="text" />
+ <% } %>
+ <input type="button" value="Submit & Close" onClick="document.forma.repBgColor1.value=document.getElementById('hashCode1').value; document.forma.repBgColor1.style.backgroundColor = document.getElementById('hashCode1').value; HideContent('uniquename1');"/>
+
+
+ <!-- End of content area -->
+
+</div>
+<div
+ id="uniquename2"
+ style="display:none;
+ position:absolute;
+ border-style: solid;
+ background-color: white;
+ padding: 5px;">
+ <!-- place your HTML content here-->
+ <h3>Background color selector</h3>
+ <% if (rdef !=null && rdef.getDashBoardReports()!=null && (rdef.getDashBoardReports().getReportsList().get(1)!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(1)).getBgcolor()!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(1)).getBgcolor().length()>0)) {%>
+ <input id="hashCode2" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="<%=((Reports)rdef.getDashBoardReports().getReportsList().get(1)).getBgcolor()%>" type="text" />
+ <%} else { %>
+ <input id="hashCode2" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="#FFFFFF" type="text" />
+ <% } %>
+ <input type="button" value="Submit & Close" onClick="document.forma.repBgColor2.value=document.getElementById('hashCode2').value; document.forma.repBgColor2.style.backgroundColor = document.getElementById('hashCode2').value;HideContent('uniquename2');"/>
+
+
+ <!-- End of content area -->
+
+</div>
+<div
+ id="uniquename3"
+ style="display:none;
+ position:absolute;
+ border-style: solid;
+ background-color: white;
+ padding: 5px;">
+ <!-- place your HTML content here-->
+ <h3>Background color selector</h3>
+ <% if (rdef !=null && rdef.getDashBoardReports()!=null && (rdef.getDashBoardReports().getReportsList().get(2)!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(2)).getBgcolor()!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(2)).getBgcolor().length()>0)) {%>
+ <input id="hashCode3" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="<%=((Reports)rdef.getDashBoardReports().getReportsList().get(2)).getBgcolor()%>" type="text" />
+ <%} else { %>
+ <input id="hashCode3" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="#FFFFFF" type="text" />
+ <% } %>
+ <input type="button" value="Submit & Close" onClick="document.forma.repBgColor3.value=document.getElementById('hashCode3').value; document.forma.repBgColor3.style.backgroundColor = document.getElementById('hashCode3').value; HideContent('uniquename3');"/>
+
+
+ <!-- End of content area -->
+
+</div>
+<div
+ id="uniquename4"
+ style="display:none;
+ position:absolute;
+ border-style: solid;
+ background-color: white;
+ padding: 5px;">
+ <!-- place your HTML content here-->
+ <h3>Background color selector</h3>
+ <% if (rdef !=null && rdef.getDashBoardReports()!=null && (rdef.getDashBoardReports().getReportsList().get(3)!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(3)).getBgcolor()!=null) && (((Reports)rdef.getDashBoardReports().getReportsList().get(3)).getBgcolor().length()>0)) {%>
+ <input id="hashCode4" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="<%=((Reports)rdef.getDashBoardReports().getReportsList().get(3)).getBgcolor()%>" type="text" />
+ <%} else { %>
+ <input id="hashCode4" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="#FFFFFF" type="text" />
+ <% } %>
+ <input type="button" value="Submit & Close" onClick="document.forma.repBgColor4.value=document.getElementById('hashCode4').value; document.forma.repBgColor4.style.backgroundColor = document.getElementById('hashCode4').value; HideContent('uniquename4');"/>
+
+
+ <!-- End of content area -->
+
+</div>
+
+<div id="FloatingLayer" style="position:absolute;width:250px;left:100;top:100;visibility:hidden">
+ <table border="0" width="250" bgcolor="#FF6600" cellspacing="0" cellpadding="5">
+ <tr>
+ <td width="100%"> <table border="0" width="100%" cellspacing="0" cellpadding="0" height="36">
+ <tr>
+ <td id="titleBar" style="cursor:move" width="100%"> <ilayer width="100%" onSelectStart="return false">
+ <layer width="100%" onMouseover="isActive=true;if (isN4) MoveN4(FloatingLayer)" onMouseout="isActive=false">
+ <font face="Arial" color="#FFFFFF">Layer Title</font></layer>
+ </ilayer></td>
+ <td style="cursor:hand" valign="top"> <a href="#" onClick="ToggleFloatingLayer('FloatingLayer',0);return false"><font color="#ffffff" size="2" face="arial" style="text-decoration:none">X</font></a>
+ </td>
+ </tr>
+ <tr>
+ <td width="100%" bgcolor="#FFFFFF" style="padding:4px" colspan="2">
+ <!-- place your HTML content here-->
+ <h3>Background color selector</h3>
+ <input id="hashCode" style="position: absolute; right: 15px; top: 239px;" size="8" class="color" value="#FF0000" type="text" />
+ <input type="button" value="Submit & Close" onClick="document.forma.dashBgColor1.value=document.getElementById('hashCode').value; javascript:ToggleFloatingLayer('FloatingLayer',0);"/>
+
+
+ <!-- End of content area -->
+ </td>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+</div>
+<!-- End Floating layer -->
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp
new file mode 100644
index 00000000..7589f73f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp
@@ -0,0 +1,320 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.ColFilterType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page errorPage="error_page.jsp" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+
+ boolean isEdit = curSubStep.equals(AppConstants.WSS_EDIT);
+
+ String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
+ String colId = isEdit?filterId.substring(0, filterId.indexOf('|')):null;
+ int filterPos = -1;
+ if(isEdit)
+ try {
+ filterPos = Integer.parseInt(filterId.substring(colId.length()+1));
+ } catch(NumberFormatException e) {}
+
+ DataColumnType currColumn = isEdit?rdef.getColumnById(colId):null;
+ ColFilterType currFilter = isEdit?rdef.getFilterById(colId, filterPos):null;
+
+ String arg = null; %>
+
+<script language="JavaScript">
+<!--
+function showFormFieldPopup() {
+ var w = window.open("", "filterPopup", "width=400,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Form Fields</title>");
+ w.document.writeln("<link rel=stylesheet type=text/css href='<%= AppUtils.getBaseFolderURL() %>css/raptor.css'>");
+ w.document.writeln("<script language=JavaScript>");
+ w.document.writeln("function setValue(newValue, fieldType) {");
+ w.document.writeln(" window.opener.document.forma.argValue.value = newValue;");
+ w.document.writeln(" window.opener.document.forma.formFieldType.value = fieldType;");
+ w.document.writeln(" window.close();");
+ w.document.writeln("} // setValue");
+ w.document.writeln("</"+"script>");
+ w.document.writeln("</head><body>");
+
+ w.document.writeln("<table width=94% border=0 cellspacing=1 align=center>");
+ w.document.writeln(" <tr class=rbg1>");
+ w.document.writeln(" <td height=30>&nbsp;</td>");
+ w.document.writeln(" <td><b class=rtableheader>Report Form Fields</b></td>");
+ w.document.writeln(" </tr>");
+<% int iCnt = 0;
+ if(rdef.getFormFieldList()!=null)
+ for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); iCnt++) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ w.document.writeln(" <tr<%= (iCnt%2==0)?" class=rbg8":"" %>>");
+ w.document.writeln(" <td align=center valign=middle height=30><font class=rtabletext><%= (iCnt+1) %></font></td>");
+ w.document.writeln(" <td valign=middle>");
+ w.document.writeln(" <b class=rtabletext><a href=\"javascript:setValue('[<%= fft.getFieldName() %>]', '<%= fft.getFieldType() %>')\"><%= fft.getFieldName() %></a></b>");
+ w.document.writeln(" </td>");
+ w.document.writeln(" </tr>");
+<% } // for
+ if(iCnt==0) { %>
+ w.document.writeln(" <tr class=rbg3 height=30>");
+ w.document.writeln(" <td colspan=2 align=center valign=middle><b class=rtabletext>There are no form fields defined</b></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr>");
+ w.document.writeln(" <td colspan=2 align=center><br><input type=Submit class=Button value=Close onClick=\"window.close();\"></td>");
+ w.document.writeln(" </tr>");
+<% } else { %>
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" </tr>");
+<% } // if
+%>
+ w.document.writeln("</table>");
+
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showFormFieldPopup
+
+function showArgPopup() {
+ var argType = document.forma.argType.options[document.forma.argType.selectedIndex].value;
+ if(argType=="<%= AppConstants.AT_FORMULA %>") {
+ alert("Please select Argument Type to be one of the following:\n - Simple Value\n - Another Column\n - List of Values\n - Run-time Form Field");
+ document.forma.argType.focus();
+ return;
+ }
+
+ if(argType=="<%= AppConstants.AT_FORM %>") {
+ showFormFieldPopup();
+ return;
+ }
+
+<% if(isEdit) { %>
+ var colId = "<%= colId %>";
+<% } else { %>
+ var colId = document.forma.filterColId.options[document.forma.filterColId.selectedIndex].value;
+<% } %>
+
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.filter."+((argType=="<%= AppConstants.AT_COLUMN %>")?"col":"data&<%= AppConstants.RI_ARG_TYPE %>="+argType+"&<%= AppConstants.RI_COLUMN_ID %>="+colId)+"&<%= AppConstants.RI_JS_TARGET_FIELD %>=document.forma.argValue&<%= AppConstants.RI_RESET_PARAMS %>=Y", "filterPopup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showArgPopup
+//-->
+</script>
+
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+<% if((isEdit?filterPos:rdef.getAllFilters().size())==0) { %>
+ <input type="hidden" name="filterJoin" value="AND">
+<% } else { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Join Condition: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% arg = (request.getParameter("filterJoin")!=null)?request.getParameter("filterJoin"):(isEdit?currFilter.getJoinCondition():""); %>
+ <select name="filterJoin">
+ <option value="AND"<%= arg.equals("AND")?" selected":"" %>>AND
+ <option value="OR"<%= arg.equals("OR") ?" selected":"" %>>OR
+ </select></font></td>
+ </tr>
+<% } %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Opening Brackets: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% arg = (request.getParameter("openBrackets")!=null)?request.getParameter("openBrackets"):(isEdit?nvl(currFilter.getOpenBrackets()):""); %>
+ <select name="openBrackets">
+ <option value=""<%= arg.equals("") ?" selected":"" %>>
+ <option value="("<%= arg.equals("(") ?" selected":"" %>>(
+ <option value="(("<%= arg.equals("((") ?" selected":"" %>>((
+ <option value="((("<%= arg.equals("(((") ?" selected":"" %>>(((
+ <option value="(((("<%= arg.equals("((((") ?" selected":"" %>>((((
+ <option value="((((("<%= arg.equals("(((((")?" selected":"" %>>(((((
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Filter By Column: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% if(isEdit) { %>
+ <%= currColumn.getDisplayName() %>
+ <input type="hidden" name="filterColId" value="<%= colId %>">
+ <input type="hidden" name="filterPos" value="<%= filterPos %>">
+ <% } else { %>
+ <select name="filterColId">
+<% int iCount = 0;
+ List reportCols = rdef.getAllColumns();
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next(); %>
+ <option value="<%= dct.getColId() %>"<%= ((request.getParameter("filterColId")==null)?(iCount==0):dct.getColId().equals(request.getParameter("filterColId")))?" selected":"" %>><%= dct.getDisplayName() %>
+<% } // for
+%>
+ </select>
+ <% } %>
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Expression: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% arg = (request.getParameter("filterExpr")!=null)?request.getParameter("filterExpr"):(isEdit?currFilter.getExpression():""); %>
+ <select name="filterExpr">
+ <option value="="<%= arg.equals("=") ?" selected":"" %>>=
+ <option value="&lt;&gt;"<%= arg.equals("<>") ?" selected":"" %>>&lt;&gt;
+ <option value="&gt;"<%= arg.equals(">") ?" selected":"" %>>&gt;
+ <option value="&gt;="<%= arg.equals(">=") ?" selected":"" %>>&gt;=
+ <option value="&lt;"<%= arg.equals("<") ?" selected":"" %>>&lt;
+ <option value="&lt;="<%= arg.equals("<=") ?" selected":"" %>>&lt;=
+ <option value="LIKE"<%= arg.equals("LIKE") ?" selected":"" %>>LIKE
+ <option value="IS NULL"<%= arg.equals("IS NULL") ?" selected":"" %>>IS NULL
+ <option value="IS NOT NULL"<%= arg.equals("IS NOT NULL")?" selected":"" %>>IS NOT NULL
+ <option value="IN"<%= arg.equals("IN") ?" selected":"" %>>IN (list)
+ <option value="NOT IN"<%= arg.equals("NOT IN") ?" selected":"" %>>NOT IN (list)
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Argument Type: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% arg = (request.getParameter("argType")!=null)?request.getParameter("argType"):(isEdit?nvl(currFilter.getArgType()):""); %>
+ <select name="argType" onChange="document.forma.formFieldType.value=''; if(options[selectedIndex].value=='<%= AppConstants.AT_COLUMN %>') document.forma.argValue.value='';">
+ <option value="<%= AppConstants.AT_VALUE %>"<%= arg.equals(AppConstants.AT_VALUE) ?" selected":"" %>>Simple Value
+ <option value="<%= AppConstants.AT_COLUMN %>"<%= arg.equals(AppConstants.AT_COLUMN) ?" selected":"" %>>Another Column
+ <option value="<%= AppConstants.AT_FORMULA %>"<%= arg.equals(AppConstants.AT_FORMULA)?" selected":"" %>>Expression
+ <option value="<%= AppConstants.AT_LIST %>"<%= arg.equals(AppConstants.AT_LIST) ?" selected":"" %>>List of Values
+ <option value="<%= AppConstants.AT_FORM %>"<%= arg.equals(AppConstants.AT_FORM) ?" selected":"" %>>Run-time Form Field
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Argument Value: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% String argValue = nvl(request.getParameter("argValue"), isEdit?(nvl(currFilter.getArgType()).equals(AppConstants.AT_COLUMN)?"["+rdef.getColumnById(currFilter.getArgValue()).getDisplayName()+"]":nvl(currFilter.getArgValue())):"");
+ String formFieldType = "";
+ if(arg.equals(AppConstants.AT_FORM)&&rdef.getFormFieldList()!=null)
+ for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); iCnt++) {
+ FormFieldType fft = (FormFieldType) iter.next();
+ if(argValue.equals("["+fft.getFieldName()+"]")) {
+ formFieldType = fft.getFieldType();
+ break;
+ } // if
+ } // for
+ %>
+ <input type="hidden" name="formFieldType" value="<%= formFieldType %>">
+ <input type="text" size="30" name="argValue" class=rtabletext value="<%= argValue %>"
+ onFocus="if(document.forma.argType.options[document.forma.argType.selectedIndex].value=='<%= AppConstants.AT_COLUMN %>') blur();" onChange="document.forma.formFieldType.value='';"></font>
+ <a href="javascript:showArgPopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Select from list" width="12" height="12"></a>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Closing Brackets: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% arg = (request.getParameter("closeBrackets")!=null)?request.getParameter("closeBrackets"):(isEdit?nvl(currFilter.getCloseBrackets()):""); %>
+ <select name="closeBrackets">
+ <option value=""<%= arg.equals("") ?" selected":"" %>>
+ <option value=")"<%= arg.equals(")") ?" selected":"" %>>)
+ <option value="))"<%= arg.equals("))") ?" selected":"" %>>))
+ <option value=")))"<%= arg.equals(")))") ?" selected":"" %>>)))
+ <option value="))))"<%= arg.equals("))))") ?" selected":"" %>>))))
+ <option value=")))))"<%= arg.equals(")))))")?" selected":"" %>>)))))
+ </select></font></td>
+ </tr>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ var selExpr = "";
+ selExpr = document.forma.filterExpr.options[document.forma.filterExpr.selectedIndex].value;
+ var selArgType = "";
+ selArgType = document.forma.argType.options[document.forma.argType.selectedIndex].value;
+
+ var isListArgument = false;
+ if(selArgType=="<%= AppConstants.AT_LIST %>")
+ isListArgument = true;
+
+ var isFormSingleValueArgument = false; // text with popup, drop-down, list-box and radio-buttons are always single value
+ var isFormMultiValueArgument = false; // check boxes and multi-select list box are always multi-value; text box and text area can be either
+ var isFormArgument = false; // text box and text area can be used for both single-value and multi-value
+ if(selArgType=="<%= AppConstants.AT_FORM %>") {
+ isFormArgument = true;
+
+ if( document.forma.formFieldType.value=="<%= FormField.FFT_TEXT_W_POPUP %>"||
+ document.forma.formFieldType.value=="<%= FormField.FFT_COMBO_BOX %>"||
+ document.forma.formFieldType.value=="<%= FormField.FFT_LIST_BOX %>"||
+ document.forma.formFieldType.value=="<%= FormField.FFT_RADIO_BTN %>")
+ isFormSingleValueArgument = true;
+
+ if( document.forma.formFieldType.value=="<%= FormField.FFT_CHECK_BOX %>"||
+ document.forma.formFieldType.value=="<%= FormField.FFT_LIST_MULTI %>")
+ isFormMultiValueArgument = true;
+ } // if
+
+ if((selExpr!="IS NULL")&&(selExpr!="IS NOT NULL")) {
+ if((selExpr=="IN")||(selExpr=="NOT IN")) {
+ if(! (isListArgument||(isFormArgument&&(! isFormSingleValueArgument)))) {
+ alert("This expression requires argument which is List of Values.\nPlease either select the argument type List of Values or\nselect argument type Run-time Form Field and then select Form Field which is Text Box, Text Area, Check Boxes or Multi-select List Box.");
+ document.forma.argValue.focus();
+ document.forma.argValue.select();
+
+ return false;
+ }
+ } else
+ if(isListArgument||(isFormArgument&&isFormMultiValueArgument)) {
+ alert("This expression cannot have argument type List of Values.\nPlease select another argument type.\n\nNote: Form Field which is Check Boxes or Multi-select List Box is also considered to be List of Values.");
+ document.forma.argValue.focus();
+ document.forma.argValue.select();
+
+ return false;
+ }
+
+ if(selArgType!="<%= AppConstants.AT_FORM %>")
+ if(document.forma.argValue.value=="") {
+ alert("Please provide argument value");
+ document.forma.argValue.focus();
+ document.forma.argValue.select();
+
+ return false;
+ }
+ } // if
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp
new file mode 100644
index 00000000..71898b35
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp
@@ -0,0 +1,115 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.ColFilterType" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+%>
+<table class="mTAB" width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=8 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="10%"><b class=rtableheader>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="5%"><b class=rtableheader>&nbsp;&nbsp;&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="33%"><b class=rtableheader>Column</b></td>
+ <td align="center" valign="Middle" width="26%"><b class=rtableheader>Filter</b></td>
+ <td align="center" valign="Middle" width="5%"><b class=rtableheader>&nbsp;&nbsp;&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="14%" colspan=2><input type="button" class=button value="Add" border="0" width="71" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit()"></td>
+ </tr>
+<% int iCount = 0;
+ int iPos = 0;
+ int nOpenBrackets = 0;
+ int nCloseBrackets = 0;
+ String colId = "";
+ List reportFilters = rdef.getAllFilters();
+ for(Iterator iter=reportFilters.iterator(); iter.hasNext(); iCount++, iPos++) {
+ ColFilterType cft = (ColFilterType) iter.next();
+
+ nOpenBrackets += nvl(cft.getOpenBrackets()).length();
+ nCloseBrackets += nvl(cft.getCloseBrackets()).length();
+
+ if(! colId.equals(cft.getColId()))
+ iPos = 0;
+ colId = cft.getColId(); %>
+ <tr class=<%=(iCount % 2 == 0)?"rowalt1":"rowalt2"%>>
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %></font></td>
+ <td align="center"><font class=rtabletext><%= iCount>0?cft.getJoinCondition():"&nbsp;" %></font></td>
+ <td align="center"><font class=rtabletext><%= nvl(cft.getOpenBrackets(), "&nbsp;") %></font></td>
+ <td><font class=rtabletext><%= rdef.getColumnById(colId).getDisplayName() %></font></td>
+ <td><font class=rtabletext><%= HTMLEncode(rdef.getFilterLabel(cft)) %></font></td>
+ <td align="center"><font class=rtabletext><%= nvl(cft.getCloseBrackets(), "&nbsp;") %></font></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_EDIT %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= colId+"|"+iPos %>';"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove this filter?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= colId+"|"+iPos %>'; }"></td>
+ </tr>
+<% } // for
+ if(iCount==0) { %>
+ <tr class=rbg2>
+ <td colspan=8 align="center" height="30"><font class=rtabletext>No filters defined</font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+<% if(nOpenBrackets!=nCloseBrackets) { %>
+ alert("The number of opening brackets (<%= nOpenBrackets %>) must be equal to the number of closing brackets (<%= nCloseBrackets %>).");
+ return false;
+<% } %>
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String HTMLEncode(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)=='<')
+ sb.replace(i, i+1, "&lt;");
+ else if(sb.charAt(i)=='>')
+ sb.replace(i, i+1, "&gt;");
+ else if(sb.charAt(i)=='"')
+ sb.replace(i, i+1, "&quot;");
+
+ return sb.toString();
+ } // HTMLEncode
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp
new file mode 100644
index 00000000..185f65c1
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp
@@ -0,0 +1,771 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="java.text.SimpleDateFormat"%>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+ String dependsOnHelp = "Custom SQL can be defined";
+%>
+
+<% String[] dateFormats = { "MM/DD/YYYY", "MM/YYYY", "DD-MON-YYYY", "Month DD, YYYY", "Month, YYYY" };
+ String[] charFormats = { "N/A" };
+
+ boolean isEdit = curSubStep.equals(AppConstants.WSS_EDIT);
+ FormFieldType currField = null;
+ if(isEdit)
+ currField = rdef.getFormFieldById(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+
+ String currColId = (currField!=null)?nvl(currField.getColId()):"";
+ String remoteDbPrefix = (String) session.getAttribute("remoteDB");
+
+ String colTableName = null;
+ String colColumnName = null;
+ String colDisplayFormat = null;
+ String colDisplayName = null;
+ if(isSQLBased)
+ if(currColId.length()>0) {
+ colTableName = ReportWrapper.getSQLBasedFFTColTableName(currColId);
+ colColumnName = ReportWrapper.getSQLBasedFFTColColumnName(currColId);
+ colDisplayFormat = ReportWrapper.getSQLBasedFFTColDisplayFormat(currColId);
+
+ if(currColId.indexOf("|")>=0)
+ currColId = currColId.substring(0, currColId.indexOf('|'));
+ colDisplayName = colColumnName;
+ //colDisplayName = currColId.substring(currColId.indexOf('.')+1);
+ } %>
+
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/editabledropdown.js"></script>
+<script language="JavaScript">
+
+<!--
+var fieldColName = "";
+
+ function toggleDiv(isChecked) {
+ if(isChecked) {
+ if(document.getElementById('showDefaultSql'))
+ document.getElementById('showDefaultSql').style.display="";
+ if(document.getElementById('showDefaultValue'))
+ document.getElementById('showDefaultValue').style.display="none";
+ if(document.forma.defaultValue)
+ document.forma.defaultValue.value="";
+ } else {
+ if(document.getElementById('showDefaultSql'))
+ document.getElementById('showDefaultSql').style.display="none";
+ if(document.getElementById('showDefaultValue'))
+ document.getElementById('showDefaultValue').style.display="";
+ if(document.getElementById('showDefaultSql') && document.forma.fieldDefaultSQL)
+ document.forma.fieldDefaultSQL.value="";
+ }
+
+ }
+
+ function toggleFieldTypeSelection() {
+ var selectBox = document.forma.fieldType;
+ var selectedString = "";
+ if(selectBox)
+ selectedString = selectBox.options[selectBox.selectedIndex].value;
+ else {
+ <% if(currField!=null) { %>
+ selectString = '<%=currField.getFieldType()%>';
+ <% } %>
+ }
+
+ if(selectedString == '<%= FormField.FFT_LIST_MULTI %>'){
+ document.getElementById('multiSelectListSizeDiv').style.display="block";
+ } else {
+ document.getElementById('multiSelectListSizeDiv').style.display="none";
+ document.getElementById('multiSelectListSize').value="4";
+ }
+ }
+
+<% if(isSQLBased) { %>
+function showTableColsPopup() {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.table.cols&single_value=Y&return_table_name=Y&return_col_type=Y&remoteDbPrefix=<%=remoteDbPrefix%>", "tableColsPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTableColsPopup
+
+function setDisplayTypeValues(dbType) {
+ if(document.forma.colType.value!=dbType) {
+ document.forma.colType.value = dbType;
+
+ document.forma.displayFormat.options.length = 0;
+
+ if(document.forma.colType.value=="<%= AppConstants.CT_DATE %>") {
+ <% for(int i=0; i<dateFormats.length; i++) { %>
+ document.forma.displayFormat.options[<%= i %>] = new Option("<%= dateFormats[i] %>", "<%= dateFormats[i] %>");
+ <% } %>
+ } else {
+ <% for(int i=0; i<charFormats.length; i++) { %>
+ document.forma.displayFormat.options[<%= i %>] = new Option("<%= charFormats[i] %>", "<%= charFormats[i].equals("N/A")?"":charFormats[i] %>");
+ <% } %>
+ } // else
+
+ document.forma.displayFormat.selectedIndex = 0;
+
+ if(document.layers)
+ history.go(0);
+ } // if
+} // setDisplayTypeValues
+
+function addText(newValue) {
+ var newText = "";
+ if(newValue.indexOf("|")<0)
+ newText = newValue;
+ else {
+ setDisplayTypeValues(newValue.substring(newValue.lastIndexOf("|")+1));
+ newText = newValue.substring(0, newValue.lastIndexOf("|"));
+ } // else
+
+ document.getElementById('fieldColId').value = newText;
+
+ var newFieldColName = "";
+ newFieldColName = newText.substring(newText.lastIndexOf(".")+1);
+
+ if(document.getElementById('fieldName').value==""||document.getElementById('fieldName').value==fieldColName)
+ document.getElementById('fieldName').value = newFieldColName;
+ fieldColName = newFieldColName;
+} // addText
+
+function clearText() {
+ document.getElementById('fieldColId').value = "";
+} // clearText
+
+<% } else { %>
+function changeColId() {
+ var newFieldColName = document.getElementById('fieldColId').options[document.getElementById('fieldColId').selectedIndex].text;
+ if(document.getElementById('fieldColId').selectedIndex>0&&(document.getElementById('fieldName').value==""||document.getElementById('fieldName').value==fieldColName))
+ document.getElementById('fieldName').value = newFieldColName;
+ fieldColName = newFieldColName;
+} // changeColId
+
+function showDefaultValuePopup() {
+ if(document.getElementById('fieldColId').selectedIndex==0) {
+ alert("The assistance is available only if this field is based on a column.\nYou can select a column from the list or just type a default value.");
+ document.getElementById('fieldColId').focus();
+ return;
+ } // if
+
+ var colId = document.getElementById('fieldColId').options[document.getElementById('fieldColId').selectedIndex].value;
+
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.filter.data&<%= AppConstants.RI_ARG_TYPE %>=<%= AppConstants.AT_VALUE %>&<%= AppConstants.RI_COLUMN_ID %>="+colId+"&<%= AppConstants.RI_JS_TARGET_FIELD %>=document.forma.defaultValue&<%= AppConstants.RI_RESET_PARAMS %>=Y", "defaultValuePopup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showDefaultValuePopup
+<% } // else if(isSQLBased)
+%>
+
+function showTestRunSQLPopup() {
+ //var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.testrun.sql&<%= AppConstants.RI_FORMATTED_SQL %>="+escape(""+document.getElementById('fieldSQL').value)+"&<%= AppConstants.RI_CHK_FIELD_SQL %>=Y", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.field.testrun.jsp", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestRunSQLPopup
+
+function showTestRunDefaultSQLPopup() {
+ //var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.testrun.sql&<%= AppConstants.RI_FORMATTED_SQL %>="+escape(""+document.getElementById('fieldSQL').value)+"&<%= AppConstants.RI_CHK_FIELD_SQL %>=Y", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.field.default.testrun.jsp", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestRunDefaultSQLPopup
+
+function showStartDatetRunSQLPopup( ) {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.field.date.start.testrun.jsp", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestRunRangeSQLPopup
+
+function showEndDateRunSQLPopup( ) {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.field.date.end.testrun.jsp", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+}
+function setDefaultVerifyFlag() {
+ document.forma.fieldDefaultSQLOrig.value = document.forma.fieldDefaultSQL.value;
+} // setDefaultVerifyFlag
+
+function setVerifyFlag() {
+ document.forma.fieldSQLOrig.value = document.getElementById('fieldSQL').value;
+} // setVerifyFlag
+
+function showSQLInstructions() {
+ var w = window.open("", "instrPopup", "width=400,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Form Field SQL Instructions</title>");
+ w.document.writeln("<link rel=stylesheet type=text/css href='<%= AppUtils.getBaseFolderURL() %>css/raptor.css'>");
+ w.document.writeln("</head><body>");
+
+ w.document.writeln("<table width=94% border=0 cellspacing=1 cellpadding=3 align=center>");
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td><b class=rtableheader>Form Field SQL Instructions</b></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr class=rbg3 align=center valign=middle>");
+ w.document.writeln(" <td align=left valign=middle><font class=rtabletext>");
+ w.document.writeln(" The SQL result set must have a column <b>id</b> and a column <b>name</b>. ");
+ w.document.writeln(" If selecting date values in visual report, the <b>id</b> must be formatted <b>MM/DD/YYYY</b>; the <b>name</b> can use any display format. ");
+ w.document.writeln(" Example:<br><br><b>SELECT DISTINCT</b><br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO_CHAR(t.start_date, 'MM/DD/YYYY') <b>id</b>,<br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO_CHAR(t.start_date, 'Month YYYY') <b>name</b><br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;<b>FROM</b><br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_table t<br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;<b>WHERE</b><br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start_date IS NOT NULL<br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;<b>ORDER BY</b><br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start_date DESC");
+ w.document.writeln(" </font></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr>");
+ w.document.writeln(" <td align=center><br><input type=Submit class=Button value=Close onClick=\"window.close();\"></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln("</table>");
+
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showSQLInstructions
+
+function showRangeSQLInstructions() {
+ var w = window.open("", "instrPopup", "width=400,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Form Field Range SQL Instructions</title>");
+ w.document.writeln("<link rel=stylesheet type=text/css href='<%= AppUtils.getBaseFolderURL() %>css/raptor.css'>");
+ w.document.writeln("</head><body>");
+
+ w.document.writeln("<table width=94% border=0 cellspacing=1 cellpadding=3 align=center>");
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td><b class=rtableheader>Form Field Range SQL Instructions</b></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr class=rbg3 align=center valign=middle>");
+ w.document.writeln(" <td align=left valign=middle><font class=rtabletext>");
+ w.document.writeln(" The SQL should ALWAYS return a valid Oralce date. If the return is not a valid date, the range will not be set.<br>");
+ w.document.writeln(" The SQL will always get precedence over the static values.<br>");
+ w.document.writeln(" ");
+ w.document.writeln(" Example:<br><br><b>SELECT</b> SYSDATE<br> ");
+ w.document.writeln(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>FROM</b> DUAL");
+ w.document.writeln(" </font></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr>");
+ w.document.writeln(" <td align=center><br><input type=Submit class=Button value=Close onClick=\"window.close();\"></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln("</table>");
+
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showRangeSQLInstructions
+//-->
+</script>
+
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Field Name: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <input type="text" style="width: 100px;" class="rtabletext" size="30" maxlength="30" id="fieldName" name="fieldName" value="<%= isEdit?currField.getFieldName():"" %>"></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Based On Column: </font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+<% if(isSQLBased) { %>
+ <input type=text style="width: 100px;" class="rtabletext" size=50 id="fieldColId" name="fieldColId" value="<%= currColId %>" onFocus="blur()">
+ <a href="javascript:showTableColsPopup()"><img border=0 src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Select database column" width=12 height=12></a>
+<% } else { %>
+ <select name="fieldColId" class="rtabletext" onChange="changeColId()" style="width: 100px;" >
+ <option value=""<%= currColId.equals("")?" selected":"" %>>--- None ---
+<% int iCount = 0;
+ List reportCols = rdef.getAllColumns();
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next(); %>
+ <option value="<%= dct.getColId() %>"<%= currColId.equals(dct.getColId())?" selected":"" %>><%= dct.getDisplayName() %>
+<% if(currColId.equals(dct.getColId()))
+ colDisplayName = dct.getDisplayName();
+ } // for
+%>
+ </select>
+<% } // else if(isSQLBased)
+ if(colDisplayName!=null) { %>
+<script language="JavaScript">
+<!--
+fieldColName = "<%= colDisplayName %>";
+//-->
+</script>
+<% } // if
+%>
+ </font>
+ </td>
+ </tr>
+<% if(isSQLBased) {
+ String colType = AppConstants.CT_CHAR;
+ if(colTableName!=null&&colColumnName!=null)
+ try {
+ colType = nvl(DataCache.getReportTableDbColumnType(colTableName, colColumnName,((String) session.getAttribute("remoteDB"))), AppConstants.CT_CHAR);
+ } catch(Exception e) {}
+
+ String[] fmt;
+ if(colType.equals(AppConstants.CT_DATE))
+ fmt = dateFormats;
+ else
+ fmt = charFormats; %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Display Format: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="displayFormat" style="width: 100px;" >
+ <% for(int i=0; i<fmt.length; i++) { %>
+ <option value="<%= fmt[i].equals("N/A")?"":fmt[i] %>"<%= (nvl(colDisplayFormat).toUpperCase().equals(fmt[i].toUpperCase()))?" selected":"" %>><%= fmt[i] %>
+ <% } %>
+ </select>
+ <input type="hidden" name="colType" value="<%= colType %>">
+ </font></td>
+ </tr>
+<% } // if
+%>
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Visible? </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="visible" style="width: 100px;" >
+ <option value="Y"<%= isEdit?(nvl(currField.getVisible(),"Y").startsWith("Y")?" selected":""):" selected" %>>Yes
+ <option value="N"<%= (isEdit&&(! nvl(currField.getVisible(),"Y").startsWith("Y")))?" selected":"" %>>No
+ </select></font></td>
+ </tr>
+ <% if(Globals.getAllowSQLBasedReports() || AppUtils.isAdminUser(request)) { %>
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Is used in Group By Clause?</font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" name="isGroupFormField" value="Y" <%=(currField!=null && (currField.isGroupFormField()!=null && currField.isGroupFormField().booleanValue()))?" checked":"" %>>
+ </td>
+ </tr>
+ <% } %>
+
+
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Field Type: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <% String curValue = nvl((currField!=null)?currField.getFieldType():"", FormField.FFT_TEXT_W_POPUP); %>
+ <select name="fieldType" onChange="toggleFieldTypeSelection()" style="width: 100px;" >
+ <%--<option value="<%= FormField.FFT_TEXT_W_POPUP %>"<%= curValue.equals(FormField.FFT_TEXT_W_POPUP)?" selected":"" %>>Text Box with Popup --%>
+ <option value="<%= FormField.FFT_TEXT %>"<%= curValue.equals(FormField.FFT_TEXT )?" selected":"" %>>Text Box
+ <%--<option value="<%= FormField.FFT_TEXTAREA %>"<%= curValue.equals(FormField.FFT_TEXTAREA )?" selected":"" %>>Text Area--%>
+ <%--<option value="<%= FormField.FFT_COMBO_BOX %>"<%= curValue.equals(FormField.FFT_COMBO_BOX )?" selected":"" %>>Drop-Down List--%>
+ <option value="<%= FormField.FFT_LIST_BOX %>"<%= curValue.equals(FormField.FFT_LIST_BOX )?" selected":"" %>>List Box
+ <%--<option value="<%= FormField.FFT_RADIO_BTN %>"<%= curValue.equals(FormField.FFT_RADIO_BTN )?" selected":"" %>>Radio Buttons
+ <option value="<%= FormField.FFT_CHECK_BOX %>"<%= curValue.equals(FormField.FFT_CHECK_BOX )?" selected":"" %>>Check Boxes --%>
+ <option value="<%= FormField.FFT_LIST_MULTI %>"<%= curValue.equals(FormField.FFT_LIST_MULTI )?" selected":"" %>>Multi-select List Box
+ <option value="<%= FormField.FFT_HIDDEN %>"<%= curValue.equals(FormField.FFT_HIDDEN )?" selected":"" %>>Hidden
+ </select>
+ </font></td>
+ </tr>
+
+ <tr id="multiSelectListSizeDiv">
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Visible Size: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select id="multiSelectListSize" name="multiSelectListSize" onKeyDown="fnKeyDownHandler(this, event);" onKeyUp="fnKeyUpHandler_A(this, event); return false;" onKeyPress = "return fnKeyPressHandler_A(this, event);" onChange="fnChangeHandler_A(this, event);">
+ <option value="1"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("1")?" selected":"" )%>>1
+ <option value="2"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("2")?" selected":"" )%>>2
+ <option value="3"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("3")?" selected":"" )%>>3
+ <option value="4"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("4")?" selected":"" )%>>4
+ <option value="5"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("5")?" selected":"" )%>>5
+ <option value="6"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("6")?" selected":"" )%>>6
+ <option value="7"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("7")?" selected":"" )%>>7
+ <option value="8"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("8")?" selected":"" )%>>8
+ <option value="9"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("9")?" selected":"" )%>>9
+ <option value="10"<%= (currField!=null && nvl(currField.getMultiSelectListSize(), "4").equals("10")?" selected":"" )%>>10
+ <option value="" style="COLOR:#ff0000;BACKGROUND-COLOR:#ffff00;">Custom</option> <!-- This is the Editable Option -->
+ <% if(currField!=null && isNumber(nvl(currField.getMultiSelectListSize())) && new Integer(nvl(currField.getMultiSelectListSize(), "0")).intValue() <= 20) {
+ %>
+ <option value="<%=nvl(currField.getMultiSelectListSize())%>" selected><%=nvl(currField.getMultiSelectListSize())%></option> <!-- This is the Editable Option -->
+ <%
+ }
+ %>
+ </select>
+ </font></td>
+ </tr>
+
+ <%if(! isSQLBased) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Default Value: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <input type="text" class="rtabletext" size="20" maxlength="50" name="defaultValue" value="<%= isEdit?nvl(currField.getDefaultValue()):"" %>"></font>
+ <a href="javascript:showDefaultValuePopup()"><img border="0" src="<%= AppUtils.getImgFolderURL() %>shareicon.gif" alt="Select from list" width="12" height="12"></a>
+ </td></tr>
+ <% } else { %>
+ <% if(Globals.getAllowSQLBasedReports() || AppUtils.isAdminUser(request)) { %>
+
+ <tr>
+ <td class=rbg2 height="30" align="right">
+ <font class=rtabletext>Is Default Value should be SQL</font>
+ </td>
+ <td class=rbg3 align="left" nowrap>
+ <input type="checkbox" id="isDefaultSQL" name="isDefaultSQL" value="N" <%=currField!=null && currField.getFieldDefaultSQL()!=null && currField.getFieldDefaultSQL().length()>0?" checked":"" %> onClick="toggleDiv(this.checked)">
+ </td>
+ </tr>
+
+
+ <tbody id="showDefaultSql" style="display:none;">
+ <tr>
+ <td class=rbg2 height="30" align="right">Default SQL: </td>
+ <td class=rbg3>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" rowspan="2">
+ <input type="hidden" name="fieldDefaultSQLOrig" value="<%= (currField!=null)?nvl(currField.getFieldDefaultSQL()):"" %>">
+ <textarea class="buttonLabelField" name="fieldDefaultSQL" cols="40" rows="3"><%= (currField!=null)?nvl(currField.getFieldDefaultSQL()):"" %></textarea>
+ </td>
+ <td align="center" valign="top">&nbsp;<input type="Button" att-button btn-type="primary" size="small" class=button value="Verify SQL" onClick="if(document.forma.fieldDefaultSQL.value=='') {alert('Please provide SQL.'); return false; } showTestRunDefaultSQLPopup();">&nbsp;</td>
+ <td rowspan="2" width="60%">&nbsp;</td></tr><tr>
+ <td align="center" valign="middle">&nbsp;<a href="javascript:showSQLInstructions()" class=rtabletext>Instructions</a>&nbsp;</td>
+ </tr></table>
+ </td>
+ </tr>
+ </tbody>
+ <% if(Globals.getAllowSQLBasedReports() || AppUtils.isAdminUser(request)) { %>
+ <script language="Javascript">
+ toggleDiv(document.getElementById('isDefaultSQL').checked);
+ </script>
+ <% } %>
+ <% } // if admin user %>
+ <tbody id="showDefaultValue">
+ <tr>
+ <td class=rbg2 height="30" align="right"> Default Value: </td>
+ <td class=rbg3>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" rowspan="2">
+ <input type="text" style="width:200px" class="rtabletext" size="20" maxlength="50" name="defaultValue" value="<%= isEdit?nvl(currField.getDefaultValue()):"" %>"></font>
+ </td>
+ </tr></table>
+ </td>
+ </tr>
+ </tbody>
+ <% if(Globals.getAllowSQLBasedReports() || AppUtils.isAdminUser(request)) { %>
+ <script language="Javascript">
+ toggleDiv(document.getElementById('isDefaultSQL').checked);
+ </script>
+ <% } %>
+ <% } //else %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Verify Field Value As: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <% curValue = nvl((currField!=null)?currField.getValidationType():"", FormField.VT_NONE); %>
+ <select name="validation" onChange="if (this.value =='<%= FormField.VT_DATE%>') ; else dateRangeRow.style.display='none'" style="width: 200px;" >
+ <option value="<%= FormField.VT_NONE %>"<%= curValue.equals(FormField.VT_NONE )?" selected":"" %>>--- Do Not Perform Validation ---
+ <option value="<%= FormField.VT_DATE %>"<%= curValue.equals(FormField.VT_DATE )?" selected":"" %>>Date
+ <option value="<%= FormField.VT_TIMESTAMP_HR %>"<%= curValue.equals(FormField.VT_TIMESTAMP_HR )?" selected":"" %>>TimeStamp (Hour)
+ <option value="<%= FormField.VT_TIMESTAMP_MIN %>"<%= curValue.equals(FormField.VT_TIMESTAMP_MIN )?" selected":"" %>>TimeStamp (Hour, Min)
+ <option value="<%= FormField.VT_TIMESTAMP_SEC %>"<%= curValue.equals(FormField.VT_TIMESTAMP_SEC )?" selected":"" %>>TimeStamp (Hour, Min, Sec)
+ <option value="<%= FormField.VT_INT %>"<%= curValue.equals(FormField.VT_INT )?" selected":"" %>>Integer
+ <option value="<%= FormField.VT_INT_NON_NEGATIVE %>"<%= curValue.equals(FormField.VT_INT_NON_NEGATIVE )?" selected":"" %>>Positive Integer
+ <option value="<%= FormField.VT_INT_POSITIVE %>"<%= curValue.equals(FormField.VT_INT_POSITIVE )?" selected":"" %>>Positive Integer, Cannot Be Zero
+ <option value="<%= FormField.VT_FLOAT %>"<%= curValue.equals(FormField.VT_FLOAT )?" selected":"" %>>Any Number
+ <option value="<%= FormField.VT_FLOAT_NON_NEGATIVE %>"<%= curValue.equals(FormField.VT_FLOAT_NON_NEGATIVE)?" selected":"" %>>Positive Number
+ <option value="<%= FormField.VT_FLOAT_POSITIVE %>"<%= curValue.equals(FormField.VT_FLOAT_POSITIVE )?" selected":"" %>>Positive Number, Cannot Be Zero
+ </select></font>
+ </td>
+ </tr>
+ <tr id="dateRangeRow" <%if(curValue.equals(FormField.VT_DATE) || curValue.equals(FormField.VT_TIMESTAMP_HR) || curValue.equals(FormField.VT_TIMESTAMP_MIN) || curValue.equals(FormField.VT_TIMESTAMP_SEC)){%><%}else{%>style="display:none"<%}%>>
+ <td colspan="2" class=rbg2>
+ <table width="100%">
+ <tr>
+ <td class=rbg2 align="right" width="33%" height="30"><font class=rtabletext>Valid Date Range: </font></td>
+ <td width="15%" align="left">
+ <font class=rtabletext >From </font>
+ </td>
+ <td align="left">
+ <font class=rtabletext >To </font>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <a href="javascript:showRangeSQLInstructions()" class=rtabletext>Instructions</a>&nbsp;
+ </td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right"></td>
+ </td>
+ <td width="15%" align="left">
+ <input type="hidden" name="rangeStartDateSQLOrig" value="<%= (currField!=null)?nvl(currField.getRangeStartDateSQL()):"" %>">
+ <textarea name="rangeStartDateSQL" class="rtabletext" style="width: 200px;height: 100px" cols="20" rows="3"><%= (currField!=null)?nvl(currField.getRangeStartDateSQL()):"" %></textarea>
+
+ </td>
+ <td align="left">
+ <input type="hidden" name="rangeEndDateSQLOrig" value="<%= (currField!=null)?nvl(currField.getRangeEndDateSQL()):"" %>">
+ <textarea name="rangeEndDateSQL" class="rtabletext" style="width: 200px;height: 100px" cols="20" rows="3"><%= (currField!=null)?nvl(currField.getRangeEndDateSQL()):"" %></textarea>
+
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right"></td>
+ </td>
+ <td width="15%" align="left">
+ <input type="Button" class=button att-button btn-type="primary" size="small" value="Verify SQL" onClick="if(document.forma.rangeStartDateSQL.value=='') {alert('Please provide SQL.'); return false; } showStartDatetRunSQLPopup();">&nbsp;</td>
+ </td>
+ <td align="left">
+ <input type="Button" class=button att-button btn-type="primary" size="small" value="Verify SQL" onClick="if(document.forma.rangeEndDateSQL.value=='') {alert('Please provide SQL.'); return false; } showEndDateRunSQLPopup();">&nbsp;</td>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right"></td>
+ <td class=rbg3 align="left">
+ <% String stDate = "";
+ String endDate = "";
+ if (currField!= null
+ && currField.getRangeStartDate() != null && currField.getRangeStartDate().equals("") == false
+ && currField.getRangeEndDate() != null && currField.getRangeEndDate().equals("") == false){
+ SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
+ stDate = dtf.format(currField.getRangeStartDate().toGregorianCalendar().getTime());
+ endDate = dtf.format(currField.getRangeEndDate().toGregorianCalendar().getTime());
+ }
+ %>
+ <input type="text" class="rtabletext" size="10" maxlength="10" style="width: 100px;" name="rangeStartDate" id="rangeStartDate" value="<%=stDate%>">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar.select(document.getElementById('rangeStartDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+
+
+ </td>
+ <td>
+ <input type="text" class="rtabletext" size="10" maxlength="10" style="width: 100px;" name="rangeEndDate" id="rangeEndDate" value="<%=endDate%>">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar.select(document.getElementById('rangeEndDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ </td>
+ </tr>
+
+ </table>
+ </td>
+
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>&nbsp; </font></td>
+ <td class=rbg3 align="left">
+ <% curValue = nvl((currField!=null)?currField.getMandatory():"", "N"); %>
+ <input type="Checkbox" class="checkbox" name="mandatory" value="Y"<%= curValue.equals("Y")?" checked":"" %>>
+ <font class=rtabletext>User must provide value for this field</font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Field Help Text: </font></td>
+ <td class=rbg3 align="left">
+ <textarea name="fieldHelp" style="width: 100px;" class="rtabletext" cols="40" rows="3"><%= (currField!=null)?nvl(currField.getComment()):"" %></textarea>
+ </td>
+ </tr>
+<% if(Globals.getAllowSQLBasedReports()||AppUtils.isAdminUser(request)) { %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>SQL Generating Custom List of Values: <br>(overrides default list) </font></td>
+ <td class=rbg3 align="left">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" rowspan="2">
+ <input type="hidden" name="fieldSQLOrig" value="<%= (currField!=null)?nvl(currField.getFieldSQL()):"" %>">
+ <textarea id="fieldSQL" name="fieldSQL" class="rtabletext" cols="40" rows="3"><%= (currField!=null)?nvl(currField.getFieldSQL()):"" %></textarea>
+ </td>
+ <td align="center" valign="top">&nbsp;<input type="Button" class=button att-button btn-type="primary" size="small" value="Verify SQL" onClick="if(document.getElementById('fieldSQL').value=='') {alert('Please provide SQL.'); return false; } showTestRunSQLPopup();">&nbsp;</td>
+ <td rowspan="2" width="60%">&nbsp;</td></tr><tr>
+ <td align="center" valign="middle">&nbsp;<a href="javascript:showSQLInstructions()" class=rtabletext>Instructions</a>&nbsp;</td>
+ </tr></table>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"></td>
+ <td class=rbg3 align="left">
+ <% curValue = nvl((currField!=null)?currField.getDependsOn():"", "N"); %>
+ <font class=rtabletext><input id='dependsOn' type="checkbox" name="dependsOn" value="Y"<%= curValue.equals("Y") ? "checked":"" %>>
+ <label title="<%=dependsOnHelp%>" style="cursor: pointer;" for="dependsOn">Depends on another Form Field.</label>
+ </td>
+ </tr>
+<% } else { %>
+ <input type="hidden" id="fieldSQL" name="fieldSQL" value="<%= (currField!=null)?nvl(currField.getFieldSQL()):"" %>">
+<% } %>
+<% List predefinedValues = (currField!=null&&currField.getPredefinedValueList()!=null)?currField.getPredefinedValueList().getPredefinedValue():null; %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Provide Predefined List of Values:</font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <% if(predefinedValues==null||predefinedValues.size()==0) { %>
+ Do not use Predefined list - Generate list from database
+ <% } else {
+ String value = (String) predefinedValues.get(0); %>
+ <%= value %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.forma.delPredefinedValue.value='<%= value %>'; }">
+ <% } %>
+ </font></td>
+ </tr>
+<% if(predefinedValues!=null&&predefinedValues.size()>1)
+ for(int i=1; i<predefinedValues.size(); i++) {
+ String value = (String) predefinedValues.get(i); %>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>&nbsp;</font></td>
+ <td class=rbg3 align="left" nowrap><font class=rtabletext>
+ <%= value %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.forma.delPredefinedValue.value='<%= value %>'; }">
+ </font></td>
+ </tr>
+<% } // for
+%>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>&nbsp; </font></td>
+ <td class=rbg3 align="left" valign="middle" nowrap><font class=rtabletext>
+ <input type="hidden" name="delPredefinedValue" value="">
+ <input type="text" style="width: 200px;" size="20" maxlength="50" name="newPredefinedValue" value="">
+ <input type="Submit" att-button btn-type="primary" size="small" class=button value="Add To List" onClick="if(document.forma.newPredefinedValue.value=='') {alert('Value cannot be empty.'); return false; } if(! stepDataValidate(false)) return false; <%= (predefinedValues==null||predefinedValues.size()==0)?"if(! confirm('If you create a list of predefined values, it will be displayed instead of the list selected from the database.\\nAre you sure you want to do that?')) return false; ":"" %>document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_USER %>';">
+ </font></td>
+ </tr>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function stepDataValidate(checkCol) {
+ if(document.getElementById('fieldName').value=="") {
+ alert("Please enter Field Name");
+ document.getElementById('fieldName').focus();
+ document.getElementById('fieldName').select();
+
+ return false;
+ } // if
+
+<% if(rdef.getFormFieldList()!=null) { %>
+ if(false
+<% for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); ) {
+ FormFieldType fft = (FormFieldType) iter.next();
+
+ if(! (isEdit&&fft.getFieldId().equals(currField.getFieldId()))) { %>
+ ||(document.getElementById('fieldName').value=="<%= fft.getFieldName() %>")
+<% }
+ } %>
+ ) {
+ alert("Form field with name "+document.getElementById('fieldName').value+" already exists.\nPlease select another name.");
+ document.getElementById('fieldName').focus();
+ document.getElementById('fieldName').select();
+
+ return false;
+ }
+<% } %>
+
+<% if(predefinedValues==null||predefinedValues.size()==0) { %>
+ if(checkCol)
+ if(document.getElementById('fieldColId').selectedIndex==0)
+ if(document.forma.fieldType.selectedIndex!=1&&document.forma.fieldType.selectedIndex!=2) {
+ alert("Field Type can be only Text Box or Text Area if this field is not based on a column.\nPlease change the Field Type or select a column from the list.");
+ document.forma.fieldType.focus();
+
+ return false;
+ } // if
+<% } %>
+
+<% if((Globals.getAllowSQLBasedReports()||AppUtils.isAdminUser(request)) && (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))) { %>
+ if(document.forma.fieldSQL.value!=""&&document.forma.fieldSQL.value!=document.forma.fieldSQLOrig.value) {
+ alert("You must verify the SQL.");
+ document.forma.fieldSQL.focus();
+ document.forma.fieldSQL.select();
+
+ return false;
+ } // if
+ if(document.forma.fieldDefaultSQL.value!=""&&document.forma.fieldDefaultSQL.value!=document.forma.fieldDefaultSQLOrig.value) {
+ alert("You must verify the Default SQL.");
+ document.forma.fieldDefaultSQL.focus();
+ document.forma.fieldDefaultSQL.select();
+
+ return false;
+ } // if
+ if(document.forma.fieldSQL.value.length<=0 && document.forma.fieldDefaultSQL.value.length > 1 ) {
+ alert("SQL Field cannot be empty when Default sql has value.");
+ return false;
+ }
+<% } %>
+
+if(document.getElementById('multiSelectListSize') && document.getElementById('multiSelectListSize').options.selectedIndex == 0) {
+ if(!checkNonNegativeInteger(document.forma.multiSelectListSize.options[document.forma.multiSelectListSize.options.selectedIndex].text)) {
+ alert("Please enter number in Multi Select List Size. No Characters are allowed.");
+ return false;
+ } else {
+ if(document.getElementById('multiSelectListSize').options[document.getElementById('multiSelectListSize').options.selectedIndex].text>20) {
+ alert("Please not only 20 items are allowed in Multi-Select form field.");
+ return false;
+ }
+ document.getElementById('multiSelectListSize').options[document.getElementById('multiSelectListSize').options.selectedIndex].value=document.getElementById('multiSelectListSize').options[document.getElementById('multiSelectListSize').options.selectedIndex].text;
+ }
+}
+
+ return true;
+} // dataValidate
+
+function dataValidate() {
+ return stepDataValidate(true);
+} // dataValidate
+
+toggleFieldTypeSelection();
+//-->
+</script>
+
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/CalendarPopup.js"></script>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/calendar.css">
+<iframe id="calendarFrame" class="nav" z-index:199; scrolling="no" frameborder="0" width=165px height=165px src="" style="position:absolute; display:none;">
+</iframe>
+<div id="calendarDiv" name="calendarDiv" style="position:absolute; z-index:20000; visibility:hidden; background-color:white;layer-background-color:white;"></div>
+
+ <SCRIPT LANGUAGE="JavaScript">
+ var oCalendar = new CalendarPopup("calendarDiv", "calendarFrame");
+ oCalendar.setCssPrefix("raptor");
+ </SCRIPT>
+
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+ private boolean isNumber(String value) { // As per Raptor def, like
+
+ // -$3,270.56
+ value = value.trim();
+ if(value.length()>2) return false;
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (!(Character.isDigit(c) || c == '.' || c == '-' || c == '+' || c == ','
+ || c == '$' || c == '%'))
+ return false;
+ } // for
+
+ return true;
+ } // isNumber
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp
new file mode 100644
index 00000000..8470dbbc
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp
@@ -0,0 +1,107 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@page import="org.openecomp.portalsdk.analytics.model.runtime.FormField"%>
+<%@page import="org.openecomp.portalsdk.analytics.system.Globals"%>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+
+%>
+
+<table class=mTAB width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="72%"><b class=rtableheader>Field Name</b></td>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Re-order</b></td>
+ <td align="center" valign="Middle" width="14%" colspan=2>
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit()" border="0" width="40" height="28" att-button btn-type="primary" size="small" title='Add'>Add</button>
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WSS_ADD_BLANK %>';document.forma.submit()" border="0" width="40" height="28" att-button btn-type="primary" size="small" title='Add Blank'>Add Blank</button>
+ </td>
+ </tr>
+<% int iCount = 0;
+ if(rdef.getFormFieldList()!=null)
+ for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); iCount++) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ <tr class=<%=(iCount % 2 == 0)?"rowalt1":"rowalt2"%>>
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %><!--fft.getOrderBySeq(): <%= fft.getOrderBySeq() %>--></font></td>
+ <td><font class=rtabletext><%= fft.getFieldName() %>&nbsp;[<%= fft.getFieldId()%>]</font></td>
+ <td align="center" nowrap>
+<% if(iCount==0) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankdown.gif" width="25" height="7">
+<% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columnup.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_UP %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= fft.getFieldId() %>';">
+<% } %>
+<% if(iCount==rdef.getFormFieldList().getFormField().size()-1) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankup.gif" width="25" height="7">
+<% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columndown.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_DOWN %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= fft.getFieldId() %>';">
+<% } %>
+ </td>
+
+ <td align="center">
+ <%if(!fft.getFieldType().equals(FormField.FFT_BLANK)) { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_EDIT %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= fft.getFieldId() %>';">
+ <% } else { %> &nbsp;
+ <% } %>
+ </td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to delete form field <%= fft.getFieldName() %> from the report?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= fft.getFieldId() %>'; }"></td>
+ </tr>
+<% } // for
+ if(iCount==0) { %>
+ <tr class=rbg2>
+ <td colspan=5 align="center" height="30"><font class=rtabletext>No form fields defined</font></td>
+ </tr>
+<% } %>
+</table>
+<% if(Globals.customizeFormFieldInfo()) { %>
+<% if(rdef.getFormFieldList()!=null) { %>
+<table class=mTAB width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr><td class=rbg1 valign="middle"><b class=rtableheader> Defining the Information Bar </b></td></tr>
+ <tr><td align="center">
+ <textarea name="blueBarField" id="blueBarField" rows="20" cols="200" style="width: 200px"><%= nvl(rdef.getFormFieldList().getComment()).length()>0?rdef.getFormFieldList().getComment():""%></textarea>
+ </td></tr>
+ <tr><td align="center">
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WSS_INFO_BAR %>';document.forma.submit()" att-button btn-type="primary" size="small" title='Submit'>Submit</button>
+ </td></tr>
+ </table>
+<% } %>
+<% } %>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp
new file mode 100644
index 00000000..d225cb56
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp
@@ -0,0 +1,167 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants"%>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence"%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType"%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.JavascriptItemType"%>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils"%>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ FormFieldType fft = null;
+ boolean isFormfieldPresent = (rdef.getFormFieldList()!=null && rdef.getFormFieldList().getFormField().size()<=0);
+%>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 valign="top"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - <%= ws.getCurrentStep() %> Wizard <%= isFormfieldPresent?" <a href=\"javascript:uitmpl_qh('javascript_text'); if(typeof window.parent.resizeWindow == 'function') window.parent.resizeWindow();\" class=\"qh-link\" style=\"position:fixed;\"></a>":""%></b></td>
+ </tr>
+ <% if(isFormfieldPresent) { %>
+ <tr>
+ <td class="nopad"><!-- quick help text -->
+ <div id="javascript_text" class="mQH">
+ <p><span class="label">Form Field Information:<BR></span>
+ <table>
+ <%
+
+ for(Iterator iter1=rdef.getFormFieldList().getFormField().iterator(); iter1.hasNext();) {
+ fft = (FormFieldType) iter1.next();
+ %>
+
+ <%= "<TR><TD align=\"right\">" + fft.getFieldName() +":</TD><TD>&nbsp;</TD><TD>document.formd." + fft.getFieldId()+"</TD></TR>" %>
+ <% }
+ %>
+ </table>
+ </p>
+ </div>
+ <!-- /quick help text --></td>
+ </tr>
+ <% } %>
+ <tr>
+ <td width="65%" class=rbg3 align="center">
+ <textarea name="<%= AppConstants.RI_JAVASCRIPT%>" cols="100" rows="30"><%= (rdef.getJavascriptElement()!=null)?rdef.getJavascriptElement():"" %></textarea>
+ </td>
+ </tr>
+ <tr>
+ <table class=mTAB width="100%" class="tableBorder" border="3" cellspacing="1" cellpadding="3" align=center>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Form Field</b></td>
+ <td align="center" valign="Middle" width="72%"><b class=rtableheader>Calling Javascript</b></td>
+ <td align="center" valign="Middle" width="14%">
+ &nbsp;
+ </td>
+ </tr>
+ <%
+ int iCount = 0;
+ String javascriptFieldId = "";
+ String id = "";
+ String callText = "";
+
+ int count = 0;
+ if(rdef.getJavascriptList()!=null ) {
+ for(Iterator iter=rdef.getJavascriptList().getJavascriptItem().iterator(); iter.hasNext(); ) {
+ count++;
+ JavascriptItemType javascriptItem = (JavascriptItemType) iter.next();
+ id = javascriptItem.getId();
+ javascriptFieldId = javascriptItem.getFieldId();
+ callText = javascriptItem.getCallText();
+ %>
+ <tr class=<%=(count%2==0)?"rowalt2":"rowalt1"%>>
+ <td align="center" height="30"><font class=rtabletext><%= ++iCount %></font></td>
+ <td align="center" >
+ <select name="javascriptFormField-<%=id %>" style="width: 100px">
+ <option value="-1"> <-- SELECT --> </option>
+ <option value="ol1" <%= ("ol1".equals(javascriptFieldId))?" selected":""%>>OnLoad</option>
+ <option value="os1" <%= ("os1".equals(javascriptFieldId))?" selected":""%>>OnSubmit</option>
+
+
+ <%
+ if(rdef.getFormFieldList()!=null){
+ for(Iterator iter1=rdef.getFormFieldList().getFormField().iterator(); iter1.hasNext();) {
+ fft = (FormFieldType) iter1.next();
+ %>
+ <option value="<%=fft.getFieldId() %>" <%= (fft.getFieldId().equals(javascriptFieldId))?" selected":""%>><%=fft.getFieldName() %></option>
+ <%
+ }
+ }
+ %>
+
+ </select>
+ </td>
+ <td align="center">
+ <textarea name="callText-<%=id %>" rows="3" cols="100"><%=callText %></textarea>
+ </td>
+ <td width="30%">
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_SAVE %>'; document.forma.<%=AppConstants.RI_JAVASCRIPT_ITEM_ID %>.value='<%= id %>'; document.forma.submit();" width="12" height="12" att-button btn-type="primary" size="small" title='Save'>Save</button>
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%=AppConstants.RI_JAVASCRIPT_ITEM_ID %>.value='<%= id %>'; document.forma.submit();" width="12" height="12" att-button btn-type="primary" size="small" title='Delete'>Delete</button>
+ </td>
+ </tr>
+ <% } %>
+ <% }
+
+ id = "-1";
+ %>
+ <tr class=rowalt1>
+ <td align="center" height="30"><font class=rtabletext><%= ++iCount %></font></td>
+ <td align="center">
+ <select name="javascriptFormField-<%=id %>" style="width: 100px">
+ <option value="-1"> <-- SELECT --> </option>
+ <option value="ol1">OnLoad</option>
+ <option value="os1">OnSubmit</option>
+
+ <%
+ if(rdef.getFormFieldList()!=null){
+ for(Iterator iter1=rdef.getFormFieldList().getFormField().iterator(); iter1.hasNext();) {
+ fft = (FormFieldType) iter1.next();
+ %>
+ <option value="<%=fft.getFieldId() %>"><%=fft.getFieldName() %></option>
+ <%
+ }
+ }
+ %>
+ </select>
+ </td>
+ <td align="center">
+ <textarea name="callText-<%=id %>" rows="3" cols="100"></textarea>
+ </td>
+ <td width="40%">
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_SAVE %>'; document.forma.<%=AppConstants.RI_JAVASCRIPT_ITEM_ID %>.value='<%= id %>'; document.forma.submit();" width="12" height="12" att-button btn-type="primary" size="small" title='Save'>Save</button>
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%=AppConstants.RI_JAVASCRIPT_ITEM_ID %>.value='<%= id %>'; document.forma.submit();" width="12" height="12" att-button btn-type="primary" size="small" title='Delete'>Delete</button>
+ </td>
+ </tr>
+ </table>
+ </tr>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp
new file mode 100644
index 00000000..2b170385
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp
@@ -0,0 +1,109 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Log" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportLogEntry" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+
+%>
+
+<% String errorMsg = null;
+ Vector reportLogEntries = null;
+ try {
+ reportLogEntries = ReportLoader.loadReportLogEntries(reportID);
+ } catch(Exception e) {
+ Log.write("ERROR [wizard_log.jsp] Unable to load report log entries. Exception: "+e.getMessage());
+ errorMsg = "<b>ERROR: </b>Unable to load report log entries from the database <!--Exception: "+e.getMessage()+"-->";
+ } %>
+
+<table class="mTAB" width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=6 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="31%"><b class=rtableheader>Date/Time</b></td>
+ <td align="center" valign="Middle" width="31%"><b class=rtableheader>User Name</b></td>
+ <td align="center" valign="Middle" width="31%"><b class=rtableheader>Action</b></td>
+ <td align="center" valign="Middle" width="31%"><b class=rtableheader>Execution Time</b></td>
+ <td align="center" valign="Middle" width="31%"><b class=rtableheader>Run</b></td>
+ </tr>
+<% int iCount = 0;
+ if(reportLogEntries!=null)
+ for(Iterator iter=reportLogEntries.iterator(); iter.hasNext(); iCount++) {
+ ReportLogEntry logEntry = (ReportLogEntry) iter.next(); %>
+ <tr <%= (iCount%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" height="30" class="tdborder"><font class=rtabletext><%= iCount+1 %></font></td>
+ <td align="center" class="tdborder"><font class=rtabletext><%= logEntry.getLogTime() %></font></td>
+ <td class="tdborder"><font class=rtabletext><%= logEntry.getUserName() %></font></td>
+ <td class="tdborder"><font class=rtabletext><%= logEntry.getAction() %></font></td>
+ <td class="tdborder"><font class=rtabletext><%= logEntry.getTimeTaken() %></font></td>
+ <td class="tdborder"><font class=rtabletext><%= logEntry.getRunIcon() %></font></td>
+
+ </tr>
+<% } // for
+ if(errorMsg!=null) { %>
+ <tr class=rbg6>
+ <td colspan=6 align="center" height="30"><font class=rerrortextsm><%= errorMsg %></font></td>
+ </tr>
+<% } else if(iCount==0) { %>
+ <tr class=rbg2>
+ <td colspan=6 align="center" height="30"><font class=rtabletext>No log entries found</font></td>
+ </tr>
+<% } else { %>
+ <tr class=rbg1>
+ <td colspan=6 align="left" valign="Middle" height="30">
+ <input type="Submit" class=button value="Clear Log" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>';">
+ </td>
+ </tr>
+<% } // if
+%>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp
new file mode 100644
index 00000000..50fe1da6
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp
@@ -0,0 +1,424 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@page import="org.openecomp.portalsdk.analytics.xmlobj.ReportMap"%>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+ ReportMap repMap = rdef.getReportMap();
+ String addressColumn = "";
+ String latColumn = "";
+ String longColumn = "";
+ String legendColumn = "";
+ String colorColumn = "";
+ String dataColumn = "";
+ String isMapAllowed = "";
+ String addAddress = "N";
+ String useDefaultSize = "";
+ String width = "";
+ String height = "";
+
+ int reportMapSize = 0;
+ if (repMap != null){
+ if (repMap.getAddressColumn() != null)
+ addressColumn = repMap.getAddressColumn();
+
+ if (repMap.getDataColumn() != null)
+ dataColumn = repMap.getDataColumn();
+ if (repMap.getIsMapAllowedYN() != null)
+ isMapAllowed = repMap.getIsMapAllowedYN();
+ if (repMap.getAddAddressInDataYN() != null)
+ addAddress = repMap.getAddAddressInDataYN();
+ if (repMap.getLatColumn() != null)
+ latColumn = repMap.getLatColumn();
+ if (repMap.getLongColumn() != null)
+ longColumn = repMap.getLongColumn();
+ if (repMap.getColorColumn() != null)
+ colorColumn = repMap.getColorColumn();
+ if (repMap.getLegendColumn() != null)
+ legendColumn = repMap.getLegendColumn();
+ if (repMap.getUseDefaultSize() != null)
+ useDefaultSize = repMap.getUseDefaultSize();
+ if (repMap.getHeight() != null)
+ height = repMap.getHeight();
+ if (repMap.getWidth() != null)
+ width = repMap.getWidth();
+
+ reportMapSize = repMap.getMarkers().size();
+ }
+
+%>
+<%@page import="org.openecomp.portalsdk.analytics.xmlobj.Marker"%>
+
+<script>
+function enable_text(status)
+{
+//status=!status;
+document.forma.height.disabled = status;
+document.forma.width.disabled = status;
+}
+
+function isNumberKey(evt)
+{
+
+ if (document.forma.useDefaultSize.checked==true)
+ {
+ document.forma.height.disabled = status;
+ document.forma.width.disabled = status;
+ return false;
+ }
+
+ var charCode = (evt.which) ? evt.which : event.keyCode
+ if (charCode > 31 && (charCode < 48 || charCode > 57))
+ return false;
+
+ return true;
+}
+
+
+function checkValue()
+{
+
+ if (document.forma.isMapAllowed.checked==false)
+ {
+ return true;
+ }
+ if (document.forma.useDefaultSize.checked==true)
+ {
+ return true;
+ }
+ if ((document.forma.height.value < 1) )
+ {
+ alert(document.forma.height.name + ' can not be zero');
+ document.forma.height.focus(); return false;
+ }
+ if ((document.forma.width.value < 1) )
+ {
+ alert(document.forma.width.name + ' can not be zero');
+ document.forma.width.focus(); return false;
+ }
+ return true;
+}
+
+</script>
+<table class=mTAB width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=8 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+
+ </tr>
+ <tr>
+ <td align="left" width="10%">Map Enabled ?</td>
+ <td colspan=8>
+ <input id = "isMapAllowed" name="isMapAllowed" type="checkbox" value="Y" <%if(isMapAllowed != null && isMapAllowed.equals("Y")){ %> checked <%} %>/>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="left" width="10%">Default Size ?</td>
+ <td width="15%">
+ <input id = "useDefaultSize" name="useDefaultSize" type="checkbox"
+ onclick="enable_text(this.checked)"
+ value="Y" <%if(useDefaultSize != null && useDefaultSize.equals("Y")){ %> checked <%} %>/>
+ </td>
+
+ <td align="left" width="10%">Height </td>
+ <td width="15%">
+ <input id = "height" name="height" onkeypress="return isNumberKey(event)" type="textbox" value="<%=height%> " />
+ <!--
+ <input id = "dummy" name=""dummy" type="textbox" visible="false" />
+ -->
+ <input type="hidden" name="checkbox" value="checked">
+ </td>
+
+ <td align="left" width="10%">Width </td>
+ <td width="15%">
+ <input id = "width" name="width" onkeypress="return isNumberKey(event)" type="textbox" value="<%=width%> " />
+ </td>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+
+ <tr>
+ <td align="left" width="10%">Lat Column</td>
+ <td width="15%">
+ <select name="latColumn">
+ <option value=""> --Select-- </option>
+<%
+ int iCount = 0;
+ List reportCols = rdef.getAllColumns();
+ Iterator iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(latColumn.equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+
+ <td align="left" width="10%">Long Column</td>
+ <td width="15%">
+ <select name="longColumn">
+ <option value=""> --Select-- </option>
+<%
+ iCount = 0;
+ iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(longColumn.equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+ <td align="left" width="10%">Color Column</td>
+ <td width="15%">
+ <select name="colorColumn">
+ <option value=""> --Select-- </option>
+<%
+ iCount = 0;
+ iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(colorColumn.equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+ <td align="left" width="10%">Legend Column</td>
+ <td width="15%">
+ <select name="legendColumn">
+ <option value=""> --Select-- </option>
+<%
+ iCount = 0;
+ iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(legendColumn.equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+
+ </tr>
+ <tr>
+ <td align="left" width="10%">&nbsp;</td>
+ <td colspan=7>
+ <input type="button" value="Add Marker Details" onclick="javascript:createClicked();"/>
+ </td>
+ </tr>
+ <input type="hidden" name="markerCount" id="markerCount" value="<%=reportMapSize%>" />
+ <tr style="display:none;" id="cloneableRow">
+
+ <td align="left" width="10%">Data Header </td>
+ <td width="15%">
+ <input type="text" name="dataHeader" value="" />
+
+ </td>
+ <td align="left" width="10%">Display Column</td>
+ <td width="15%">
+ <select name="dataColumn">
+ <option value=""> --Select-- </option>
+<%
+ iCount = 0;
+ iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(dataColumn.equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+ <td width="5%">
+ <img onclick="javascript:deleteRow(this);" height="12" alt="Remove" width="12" src="<%=AppUtils.getImgFolderURL()%>deleteicon.gif" border="0" value="" />
+ </td>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+
+
+<% for (int i = 1; repMap != null && i < repMap.getMarkers().size(); i ++){
+ Marker marker = (Marker) repMap.getMarkers().get(i);
+%>
+ <tr>
+ <td align="left" width="10%">Data Header</td>
+ <td width="15%">
+ <input type="text" name="dataHeader<%=i%>" value="<%=marker.getDataHeader()%>" />
+ </td>
+
+ <td align="left" width="10%">Display Column</td>
+ <td width="15%">
+ <select name="dataColumn<%=i%>">
+ <option value=""> --Select-- </option>
+<%
+ iCount = 0;
+ iter = reportCols.iterator();
+ for(; iter.hasNext(); iCount++) {
+ DataColumnType dct = (DataColumnType) iter.next();
+%>
+ <option value="<%= dct.getColId() %>" <%if(marker.getDataColumn().equals(dct.getColId())){ %> selected <%}%> ><%= dct.getDisplayName() %></option>
+<%
+ }
+%>
+ </select>
+
+
+ </td>
+ <td width="5%">
+ <img onclick="javascript:deleteRow(this);" height="12" alt="Remove" width="12" src="<%=AppUtils.getImgFolderURL()%>deleteicon.gif" border="0" value="" />
+ </td>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <%}%>
+
+
+
+</table>
+<br>
+
+<script >
+
+function createClicked() {
+ var alreadyEditable = "New";
+
+ var row = document.getElementById('cloneableRow');
+ var newR = duplicateRowByIndex(row, 0);
+ var tbl = getParentTable(newR);
+ var editIndex = 0;
+ if (document.all.markerCount != null || document.all.markerCount.value != ""){
+ editIndex = document.all.markerCount.value;
+ }
+ if (tbl.rows.length%2 == 0){
+ newR.className="alternateRow";
+ }
+ for (var xx = 0; xx < newR.cells.length; xx ++){
+ for (var yy=0; yy < newR.cells[xx].childNodes.length; yy++){
+ if (newR.cells[xx].childNodes[yy] != null
+ && newR.cells[xx].childNodes[yy].name){
+ newR.cells[xx].childNodes[yy].name = "" + newR.cells[xx].childNodes[yy].name + editIndex;
+ newR.cells[xx].childNodes[yy].id = newR.cells[xx].childNodes[yy].name ;
+ }
+ }
+ }
+ editIndex = parseInt(editIndex) + parseInt(1);
+ document.all.markerCount.value = editIndex;
+ newR.style.display = "block";
+ //document.getElementById('scrollableTable').scrollTop =0;
+ return false;
+}
+
+function deleteRow(item){
+ var row = getParentRow(item);
+ var tab = getParentTable(row);
+ tab.deleteRow(row.rowIndex);
+
+}
+
+duplicateRowByIndex = function()
+{
+ if(arguments.length == 0 ) { return };
+ pRow = arguments[0];
+ var tbl = getParentTable(pRow);
+ var newRowIndex = 1 ;
+ if(arguments[1] && parseInt(arguments[1]) != NaN )
+ {
+ newRowIndex = parseInt(arguments[1]);
+ if(newRowIndex == 0 ){ newRowIndex = tbl.rows.length - 1 ; }
+ }
+
+ if(pRow == null) { return ; }
+ var oldRow = pRow;
+ var newRow = oldRow.cloneNode(true);
+ if (arguments[1] == 0){
+ oldRow.parentNode.insertBefore(newRow, oldRow.nextSibling);
+ }
+ else{
+ oldRow.parentNode.insertBefore(newRow, tbl.rows[newRowIndex]);
+ }
+ newRow.id = "";
+ return newRow;
+}
+
+function getParentRow(cell)
+{
+ var pNode = cell.parentNode;
+ for( var xx = 0 ; xx < 10 ; xx++)
+ {
+ if(pNode.cells) { return pNode;}
+ else { pNode = pNode.parentNode; }
+ }
+ alert("Unable to find parent row"); return false;
+}
+
+function getParentTable(row)
+{
+ var pNode = row.parentNode;
+ for( var xx = 0 ; xx < 10 ; xx++)
+ {
+
+ if(pNode.rows && (pNode.tagName == "TABLE" || pNode.tagName == "table")) {return pNode;}
+ else { pNode = pNode.parentNode; }
+ }
+ alert("Unable to find parent table"); return false;
+}
+
+
+
+function dataValidate() {
+ return checkValue();
+ //return true;
+}
+
+</script>
+
+
+
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp
new file mode 100644
index 00000000..688e7ff7
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp
@@ -0,0 +1,74 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+%>
+<script language="JavaScript">
+<!--
+function showSQLPopup() {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.sql", "showSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showSQLPopup
+//-->
+</script>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td align="right" valign="middle" height="20" width="100%" nowrap>
+ <b class=rtabletext>
+ <a href="javascript:showSQLPopup()">SQL&nbsp;<img border="0" src="<%= AppUtils.getImgFolderURL() %>txt_icon.gif" alt="Click here to view the generated SQL" width="12" height="12"></a>&nbsp;
+ </b>
+ </td>
+ </tr>
+ <tr>
+ <td align="center" valign="middle" height="60" width="100%">
+ <font class=rtabletext>
+ <b>Report definition successfully completed.</b><br>
+ <br>
+ <input type="hidden" name="<%= AppConstants.RI_RESET_PARAMS %>" value="Y">
+ <input type="hidden" name="<%= AppConstants.RI_REFRESH %>" value="Y">
+ <a att-button btn-type="primary" size="small" href="report.htm#/report_run/c_master=<%=rdef.getReportID()%>&refresh=Y">Run</a>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td height="20">&nbsp;</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<br>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp
new file mode 100644
index 00000000..b8d1ad1c
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp
@@ -0,0 +1,376 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportSchedule" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ ReportSchedule reportSchedule = rdef.getReportSchedule();
+ String remoteDbPrefix = (String) session.getAttribute("remoteDB");
+ boolean isSQLAllowed = Globals.getAllowSQLBasedReports();
+
+%>
+<%@page import="java.util.Calendar"%>
+<%@page import="java.text.DateFormat"%>
+<%@page import="java.text.SimpleDateFormat"%>
+<%@page import="java.util.TimeZone"%>
+<%@page import="java.util.Date"%>
+<%@page import="org.openecomp.portalsdk.analytics.model.ReportLoader"%>
+<script language="JavaScript">
+<!--
+function showTestConditionPopup() {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.test.cond&remoteDbPrefix=<%=remoteDbPrefix%>&<%= AppConstants.RI_FORMATTED_SQL %>="+escape(""+document.forma.conditionSQL.value), "testCondSQLPopup", "width=450,height=180,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestConditionPopup
+
+function exclusiveCheckBox(which) {
+ var size = 2;
+ for (i=0; i<size; i++) {
+ if(document.getElementById("notify" + i) != which) {
+ document.getElementById("notify" + i).checked = false;
+ }
+ }
+ //alert("exclusive " + which.form.notify_type.value);
+}
+function initFormFields() {
+
+ var requestStr = "<%=reportSchedule.getFormFields()%>";
+ //alert(requestStr);
+ if(requestStr.length > 0) {
+ SplitName = requestStr.substring(1,requestStr.length).split("&");
+ for (num = 0; num < SplitName.length; num++) {
+ keyValue = SplitName[num].split("=");
+ //alert(keyValue[0]+ " " + keyValue[1]);
+ var obj = eval("document.forma."+keyValue[0]);
+ if(obj) {
+ if(obj.tagName == "SELECT") {
+ //var opt = document.getElementsByName(keyValue[0]);
+ var selString = "";
+ for (var intLoop=0; intLoop < obj.length; intLoop++) {
+ if (obj[intLoop].value == keyValue[1]) {
+ obj[intLoop].selected=true;
+ break;
+ }
+ }
+
+ } else
+ document.getElementsByName(keyValue[0])[0].value = unescape(keyValue[1]);
+ }
+ }
+}
+}
+//-->
+</script>
+<script language="javascript" src="<%= AppUtils.getBaseFolderURL() %>js/other_scripts.js"></script>
+<script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/CalendarPopup.js"></script>
+<link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/calendar.css">
+ <iframe id="calendarFrame" class="nav" z-index:199; scrolling="no" frameborder="0" width=165px height=165px src="" style="position:absolute; display:none;">
+</iframe>
+ <div id="calendarDiv" name="calendarDiv" style="position:absolute; z-index:20000; visibility:hidden; background-color:white;layer-background-color:white;"></div>
+ <%
+ Calendar startCalendarDate = Calendar.getInstance();
+ startCalendarDate.add(Calendar.DAY_OF_MONTH, - 540);
+ Calendar endCalendarDate = Calendar.getInstance();
+ endCalendarDate.add(Calendar.DAY_OF_MONTH, 540);
+ SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
+ SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss");
+ Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime());
+ SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
+ //dtimestamp.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
+
+
+
+
+ %>
+
+ <SCRIPT LANGUAGE="JavaScript">
+ var oCalendar = new CalendarPopup("calendarDiv");
+
+ oCalendar.addDisabledDates(null, "<%=dtf.format(startCalendarDate.getTime())%>");
+ oCalendar.addDisabledDates("<%=dtf.format(endCalendarDate.getTime())%>", null);
+
+
+ oCalendar.setCssPrefix("raptor");
+ </SCRIPT>
+<table class=mSDL width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <% if(request.getAttribute("schedule_only")!=null) { %>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <% } %>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader><a href="javascript:uitmpl_qh('schedule_help')" class="qh-link"></a>Please enter Time in <%= Globals.getTimeZone()%>. The Current System Time is <%=dtimestamp.format(sysdate)%>&nbsp;<%=Globals.getTimeZone()%></b></td>
+ </tr>
+ <tr>
+ <td colspan=2 class="nopad"><!-- quick help text -->
+ <div id="schedule_help" class="mQH">
+ <p><span class="label">Quick Help:</span>
+ </p>
+ </div>
+ <!-- /quick help text --></td>
+ </tr>
+
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Schedule Emails: </font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap><font class=rtabletext>
+ <input type='radio' name='schedEnabled' id='schedEnabled' value='Y' <%= reportSchedule.getSchedEnabled().equals("Y")?" checked":"" %> />Yes
+ &nbsp;
+ <input type='radio' name='schedEnabled' id='schedEnabled' value='N' <%= reportSchedule.getSchedEnabled().equals("N")?" checked":"" %> />No
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Email Attachment:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap>
+ <font class=rtabletext>
+ <input type='radio' name='notify' id='notify' value='2' <%= reportSchedule.getNotify_type().equals("2")?" checked":(reportSchedule.getNotify_type().length()<=0)?" checked":(!reportSchedule.getNotify_type().equals("4"))? " checked " :"" %> />PDF Attachment
+ &nbsp;&nbsp;
+ <input type='radio' name='notify' id='notify' value='4' <%= reportSchedule.getNotify_type().equals("4")?" checked":"" %> />Excel Attachment
+ <input type='hidden' name='notify_type' value='1'/>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Recurrence: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="schedRecurrence">
+ <option value="" <%= reportSchedule.getRecurrence().equals("" )?" selected":"" %>>One Time
+ <option value="<%= AppConstants.SR_HOURLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_HOURLY )?" selected":"" %>>Hourly
+ <option value="<%= AppConstants.SR_DAILY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_DAILY )?" selected":"" %>>Daily
+ <option value="<%= AppConstants.SR_DAILY_MO_FR %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_DAILY_MO_FR)?" selected":"" %>>Daily Mo-Fr
+ <option value="<%= AppConstants.SR_WEEKLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_WEEKLY )?" selected":"" %>>Weekly
+ <option value="<%= AppConstants.SR_MONTHLY %>"<%= reportSchedule.getRecurrence().equals(AppConstants.SR_MONTHLY )?" selected":"" %>>Monthly
+ </select></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Start Date: </font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <input type="text" size="10" maxlength="10" name="schedStartDate" value="<%= reportSchedule.getStartDate() %>">
+ <!--<a href="#" onClick="window.dateField = document.forma.schedStartDate;calendar = window.open('<%= AppUtils.getRaptorActionURL() %>popup.calendar','cal','WIDTH=200,HEIGHT=250');return false;">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20">
+ </a>-->
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar.select(document.getElementById('schedStartDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <select name="schedHour">
+ <option value="01"<%= reportSchedule.getRunHour().equals("01")?" selected":"" %>>1
+ <option value="02"<%= reportSchedule.getRunHour().equals("02")?" selected":"" %>>2
+ <option value="03"<%= reportSchedule.getRunHour().equals("03")?" selected":"" %>>3
+ <option value="04"<%= reportSchedule.getRunHour().equals("04")?" selected":"" %>>4
+ <option value="05"<%= reportSchedule.getRunHour().equals("05")?" selected":"" %>>5
+ <option value="06"<%= reportSchedule.getRunHour().equals("06")?" selected":"" %>>6
+ <option value="07"<%= reportSchedule.getRunHour().equals("07")?" selected":"" %>>7
+ <option value="08"<%= reportSchedule.getRunHour().equals("08")?" selected":"" %>>8
+ <option value="09"<%= reportSchedule.getRunHour().equals("09")?" selected":"" %>>9
+ <option value="10"<%= reportSchedule.getRunHour().equals("10")?" selected":"" %>>10
+ <option value="11"<%= reportSchedule.getRunHour().equals("11")?" selected":"" %>>11
+ <option value="12"<%= reportSchedule.getRunHour().equals("12")?" selected":"" %>>12
+ </select>
+ <select name="schedMin">
+ <option value="00"<%= reportSchedule.getRunMin().equals("00")?" selected":"" %>>00
+ <option value="15"<%= reportSchedule.getRunMin().equals("15")?" selected":"" %>>15
+ <option value="30"<%= reportSchedule.getRunMin().equals("30")?" selected":"" %>>30
+ <option value="45"<%= reportSchedule.getRunMin().equals("45")?" selected":"" %>>45
+ </select>
+ <select name="schedAMPM">
+ <option value="AM"<%= reportSchedule.getRunAMPM().equals("AM")?" selected":"" %>>AM
+ <option value="PM"<%= reportSchedule.getRunAMPM().equals("PM")?" selected":"" %>>PM
+ </select>
+
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>End Date: </font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <input type="text" size="10" maxlength="10" name="schedEndDate" value="<%= reportSchedule.getEndDate() %>">
+ <!--<a href="#" onClick="window.dateField = document.forma.schedEndDate;calendar = window.open('<%= AppUtils.getRaptorActionURL() %>popup.calendar','cal','WIDTH=200,HEIGHT=250');return false;">
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20">
+ </a>-->
+ <img src="<%= AppUtils.getImgFolderURL() %>calender_icon.gif" align=absmiddle border=0 width="20" height="20" onClick="oCalendar.select(document.getElementById('schedEndDate'),event,'MM/dd/yyyy'); return false;" style="cursor:hand">
+ </font></td>
+ </tr>
+
+ <% if(AppUtils.isAdminUser(request) || isSQLAllowed ) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Use Condition:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap><font class=rtabletext>
+ <input type="checkbox" name="conditional" value="Y"<%= reportSchedule.getConditional().equals("Y")?" checked":"" %>> Send Emails Only When Condition Is Met
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Condition SQL:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap><font class=rtabletext>SELECT 1 FROM DUAL WHERE EXISTS (<br>
+ <textarea name="conditionSQL" cols="40" rows="3"><%= nvl(reportSchedule.getConditionSQL()) %></textarea>
+ )
+ &nbsp;&nbsp;&nbsp;&nbsp;
+ <input type="Button" class=button value="Test" onClick="showTestConditionPopup()">
+ &nbsp;
+ </font></td>
+ </tr>
+ <% } %>
+
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Max rows in attachment:</font></td>
+ <td class=rbg3 align="left" width="50%" valign="middle" nowrap>
+ <input type='text' name='downloadLimit' value="<%=reportSchedule.getDownloadLimit()%>" size='4'/>
+ </td>
+ </tr>
+
+ <jsp:include page="wizard_schedule_formfield_include.jsp" flush="true" />
+ <script type="text/javascript">initFormFields();</script>
+
+<% List emailToUsers = reportSchedule.getEmailToUsers();
+ for(int i=0; i<emailToUsers.size(); i++) {
+ IdNameValue userValue = (IdNameValue) emailToUsers.get(i); %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (i==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+ <%= userValue.getName() %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= userValue.getId() %>'; }">
+ </font></td>
+ </tr>
+<% } // for
+ List emailToRoles = reportSchedule.getEmailToRoles();
+ for(int i=0; i<emailToRoles.size(); i++) {
+ IdNameValue roleValue = (IdNameValue) emailToRoles.get(i); %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (emailToUsers.size()==0&&i==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>Everyone With Role:&nbsp;
+ <%= roleValue.getName() %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! dataValidate()) {return false;} else if(! confirm('Are you sure?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_ROLE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= roleValue.getId() %>'; }">
+ </font></td>
+ </tr>
+<% } // for
+
+ Vector remainingUsers = Utils.getUsersNotInList(emailToUsers,request);
+ Vector remainingRoles = Utils.getRolesNotInList(emailToRoles,request);
+ if((emailToUsers.size()+emailToRoles.size()==0)||(remainingUsers.size()>0)||(remainingRoles.size()>0)) { %>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext><%= (emailToUsers.size()+emailToRoles.size()==0)?"Email To: ":"&nbsp;" %></font></td>
+ <td class=rbg3 align="left" width="50%" nowrap><font class=rtabletext>
+<% if(remainingUsers.size()>0) { %>
+ <select name="schedEmailAdd" onChange="if(! dataValidate()) {selectedIndex=0;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_USER %>'; document.forma.submit();}">
+ <option value="" selected>--- Select User ---
+<% for(int i=0; i<remainingUsers.size(); i++) {
+ IdNameValue userValue = (IdNameValue) remainingUsers.get(i); %>
+ <option value="<%= userValue.getId() %>"><%= userValue.getName() %>
+<% } // for %>
+ </select>
+<% } else { %>
+ No user emails available
+<% } %>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<% if(remainingRoles.size()>0) { %>
+ <select name="schedEmailAddRole" onChange="if(! dataValidate()) {selectedIndex=0;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_ROLE %>'; document.forma.submit();}">
+ <option value="" selected>--- Select Role ---
+<% for(int i=0; i<remainingRoles.size(); i++) {
+ IdNameValue roleValue = (IdNameValue) remainingRoles.get(i); %>
+ <option value="<%= roleValue.getId() %>"><%= roleValue.getName() %>
+<% } // for %>
+ </select>
+<% } else { %>
+ No roles available
+<% } %>
+ </font></td>
+ </tr>
+<% } // if
+%>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ if(! checkDate(document.forma.schedStartDate.value, true)) {
+ alert("Invalid Start Date. The date format should be MM/DD/YYYY");
+ document.forma.schedStartDate.focus();
+ document.forma.schedStartDate.select();
+ return false;
+ }
+ if(! checkDate(document.forma.schedEndDate.value, true)) {
+ alert("Invalid End Date. The date format should be MM/DD/YYYY");
+ document.forma.schedEndDate.focus();
+ document.forma.schedEndDate.select();
+ return false;
+ }
+ /*if(! checkDate(document.forma.schedRunDate.value, true)) {
+ alert("Invalid Execution Date. The date format should be MM/DD/YYYY");
+ document.forma.schedRunDate.focus();
+ document.forma.schedRunDate.select();
+ return false;
+ }*/
+<% if (AppUtils.isAdminUser(request) || isSQLAllowed){ %>
+ if(document.forma.conditional.checked&&document.forma.conditionSQL.value=="") {
+ alert("Please provide Condition SQL");
+ document.forma.conditionSQL.focus();
+ document.forma.conditionSQL.select();
+ return false;
+ }
+ <% } %>
+ if(! checkNonNegativeInteger(document.forma.downloadLimit.value)) {
+ alert("Max row in attachment is not a valid integer.\nPlease enter a valid value.");
+ document.forma.downloadLimit.focus();
+ document.forma.downloadLimit.select();
+ return false;
+ }
+ else
+ {
+ if((document.forma.downloadLimit.value) > <%=Globals.getDownloadLimit()%>) {
+ alert("Max row you can download should not be more than <%=Globals.getDownloadLimit()%> rows.\nPlease enter a valid value.");
+ document.forma.downloadLimit.focus();
+ document.forma.downloadLimit.select();
+ return false;
+ }
+
+ }
+ for (var i=0; i < document.forma.notify.length; i++) {
+ if (document.forma.notify[i].checked) {
+ document.forma.notify_type.value = document.forma.notify[i].value;
+ }
+ }
+ return validateForm();
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp
new file mode 100644
index 00000000..206e23de
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp
@@ -0,0 +1,754 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%--
+ Name: wizard_schedule_formfield_include.jsp
+ Use : Shows formfield of the report in the schedule page.
+
+ Change Log
+ ==========
+
+ 28-Aug-2009 : Version 8.5.1 (Sundar); Checkbox and Radio button are also handled.
+ 18-Aug-2009 : Version 8.5.1 (Sundar);
+
+ a) ajax.js is loaded in startup for AJAX functionality.
+ b) showArgPopupNew is modified as per report_form.jsp
+ c) Ajax function is added very similiar to report_form.jsp
+ d) "auto" bug is resolved.
+
+14-Jul-2009 : Version 8.4 (Sundar);
+
+ <UL>
+ <LI> Shows the form field of the first Dashboard report in schedule page if the report is dashboard.</LI>
+ </UL>
+--%>
+<%@ page import="java.io.*" %>
+<%@ page import="java.util.*" %>
+<%@ page import="java.text.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportHandler" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.JavascriptItemType"%>
+<%@ page import="java.util.regex.*"%>
+<%@ page import="javax.servlet.http.*"%>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportSchedule" %>
+
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ ReportHandler rh = new ReportHandler();
+ ReportRuntime rr = rh.loadReportRuntime(request, rdef.getReportID());
+ request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr);
+ boolean isDashboard = rr.isDashboardType();
+ ReportFormFields rff = rr.getReportFormFields();
+ ReportFormFields rff1 = (ReportFormFields) rff.clone();
+ ReportFormFields rff2 = (ReportFormFields) rff.clone();
+ ReportFormFields rff5 = (ReportFormFields) rff.clone();
+ boolean isFirstTime = nvl(request.getParameter("refresh")).toUpperCase().startsWith("Y");
+ ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
+
+ int dashboardFlag = 0;
+ ReportRuntime rr1 = null;
+ java.text.SimpleDateFormat sdf = null;
+
+%>
+
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/ajax.js"></script>
+<%--=(rr.getJavascriptElement()!=null && rr.getJavascriptElement().length()>0)?rr.getJavascriptElement().replaceAll("formd","forma"):""--%>
+<script language="JavaScript">
+<!--
+function showArgPopup(fieldName, jsTargetField) {
+ var url = "<%= AppUtils.getRaptorActionURL() %>report.popup.field&<%= AppConstants.RI_FIELD_NAME %>="
+ + fieldName+ "&<%= AppConstants.RI_JS_TARGET_FIELD %>="+jsTargetField;
+ var w = window.open(url, "formLookup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showArgPopup
+
+function showArgPopupNew(fld, targetField) {
+ var newElementCreated = true;
+
+ var oldTarget = null;
+ var oldRAction = null;
+ var frm = document.forma;
+ var w = window.open("<%= AppUtils.getBaseFolderURL() %>loading.jsp", "formLookup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+
+ oldTarget = frm.target ;
+ oldRAction = frm.r_action.value ;
+ frm.target = "formLookup";
+ frm.r_action.value = "report.popup.field";
+ if(document.getElementById("<%= AppConstants.RI_FIELD_NAME %>")) {
+ frm.removeChild(document.getElementById("<%= AppConstants.RI_FIELD_NAME %>"));
+ frm.removeChild(document.getElementById("<%= AppConstants.RI_JS_TARGET_FIELD %>"));
+ }
+ var fld1 = document.createElement("input");
+ fld1.setAttribute("type", "hidden");
+ fld1.setAttribute("name", "<%= AppConstants.RI_FIELD_NAME %>");
+ fld1.setAttribute("id", "<%= AppConstants.RI_FIELD_NAME %>");
+ fld1.setAttribute("value", fld);
+
+ var fld2 = document.createElement("input");
+ fld2.setAttribute("type", "hidden");
+ fld2.setAttribute("name", "<%= AppConstants.RI_JS_TARGET_FIELD %>");
+ fld2.setAttribute("id", "<%= AppConstants.RI_JS_TARGET_FIELD %>");
+ fld2.setAttribute("value", targetField);
+
+ frm.appendChild(fld1);
+ frm.appendChild(fld2);
+ frm.submit();
+ w.focus();
+ w.opener = this;
+
+ frm.target = oldTarget ;
+ frm.r_action.value = oldRAction ;
+
+
+} // showArgPopupNew
+
+function validateForm() {
+ //if(document.getElementById("schedEnabled").checked && document.getElementById("schedEnabled").value == 'Y') {
+ <%for(rff.resetNext(); rff.hasNext(); ) { %>
+ <%= rff.getNext().getValidateJavaScript().replaceAll("formd","forma") %>
+ <%}%>
+
+ var formfields_value="";
+
+ for(i=0; i<document.forma.elements.length;i++) {
+ if((document.forma.elements[i].name).substring(0,2)=='ff') {
+ //alert("i-" + i+ " "+ document.forma.elements[i].name + " " + document.forma.elements[i].type + " " + document.forma.elements[i].value);
+ var obj = document.forma.elements[i];
+ if ((document.forma.elements[i].tagName == "SELECT") /*&& !(obj.name.match('_Hr') || obj.name.match('_Min') || obj.name.match('_Sec'))*/ ){
+ var selString = "";
+ for (var intLoop=0; intLoop < obj.length; intLoop++) {
+ if (obj[intLoop].selected) {
+ formfields_value += "&"+document.forma.elements[i].name+"=" + escape(obj[intLoop].value);
+
+ }
+ }
+ }
+ else{
+ if(escape(document.forma.elements[i].value).charAt(0) == '[' ) {
+ var nameObj = document.forma.elements[i].name;
+ if(nameObj.indexOf("_")!=-1 && (nameObj.match('_Hr') || nameObj.match('_Min') || nameObj.match('_Sec')) ) {
+ } else {
+ formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
+ }
+ } else {
+ var opt = document.forma.elements[i].name;
+ var optValue = "";
+ //alert('not in select' + opt);
+ var auto_incr = '<%=Boolean.toString(Globals.isScheduleDateParamAutoIncr())%>';
+ //alert(auto_incr);
+ //alert(document.getElementById(opt+"_auto") + " " + (opt+"_auto"));
+ if(document.getElementById(opt+"_auto")/* || opt.lastIndexOf("_auto")>= 0 */) {
+ for(k=0; k<document.forma.elements.length;k++) {
+ if(document.forma.elements[k].name == opt) {
+ optValue = document.forma.elements[k].value;
+ }
+ }
+ //alert('opt info ' +opt + " "+ optValue);
+
+ if(auto_incr == 'true') {
+ formfields_value += "&"+document.forma.elements[i].name+"_auto="+escape(optValue);
+ } else if (document.getElementById(opt).checked) {
+ formfields_value += "&"+document.forma.elements[i].name+"_auto="+escape(optValue);
+ } /*else
+ formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);*/
+ } else if (opt.lastIndexOf("_auto") < 0){
+ if(document.forma.elements[i].type == 'checkbox' || document.forma.elements[i].type == 'radio') {
+ if (document.forma.elements[i].checked)
+ formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
+ } else {
+ formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
+ }
+ }
+ }
+ }
+ }
+ }
+ <%
+ String sessionParams[] = Globals.getSessionParamsForScheduling().split(",");
+ String formfields = "";
+ for (int i=0; i<sessionParams.length; i++) {
+ if(sessionParams[i].equals("login_id"))
+ formfields += "&"+java.net.URLEncoder.encode("login_id","UTF-8")+"="+ java.net.URLEncoder.encode(AppUtils.getUserBackdoorLoginId(request),"UTF-8");
+ else {
+ if(session.getAttribute(sessionParams[i])!=null)
+ formfields += "&"+ java.net.URLEncoder.encode(sessionParams[i], "UTF-8") + "="+ java.net.URLEncoder.encode((String)session.getAttribute(sessionParams[i]),"UTF-8");
+ }
+ }
+ %>
+ formfields_value += '&<%= AppConstants.RI_NEXT_PAGE %>=-1';
+ formfields_value += '<%=formfields%>';
+ //alert(formfields_value);
+ document.getElementById("formFields").value = formfields_value;
+ var javascriptText = "<%=getCallableJavascriptForSubmit(rr)%>";
+ javascriptText = javascriptText.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+ if(javascriptText.length > 0) {
+ if(<%=(getCallableJavascriptForSubmit(rr).trim().length())>0?getCallableJavascriptForSubmit(rr).replaceAll("formd","forma"):"false"%>)
+ return true;
+ else
+ return false;
+ }
+ // }
+ return true;
+} // validateForm
+function systemDateTime() {
+ <%
+ sdf = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss z");
+ sdf.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
+ String sysDateTime = sdf.format(new java.util.Date());
+ %>
+ var sysdate = "<%=sysDateTime%>";
+ return sysdate;
+}
+
+function systemDate() {
+ <%
+ sdf = new java.text.SimpleDateFormat("MM/dd/yyyy");
+ sdf.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
+ String sysDate = sdf.format(new java.util.Date());
+ %>
+ var sysdate = "<%=sysDate%>";
+ return sysdate;
+}
+//-->
+</script>
+ <%
+ if(rr.getReportType().equals(AppConstants.RT_DASHBOARD)) {
+ dashboardFlag = 1;
+ String strHTML = rr.getDashboardLayoutHTML(); //getdashboardLayoutHTML();
+ String rep_id = parseAndGetFirstReportID(strHTML);
+ ReportHandler rh1 = new ReportHandler();
+ rr1 = null;
+ int requestFlag = 1;
+ try {
+ rr1 = rh1.loadReportRuntime(request, rep_id, true, requestFlag);
+ } catch(Exception e) {
+ }
+ rff = rr1.getReportFormFields();
+ }
+ %>
+ <%if((dashboardFlag == 0 && rr.needFormInput()) || (dashboardFlag == 1 && rr1.needFormInput())) { %>
+ <tr>
+
+ <td class=rbg3 align="center" width="50%" valign="middle" colspan=2><font class=rtabletext>
+ Please input values into the Form Fields for email attachment. Note those fields user must provide value can not leave as blank.
+ </font>
+ <table width="94%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <%
+ int colidx = 0;
+ java.util.HashMap paramsMap = Globals.getRequestParamtersMap(request, false);
+ java.util.HashMap getScheduleMap = getFormFieldsHashMap (request, reportSchedule.getFormFields());
+ java.util.HashMap paramsScheduleMap = Globals.getRequestParametersMap(request, getScheduleMap);
+ for (int i = 0; i < rff.size(); i ++){
+ FormField ff = (FormField) rff.get(i);
+ ff.setDbInfo(rr.getDbInfo());
+ ff.setUserId(AppUtils.getUserID(request));
+ if(ff.getFieldType().equals(FormField.FFT_HIDDEN)) {
+ %>
+ <%
+ if(nvl(reportSchedule.getFormFields()).length() <= 0)
+ out.println(ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap, rr, true));
+ else
+ out.println(ff.getHtml(getParameterString(request, ff.getFieldName(), getScheduleMap), paramsScheduleMap, rr, true).replaceAll("formd","forma"));
+
+
+ %>
+ <% }
+ if(!ff.getFieldType().equals(FormField.FFT_HIDDEN) && ff.isVisible()) {
+
+ %>
+ <%if (colidx == 0){%><tr><%}%>
+ <td class=rbg3 width="10%" align="right" nowrap='yes'>
+ <font class=rtabletext>
+ <%if (!ff.getFieldType().equals(FormField.FFT_BLANK)){%>
+ <%= ff.getDisplayNameHtml() %>:
+ <%}%>
+ </font>
+ </td>
+ <td class=rbg3 width="15%" align="left" nowrap='yes'>
+ <%-- ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap,rr, true).replaceAll("formd","forma") --%>
+ <%
+ if(nvl(reportSchedule.getFormFields()).length() <= 0)
+ out.println(ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap, rr, true).replaceAll("formd","forma"));
+ else
+ out.println(ff.getHtml(getParameterString(request, ff.getFieldName(), getScheduleMap), paramsScheduleMap, rr, true).replaceAll("formd","forma"));
+ %>
+ </td>
+ <td ></td>
+ <%colidx++;%>
+ <%if (colidx == rr.getNumFormColsAsInt()){%></tr><%colidx=0;}%>
+ <% }
+ } //for %>
+ </table>
+ </td>
+ </tr>
+<% } //if(rr.needFormInput()) %>
+
+<input type='hidden' name='formFields' value=''/>
+
+<script>
+<% if(!isDashboard) { %>
+var map = new Object();
+var defaultValues = new Object();
+<% rff = rr.getReportFormFields();
+int idx = 0;
+int row = 0;
+
+java.util.Map fNameMap = new java.util.HashMap();
+for(rff.resetNext(); rff.hasNext(); idx++) {
+ FormField ff = rff.getNext();
+ fNameMap.put(ff.getFieldName(), ff.getFieldDisplayName());
+}
+
+
+idx = 0;
+row = 0;
+
+for(rff.resetNext(); rff.hasNext(); idx++) {
+ FormField ff = rff.getNext();
+ if(!(ff.getFieldType().equals(FormField.FFT_BLANK))
+ && ff.isVisible() && !(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))) {
+ %>
+
+
+ <%
+
+ if( ff.getDependsOn() != null && ff.getDependsOn().trim().length()>0 ) {
+ %> // <%=ff.getFieldName()%> <%=ff.getDependsOn()%>
+ if(document.forma.<%=ff.getFieldName()%>) {
+ document.forma.<%=ff.getFieldName()%>.onchange = updateDropDown;
+ }
+ map['<%=ff.getDependsOn()%>'] = '<%=ff.getFieldName()%>';
+ // Made double quotes as it conflicts with query.
+ defaultValues['<%=ff.getFieldName()%>'] = "<%=rr.getParamValue(ff.getFieldName())%>" ;
+ <%
+ }
+ }
+}
+%>
+
+var oldTarget = null;
+var oldr_action = null;
+ var ajax = new Array();
+
+ function getOpts(oSelect) {
+ var opt, i = 0, selVals = new Array();
+ //alert(oSelect.length + " " + oSelect.options);
+ if(oSelect && oSelect.options) {
+ while (opt = oSelect[i++]) {
+ if (opt.selected) {
+ selVals[selVals.length] = encodeURIComponent(opt.value);
+ //alert(opt.value)
+ }
+ }
+ //return selVals;
+ } else {
+ if(oSelect && oSelect.value)
+ selVals[0] = encodeURIComponent(oSelect.value);
+ //return selVals;
+ }
+ return selVals;
+ }
+
+ function trim(str) {
+ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+ }
+
+ function updateDropDown(srcElem_) {
+
+ var srcElem = null;
+ if(srcElem_ == null) {
+ if (event != null)
+ srcElem = event.srcElement;
+ } else {
+ srcElem = srcElem_;
+ }
+ //alert(srcElem.name);
+ //var parentFormField = srcElem.options[srcElem.selectedIndex].value;
+ if(srcElem !=null) {
+ var parentFormField = getOpts(srcElem);
+ var parentFieldName = srcElem.name;
+
+ //alert(parentFormField);
+ var parentFieldValue = "";
+ for (i=0;i<=parentFormField.length-1;i++) {
+ if(parentFormField[i] != 'undefined')
+ parentFieldValue = parentFieldValue+srcElem.name+'='+parentFormField[i];
+ if(i<parentFormField.length-1)
+ parentFieldValue = parentFieldValue + "&";
+ }
+ //alert("ParentFieldValue " + parentFieldValue + " srcElem.name " + srcElem.name);
+
+ if(srcElem != null && srcElem.name!=null) {
+ <%
+ FormField ff = null;
+ String javaScriptText = "";
+ String javaScriptAfterChainingText = "";
+ %>
+ <%
+ for(rff5.resetNext(); rff5.hasNext();idx++) {
+ ff = rff5.getNext();
+ %>
+ if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
+ <% javaScriptText = nvl(ff.getCallableOnChangeJavascript(ff.getFieldName(), rr));
+ javaScriptAfterChainingText = nvl(ff.getCallableAfterChainingJavascript(ff.getFieldName(), rr));
+ if(javaScriptText.length() > 0 ) { %>
+ <%=javaScriptText+";"%>
+ //document.forma.<%--=ff.getFieldName()--%>//.onchange =
+ <% } %>
+ }
+ <% } %>
+ <% for(rff5.resetNext(); rff5.hasNext();idx++) {
+ %>
+ <%
+ ff = rff5.getNext();
+ %>
+ //alert (" In For " + "<%=ff.getFieldName()%> <%=rff.hasNext()%>");
+ <%
+ if(!(ff.getFieldType().equals(FormField.FFT_BLANK))) {
+ /*&& ff.isVisible()*/ /*&& !(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))*/
+ %>
+ <% if( ff.getDependsOn() != null && !ff.getDependsOn().equals("") ) {
+ if(!(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))) { %>
+ <% if(!ff.getFieldType().equals(FormField.FFT_HIDDEN)) { %>
+ if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
+ parentFieldValue = parentFieldValue + '&parentFieldName=<%=ff.getFieldName()%>';
+ //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
+ //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
+ if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById('<%=ff.getFieldName()+"_content"%>').style.display='block';
+ }
+
+ <% } %>
+ <% } %>
+ var otherFieldValue = "";
+
+ <%
+ for(rff1.resetNext(); rff1.hasNext();) {
+ FormField ff1 = rff1.getNext();
+ if( ff1.getDependsOn() != null && !ff1.getDependsOn().equals("") ) { %>
+ //alert (srcElem.name + " <%=ff1.getFieldName()%>");
+ if(srcElem && srcElem.name && srcElem.name != '<%=ff1.getFieldName()%>') {
+ var otherFormFields = getOpts(document.forma.<%=ff1.getFieldName()%>);
+ for (i=0;i<=otherFormFields.length-1;i++) {
+ if(otherFormFields[i] != 'undefined')
+ otherFieldValue = otherFieldValue+'<%=ff1.getFieldName()%>'+'='+escape(otherFormFields[i])+'&';
+ if(i<otherFormFields.length-1)
+ otherFieldValue = otherFieldValue + "&";
+ }
+
+ }
+ <% }
+ }
+ %>
+ //alert("IF OPTIONS 0 AFTER <%=ff.getFieldName()%>" + parentFormField);
+
+ //if(parentFormField.length>0) {
+ //if(srcElem.name == "<%=ff.getFieldName()%>") {
+ if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.options)
+ document.forma.<%=ff.getFieldName()%>.options.length = 0;
+ try {
+ var index = ajax.length;
+ ajax[index] = new sack("raptor.htm");
+ //alert("P" + parentFieldValue);
+ //alert("O" + otherFieldValue);
+ ajax[index].method='POST';
+ //alert('raptor.htm?action=raptor&r_action=report.childDropDown&parentFieldName='+srcElem.name+'&fieldName=<%=ff.getFieldName()%>&'+parentFieldValue+'&'+otherFieldValue);
+ ajax[index].setVar("action","raptor");
+ ajax[index].setVar("r_action","report.childDropDown");
+ ajax[index].setVar("fieldName","<%=ff.getFieldName()%>");
+ ajax[index].setVar("inSchedule","Y");
+ //alert("parentFieldValue " + parentFieldValue);
+ var parentFieldTokens = parentFieldValue.split( "&" );
+ var parentNameValuePair = "";
+ var nameValuePairTokens;
+ for (var i = 0; i < parentFieldTokens.length; i++) {
+ parentNameValuePair = parentFieldTokens[i];
+ parentNameValuePairTokens = parentNameValuePair.split("=");
+ if (parentNameValuePairTokens.length>0) {
+ //alert("ParentNameValuePairTokens " + parentNameValuePairTokens[0]+ " " + decodeURIComponent(parentNameValuePairTokens[1]));
+ ajax[index].setVar(parentNameValuePairTokens[0], decodeURIComponent(parentNameValuePairTokens[1]), i);
+ }
+ }
+ //alert("otherFieldValue " + otherFieldValue + " " );
+ if(otherFieldValue && otherFieldValue.length>0) {
+ if (otherFieldValue.substr(otherFieldValue.length-1) == '&')
+ otherFieldValue = otherFieldValue.substr(0,otherFieldValue.length-1);
+ }
+ //alert("otherFieldValue1 " + otherFieldValue + " " );
+
+ var otherFieldTokens = otherFieldValue.split( "&" );
+ var otherNameValuePair = "";
+ var otherNameValuePairTokens;
+ for (var k = 0; k < otherFieldTokens.length; k++) {
+ otherNameValuePair = otherFieldTokens[k];
+ otherNameValuePairTokens = otherNameValuePair.split("=");
+ if (otherNameValuePairTokens.length>0) {
+ //alert("otherNameValuePairTokens " + otherNameValuePairTokens[0]+ " " + decodeURIComponent(otherNameValuePairTokens[1]));
+ ajax[index].setVar(otherNameValuePairTokens[0], decodeURIComponent(otherNameValuePairTokens[1]), k);
+ }
+ }
+ //ajax[index].requestFile = 'raptor.htm?action=raptor&r_action=report.childDropDown&fieldName=<%=ff.getFieldName()%>&'+parentFieldValue+'&'+otherFieldValue; // Specifying which file to get
+ ajax[index].onCompletion = function(){ createChildFormField(index, document.forma.<%=ff.getFieldName()%>) }; // Specify function that will be executed after file has been found
+ ajax[index].onError = function() {bringBacktoNormal(index, document.forma.<%=ff.getFieldName()%>);}
+ ajax[index].onFail = function() {bringBacktoNormal(index, document.forma.<%=ff.getFieldName()%>);}
+ //ajax[index].onCompletion = function(){ var obj = null; obj = document.forma.<%=ff.getFieldName()%>;eval(ajax[index].response);document.getElementById(obj.name+"_content").style.display='none';obj.style.display='block'; }; // Specify function that will be executed after file has been found
+ ajax[index].runAJAX(null,false,100); // Execute AJAX function
+ //alert(ajax[index].readyState);
+ //while (ajax[index].xmlhttp.readyState == 4 || ajax[index].xmlhttp.readyState == "complete" ) {
+ //}
+ //while(ajax[index].xmlhttp.readyState ==4){
+ // alert("ready State " + ajax[index].xmlhttp.readyState);
+ //}
+ //setTimeout("Func1()", 5000);
+ } catch (err) {
+ if(err=="session_exp") {
+ document.write("session has been expired.");
+ }
+ }
+
+ //} else {
+ <% if(!ff.getFieldType().equals(FormField.FFT_HIDDEN)) { %>
+ if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById("<%=ff.getFieldName()%>_content").style.display='none';
+ //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='block';
+ <% } else {%>
+ if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById("<%=ff.getFieldName()%>_content").style.display='none';
+ //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
+ <% } %>
+ //}
+ //} // if src.Elem
+ <% } %>
+ <% } %>
+
+ <% } %>
+ <%
+ for(rff.resetNext(); rff.hasNext();idx++) {
+ ff = rff.getNext();
+ %>
+ if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
+ <%
+ javaScriptAfterChainingText = nvl(ff.getCallableAfterChainingJavascript(ff.getFieldName(), rr));
+ %>
+ <%
+ if(javaScriptAfterChainingText.length()>0 && javaScriptAfterChainingText.trim().startsWith("afterchaining")) {
+ javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"afterchaining","");
+ javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"\"","");
+ javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"=","");
+ %>
+ <%
+ %>
+ <%=javaScriptAfterChainingText%>
+ <%
+ }
+ %>
+ }
+ <% } %>
+
+
+ }
+ }
+ }
+
+ function dummyFunction(){
+ //alert("Server operation timed out");
+ }
+
+ function bringBacktoNormal(index, obj) {
+ if(obj) {
+ //alert('bringing to normal');
+ var field_name = obj.name;
+ //alert("'"+field_name+"_content"+"'");
+ if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
+ //if(obj.style) obj.style.display='block';
+ }
+ }
+ function createChildFormField(index, obj) {
+ //alert('create Cities');
+ //var obj = document.getElementById('dhtmlgoodies_city');
+ var obj = obj;
+ var resp = trim(ajax[index].response);
+ //alert(index + " " + ajax[index]);
+ //alert('response ' + ajax[index].response);
+ if(resp.length > 0 && resp.indexOf("<script type=")!=-1) {
+ document.write(resp);
+ if(obj) {
+ //alert('obj.name ' + obj.name);
+ var field_name = obj.name;
+ //alert("'"+field_name+"_content"+"'");
+ if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
+ //if(obj.style) obj.style.display='block';
+ }
+ throw "session_exp";
+ }
+ if(obj) {
+ if(resp.length > 0)
+ eval(resp); // Executing the response from Ajax as Javascript code
+ //alert('obj.name ' + obj.name);
+ var field_name = obj.name;
+ //alert("'"+field_name+"_content"+"'");
+ if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
+ //if(obj.style) obj.style.display='block';
+ }
+ }
+function changeCombo(data){
+ var list = data;
+ for (var i = 0; i < list.length; i ++){
+ var fieldName = list[i].substr(0, list[i].indexOf(":"));
+ var selectVal = list[i].substr(list[i].indexOf(":") + 1, list[i].length);
+
+ var elem = document.getElementsByName(fieldName);
+ var j = 0;
+ while (elem[j].tagName == 'INPUT' && elem[j].type=='hidden'){
+ j ++;
+ }
+
+ var oldVal = elem[j].value
+ elem[j].parentNode.innerHTML = selectVal;
+ elem[j].value=oldVal;
+ elem[j].onchange = updateDropDown;
+ }
+ document.getElementById('childFieldpopup').style.display='none';
+
+
+
+
+}
+<% } %>
+/*
+
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="source_page" value="report_run">
+ <input type="hidden" name="r_action" value="report.download.pdf">
+
+*/
+</script>
+<% /* if(request.getAttribute(AppConstants.RI_REPORT_DATA) == null){ */ %>
+<script>
+ if(<%=isFirstTime%>) {
+
+ <%
+ if(!isDashboard) {
+ outFor:
+ for(rff2.resetNext(); rff2.hasNext();) {
+ FormField ff1 = rff2.getNext();
+ if( ff1.getDependsOn() != null && !ff1.getDependsOn().equals("") ) { %>
+ <% if (!ff1.getFieldType().equals(FormField.FFT_HIDDEN)) { %>
+ //alert("in First Time <%=ff1.getFieldName()%>");
+ if(document.forma.<%=ff1.getFieldName()%>)
+ updateDropDown(document.forma.<%=ff1.getFieldName()%>);
+ <% } %>
+ <% break outFor;
+ }
+ }
+ }
+ %>
+ }
+</script>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+ private String getCallableJavascriptForSubmit(ReportRuntime rr) {
+ JavascriptItemType javascriptItemType = null;
+ StringBuffer callJavascriptText = new StringBuffer("");
+ if(rr.getJavascriptList()!=null) {
+ for (Iterator iter = rr.getJavascriptList().getJavascriptItem().iterator(); iter.hasNext();) {
+ javascriptItemType = (JavascriptItemType)iter.next();
+ if(javascriptItemType.getFieldId().equals("os1")) {
+ callJavascriptText.append(" "+javascriptItemType.getCallText());
+ break;
+ }
+ }
+ }
+ return callJavascriptText.toString();
+ }
+
+ private HashMap getFormFieldsHashMap (HttpServletRequest request, String formFieldsString) {
+ String splitName[] = null;
+ ArrayList keyValue = new ArrayList();
+ HashMap keyValueMap = new HashMap();
+ String newValue = "";
+ //System.out.println("Request Str "+ formFieldsString);
+ StringTokenizer st = null;
+ StringTokenizer st2 = null;
+ String key1 = "";
+ String value = "";
+
+ if(formFieldsString.length() > 0) {
+ st = new StringTokenizer(formFieldsString, "&");
+ while (st.hasMoreTokens()) {
+ keyValue.add(st.nextToken());
+ }
+ if(keyValue.size() > 0) {
+
+ for (int num = 0; num < keyValue.size(); num++) {
+ st2 = new StringTokenizer((String) keyValue.get(num), "=");
+ while(st2.hasMoreTokens()) {
+ key1 = ""; value = "";
+ key1 = st2.nextToken();
+ key1 = Utils.replaceInString(key1, "_auto", "");
+ try {
+ value = st2.nextToken();
+ }catch (NoSuchElementException ex) { value = "";}
+ if(!keyValueMap.containsKey(key1))
+ keyValueMap.put(key1,value);
+ else {
+ String value1 = (String) keyValueMap.get(key1);
+ value = value+"|"+value1;
+ keyValueMap.put(key1,value);
+ }
+ }
+ }
+
+ }
+ }
+ return keyValueMap;
+ }
+
+ private String getParameterString (HttpServletRequest request, String key, HashMap keyValueMap) {
+ String newValue = "";
+ if(keyValueMap.containsKey(key)) {
+ //System.out.println("VALUE IN MAP IS " +key+ " "+ (String) keyValueMap.get(key));
+ newValue = XSSFilter.filterRequestOnlyScript((String) keyValueMap.get(key));
+ if(nvl(newValue).length()<=0) {
+ newValue = XSSFilter.filterRequestOnlyScript((String) keyValueMap.get(key+"_auto"));
+ }
+ }
+ return newValue;
+ }
+ private String parseAndGetFirstReportID(String strHTML) {
+ String sourcestring = strHTML;
+ //System.out.println("String HTML1 " + strHTML);
+ Pattern re = Pattern.compile("\\[(.*?)\\]"); //\\[(.*?)\\]
+ Matcher m = re.matcher(sourcestring);
+ int mIdx = 0;
+ while (m.find()){
+ for( int groupIdx = 0; groupIdx < m.groupCount(); groupIdx++ ){
+ String str = m.group(groupIdx);
+ //System.out.println("REP ID1 " + str.substring(str.indexOf("#")+1, str.length()-1)) ;
+ return str.substring(str.indexOf("#")+1, str.length()-1);
+ }
+ mIdx++;
+
+ }return "";
+ }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp
new file mode 100644
index 00000000..70c9812a
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp
@@ -0,0 +1,157 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<%@ page errorPage="error_page.jsp" %>
+<%!
+class ValueComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ Map.Entry e1 = (Map.Entry) o1;
+ Map.Entry e2 = (Map.Entry) o2;
+ Comparable c1 = (Comparable)e1.getValue();
+ Comparable c2 = (Comparable)e2.getValue();
+ return c1.compareTo(c2);
+ }
+}
+%>
+<%
+HashMap hashMap = ReportLoader.loadReportsToSchedule(request);
+ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+if(rdef ==null) rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+Set mapSet = hashMap.entrySet();
+List entrylist = new ArrayList(mapSet);
+Collections.sort(entrylist, new ValueComparator());
+Map.Entry me;
+session.removeAttribute(AppConstants.SI_REPORT_SCHEDULE);
+session.removeAttribute(AppConstants.SI_REPORT_DEFINITION);
+ReportSchedule reportSchedule = (ReportSchedule) session.getAttribute(AppConstants.SI_REPORT_SCHEDULE);
+%>
+ <jsp:include page="header.jsp" flush="true" />
+ <!-- <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">-->
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+
+
+<jsp:include page="error_include.jsp" flush="true" />
+<br/><br/><br/>
+<% if (rdef == null || request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE) == null) {%>
+
+<form name="formb" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.schedule.multiple">
+
+
+<table width="94%" class="tableBorder" border="0" cellspacing="0" cellpadding="0" align=center valign="center">
+<tr><td colspan="2">
+ <table width="100%" border="0" cellspacing="0" cellpadding="3">
+
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= "Scheduling Report" %></b></td>
+ </tr>
+ <% if(request.getAttribute("message")!=null) { %>
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= (String) request.getAttribute("message") %></b></td>
+ </tr>
+ <% } %>
+ </table>
+</td></tr>
+<tr> <td> <font class=rtabletext> Reports: </font></td><td height="30" align="center">
+ <% if (rdef !=null && request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE) != null ) {%>
+ <font class=rtabletext><%= rdef.getReportName()%></font>
+ <% } else { %>
+ <select name="schedule_reports" onChange="document.formb.<%= AppConstants.RI_ACTION %>.value='report.schedule.report.submit'; document.formb.submit();">
+ <option value="-1" selected> -->select report <-- </option>
+ <% for (Iterator iter = entrylist.iterator(); iter.hasNext();) {
+ me=(Map.Entry)iter.next();
+ %>
+ <% if (rdef !=null && rdef.getReportID().equals((String)me.getKey())) {%>
+ <option value="<%=(String) me.getKey()%>" selected> <%=(String) me.getValue()%> </option>
+ <% } else { %>
+ <option value="<%=(String) me.getKey()%>"> <%=(String) me.getValue()%> </option>
+ <% } %>
+ <% } %>
+ </select>
+ <% } %>
+
+</td> </tr>
+
+</table>
+</form>
+<% } %>
+<% if(reportSchedule!=null) { %>
+ <jsp:include page="wizard_schedule_only.jsp" flush="true"/>
+<% } %>
+ <jsp:include page="footer.jsp" flush="true" />
+</div>
+</td>
+</tr>
+</table>
+<%--<jsp:include page="disclaimer.jsp" flush="true" />--%>
+<script>
+ //document.getElementById('loadingMessageDiv').style.display='none';
+ //adding the bread crumb on the folder tree
+ <%
+ String isTreeHidden = "true";
+ if(request.getSession().getAttribute("isTreeHidden") != null && ((String)request.getSession().getAttribute("isTreeHidden")).equals("true")){
+ isTreeHidden = "true";
+ }else{
+ isTreeHidden = "false";
+ }
+ %>
+ //if ("<%=isTreeHidden%>" == "true"){
+ // hideTree();
+ //}
+ //document.getElementById('contentDiv').style.height=document.body.offsetHeight - 50;
+</script>
+<%! private String HTMLEncode(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)=='<')
+ sb.replace(i, i+1, "&lt;");
+ else if(sb.charAt(i)=='>')
+ sb.replace(i, i+1, "&gt;");
+ else if(sb.charAt(i)=='"')
+ sb.replace(i, i+1, "&quot;");
+
+ return sb.toString();
+ } // HTMLEncode
+
+ private String clearSpaces(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)==' ')
+ sb.replace(i, i+1, "&nbsp;");
+
+ return sb.toString();
+ } // clearSpaces
+
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp
new file mode 100644
index 00000000..ad3c612e
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp
@@ -0,0 +1,172 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<%@ page errorPage="error_page.jsp" %>
+
+
+
+<% ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+
+ String reportID = rdef.getReportID();
+
+
+
+ String dbInfo = null;
+ dbInfo = rdef.getDBInfo();
+ int sessionflag = 0;
+ if(dbInfo == null || dbInfo.length() == 0) {
+ dbInfo = (String) session.getAttribute("remoteDB");
+ sessionflag = 1;
+ }
+ session.setAttribute("remoteDB", dbInfo);
+ if((dbInfo == null) && (request.getParameter("dataSource")!=null))
+ session.setAttribute("remoteDB", request.getParameter("dataSource"));
+
+ StringBuffer title = new StringBuffer("");
+ title.append(Globals.getBaseTitle()+" > "+(reportID.equals("-1")?"Create Report":"Schedule Report"));
+ title.append(" > "+rdef.getReportName());
+
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+%>
+<!-- Set All variable to request, to enable included jsp to access it -->
+<%
+ request.setAttribute(AppConstants.SI_REPORT_DEFINITION,rdef);
+%>
+
+ <jsp:include page="header.jsp" flush="true" />
+ <!-- <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">-->
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+
+
+<jsp:include page="error_include.jsp" flush="true" />
+
+<table width="100%" >
+<tr><td id="folderTreeContainer" width="1%" height='300' valign='top' ><table>
+ <!--<jsp:include page="tree/folderNav.jsp" flush="true" >
+ <jsp:param name="doCollapseTree" value="Y" />
+ </jsp:include>-->
+ </table>
+</td>
+<td id="searchContentContainer" valign='top' >
+<div id="contentDiv" style="position:relative;overflow:auto;">
+<form name="forma" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.schedule.submit">
+ <input type="hidden" name="<%= AppConstants.RI_REPORT_ID %>" value="<%= reportID %>">
+ <input type="hidden" name="<%= AppConstants.RI_DETAIL_ID %>" value="<%= AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID) %>">
+ <input type="hidden" name="<%= AppConstants.RI_GO_TO_STEP %>" value="">
+ <input type="hidden" name="<%= AppConstants.RI_WIZARD_ACTION %>" value="<%= AppConstants.WA_BACK %>">
+ <input type="hidden" name="<%= AppConstants.RI_SCHEDULE_ID %>" value="<%= AppUtils.getRequestNvlValue(request, AppConstants.RI_SCHEDULE_ID) %>">
+
+
+<table width="94%" class="tableBorder" border="0" cellspacing="0" cellpadding="0" align=center>
+<tr><td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="3">
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= title.toString() %></b></td>
+ </tr>
+ <% if(request.getAttribute("message")!=null) { %>
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= (String) request.getAttribute("message") %></b></td>
+ </tr>
+ <% } %>
+ </table>
+</td></tr><tr><td>
+ <jsp:include page="wizard_adhoc_schedule.jsp"/>
+</td></tr><tr><td>
+ <table width="100%" border="0" cellspacing="1" cellpadding="3">
+ <tr>
+ <td width="10%" align="right">
+ &nbsp;
+ </td>
+ <td align=center>
+ <input type=submit class="button" border="0" value="Submit" width="71" height="28" onClick="if(! dataValidate()) return false; document.forma.<%= AppConstants.RI_ACTION %>.value='report.schedule.submit';">
+ <%--<input type=submit class="button" border="0" value="Report Search Page" width="71" height="28" onClick="document.forma.<%= AppConstants.RI_ACTION %>.value='report.search.public.container';">--%>
+
+ </td>
+ </tr>
+ </table>
+</td></tr>
+</table>
+</form>
+
+ <jsp:include page="footer.jsp" flush="true" />
+</div>
+</td>
+</tr>
+</table>
+<%--<jsp:include page="disclaimer.jsp" flush="true" />--%>
+<script>
+ //document.getElementById('loadingMessageDiv').style.display='none';
+ //adding the bread crumb on the folder tree
+ if (window.parent && window.parent.addBreadCrumb)
+ window.parent.addBreadCrumb(true, "000<%=rdef.getReportID()%>");
+ //displayTree("000<%=rdef.getReportID()%>");
+ <%
+ String isTreeHidden = "true";
+ if(request.getSession().getAttribute("isTreeHidden") != null && ((String)request.getSession().getAttribute("isTreeHidden")).equals("true")){
+ isTreeHidden = "true";
+ }else{
+ isTreeHidden = "false";
+ }
+ %>
+ //if ("<%=isTreeHidden%>" == "true"){
+ // hideTree();
+ //}
+ //document.getElementById('contentDiv').style.height=document.body.offsetHeight - 50;
+</script>
+<%! private String HTMLEncode(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)=='<')
+ sb.replace(i, i+1, "&lt;");
+ else if(sb.charAt(i)=='>')
+ sb.replace(i, i+1, "&gt;");
+ else if(sb.charAt(i)=='"')
+ sb.replace(i, i+1, "&quot;");
+
+ return sb.toString();
+ } // HTMLEncode
+
+ private String clearSpaces(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)==' ')
+ sb.replace(i, i+1, "&nbsp;");
+
+ return sb.toString();
+ } // clearSpaces
+
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp
new file mode 100644
index 00000000..af951cc2
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp
@@ -0,0 +1,173 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="java.util.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
+
+<%@ page errorPage="error_page.jsp" %>
+
+
+
+<% ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
+
+ String reportID = rdef.getReportID();
+
+
+
+ String dbInfo = null;
+ dbInfo = rdef.getDBInfo();
+ int sessionflag = 0;
+ if(dbInfo == null || dbInfo.length() == 0) {
+ dbInfo = (String) session.getAttribute("remoteDB");
+ sessionflag = 1;
+ }
+ session.setAttribute("remoteDB", dbInfo);
+ if((dbInfo == null) && (request.getParameter("dataSource")!=null))
+ session.setAttribute("remoteDB", request.getParameter("dataSource"));
+
+ StringBuffer title = new StringBuffer("");
+ title.append(Globals.getBaseTitle()+" > "+(reportID.equals("-1")?"Create Report":"Schedule Report"));
+ title.append(" > "+rdef.getReportName());
+
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+%>
+<!-- Set All variable to request, to enable included jsp to access it -->
+<%
+ request.setAttribute(AppConstants.SI_REPORT_DEFINITION,rdef);
+%>
+
+ <jsp:include page="header.jsp" flush="true" />
+ <!-- <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">-->
+<script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
+
+
+<jsp:include page="error_include.jsp" flush="true" />
+
+<table width="100%" >
+<tr><td id="folderTreeContainer" width="1%" height='300' valign='top' ><table>
+ <!--<jsp:include page="tree/folderNav.jsp" flush="true" >
+ <jsp:param name="doCollapseTree" value="Y" />
+ </jsp:include>-->
+ </table>
+</td>
+<td id="searchContentContainer" valign='top' >
+<div id="contentDiv" style="position:relative;overflow:auto;">
+<form name="forma" action="<%= AppUtils.getBaseURL() %>" method="post">
+ <input type="hidden" name="action" value="raptor">
+ <input type="hidden" name="<%= AppConstants.RI_ACTION %>" value="report.schedule.submit_from_search">
+ <input type="hidden" name="<%= AppConstants.RI_REPORT_ID %>" value="<%= reportID %>">
+ <input type="hidden" name="<%= AppConstants.RI_DETAIL_ID %>" value="<%= AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID) %>">
+ <input type="hidden" name="<%= AppConstants.RI_GO_TO_STEP %>" value="">
+ <input type="hidden" name="<%= AppConstants.RI_WIZARD_ACTION %>" value="<%= AppConstants.WA_BACK %>">
+ <input type="hidden" name="<%= AppConstants.RI_SCHEDULE_ID %>" value="<%= AppUtils.getRequestNvlValue(request, AppConstants.RI_SCHEDULE_ID) %>">
+
+
+<table width="94%" class="tableBorder" cellspacing="0" cellpadding="0" align=center>
+<tr><td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="3">
+ <% if(request.getAttribute("message")!=null) { %>
+ <tr >
+ <td valign="Middle"><b class=rerrortext><%= (String) request.getAttribute("message") %></b></td>
+ </tr>
+ <% } %>
+ <tr class=rbg1>
+ <td valign="Middle"><b class=rtableheader><%= title.toString() %></b></td>
+ </tr>
+
+ </table>
+</td></tr><tr><td>
+ <jsp:include page="wizard_adhoc_schedule.jsp"/>
+</td></tr><tr><td>
+ <table width="100%" border="0" cellspacing="1" cellpadding="3">
+ <tr>
+ <td width="10%" align="right">
+ &nbsp;
+ </td>
+ <td align=center>
+ <input type=submit class="button" border="0" value="Submit" width="71" height="28" onClick="if(! dataValidate()) return false; document.forma.<%= AppConstants.RI_ACTION %>.value='report.schedule.submit_from_search';">
+ <%--<input type=submit class="button" border="0" value="Report Search Page" width="71" height="28" onClick="document.forma.<%= AppConstants.RI_ACTION %>.value='report.search.public.container';">--%>
+
+ </td>
+ </tr>
+ </table>
+</td></tr>
+</table>
+</form>
+
+ <jsp:include page="footer.jsp" flush="true" />
+</div>
+</td>
+</tr>
+</table>
+<%--<jsp:include page="disclaimer.jsp" flush="true" />--%>
+<script>
+ //document.getElementById('loadingMessageDiv').style.display='none';
+ //adding the bread crumb on the folder tree
+ if (window.parent && window.parent.addBreadCrumb)
+ window.parent.addBreadCrumb(true, "000<%=rdef.getReportID()%>");
+ //displayTree("000<%=rdef.getReportID()%>");
+ <%
+ String isTreeHidden = "true";
+ if(request.getSession().getAttribute("isTreeHidden") != null && ((String)request.getSession().getAttribute("isTreeHidden")).equals("true")){
+ isTreeHidden = "true";
+ }else{
+ isTreeHidden = "false";
+ }
+ %>
+ //if ("<%=isTreeHidden%>" == "true"){
+ // hideTree();
+ //}
+ //document.getElementById('contentDiv').style.height=document.body.offsetHeight - 50;
+</script>
+<%! private String HTMLEncode(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)=='<')
+ sb.replace(i, i+1, "&lt;");
+ else if(sb.charAt(i)=='>')
+ sb.replace(i, i+1, "&gt;");
+ else if(sb.charAt(i)=='"')
+ sb.replace(i, i+1, "&quot;");
+
+ return sb.toString();
+ } // HTMLEncode
+
+ private String clearSpaces(String value) {
+ StringBuffer sb = new StringBuffer(value);
+
+ for(int i=0; i<sb.length(); i++)
+ if(sb.charAt(i)==' ')
+ sb.replace(i, i+1, "&nbsp;");
+
+ return sb.toString();
+ } // clearSpaces
+
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } %>
+
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp
new file mode 100644
index 00000000..18c450ba
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp
@@ -0,0 +1,86 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ boolean isEdit = curSubStep.equals(AppConstants.WSS_EDIT);
+ DataColumnType currColumn = null;
+ if(isEdit)
+ currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID)); %>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %><%= curSubStep.equals(AppConstants.WSS_EDIT)?"Edit Sorting":(curSubStep.equals(AppConstants.WSS_ADD)?"Add Sorting":"") %></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;">
+ <font class=rtabletext>Sort By Column: </font>
+ </td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <% if(isEdit) { %>
+ <%= currColumn.getDisplayName() %>
+ <% } else { %>
+ <select name="sortColId">
+ <% int iCount = 0;
+ List reportCols = rdef.getAllColumns();
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(dct.getOrderBySeq()<=0) { %>
+ <option value="<%= dct.getColId() %>"<%= ((iCount++)==0)?" selected":"" %>><%= dct.getDisplayName() %>
+ <% } // if
+ } // for
+ %>
+ </select>
+ <% } // else
+ %>
+ </font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="25%" height="30"><font class=rtabletext>Sort Type: </font></td>
+ <td class=rbg3 align="left" width="50%"><font class=rtabletext>
+ <select name="sortAscDesc">
+ <option value="<%= AppConstants.SO_ASC %>" <%= (isEdit&&nvl(currColumn.getOrderByAscDesc(), AppConstants.SO_ASC).equals(AppConstants.SO_DESC))?"":" selected" %>>Ascending
+ <option value="<%= AppConstants.SO_DESC %>"<%= (isEdit&&nvl(currColumn.getOrderByAscDesc(), AppConstants.SO_ASC).equals(AppConstants.SO_DESC))?" selected":"" %>>Descending
+ </select>
+ </font></td>
+ </tr>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp
new file mode 100644
index 00000000..63bf9cd3
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp
@@ -0,0 +1,116 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="java.util.Collections" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.OrderSeqComparator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.OrderBySeqComparator" %>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+ List reportCols = rdef.getAllColumns();
+ Collections.sort(reportCols, new OrderSeqComparator());
+ int numSortCols = rdef.getNumSortColumns(); %>
+<table class="mTAB" width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=6 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>Sort Order</b></td>
+ <td align="center" valign="Middle" width="65%"><b class=rtableheader>Sort By Column</b></td>
+ <td align="center" valign="Middle" width="7%"><b class=rtableheader>Sort Type</b></td>
+ <td align="center" valign="Middle" width="7%" nowrap><b class=rtableheader>Re-order</b></td>
+ <td align="center" valign="Middle" width="14%" colspan=2>
+ <% if(numSortCols<reportCols.size()) { %>
+ <table border="0" cellspacing="0" cellpadding="0"><tr>
+ <td height="28"><input type="button" class=button value="Add One" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit();"></td>
+ </tr><tr><td height="28">
+ <% } %>
+ <input type="button" class=button value="Re-order All" border="0" width="104" height="28" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ORDER_ALL %>';document.forma.submit();">
+ <% if(numSortCols<reportCols.size()) { %>
+ </td></tr></table>
+ <% } %>
+ </td>
+ </tr>
+<% int iCount = 0;
+ Collections.sort(reportCols,new OrderBySeqComparator());
+ for(Iterator iter=reportCols.iterator(); iter.hasNext(); ) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if(dct.getOrderBySeq()>0) { %>
+ <tr class=<%=(iCount % 2 == 0)?"rowalt1":"rowalt2"%>>
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %><!--dct.getOrderBySeq(): <%= dct.getOrderBySeq() %>--></font></td>
+ <td><font class=rtabletext><%= dct.getDisplayName() %></font></td>
+ <td align="center"><font class=rtabletext><%= dct.getOrderByAscDesc().equals(AppConstants.SO_ASC)?"Ascending":"Descending" %></font></td>
+ <td align="center" nowrap>
+<% if(iCount==0) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankdown.gif" width="25" height="7">
+<% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columnup.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_UP %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>';">
+<% } %>
+<% if(iCount==numSortCols-1) { %>
+ <img border="0" src="<%= AppUtils.getImgFolderURL() %>columnblankup.gif" width="25" height="7">
+<% } else { %>
+ <input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>columndown.gif" width="25" height="7" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_MOVE_DOWN %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>';">
+<% } %>
+ </td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_EDIT %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>';"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove sort on column <%= dct.getDisplayName() %>?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dct.getColId() %>'; }"></td>
+ </tr>
+<%
+ iCount++;
+ } // if
+ } // for
+ Collections.sort(reportCols, new OrderSeqComparator());
+%>
+<% if(numSortCols==0) { %>
+ <tr class=rbg2>
+ <td colspan=6 align="center" height="30"><font class=rtabletext>No sorting defined</font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp
new file mode 100644
index 00000000..9e04f2b8
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp
@@ -0,0 +1,112 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.OrderBySeqComparator" %>
+<%@ page import="java.util.Collections" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+
+%>
+<table class="mTAB" width="100%" class="tableBorder" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=4 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="65%"><b class=rtableheader>Column</b></td>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Sort Order</b></td>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Sort Type</b></td>
+ </tr>
+<% int icnt = 0;
+ for(Iterator iter=rdef.getAllColumns().iterator(); iter.hasNext(); icnt++) {
+ DataColumnType dct = (DataColumnType) iter.next(); %>
+ <tr<%= (icnt%2==0)?" class=rowalt1":" class=rowalt2" %>>
+ <td align="center" height="30"><font class=rtabletext><%= icnt+1 %></font></td>
+ <td><font class=rtabletext><%= dct.getDisplayName() %></font></td>
+ <td align="center" valign="middle">
+ <input type="hidden" name="colId" value="<%= dct.getColId() %>">
+ <input type="text" size="5" maxlength="5" name="sortOrder" value="<%= (dct.getOrderBySeq()>0)?(""+dct.getOrderBySeq()):"" %>">
+ </td>
+ <td align="left" valign="middle">
+ <select name="sortAscDesc">
+ <option value="<%= AppConstants.SO_ASC %>" <%= nvl(dct.getOrderByAscDesc(), AppConstants.SO_ASC).equals(AppConstants.SO_DESC)?"":" selected" %>>Ascending
+ <option value="<%= AppConstants.SO_DESC %>"<%= nvl(dct.getOrderByAscDesc(), AppConstants.SO_ASC).equals(AppConstants.SO_DESC)?" selected":"" %>>Descending
+ </select>
+ </td>
+ </tr>
+<% } // for
+%>
+</table>
+ <input type="hidden" name="sortOrder" value="">
+ <input type="hidden" name="sortOrder" value="">
+<br>
+
+<script language="JavaScript">
+<!--
+var colNames = new Array(<%= rdef.getAllColumns().size() %>);
+<% for(int i=0; i<rdef.getAllColumns().size(); i++) {
+ DataColumnType dct = (DataColumnType) rdef.getAllColumns().get(i); %>
+colNames[<%= i %>] = "<%= dct.getDisplayName() %>";
+<% } %>
+
+function dataValidate() {
+ var val = "";
+ for(var i=0; i<document.forma.sortOrder.length; i++) {
+ val = document.forma.sortOrder[i].value;
+ if(val!="")
+ if(! checkPositiveInteger(val)) {
+ alert("Sort Order for column "+colNames[i]+" should be a positive integer.\nPlease enter valid Sort Order value.");
+ document.forma.sortOrder[i].focus();
+ document.forma.sortOrder[i].select();
+
+ return false;
+ } // if
+ } // for
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp
new file mode 100644
index 00000000..d8152c05
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp
@@ -0,0 +1,226 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.Globals" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.ReportLoader" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.ReportWrapper" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.runtime.FormField" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.OrderBySeqComparator" %>
+<%@ page import="java.util.Collections" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ String reportID = rdef.getReportID();
+ boolean isCrossTab = rdef.getReportType().equals(AppConstants.RT_CROSSTAB);
+ boolean isSQLBased = rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED);
+
+%>
+<script language="JavaScript">
+<!--
+function addText(newText) {
+ document.forma.reportSQL.value += (""+newText+" ");
+ document.forma.sqlValidated.value = "N";
+} // addText
+
+function getSelectedTableName() {
+ var tableName = "";
+ tableName = document.forma.dbTables.options[document.forma.dbTables.selectedIndex].value;
+ return tableName;
+} // getSelectedTableName
+
+function addTable() {
+ addText(getSelectedTableName());
+} // addTable
+
+function showTableColsPopup() {
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.table.cols&<%= AppConstants.RI_TABLE_NAME %>="+getSelectedTableName(), "tableColsPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTableColsPopup
+
+function showTestRunSQLPopup() {
+ //var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.popup.testrun.sql&<%= AppConstants.RI_FORMATTED_SQL %>="+escape(""+document.forma.reportSQL.value), "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ var w = window.open("<%= AppUtils.getRaptorActionURL() %>report.test.jsp", "testRunSQLPopup", "width=450,height=330,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+} // showTestRunSQLPopup
+
+function showFormFieldPopup() {
+ var w = window.open("", "fieldPopup", "width=400,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
+ w.focus();
+ w.opener = this;
+
+ w.document.writeln("<html><head>");
+ w.document.writeln("<title>Form Fields</title>");
+ w.document.writeln("<link rel=stylesheet type=text/css href='<%= AppUtils.getBaseFolderURL() %>css/raptor.css'>");
+ w.document.writeln("<script language=JavaScript>");
+ w.document.writeln("function setValue(newValue) {");
+ w.document.writeln(" window.opener.addText(newValue);");
+ w.document.writeln(" window.close();");
+ w.document.writeln("} // setValue");
+ w.document.writeln("</"+"script>");
+ w.document.writeln("</head><body>");
+
+ w.document.writeln("<table width=94% border=0 cellspacing=1 align=center>");
+ w.document.writeln(" <tr class=rbg1>");
+ w.document.writeln(" <td height=30>&nbsp;</td>");
+ w.document.writeln(" <td><b class=rtableheader>Report Form Fields</b></td>");
+ w.document.writeln(" </tr>");
+<% int iCnt = 0;
+ if(rdef.getFormFieldList()!=null)
+ for(Iterator iter=rdef.getFormFieldList().getFormField().iterator(); iter.hasNext(); iCnt++) {
+ FormFieldType fft = (FormFieldType) iter.next(); %>
+ w.document.writeln(" <tr<%= (iCnt%2==0)?" class=rbg8":"" %>>");
+ w.document.writeln(" <td align=center valign=middle height=30><font class=rtabletext><%= (iCnt+1) %></font></td>");
+ w.document.writeln(" <td valign=middle>");
+ w.document.writeln(" <b class=rtabletext><a href=\"javascript:setValue('[<%= fft.getFieldName() %>]')\"><%= fft.getFieldName() %></a></b>");
+ w.document.writeln(" </td>");
+ w.document.writeln(" </tr>");
+<% } // for
+ if(iCnt==0) { %>
+ w.document.writeln(" <tr class=rbg8 height=30>");
+ w.document.writeln(" <td colspan=2 align=center valign=middle><b class=rtabletext>There are no form fields defined</b></td>");
+ w.document.writeln(" </tr>");
+ w.document.writeln(" <tr>");
+ w.document.writeln(" <td colspan=2 align=center><br><button type='submit' onClick=\"window.close();\" att-button btn-type=\"primary\" size=\"small\" title='Save'>Close</button></td>");
+ w.document.writeln(" </tr>");
+<% } else { %>
+ w.document.writeln(" <tr class=rbg1 height=30>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" <td>&nbsp;</td>");
+ w.document.writeln(" </tr>");
+<% } // if
+%>
+ w.document.writeln("</table>");
+
+ w.document.writeln("</body></html>");
+ w.document.close();
+} // showFormFieldPopup
+//-->
+</script>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr>
+ <td class=rbg3 width="60%" align="left" valign="top">
+ &nbsp;<font class=rtabletext>Report SQL: </font><br>
+ <% boolean sqlValidated = (nvl(AppUtils.getRequestValue(request, "sqlValidated"), nvl(rdef.getReportSQL())).length()>0);
+ if(request.getAttribute(AppConstants.RI_ERROR_LIST)!=null)
+ sqlValidated = false;
+
+ String sql = nvl(rdef.getReportSQL(), "SELECT ");
+ if(! sqlValidated)
+ sql = nvl(AppUtils.getRequestValue(request, "reportSQL"), sql); %>
+ <input type="hidden" id="sqlValidated" name="sqlValidated" value="<%= sqlValidated?"Y":"N" %>">
+ &nbsp;<textarea name="reportSQL" cols="155" rows="32" onChange="document.getElementById('sqlValidated').value='N';" style="height: 400px;"><%= sql %></textarea>
+ </td>
+ <td class=rbg2 width="40%" align="left" valign="top" nowrap>
+ &nbsp;<font class=rtabletext>Keyword Assistance </font><br>
+ <b class=rtabletext>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('SELECT')">SELECT</a>&nbsp;&nbsp;<a href="javascript:addText('DISTINCT')">DISTINCT</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('FROM')">FROM</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('WHERE')">WHERE</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('GROUP BY')">GROUP BY</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('HAVING')">HAVING</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('ORDER BY')">ORDER BY</a>&nbsp;&nbsp;<a href="javascript:addText('ASC')">ASC</a>&nbsp;&nbsp;<a href="javascript:addText('DESC')">DESC</a>&nbsp;<br>
+ <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('UNION')">UNION</a>&nbsp;&nbsp;<a href="javascript:addText('ALL')">ALL</a>&nbsp;&nbsp;<a href="javascript:addText('INTERSECT')">INTERSECT</a>&nbsp;&nbsp;<a href="javascript:addText('MINUS')">MINUS</a>&nbsp;<br>
+ <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('AND')">AND</a>&nbsp;&nbsp;<a href="javascript:addText('OR')">OR</a>&nbsp;&nbsp;<a href="javascript:addText('NOT')">NOT</a>&nbsp;&nbsp;<a href="javascript:addText('EXISTS')">EXISTS</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('IS')">IS</a>&nbsp;&nbsp;<a href="javascript:addText('NULL')">NULL</a>&nbsp;&nbsp;<a href="javascript:addText('IN')">IN</a>&nbsp;&nbsp;<a href="javascript:addText('BETWEEN')">BETWEEN</a>&nbsp;<br>
+ <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('COUNT(')">COUNT(</a>&nbsp;&nbsp;<a href="javascript:addText('SUM(')">SUM(</a>&nbsp;&nbsp;<a href="javascript:addText('AVG(')">AVG(</a>&nbsp;&nbsp;<a href="javascript:addText('MAX(')">MAX(</a>&nbsp;&nbsp;<a href="javascript:addText('MIN(')">MIN(</a>&nbsp;<br>
+ <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('NVL(')">NVL(</a>&nbsp;&nbsp;<a href="javascript:addText('DECODE(')">DECODE(</a>&nbsp;&nbsp;<a href="javascript:addText('SYSDATE')">SYSDATE</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('TO_CHAR(')">TO_CHAR(</a>&nbsp;&nbsp;<a href="javascript:addText('TO_NUMBER(')">TO_NUMBER(</a>&nbsp;&nbsp;<a href="javascript:addText('TO_DATE(')">TO_DATE(</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('TRUNC(')">TRUNC(</a>&nbsp;&nbsp;<a href="javascript:addText('ROUND(')">ROUND(</a>&nbsp;&nbsp;<a href="javascript:addText('ABS(')">ABS(</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('SUBSTR(')">SUBSTR(</a>&nbsp;&nbsp;<a href="javascript:addText('REPLACE(')">REPLACE(</a>&nbsp;&nbsp;<a href="javascript:addText('LOWER(')">LOWER(</a>&nbsp;&nbsp;<a href="javascript:addText('UPPER(')">UPPER(</a>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:addText('LTRIM(')">LTRIM(</a>&nbsp;&nbsp;<a href="javascript:addText('RTRIM(')">RTRIM(</a>&nbsp;&nbsp;<a href="javascript:addText('LPAD(')">LPAD(</a>&nbsp;&nbsp;<a href="javascript:addText('RPAD(')">RPAD(</a>&nbsp;<br>
+ </b>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg2 height="40" align="left" valign="Middle" nowrap>
+ <font class=rtabletext style="display: none">
+ &nbsp;Tables:
+ <select name="dbTables" style="width: 200px">
+ <% Vector reportTableSources = DataCache.getReportTableSources((String) session.getAttribute("remoteDB"));
+ for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i); %>
+ <option value="<%= tableSource.getTableName() %>"><%= tableSource.getTableName() %>
+ <% } %>
+ </select>
+ <button type="submit" onClick="addTable()" att-button btn-type="primary" size="small" title='Add Table'>Add Table</button>
+ <button type="submit" onClick="showTableColsPopup()" att-button btn-type="primary" size="small" title='Columns'>Columns</button>
+ <button type="submit" onClick="showFormFieldPopup()" att-button btn-type="primary" size="small" title='Form Fields'>Form Fields</button>
+ &nbsp;
+ </font>
+ </td>
+ <td class=rbg2 align="left" valign="Middle" nowrap>
+ <font class=rtabletext>&nbsp;
+ <button type="submit" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_VALIDATE %>';" att-button btn-type="primary" size="small" title='Validate SQL'>Validate SQL</button>
+ &nbsp;
+ <button type="Button" onClick="showTestRunSQLPopup()" att-button btn-type="primary" size="small" title='Test Run SQL'>Test Run SQL</button>
+ &nbsp;
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td class=rbg1 colspan=2 height="30" align="center" valign="Middle"><b class=rtableheader>You need to click the &quot;Validate SQL&quot; button in order to store the SQL before going forward</b></td>
+ </tr>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ if(document.getElementById("sqlValidated") && document.getElementById("sqlValidated").value!="Y") {
+ <% if(nvl(rdef.getReportSQL()).length()>0) { %>
+ return confirm("The changes made to the SQL have not been validated.\nYou need to click the \"Validate SQL\" button in order to do that.\nDo you want to continue now and lose the changes made to the SQL after the last validation?");
+ <% } else { %>
+ alert("The SQL has not been validated.\nPlease click the \"Validate SQL\" button in order to do that.\nYou cannot go forward without SQL validation.");
+ return false;
+ <% } %>
+ } // if
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp
new file mode 100644
index 00000000..88ecda31
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp
@@ -0,0 +1,369 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableJoin" %>
+<%@ page import="org.openecomp.portalsdk.analytics.error.UserDefinedException"%>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+ boolean isEdit = curSubStep.equals(AppConstants.WSS_EDIT);
+ DataSourceType currTable = null;
+ if(isEdit)
+ currTable = rdef.getTableById(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ Vector reportTableSources = (isEdit)?DataCache.getReportTableSources((String) session.getAttribute("remoteDB")):DataCache.getReportTableSources(AppUtils.getUserRoles(request),((String) session.getAttribute("remoteDB")), AppUtils.getUserID(request), request);
+ if(reportTableSources.size()<=0) {
+ request.setAttribute(AppConstants.RI_EXCEPTION, new Exception("Please add table name to the raptor table for generating report"));
+ throw new UserDefinedException("Please add table name to the raptor table for generating report");
+ }
+ Vector reportTableJoins = (isEdit)?DataCache.getReportTableJoins():DataCache.getReportTableJoins(AppUtils.getUserRoles(request)); %>
+
+<% if(! isEdit) { %>
+<script language="JavaScript">
+<!--
+ var tablesExist = false;
+ <% if(rdef.getDataSourceList().getDataSource().size()>0) { %>
+ tablesExist = true;
+
+ function setJoinTableName(tableId) {
+ var selIndex = 0;
+ for(var i=1; i<document.forma.joinTableName.options.length; i++)
+ if(tableId==document.forma.joinTableName.options[i].value)
+ selIndex = i;
+
+ document.forma.joinTableName.selectedIndex = selIndex;
+ } // setJoinTableName
+ <% } %>
+
+ function tableNameChange() {
+ var newTableName = "";
+ newTableName = document.forma.tableName.options[document.forma.tableName.selectedIndex].value;
+
+ document.forma.displayName.value=document.forma.tableName.options[document.forma.tableName.selectedIndex].text;
+
+ // Setting the PK values
+ if(false) {}
+
+ <% for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i); %>
+ else if(newTableName=="<%= tableSource.getTableName() %>")
+ document.forma.tablePK.value = "<%= tableSource.getPkFields() %>";
+ <% } %>
+
+ <% if(rdef.getDataSourceList().getDataSource().size()>0) {
+ for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next();
+
+ for(int i=0; i<reportTableJoins.size(); i++) {
+ TableJoin tableJoin = (TableJoin) reportTableJoins.get(i);
+ if(dst.getTableName().equals(tableJoin.getSrcTableName())) { %>
+ if(newTableName=="<%= tableJoin.getDestTableName() %>")
+ setJoinTableName("<%= dst.getTableId() %>");
+ else
+ <% } else if(dst.getTableName().equals(tableJoin.getDestTableName())) { %>
+ if(newTableName=="<%= tableJoin.getSrcTableName() %>")
+ setJoinTableName("<%= dst.getTableId() %>");
+ else
+ <% } // if
+ } // for
+ } %>
+ setJoinTableName("");
+ <% } %>
+ listJoinExpr(document.forma.tableName.options[document.forma.tableName.selectedIndex].value,
+ document.forma.joinTableName.options[document.forma.joinTableName.selectedIndex].value);
+ } // tableNameChange
+
+
+//-->
+</script >
+<% } %>
+
+<script language="JavaScript">
+<!--
+ //load table join info to an array of objects
+ function table_join(src_table, dest_table, join_expr) {
+ this.src_table = src_table;
+ this.dest_table = dest_table;
+ this.join_expr = join_expr;
+ }
+
+ var table_joins = new Array();
+
+ <% for(int i=0; i<reportTableJoins.size(); i++) {
+ TableJoin tableJoin = (TableJoin) reportTableJoins.get(i); %>
+ table_joins[table_joins.length] =
+ new table_join("<%=tableJoin.getSrcTableName()%>","<%=tableJoin.getDestTableName()%>","<%=tableJoin.getJoinExpr()%>");
+ <% } %>
+
+ function table_id_name_mapping(table_id, table_name) {
+ this.table_id = table_id;
+ this.table_name = table_name;
+ }
+
+ var table_id_name_mappings = new Array();
+
+ <% for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next(); %>
+ table_id_name_mappings["<%= dst.getTableId()%>"] = "<%= dst.getTableName()%>";
+ table_id_name_mappings["<%= dst.getTableName()%>"] = "<%= dst.getTableId()%>";
+ <% } %>
+
+ function listJoinExpr(tableName, joinTableId) {
+
+ removeAllOptions(document.forma.joinExpr);
+ var isJoinExprFound = false;
+
+ <%if(isEdit) {%>
+ addOption(document.forma.joinExpr, "" ,"No Change");
+ <%}%>
+
+ for ( var i=0; i<table_joins.length; i++) {
+ if( (table_joins[i].src_table==tableName && table_joins[i].dest_table==table_id_name_mappings[joinTableId])
+ ||
+ (table_joins[i].dest_table==tableName && table_joins[i].src_table==table_id_name_mappings[joinTableId])
+ )
+ {
+ addOption(document.forma.joinExpr, table_joins[i].join_expr ,table_joins[i].join_expr );
+ isJoinExprFound = true;
+ }
+ }
+
+ if(!isJoinExprFound)
+ {
+ removeAllOptions(document.forma.joinExpr);
+ addOption(document.forma.joinExpr, "" ,"No Join Condition Defined");
+ }
+ }
+
+ function removeAllOptions(selectbox)
+ {
+ var i;
+ for(i=selectbox.options.length-1;i>=0;i--)
+ {
+ selectbox.remove(i);
+ }
+ }
+
+ function addOption(selectbox, value, text )
+ {
+ var optn = document.createElement("OPTION");
+ optn.text = text;
+ optn.value = value;
+
+ selectbox.options.add(optn);
+ }
+-->
+</script>
+
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=2 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %> - <%= curSubStep %></b></td>
+ </tr>
+ <tr>
+ <td align="right" width="25%" class=rbg2 height="30" style="background-image:url(<%= AppUtils.getImgFolderURL() %>required.gif); background-position:top right; background-repeat:no-repeat;"><font class=rtabletext>Table Name </font></td>
+ <td align="left" width="50%" class=rbg3><font class=rtabletext>
+ <% if(isEdit) {
+ String tName = null;
+ for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i);
+ if(currTable.getTableName().equals(tableSource.getTableName())) {
+ tName = tableSource.getDisplayName();
+ break;
+ } // if
+ } %>
+ <%= nvl(tName, currTable.getTableName()) %>
+ <input type="hidden" name="tableName" value="<%=currTable.getTableName()%>">
+ <% } else { %>
+ <select name="tableName" class="rtabletext" onChange="tableNameChange()">
+ <% for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i); %>
+ <option value="<%= tableSource.getTableName() %>"<%= (i==0)?" selected":"" %>><%= tableSource.getDisplayName() %>
+ <% } %>
+ </select>
+ <% } %>
+ <input type="hidden" name="tablePK" value="<%= ((TableSource) reportTableSources.get(0)).getPkFields() %>">
+ </font></td>
+ </tr>
+ <tr>
+ <td align="right" width="25%" class=rbg2 height="30"><font class=rtabletext>Display Name </font></td>
+ <td align="left" width="50%" class=rbg3><font class=rtabletext>
+ <input type="text" class="rtabletext" size="30" maxlength="30" name="displayName" value="<%= isEdit?currTable.getDisplayName():((TableSource) reportTableSources.get(0)).getDisplayName() %>"></font></td>
+ </tr>
+<% if(rdef.getDataSourceList().getDataSource().size()>(isEdit?1:0)) {
+ String outerJoinType = (isEdit?rdef.getOuterJoinType(currTable):""); %>
+ <tr>
+ <td align="right" width="25%" class=rbg2 height="30"><font class=rtabletext>Join To Table </font></td>
+ <td align="left" width="50%" class=rbg3><font class=rtabletext>
+ <% if(isEdit) { %>
+ <% if(currTable.getRefTableId()==null){%>
+ --- Table Not Joined ---
+ <%} else { %>
+ <%=rdef.getTableById(currTable.getRefTableId()).getDisplayName() %>
+ </br>on :&nbsp;<%=currTable.getRefDefinition() %>
+ <%} %>
+ <input type="hidden" name="joinTableName" value="<%=currTable.getRefTableId()%>">
+
+ <% } else { %>
+ <select name="joinTableName" onChange="listJoinExpr();">
+ <option value="" selected>--- Tables Not Joined ---
+ <% for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next(); %>
+ <option value="<%= dst.getTableId() %>"><%= dst.getDisplayName() %>
+ <% } %>
+ </select>
+ <% } %>
+ </font></td>
+ </tr>
+
+ <tr>
+ <td align="right" width="25%" class=rbg2 height="30"><font class=rtabletext>All availabe Join Options </font></td>
+ <td align="left" width="50%" class=rbg3><font class=rtabletext>
+ <select name="joinExpr">
+ <option value="" selected>No Join Condition</option>
+ </select>
+ </font></td>
+ </tr>
+ <% if(isEdit) { %>
+ <script language="JavaScript">
+ listJoinExpr("<%=currTable.getTableName()%>","<%=currTable.getRefTableId()%>");
+ </script>
+ <%} %>
+
+ <tr>
+ <td align="right" width="25%" class=rbg2 height="30"><font class=rtabletext>Join Type </font></td>
+ <td align="left" width="50%" class=rbg3><font class=rtabletext>
+ <select name="outerJoin">
+ <option value=""<%= (outerJoinType.length()==0)?" selected":"" %>>Include only records present in both tables
+ <option value="<%= AppConstants.OJ_CURRENT %>"<%= outerJoinType.equals(AppConstants.OJ_CURRENT)?" selected":"" %>>Include join table records without match in this table
+ <option value="<%= AppConstants.OJ_JOINED %>"<%= outerJoinType.equals(AppConstants.OJ_JOINED)?" selected":"" %>>Include records from this table without match in the join table
+ </select>
+ </font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function checkNotJoined() {
+<% if(rdef.getDataSourceList().getDataSource().size()>(isEdit?1:0)) { %>
+ if(document.forma.outerJoin.selectedIndex==0) {
+ <% if(isEdit) { %>
+ var selTable = "<%= currTable.getTableName() %>";
+ var selDisplayName = "<%= currTable.getDisplayName() %>";
+ <% } else { %>
+ var selTable = document.forma.tableName.options[document.forma.tableName.selectedIndex].value;
+ var selDisplayName = document.forma.tableName.options[document.forma.tableName.selectedIndex].text;
+ <% } %>
+
+ if(false
+ <% for(int i=0; i<reportTableSources.size(); i++) {
+ TableSource tableSource = (TableSource) reportTableSources.get(i);
+ if(tableSource.getIsLargeData().equals("Y")) { %>
+ ||selTable=="<%= tableSource.getTableName() %>"
+ <% } // if
+ } // for
+ %>
+ ) {
+ alert("Table "+selDisplayName+" contains large amount of data\nand cannot be added unless it is joined to another table.\nPlease select a Join To Table from the list.");
+ document.forma.outerJoin.focus();
+
+ return false;
+ } // if
+ }
+<% if(! isEdit) { %>
+ else { // if(document.forma.outerJoin.selectedIndex>0)
+ var selTable = document.forma.tableName.options[document.forma.tableName.selectedIndex].value;
+ var selJoinTblId = document.forma.outerJoin.options[document.forma.outerJoin.selectedIndex].value;
+ var selJoinTable = "";
+ <% for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next(); %>
+ if(selJoinTblId=="<%= dst.getTableId() %>")
+ selJoinTable = "<%= dst.getTableName() %>";
+ <% } // for
+ for(Iterator iter=reportTableJoins.iterator(); iter.hasNext(); ) {
+ TableJoin tableJoin = (TableJoin) iter.next(); %>
+ if((selTable=="<%= tableJoin.getSrcTableName() %>"&&selJoinTable=="<%= tableJoin.getDestTableName() %>")||
+ (selTable=="<%= tableJoin.getDestTableName() %>"&&selJoinTable=="<%= tableJoin.getSrcTableName() %>"))
+ return true;
+ <% } %>
+
+ alert("Table "+document.forma.tableName.options[document.forma.tableName.selectedIndex].text+
+ " cannot be joined to table "+document.forma.outerJoin.options[document.forma.outerJoin.selectedIndex].text+
+ ".\nPlease select a different join.");
+ return false;
+ } // if
+<% } // if(! isEdit)
+ } %>
+
+ return true;
+} // checkNotJoined
+
+function dataValidate() {
+ if(document.forma.displayName.value=="")
+ <% if(isEdit) { %>
+ document.forma.displayName.value = "<%= currTable.getDisplayName() %>";
+ <% } else { %>
+ document.forma.displayName.value = document.forma.tableName.options[selectedIndex].text;
+ <% } %>
+
+ if(false
+ <% for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); ) {
+ DataSourceType dst = (DataSourceType) iter.next();
+
+ if(! (isEdit&&dst.getTableId().equals(currTable.getTableId()))) { %>
+ ||document.forma.displayName.value=="<%= dst.getDisplayName() %>"
+ <% }
+ } %>
+ ) {
+ alert("Table with display name "+document.forma.displayName.value+" already exists.\nPlease select another name.");
+ document.forma.displayName.focus();
+ document.forma.displayName.select();
+
+ return false;
+ }
+
+ if(! checkNotJoined())
+ return false;
+
+ return true;
+} // dataValidate
+//-->
+</script>
+
+<%!
+ private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp
new file mode 100644
index 00000000..47fd435f
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp
@@ -0,0 +1,85 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableJoin" %>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+%>
+<table class="mTAB" width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=4 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="79%"><b class=rtableheader>Table</b></td>
+ <td align="center" valign="Middle" width="14%" colspan=2><input type="button" class=button border="0" value="Add" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD %>';document.forma.submit();"></td>
+ </tr>
+<% int iCount = 0;
+ for(Iterator iter=rdef.getDataSourceList().getDataSource().iterator(); iter.hasNext(); iCount++) {
+ DataSourceType dst = (DataSourceType) iter.next(); %>
+ <tr class=<%=(iCount % 2 == 0)?"rowalt1":"rowalt2"%>>
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %></font></td>
+ <td><font class=rtabletext><%= nvl(dst.getDisplayName()).length()>0?dst.getDisplayName():dst.getTableName()%></font></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>pen_paper.gif" alt="Edit" width="12" height="12" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_EDIT %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dst.getTableId() %>';"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove the <%= dst.getDisplayName() %> table\nalong with all its columns from the report?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= dst.getTableId() %>'; }"></td>
+ </tr>
+<% } %>
+<% if(iCount==0) { %>
+ <tr class=rbg3>
+ <td colspan=4 align="center" height="30"><font class=rtabletext>No tables defined</font></td>
+ </tr>
+<% } %>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+<% if(rdef.getDataSourceList().getDataSource().size()>0) { %>
+ return true;
+<% } else { %>
+ alert("You must have at least one table in the report.\nPlease add a table.");
+ return false;
+<% } %>
+} // dataValidate
+//-->
+</script>
+
+<%! private String nvl(String s) { return (s==null)?"":s; }
+ private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; }
+%>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp
new file mode 100644
index 00000000..b5c68045
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp
@@ -0,0 +1,184 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataColumnType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.AppConstants" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
+<%@ page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
+<%@ page import="org.openecomp.portalsdk.analytics.controller.WizardSequence" %>
+<%@ page import="java.util.Vector" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.DataCache" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.DataSourceType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.DBColumnInfo" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableSource" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.base.IdNameValue" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.xmlobj.FormFieldType" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.TableJoin" %>
+<%@ page import="org.openecomp.portalsdk.analytics.model.definition.SecurityEntry" %>
+<%@ page import="org.openecomp.portalsdk.analytics.util.Utils" %>
+
+<%
+ ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
+ WizardSequence ws = rdef.getWizardSequence();
+ String curSubStep = ws.getCurrentSubStep();
+%>
+<table width="100%" class="tableBorder" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=4 valign="Middle"><b class=rtableheader>Step <%= ws.getCurrentStepIndex() %> of <%= ws.getStepCount() %> - Report <%= ws.getCurrentStep() %></b></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" width="16%" height="30"><font class=rtabletext>Created By: </font></td>
+ <td class=rbg3 align="left" width="34%" valign="middle" nowrap><font class=rtabletext><%= AppUtils.getUserName(rdef.getCreateID()) %></font></td>
+ <td class=rbg2 align="right" width="16%"><font class=rtabletext>Created Date: </font></td>
+ <td class=rbg3 align="left" width="34%" valign="middle" nowrap><font class=rtabletext><%= rdef.getCreateDate() %></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Last Updated By: </font></td>
+ <td class=rbg3 align="left" valign="middle" nowrap><font class=rtabletext><%= AppUtils.getUserName(rdef.getUpdateID()) %></font></td>
+ <td class=rbg2 align="right"><font class=rtabletext>Last Updated: </font></td>
+ <td class=rbg3 align="left" valign="middle" nowrap><font class=rtabletext><%= rdef.getUpdateDate() %></font></td>
+ </tr>
+ <tr>
+ <td class=rbg2 align="right" height="30"><font class=rtabletext>Report Owner: </font></td>
+ <td class=rbg3 align="left"><font class=rtabletext>
+ <select name="reportOwner">
+<% Vector allUsers = Utils.getUsersNotInList(new java.util.ArrayList(),request);
+ for(int i=0; i<allUsers.size(); i++) {
+ IdNameValue user = (IdNameValue) allUsers.get(i); %>
+ <option value="<%= user.getId() %>"<%= user.getId().equals(rdef.getOwnerID())?" selected":"" %>><%= user.getName() %>
+<% } // for
+%>
+ </select></font>
+ </td>
+ <td class=rbg2 align="right"><font class=rtabletext>Public? (All users can run the report)</font></td>
+ <td class=rbg3 align="left">
+ <select name="public" >
+ <option value="Y"<%= rdef.isPublic()?" selected":"" %>>Yes
+ <option value="N"<%= rdef.isPublic()?"":" selected" %>>No
+ </select>
+ </td>
+ </tr>
+</table>
+<br>
+
+<table class="mTAB" width="100%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle"><b class=rtableheader>Report Users</b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="59%"><b class=rtableheader>User Name</b></td>
+ <td align="center" valign="Middle" width="10%"><b class=rtableheader>Run Access</b></td>
+ <td align="center" valign="Middle" width="10%"><b class=rtableheader>Edit Access</b></td>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Remove</b></td>
+ </tr>
+<% int iCount = 0;
+ Vector reportUsers = rdef.getReportUsers(request);
+ for(Iterator iter=reportUsers.iterator(); iter.hasNext(); iCount++) {
+ SecurityEntry rUser = (SecurityEntry) iter.next(); %>
+ <tr class="<%=((iCount % 2 == 0)?"rowalt1":"rowalt2")%>">
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %></font></td>
+ <td><font class=rtabletext><%= rUser.getName() %></font></td>
+ <td align="center" valign="Middle"><img src="<%= AppUtils.getImgFolderURL() %>active.gif" width="16" height="16" border="0"></td>
+ <td align="center" valign="Middle"><input type="image" src="<%= AppUtils.getImgFolderURL() %><%= rUser.isReadOnly()?"inactive.gif":"active.gif" %>" alt="<%= rUser.isReadOnly()?"Grant":"Revoke" %> edit access" width="16" height="16" border="0" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= rUser.isReadOnly()?AppConstants.WA_GRANT_USER:AppConstants.WA_REVOKE_USER %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= rUser.getId() %>';"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove user <%= rUser.getName() %>?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_USER %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= rUser.getId() %>'; }"></td>
+ </tr>
+<% } // for
+// if(iCount==0) { %>
+ <!--tr class=rbg2>
+ <td colspan=5 align="center" height="30"><font class=rtabletext>No user access defined</font></td>
+ </tr-->
+<% //}
+ Vector remainingUsers = Utils.getUsersNotInList(reportUsers,request);
+ if(remainingUsers.size()>0) { %>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle" nowrap><b class=rtableheader>Grant Access To&nbsp;
+ <select name="newUserId" onChange="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_USER %>'; document.forma.submit();">
+ <option value="" selected>--- Select User ---
+<% for(int i=0; i<remainingUsers.size(); i++) {
+ IdNameValue user = (IdNameValue) remainingUsers.get(i); %>
+ <option value="<%= user.getId() %>"><%= user.getName() %>
+<% } // for
+%>
+ </select></b>
+ </td>
+<% } // if
+%>
+ </tr>
+</table>
+<br>
+
+<table class="mTAB" width="100%" border="0" cellspacing="1" cellpadding="3" align=center>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle"><b class=rtableheader>Report Roles</b></td>
+ </tr>
+ <tr class=rbg1>
+ <td align="center" valign="Middle" width="7%" height="30"><b class=rtableheader>&nbsp;&nbsp;No&nbsp;&nbsp;</b></td>
+ <td align="center" valign="Middle" width="59%"><b class=rtableheader>Role Name</b></td>
+ <td align="center" valign="Middle" width="10%"><b class=rtableheader>Run Access</b></td>
+ <td align="center" valign="Middle" width="10%"><b class=rtableheader>Edit Access</b></td>
+ <td align="center" valign="Middle" width="14%"><b class=rtableheader>Remove</b></td>
+ </tr>
+<% iCount = 0;
+ Vector reportRoles = rdef.getReportRoles(request);
+ for(Iterator iter=reportRoles.iterator(); iter.hasNext(); iCount++) {
+ SecurityEntry rRole = (SecurityEntry) iter.next(); %>
+ <tr class="<%=((iCount % 2 == 0)?"rowalt1":"rowalt2")%>">
+ <td align="center" height="30"><font class=rtabletext><%= iCount+1 %></font></td>
+ <td><font class=rtabletext><%= rRole.getName() %></font></td>
+ <td align="center" valign="Middle"><img src="<%= AppUtils.getImgFolderURL() %>active.gif" width="16" height="16" border="0"></td>
+ <td align="center" valign="Middle"><input type="image" src="<%= AppUtils.getImgFolderURL() %><%= rRole.isReadOnly()?"inactive.gif":"active.gif" %>" alt="<%= rRole.isReadOnly()?"Grant":"Revoke" %> edit access" width="16" height="16" border="0" onClick="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= rRole.isReadOnly()?AppConstants.WA_GRANT_ROLE:AppConstants.WA_REVOKE_ROLE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= rRole.getId() %>';"></td>
+ <td align="center"><input type=image border="0" src="<%= AppUtils.getImgFolderURL() %>deleteicon.gif" alt="Remove" width="12" height="12" onClick="if(! confirm('Are you sure you want to remove role <%= rRole.getName() %>?')) {return false;} else {document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_DELETE_ROLE %>'; document.forma.<%= AppConstants.RI_DETAIL_ID %>.value='<%= rRole.getId() %>'; }"></td>
+ </tr>
+<% } // for
+// if(iCount==0) { %>
+ <!--tr class=rbg2>
+ <td colspan=5 align="center" height="30"><font class=rtabletext>No role access defined</font></td>
+ </tr-->
+<% //}
+ Vector remainingRoles = Utils.getRolesNotInList(reportRoles,request);
+ if(remainingRoles.size()>0) { %>
+ <tr>
+ <td class=rbg1 colspan=5 valign="Middle" nowrap><b class=rtableheader>Grant Access To&nbsp;
+ <select name="newRoleId" onChange="document.forma.<%= AppConstants.RI_WIZARD_ACTION %>.value='<%= AppConstants.WA_ADD_ROLE %>'; document.forma.submit();">
+ <option value="" selected>--- Select Role ---
+<% for(int i=0; i<remainingRoles.size(); i++) {
+ IdNameValue role = (IdNameValue) remainingRoles.get(i); %>
+ <option value="<%= role.getId() %>"><%= role.getName() %>
+<% } // for
+%>
+ </select></b>
+ </td>
+<% } // if
+%>
+ </tr>
+</table>
+<br>
+
+<script language="JavaScript">
+<!--
+function dataValidate() {
+ return true;
+} // dataValidate
+//-->
+</script>
+
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/error.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/error.jsp
new file mode 100644
index 00000000..2a48507c
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/error.jsp
@@ -0,0 +1,20 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+${errMsg}
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/leafletMap.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/leafletMap.jsp
new file mode 100644
index 00000000..e11070d1
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/leafletMap.jsp
@@ -0,0 +1,216 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<!DOCTYPE html>
+
+<html>
+<head>
+
+ <meta charset="UTF-8">
+
+ <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
+ <script src="app/fusion/external/leaflet-0.7.3/leaflet.js"></script>
+ <link rel="stylesheet" href="app/fusion/external/leaflet-0.7.3/leaflet.css" />
+
+ <style>
+ #map {
+ height: 450px;
+ width: 800px;
+ }
+ .animateOff {
+ color: red;
+ }
+ .animateOn {
+ color: green;
+ }
+ </style>
+<!--
+ <script src="static/fusion/gis/js/local.js"></script>
+ -->
+ <script>
+
+ var siteData = [
+
+ ];
+
+ var pipeData = [
+
+ ];
+ </script>
+
+
+</head>
+<body>
+ <div id="map"></div>
+ <button id="forwardButton" onclick="stepForward();">Step Forward</button>
+ <button id="playPause" onclick="playPause();">Play</button>
+ <div>
+ <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" key="id">Site</th>
+ <th att-table-header sortable="false" key="lastName">Usage</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" id="topTenSites">
+ </tbody>
+ </table>
+ <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" key="id">Link</th>
+ <th att-table-header sortable="false" key="lastName">Usage</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" id="topTenLinks">
+ </tbody>
+ </table>
+ </div>
+
+ <script>
+ var map = L.map('map').setView([40, -96], 4);
+ <!-- please add your map location -->
+ L.tileLayer('http://XXX/tiles-light/{z}/{x}/{y}.png', {maxZoom:18}).addTo(map);
+
+ var dataLayer = addDataLayers(map, null);
+
+ function addDataLayers(map, dataLayer) {
+ if (dataLayer!=null) {
+ map.removeLayer(dataLayer);
+ }
+
+ dataLayer = L.layerGroup();
+
+ var siteInfo = [];
+
+ var pipeLayer = L.layerGroup();
+ for (var i=0; i<pipeData.length; i++) {
+ var pipe = pipeData[i];
+
+ var usage = pipe.usage;
+ if (!usage || Math.random()<0.05) {
+ //console.log("Rerolling " + pipe.name);
+ usage = Math.floor(Math.random()*33 + Math.random()*33 + Math.random()*34);
+ } else {
+ //console.log("Adjusting " + pipe.name);
+ usage = Math.floor(usage + Math.random()*15 - Math.random()*15);
+ }
+ if (usage<0) usage = 0;
+ while (usage>100) usage -= Math.floor(20*Math.random());
+ if (usage>90) usage -= Math.floor(20*Math.random());
+
+ pipe.usage = usage;
+
+ var color = "black";
+ if (usage>60) color = "yellow";
+ if (usage>70) color = "orange";
+ if (usage>80) color = "red";
+ pipeLayer.addLayer(L.polyline([[pipe.lat_a, pipe.lon_a], [pipe.lat_z, pipe.lon_z]], {"color": color, "title": pipe.name}).bindPopup(pipe.name + "<br/>" + pipe.title + "<br/>" + usage + "% usage"));
+
+ var siteA = siteInfo[pipe.id_a];
+ if (siteA) {
+ siteA.usage += usage;
+ siteA.maxUsage += 100;
+ //console.log("Site a id = " + pipe.id_a + ", object existed = " + siteA + ", usage = " + siteA.usage + ", max = " + siteA.maxUsage);
+ } else {
+ siteA = {};
+ siteA.usage = usage;
+ siteA.maxUsage = 100;
+ siteInfo[pipe.id_a] = siteA;
+ //console.log("Site a id = " + pipe.id_a + ", object is new = " + siteA + ", usage = " + siteA.usage + ", max = " + siteA.maxUsage);
+ }
+
+ var siteZ = siteInfo[pipe.id_z];
+ if (siteZ) {
+ siteZ.usage += usage;
+ siteZ.maxUsage += 100;
+ //console.log("Site z id = " + pipe.id_z + ", object existed = " + siteZ + ", usage = " + siteZ.usage + ", max = " + siteZ.maxUsage);
+ } else {
+ siteZ = {};
+ siteZ.usage = usage;
+ siteZ.maxUsage = 100;
+ siteInfo[pipe.id_z] = siteZ;
+ //console.log("Site z id = " + pipe.id_z + ", object is new = " + siteZ + ", usage = " + siteZ.usage + ", max = " + siteZ.maxUsage);
+ }
+ }
+ dataLayer.addLayer(pipeLayer);
+
+ var dataCenterLayer = L.layerGroup();
+ for (var i=0; i<siteData.length; i++) {
+ var site = siteData[i];
+// {"id": "slkut", "name": "Salt Lake City, UT", "title": "250G", "lat": 40.75, "lon": -111.88},
+ var info = siteInfo[site.id];
+ var color = "black";
+ if (info.usage/info.maxUsage>.6) color = "yellow";
+ if (info.usage/info.maxUsage>.7) color = "orange";
+ if (info.usage/info.maxUsage>.8) color = "red";
+ var pct = Math.floor(100*info.usage/info.maxUsage);
+ site.usage = pct;
+// dataCenterLayer.addLayer(L.marker([site.lat, site.lon], {"title": site.name}).bindPopup(site.name + "<br/>" + pipe.title + "<br/>" + info.usage + "/" + info.maxUsage));
+ dataCenterLayer.addLayer(L.circleMarker([site.lat, site.lon], {"color": color, "title": site.name, "fillOpacity": .5}).bindPopup(site.name + "<br/>" + pipe.title + "<br/>" + pct + "%"));
+ }
+ dataLayer.addLayer(dataCenterLayer);
+
+ dataLayer.addTo(map);
+
+ siteData.sort(function(a,b){return b.usage-a.usage});
+ var topTenHtml = "";
+ for (var i=0; i<10; i++) {
+ topTenHtml = topTenHtml + "<tr><td att-table-body>" + siteData[i].name + "</td><td att-table-body>" + siteData[i].usage + "%</td></tr>";
+ }
+ document.getElementById("topTenSites").innerHTML = topTenHtml;
+
+ pipeData.sort(function(a,b){return b.usage-a.usage});
+ topTenHtml = "";
+ for (var i=0; i<10; i++) {
+ topTenHtml = topTenHtml + "<tr><td att-table-body>" + pipeData[i].name + "</td><td att-table-body>" + pipeData[i].usage + "%</td></tr>";
+ }
+ document.getElementById("topTenLinks").innerHTML = topTenHtml;
+
+ return dataLayer;
+ }
+
+ function stepForward() {
+ dataLayer = addDataLayers(map, dataLayer);
+ }
+
+ var intervalObj = null;
+ function playPause() {
+ if (intervalObj==null) {
+ document.getElementById('playPause').innerHTML = "Pause";
+ document.getElementById('forwardButton').disabled = true;
+ intervalObj = window.setInterval(function(){dataLayer = addDataLayers(map, dataLayer);},1500);
+ } else {
+ document.getElementById('playPause').innerHTML = "Play";
+ document.getElementById('forwardButton').disabled = false;
+ clearInterval(intervalObj);
+ intervalObj = null;
+ }
+ }
+
+ function onMapClick(e) {
+ //alert("You clicked the map at " + e.latlng);
+ dataLayer = addDataLayers(map, dataLayer);
+ }
+
+ map.on('click', onMapClick);
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/login_external_ng.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/login_external_ng.jsp
new file mode 100644
index 00000000..cb6def1e
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/login_external_ng.jsp
@@ -0,0 +1,79 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties" %>
+<c:set var="title" value="Login" />
+<c:set var="isMobileEnabled"
+ value="<%=(SystemProperties.getProperty(SystemProperties.MOBILE_ENABLE)!= null && SystemProperties.getProperty(SystemProperties.MOBILE_ENABLE).trim().equals(\"true\"))%>" />
+
+<!DOCTYPE html>
+<html ng-app="abs">
+ <head>
+
+ <title>
+ Login
+ </title>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+ <style>
+ .terms {
+ font-family: Verdana,Arial,Helvetica, sans-serif;
+ font-size: 9px;
+ }
+ </style>
+ </head>
+ <body style="padding-top: 15px;">
+ <form action="login_external" method="post">
+ <div style="position: fixed; left:15px; top:15px;z-index:-1;">
+ </div>
+ <div class="centered style="-webkit-transform: translateZ(0);background:white, z-index:0;">
+ <br/>
+ <div align="center" style="margin-left:auto;margin-right:auto;width:40%;padding:6px;opacity:0.7;background-color:white">
+ <img src="static/fusion/images/ecomp_trans.png"/>
+ <h2> ECOMP Portal </h2>
+ <div align="center" id="errorInfo" style="align:center;font-size:14px;margin-left:5px"><span style="color:red">${model.error}</span></div>
+ <br>
+ <label>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<label class="form-field__label">Login ID:</label>
+ </label>
+ <input type="text" class="fn-ebz-text" name="loginId" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;"
+ maxlength="30" />
+ <br/>
+ <br/>
+ <label >&nbsp;Password:</label>
+ <input type="password" class="span3" name="password" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;"
+ maxlength="30" onkeydown="if (event.keyCode == 13) document.getElementById('loginBtn').click()"/>
+ <br />
+ <br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <input id="loginBtn" type="submit" type="image" src="static/fusion/images/login_button.gif" alt="Login" />
+ <br>
+ </div>
+ </div>
+ <br/><br/><br/><br/><br/><br/><br/>
+ <div id="footer">
+ </div>
+ </form>
+ </body>
+</html> \ No newline at end of file
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/net_map.jsp b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/net_map.jsp
new file mode 100644
index 00000000..2a341467
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/jsp/net_map.jsp
@@ -0,0 +1,38 @@
+<%--
+ ================================================================================
+ eCOMP Portal SDK
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ================================================================================
+ --%>
+<!DOCTYPE html>
+<html>
+<head>
+ <link rel="import" href="app/fusion/elementmap/element-map-import.html">
+</head>
+
+<body>
+
+
+<div data-ng-app="elementMapModule">
+ <element-map contentfilename='NetworkMap_topology_composition' layoutfilename='network_map_layout' callflowfilename='call_flow_sip_digest' callflowstep='Step_1'></element-map>
+</div>
+
+<input type="hidden" name="inner_width" value="1500px">
+<input type="hidden" name="inner_height" value="800px">
+
+</body>
+
+</html>
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/web.xml b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 00000000..3f84f06a
--- /dev/null
+++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+ version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
+
+ <!-- This is a stub web.xml in the common area -->
+ <display-name>ecomp-sdk-app-common</display-name>
+
+</web-app>