summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk-app/src/main/webapp/WEB-INF
diff options
context:
space:
mode:
authorPamela Dragosh <pdragosh@research.att.com>2017-02-14 19:41:00 -0500
committerPamela Dragosh <pdragosh@research.att.com>2017-02-14 19:41:32 -0500
commit91d04c64771832a0b8815ffbe1f0f9920320d94d (patch)
treefb02d5e1c84a3d91def9a7ee95bc87f9c046cc96 /ecomp-sdk-app/src/main/webapp/WEB-INF
parentb9d4caa40ef8e3566ac475968bce17b9b64b6939 (diff)
Initial OpenECOMP policy/engine commit
Change-Id: I7dbff37733b661643dd4d1caefa3d7dccc361b6e Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'ecomp-sdk-app/src/main/webapp/WEB-INF')
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/quartz.properties30
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor.properties187
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties39
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties19
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_pdf.properties49
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/sql.properties322
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/conf/system.properties105
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/defs/definitions.xml22
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/conf/fusion.properties61
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/defs/definitions.xml240
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/.gitignore0
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp137
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp201
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/collaborateList.jsp146
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp20
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp46
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp799
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html120
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp45
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp35
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp48
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp97
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp97
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp44
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/include.jsp30
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/jcs_admin.jsp144
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp36
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html324
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html274
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html87
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/post_search.jsp356
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile.jsp442
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile_search.jsp104
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role.jsp286
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_function_list.jsp213
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_list.jsp139
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/usage_list.jsp87
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp492
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml352
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml44
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml48
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp135
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp31
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp38
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp39
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp39
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp38
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp58
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp229
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp25
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp601
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp80
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp419
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp55
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp171
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp103
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp89
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp40
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp64
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp179
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp69
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp40
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp2432
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp309
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp39
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp38
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp483
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp248
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp733
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp1335
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp96
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp1127
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp157
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp88
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp184
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp1122
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp320
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp115
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp771
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp107
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp167
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp109
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp424
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp74
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp376
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp754
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp157
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp172
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp173
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp86
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp116
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp112
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp226
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp369
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp85
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp184
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/error.jsp20
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/leafletMap.jsp288
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/login_external.jsp154
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/net_map.jsp38
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/user_profile.jsp84
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/welcome.jsp629
-rw-r--r--ecomp-sdk-app/src/main/webapp/WEB-INF/web.xml24
103 files changed, 23434 insertions, 0 deletions
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/quartz.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/quartz.properties
new file mode 100644
index 000000000..23340ddc1
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/quartz.properties
@@ -0,0 +1,30 @@
+#################################################################################
+# 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-app/src/main/webapp/WEB-INF/conf/raptor.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor.properties
new file mode 100644
index 000000000..68b1f707e
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor.properties
@@ -0,0 +1,187 @@
+###
+# ================================================================================
+# 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.
+# ================================================================================
+###
+##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/sundar/test.sh
+#download_query_folder=/titan/PROJECT3/RAPTOR/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=TODO footer first line
+footer_second_line=Use Pursuant to Company Instructions
+## 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, au.first_name||' '||au.last_name name FROM app_user au where user_id = 1 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=ABQIAAAAToJSSetKBMjBJx8MiRw4ghQiU0SbbKnm8C5eu25cpyLwgkLzyRShrQTbgZtqnKAqZU9JwcSq1bKwiA
+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
+#db_type=oracle
+db_type=mysql
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
new file mode 100644
index 000000000..ce9d57c37
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
@@ -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.
+# ================================================================================
+###
+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
+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-app/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
new file mode 100644
index 000000000..8b9870686
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
@@ -0,0 +1,19 @@
+###
+# ================================================================================
+# 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.
+# ================================================================================
+###
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_pdf.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
new file mode 100644
index 000000000..d98a47cd6
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
@@ -0,0 +1,49 @@
+###
+# ================================================================================
+# 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.
+# ================================================================================
+###
+## 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_att_proprietary=Proprietary\nUse Pursuant to Company Instructions
+pdf_att_proprierary_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-app/src/main/webapp/WEB-INF/conf/sql.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/sql.properties
new file mode 100644
index 000000000..671690237
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/sql.properties
@@ -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.
+# ================================================================================
+###
+#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 = 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.getOracleTimeFormat()]'), 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.getOracleTimeFormat()]'), [rw.getUpdateID()], STR_TO_DATE('[rw.getUpdateDate()]', '[Globals.getOracleTimeFormat()]'), '[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.getOracleTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getOracleTimeFormat()]') 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(ORG_USER_ID, '') CUID, '' AWID, CONCAT('"',IFNULL(ORG_USER_ID, ''),'"') 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 ORG_USER_ID 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(ORG_USER_ID, '') CUID, '' AWID, CONCAT('"' , IFNULL(ORG_USER_ID, '') , '"') 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.ORG_USER_ID 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(ORG_USER_ID, '') CUID, (case when A.ACTIVE_YN\='Y' then 'ACTIVE' else 'INACTIVE' end) ACTIVE_YN, CONCAT('"' , IFNULL(ORG_USER_ID, '') , '"') 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.ORG_USER_ID 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-app/src/main/webapp/WEB-INF/conf/system.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/system.properties
new file mode 100644
index 000000000..af7425ebe
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/conf/system.properties
@@ -0,0 +1,105 @@
+###
+# ================================================================================
+# 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.
+# ================================================================================
+###
+# Properties read by ECOMP Core library, ecompSDK-core.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+application_user_id = 30000
+post_default_role_id = 16
+clustered = true
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable = false
+
+# Cache config file is needed on the classpath
+cache_config_file_path = /WEB-INF/classes/cache.ccf
+cache_switch = 199
+cache_load_on_startup = false
+
+user_name = fullName
+decryption_key = AGLDdG4D04BKm2IxIWEr8o==
+
+##########################################################################
+# The following properties MAY require changes by partner applications.
+##########################################################################
+
+#Oracle
+#db.userName=quantumbd
+#db.password=c1syn2yhmr
+#db.connectionURL=jdbc:oracle:thin:todo.link
+#db.hib.dialect=org.hibernate.dialect.Oracle10gDialect
+#db.driver=oracle.jdbc.driver.OracleDriver
+#Hibernate
+#hb.dialect=org.hibernate.dialect.Oracle10gDialect
+#hb.show_sql=true
+
+#Postgres
+#db.userName=quantumbd
+#db.password=c1syn2yhmr
+#db.connectionURL=jdbc:postgresql:todo.link
+#db.hib.dialect=org.hibernate.dialect.PostgreSQLDialect
+#db.driver=org.postgresql.Driver
+#hb.dialect=org.hibernate.dialect.PostgreSQLDialect
+#hb.show_sql=true
+
+#Mysql
+db.driver = com.mysql.jdbc.Driver
+db.connectionURL = jdbc:mysql://localhost:3306/ecomp_sdk
+db.userName = root
+db.password =
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+# SQL statements are logged to stdout
+hb.show_sql = false
+hb.idle_connection_test_period = 3600
+
+app_display_name = EP SDK App
+files_path = /tmp
+
+#element map files
+element_map_file_path = /tmp
+element_map_icon_path = app/fusionapp/icons/
+
+#Cron Schedules
+log_cron = 0 0/1 * * * ?;
+mylogins_feed_cron = 0 0/60 * * * ?;
+#sessiontimeout_feed_cron = 0 * * * * ? *
+my_login_feed_output_dir = /tmp/MyLogins
+
+# ECOMP Portal Shared Context REST API URL
+ecomp_shared_context_rest_url= http://todo_enter_be_hostname:9000/ecompportal/context
+# Link shown in Help menu
+contact_us_link = https://todo_contact_us_link.com
+
+# An Unique 128-bit value defined to identify a specific version
+# of an application deployed on a specific virtual machine.
+# This value must be generated and updated by the application
+# which is using the ECOMP SDK at the time of its deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+instance_uuid=8da691c9-987d-43ed-a358-00ac2f35685d
+
+# R Cloud feature - configure this property to enable notebook feature - for more details on RCloud please visit https://rcloud.social/index.html
+guard_notebook_url=
+
+#authenticate user server
+authenticate_user_server=http://todo_enter_auth_server_hostname:8383/openid-connect-server-webapp/allUsers
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/defs/definitions.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/defs/definitions.xml
new file mode 100644
index 000000000..74287d0e8
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/defs/definitions.xml
@@ -0,0 +1,22 @@
+<?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 defs/definitions.xml. It maps
+ tokens used by example SDK-app controllers to JSP file paths.
+ Applications that use JSP pages should modify this file. -->
+
+<tiles-definitions>
+
+ <definition extends="ebz_template" name="leafletMap">
+ <put-attribute name="body" value="/WEB-INF/jsp/leafletMap.jsp"></put-attribute>
+ </definition>
+
+ <definition name="drools"
+ template="/app/fusionapp/drools/view-models/droolsSinglePage.html" />
+
+ <definition name="single_page_sample"
+ template="/app/fusionapp/scripts/view-models/singlePageSample.html" />
+ <definition name="policy_Editor" template="/app/policyApp/main/policy_Editor.html"/>
+</tiles-definitions>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/conf/fusion.properties b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
new file mode 100644
index 000000000..b2cef9f89
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
@@ -0,0 +1,61 @@
+###
+# ================================================================================
+# 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.
+# ================================================================================
+###
+
+
+# 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
+
+# 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-app/src/main/webapp/WEB-INF/fusion/defs/definitions.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/defs/definitions.xml
new file mode 100644
index 000000000..fb18cb798
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/defs/definitions.xml
@@ -0,0 +1,240 @@
+<?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="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="user_profile">
+ <put-attribute name="body" value="/WEB-INF/jsp/user_profile.jsp"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="profile_search">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/profile_search.jsp"></put-attribute>
+ <put-attribute name="viewName" value="profile_search"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="profile">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/profile.jsp"></put-attribute>
+ <put-attribute name="viewName" value="profile"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="menu">
+ <put-attribute name="body" value="/WEB-INF/jsp/menu.jsp"></put-attribute>
+ <put-attribute name="viewName" value="menu"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="welcome">
+ <put-attribute name="body" value="/WEB-INF/jsp/welcome.jsp"></put-attribute>
+ <put-attribute name="viewName" value="welcome"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="role_list">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/role_list.jsp"></put-attribute>
+ <put-attribute name="viewName" value="role_list"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="role">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/role.jsp"></put-attribute>
+ <put-attribute name="viewName" value="role"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="role_function_list">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/role_function_list.jsp"></put-attribute>
+ <put-attribute name="viewName" value="role_function_list"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="post_search">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/post_search.jsp"></put-attribute>
+ <put-attribute name="viewName" value="post_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 extends="ebz_template" name="collaborate_list">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/collaborateList.jsp"></put-attribute>
+ </definition>
+
+ <!-- <definition extends="ebz_template" name="notebook">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/notebook.jsp"></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 extends="ebz_template" name="jcs_admin">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/jcs_admin.jsp"></put-attribute>
+ <put-attribute name="viewName" value="jcs_admin"></put-attribute>
+ </definition>
+
+ <definition extends="ebz_template" name="usage_list">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/usage_list.jsp"></put-attribute>
+ <put-attribute name="viewName" value="usage_list"></put-attribute>
+ </definition>
+
+ <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 extends="ebz_template_noheader_nofooter" name="collaboration">
+ <put-attribute name="body" value="/WEB-INF/fusion/jsp/webrtc/collaboration.jsp"></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="admin"
+ template="/app/fusion/scripts/view-models/admin-page/admin.html" />
+ <definition name="workflows"
+ template="/app/fusion/scripts/view-models/workflows/workflow-landing.html" />
+
+ <definition extends="ebz_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="ebz_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 extends="ebz_template" name="report">
+ <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 extends="ebz_template" name="frame_insert">
+ <put-attribute name="body"
+ value="/WEB-INF/fusion/jsp/frame_insert.jsp"></put-attribute>
+ </definition>
+
+ <!-- <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-app/src/main/webapp/WEB-INF/fusion/jsp/.gitignore b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/.gitignore
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/.gitignore
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp
new file mode 100644
index 000000000..d4e7810c1
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp
new file mode 100644
index 000000000..2f6c68b51
--- /dev/null
+++ b/ecomp-sdk-app/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="ion-trash-b"></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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/collaborateList.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/collaborateList.jsp
new file mode 100644
index 000000000..b1fbfab14
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/collaborateList.jsp
@@ -0,0 +1,146 @@
+<%--
+ ================================================================================
+ 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.
+ ================================================================================
+ --%>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<div>
+<a href="JavaScript:void(0);" style= "color:#00547A" onClick="downloadScreenCaptureExtenstion()" id="install-button">
+ Please download the extension for ScreenCapture and refresh page</a>
+ </div>
+<div ng-controller="collaborateListController" id="collaborate_ctrl">
+ <div>
+ <h1 class="heading1" style="margin-top:20px;">User List</h1>
+ <div style="margin-top:30px">
+ <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 key="id">User ID</th>
+ <th att-table-header key="lastName">Last Name</th>
+ <th att-table-header key="firstName">First Name</th>
+ <th att-table-header key="email">Email</th>
+ <th att-table-header key="orgUserId">UserId</th>
+ <th att-table-header key="online" default-sort="d">Online/Offline</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="rowData in tableData">
+ <tr>
+ <td att-table-body ng-bind="rowData['id']"></td>
+ <td att-table-body ng-bind="rowData['lastName']"></td>
+ <td att-table-body ng-bind="rowData['firstName']"></td>
+ <td att-table-body ng-bind="rowData['email']"></td>
+ <td att-table-body ng-bind="rowData['orgUserId']"></td>
+ <td att-table-body >
+ <tag-badges ng-hide="rowData.online" style-type="color" class="lred" ng-click="rowData.isActive=true;openCollaboration(rowData.chatId)">Offline</tag-badges>
+ <tag-badges ng-show="rowData.online" style-type="color" class="lgreen" ng-click="rowData.isActive=false;openCollaboration(rowData.chatId)">Online</tag-badges>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="fn-ebz-container">
+ Rows Per Page:
+ <input class="fn-ebz-text" type="text" ng-model="viewPerPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Current Page:
+ <input class="fn-ebz-text" type="text" ng-model="currentPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Total Page(s):
+ <input class="fn-ebz-text" type="text" ng-model="totalPage" size="5" readonly="true" style="width: 47px;">
+ </div>
+
+
+</div>
+
+
+<!-- handling websocket peer broadcast session -->
+ <script type="text/javascript" src="app/fusion/scripts/socket/peerBroadcast.js"></script>
+ <script type="text/javascript" src="app/fusion/external/utils/js/browserCheck.js"></script>
+ <script>
+
+ var initialPageVisit = "${sessionScope.initialPageVisit}";
+ var userId = "${sessionScope.user.orgUserId}";
+ socketSetup(initialPageVisit, userId, null, "socketSend");
+
+
+ </script>
+
+<script>
+var popupModalService;
+app.controller("collaborateListController", function ($scope,$http,modalService, $modal) {
+ // Table Data
+ $scope.tableData=${model.profileList};
+ $scope.viewPerPage = 20;
+ $scope.scrollViewsPerPage = 2;
+ $scope.currentPage = 1;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ popupModalService = modalService;
+ setPopupService(modalService);
+ /* modalService.showSuccess('','Modal Sample') ; */
+ for(x in $scope.tableData){
+ if($scope.tableData[x].active_yn=='Y')
+ $scope.tableData[x].active_yn=true;
+ else
+ $scope.tableData[x].active_yn=false;
+ }
+ $scope.openCollaboration = function(chatId){
+ openInNewTab('collaboration?chat_id=' + chatId);
+
+ }
+
+ $scope.toggleProfileActive = function(profileId) {
+ if (confirm("You are about to change user's active status. Do you want to continue?")) {
+ $http.get("profile/toggleProfileActive?profile_id="+profileId).success(function(){});
+ }
+ };
+
+});
+
+function openInNewTab(url) {
+
+ //popupModalService.popupConfirmWin("Confirm","");
+ var win = window.open(url, '_blank');
+ win.popupService = popupModalService;
+ win.focus();
+};
+
+function downloadScreenCaptureExtenstion() {
+
+ var chromeURL = 'https://chrome.google.com/webstore/detail/icgmlogfeajbfdffajhoebcfbibfhaen';
+ var firefoxURL = 'https://addons.mozilla.org/en-US/firefox/addon/screen-capturing-capability';
+ var url;
+
+ if(isChrome)
+ url = chromeURL;
+ else if(isFirefox)
+ url = firefoxURL;
+
+ var win = window.open(url);
+ win.focus();
+};
+
+</script>
+
+
+
+ <div id="peerBroadcastSection"> </div>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp
new file mode 100644
index 000000000..f3fb7a747
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp
new file mode 100644
index 000000000..5a33314f2
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp
@@ -0,0 +1,46 @@
+<%--
+ ================================================================================
+ 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" %>
+<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="footerItem">
+
+ </div>
+ <div class="attFooterInfo">
+ <div class="footerLastSection">
+ <div id="attFooterLogo" class="attLogo" tabindex='0'></div>
+
+ <br>
+ <div class="privacyPolicy">
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp
new file mode 100644
index 000000000..285ffd76f
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp
@@ -0,0 +1,799 @@
+<%--
+ ================================================================================
+ 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.crossapi.PortalApiProperties"%>
+<%@ page import="org.openecomp.portalsdk.core.onboarding.crossapi.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" >
+
+<!-- Icons -->
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ionicons-2.0.1/css/ionicons.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('/')) + "/processSingleSignOn";
+ 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()">
+
+<!-- <a id='returnPortal' class="primaryMenuOptionLink" style="font-weight: 400 !important; font-family: Arial !important; font-size: 18px;">ECOMP</a>
+ --> <strong style="font-weight: 400 !important; font-family: 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: 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: 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="ion-android-person login-snippet-icon" style="display:inline-block"></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 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="ion-navicon-round"></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;
+ 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 respsone is not an object/is empty";
+ }
+ }catch (e) {
+ console.log("error happened while trying to get app name "+e);
+ return;
+ }
+ },function(error){
+ console.log("error happened while calling getAppName "+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);
+
+ });
+ }
+
+ $scope.createFavoriteErrorMenu=function() {
+ $scope.favoritesMenuItems = [
+
+ ];
+ $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": 90,
+ "column": 1,
+ "text": "Google",
+ "parentMenuId": 1,
+ "url": "http://google.com"
+ },
+ {
+ "menuId": 91,
+ "column": 1,
+ "text": "Mike Little's Coffee Cup",
+ "parentMenuId": 2,
+ "url": "http://coffee.com"
+ },
+ {
+ "menuId": 92,
+ "column": 2,
+ "text": "Andy and his Astrophotgraphy",
+ "parentMenuId": 3,
+ "url": "http://nightskypix.com"
+ },
+ {
+ "menuId": 93,
+ "column": 1,
+ "text": "JSONLint",
+ "parentMenuId": 4,
+ "url": "http://jsonlint.com"
+ },
+ {
+ "menuId": 94,
+ "column": 2,
+ "text": "HROneStop",
+ "parentMenuId": 4,
+ "url": ""
+ },
+ {
+ "menuId": 95,
+ "column": 2,
+ "text": "4th Level App4a R16",
+ "parentMenuId": 4,
+ "url": ""
+ },
+ {
+ "menuId": 96,
+ "column": 3,
+ "text": "3rd Level App1c R200",
+ "parentMenuId": 4,
+ "url": "http://app1c.com"
+ },
+ {
+ "menuId": 97,
+ "column": 1,
+ "text": "3rd Level App4b R16",
+ "parentMenuId": 5,
+ "url": "http://app4b.com"
+ },
+ {
+ "menuId": 98,
+ "column": 2,
+ "text": "3rd Level App2b R16",
+ "parentMenuId": 5,
+ "url": "http://app2b.com"
+ },
+ {
+ "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("error while getting left menu");
+ }
+
+ 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 = "210px";
+ } else {
+ $scope.arrowShow = false;
+ if (document.getElementById('mContent')!=null)
+ document.getElementById('mContent').style.marginLeft = "50px";
+ }
+ };
+ //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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html
new file mode 100644
index 000000000..0f29ee776
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html
@@ -0,0 +1,120 @@
+<!--
+ ================================================================================
+ 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 class="att-global-fonts" 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">User ID<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_attregular;line-height: 26px;color: #444444;text-align: center;">
+ <span>Live Chat</span>
+ </div>
+ <div style="line-height:15px; padding-left:20px; padding-right:20px;">
+ Chat is currently unavailable.<br><br>
+
+ </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;
+ if (typeof(userInfo.USER_ORGUSERID) != "undefined" && userInfo.USER_ORGUSERID!=null && userInfo.USER_ORGUSERID!='')
+ $scope.userProfile.orgUserId = userInfo.USER_ORGUSERID;
+ }
+ }
+ /*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.orgUserId = response.orgUserId;
+ $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('Getting User information from session');
+ $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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp
new file mode 100644
index 000000000..59b61d198
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp
new file mode 100644
index 000000000..98dccb4c0
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp
new file mode 100644
index 000000000..4281a0636
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp
new file mode 100644
index 000000000..9dc2102f9
--- /dev/null
+++ b/ecomp-sdk-app/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="ion-ios-search-strong">&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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp
new file mode 100644
index 000000000..95b5e7cff
--- /dev/null
+++ b/ecomp-sdk-app/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="ion-ios-search-strong">&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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp
new file mode 100644
index 000000000..5f550c683
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/include.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/include.jsp
new file mode 100644
index 000000000..cd6a5e09e
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/jsp/jcs_admin.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/jcs_admin.jsp
new file mode 100644
index 000000000..845beac2f
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/jcs_admin.jsp
@@ -0,0 +1,144 @@
+<%--
+ ================================================================================
+ 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.
+ ================================================================================
+ --%>
+<%-- <%@ 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" %>
+
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+
+<div align="left" ng-controller="cacheAdminController">
+ <div class="pageTitle"><h3>Cache Regions</h3></div>
+ These are the regions which are currently defined in the cache. 'Items' and 'Bytes' refer to the elements currently in memory (not spooled).
+ You can clear all items for a region by clicking on the Clear icon next to the desired region below. You can also <a href="#" ng-click="clearAll();">clear all regions</a> which
+ empties the entire cache. <br /><br />
+
+ <div style="width: 97%; border-top: 1px solid #c4c4c4; margin-top: 0px; background-color: #fff; padding: 10px 0; color: #646464s">
+ <div style="margin: 0 20px 10px 0px; font-size: 80%; float: left; width: 97%;">
+ <div class="col-md-4"><b>Cache Name</b></div>
+ <div class="col-md-2"><b># of Items</b></div>
+ <div class="col-md-2"><b>Bytes</b></div>
+ <div class="col-md-2"><b>Status</b></div>
+ <div class="col-md-3"><b>Memory Hits</b></div>
+ <div class="col-md-3"><b>Aux Hits</b></div>
+ <div class="col-md-3"><b>Not Found Misses</b></div>
+ <div class="col-md-3"><b>Expired Misses</b></div>
+ <div class="col-md-1"><b>Clear?</b></div>
+ <div class="col-md-1"><b>Items</b></div>
+ </div>
+ <div ng-repeat="region in regions">
+ <div style="margin: 0 20px 10px 0px; font-size: 80%; float: left; width: 97%;">
+ <div class="col-md-4"><a href="#" tooltip="Click to Show Region Details" ng-click="showRegionDetails(region.cacheName);">{{region.cacheName}}</a></div>
+ <div class="col-md-2">{{region.size}}</div>
+ <div class="col-md-2">{{region.byteCount}}</div>
+ <div class="col-md-2">{{region.status}}</div>
+ <div class="col-md-3">{{region.hitCountRam}}</div>
+ <div class="col-md-3">{{region.hitCountAux}}</div>
+ <div class="col-md-3">{{region.missCountNotFound}}</div>
+ <div class="col-md-3">{{region.missCountExpired}}</div>
+ <div class="col-md-1">
+ <div ng-click="clearRegion(region.cacheName);" style="font-size:20px;"><a href="javascript:void(0)" class="ion-trash-b"></a></div>
+ </div>
+ <div class="col-md-1"><span class="att--tree__plus col-md-1" ng-class="{minus: bling$index}" ng-click="bling$index = !bling$index" style="display: block;"></span></div>
+ </div>
+ <div style="margin: 0px 20px 0px 30px; font-size: 80%; float: left; width: 95%; border-top: 1px solid #e4e4e4; padding-top: 10px"
+ ng-show="bling$index">
+ <span class="att--tree__arrow" style="height: 20px; width: 20px; display: inline-block; float: left"></span>
+ <div class="col-md-12"><b>Key</b></div>
+ <div class="col-md-2"><b>Eternal?</b></div>
+ <div class="col-md-4"><b>Created</b></div>
+ <div class="col-md-2"><b>Max Life</b></div>
+ <div class="col-md-2"><b>Expires</b></div>
+ <div class="col-md-1"><b>Clear?</b></div>
+ </div>
+ <div ng-repeat="item in region.items">
+ <div style="margin: 0px 20px 0px 30px; font-size: 80%; float: left; width: 95%;" ng-show="bling$index">
+ <span class="att--tree__arrow" style="height: 20px; width: 20px; display: inline-block; float: left"></span>
+ <div class="col-md-12"><a href="#" tooltip="Click to Show Item Details" ng-click="showItemDetails(region.cacheName,item.key);">{{item.key}}</a></div>
+ <div class="col-md-2">{{item.eternal}}</div>
+ <div class="col-md-4">{{item.createTime}}</div>
+ <div class="col-md-2">{{item.maxLifeSeconds}}</div>
+ <div class="col-md-2">{{item.expiresInSeconds}}</div>
+ <div class="col-md-1">
+ <div ng-click="clearItem(region.cacheName,item.key);" style="font-size:20px;"><a href="javascript:void(0)" class="ion-trash-b"></a></div>
+ </div>
+ </div>
+ </div>
+ <div style="clear: both"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+app.controller('cacheAdminController', function ($scope,$interval,$http,$modal,modalService){
+ $scope.regions=${model};
+
+ $scope.clearAll = function() {
+ modalService.popupConfirmWin("Confirm",'You are about to clear all of the items for all cache regions. Do you want to continue?',
+ function(){
+ $http.get("jcs_admin/clearAll").success(function(response){$scope.regions=response;});
+
+ })
+ };
+
+ $scope.clearRegion = function(cacheName) {
+ modalService.popupConfirmWin("Confirm",'You are about to clear all of the items in the cache region "' + cacheName + '". Do you want to continue?',
+ function(){
+ $http.get("jcs_admin/clearRegion?cacheName="+cacheName).success(function(response){$scope.regions=response;});
+
+ })
+ };
+
+ $scope.clearItem = function(cacheName,key) {
+ modalService.popupConfirmWin("Confirm",'You are about to clear this item from the cache region "' + cacheName + '". Do you want to continue?',
+ function(){
+ $http.get("jcs_admin/clearItem?keyName="+key+"&cacheName="+cacheName).success(function(response){$scope.regions=response;});
+
+ })
+ };
+
+ $scope.showRegionDetails = function(cacheName) {
+ $http.get("jcs_admin/showRegionDetails?cacheName="+cacheName).success(function(response){modalService.showSuccess('',response);});
+ };
+
+ $scope.showItemDetails = function(cacheName,key) {
+ $http.get("jcs_admin/showItemDetails?keyName="+key+"&cacheName="+cacheName).success(function(response){
+ var message = "CacheName: "+ response.cacheName
+ +"\nkey: "+response.key
+ +"\nIS_SPOOL: "+response.attr.IS_SPOOL
+ +"\nIS_LATERAL: "+response.attr.IS_LATERAL
+ +"\nIS_REMOTE: "+response.attr.IS_REMOTE
+ +"\nIS_ETERNAL: "+response.attr.IS_ETERNAL
+ +"\nversion: "+response.attr.version
+ +"\nmaxLifeSeconds: "+response.attr.maxLifeSeconds
+ +"\nmaxIdleTimeSeconds: "+response.attr.maxIdleTimeSeconds
+ +"\nsize: "+response.attr.size
+ +"\ncreateTime: "+response.attr.createTime
+ +"\nlastAccessTime: "+response.attr.lastAccessTime
+ +"\nidleTime: "+response.attr.idleTime
+ +"\ntimeToLiveSeconds: "+response.attr.timeToLiveSeconds
+ +"\nisSpool: "+response.attr.isSpool
+ +"\nisLateral: "+response.attr.isLateral
+ +"\nisRemote: "+response.attr.isRemote
+ +"\nisEternal: "+response.attr.isEternal;
+ modalService.showSuccess('',message);});
+ };
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp
new file mode 100644
index 000000000..3c4ff52ae
--- /dev/null
+++ b/ecomp-sdk-app/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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html
new file mode 100644
index 000000000..0766cecdc
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html
new file mode 100644
index 000000000..c163002d9
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html
new file mode 100644
index 000000000..ee0b51215
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/jsp/post_search.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/post_search.jsp
new file mode 100644
index 000000000..94d4b0bf6
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/post_search.jsp
@@ -0,0 +1,356 @@
+<%--
+ ================================================================================
+ 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" %>
+<%@ 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" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal_rolefunction.html" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal_role.html" %>
+<link rel="stylesheet" type="text/css" href="static/fusion/css/jquery-ui.css">
+
+<div ng-controller="postSearchController" >
+
+<h1 class="heading1" style="margin-top:20px;">WEBPHONE Search</h1>
+ <br>
+ Please enter search criteria below:<br/>
+
+ <div class="fn-ebz-container">
+ Last Name:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.lastName" value="" size="25">
+ </div>
+
+ <div class="fn-ebz-container">
+ First Name:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.firstName" value="" size="25">
+ </div>
+
+ <div class="fn-ebz-container">
+ UserId:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.orgUserId" value="" size="25">
+ </div>
+
+ <div class="fn-ebz-container">
+ Manager OrgUserId:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.orgManagerUserId" value="" size="25">
+ </div>
+ <br>
+ <div class="fn-ebz-container">
+ Organization:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.orgCode" value="" size="25">
+ </div>
+
+ <div class="fn-ebz-container">
+ Email:<br/>
+ <input class="fn-ebz-text" type="text" ng-model="postSearchBean.email" value="" size="25">
+ </div>
+ <br>
+<!-- Sort By: <br/>
+ <div class="fn-ebz-container" >
+
+ <div class="fn-ebz-container">
+ <div class="form-field" att-select="sortByList" ng-model="postSearchBean.sortBy1"></div>
+ </div>
+ </div>
+
+
+
+
+ <div class="fn-ebz-container" >
+ <br/>
+ &nbsp;
+
+ <div class="fn-ebz-container">
+ <div class="form-field" att-select="sortByList" ng-model="postSearchBean.sortBy2"></div>
+ </div>
+ </div>
+
+
+ <div class="fn-ebz-container" >
+ <br/> &nbsp;
+
+ <div class="fn-ebz-container">
+ <div class="form-field" att-select="sortByList" ng-model="postSearchBean.sortBy3"></div>
+ </div>
+ </div> -->
+ <div>
+ <input att-button btn-type="primary" size="small" class="button" type="submit" value="Search" ng-click="search(postSearchBean);" />
+
+ <input att-button btn-type="primary" size="small" class="button" type="submit" value="Reset" ng-click="reset();"/>
+ </div>
+ <br>
+ {{noResultsString}}
+ <div ng-if="profileList.length != 0">
+ <table att-table table-data="profileList" 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 width="5%" align="left">No</th>
+ <th att-table-header width="30%" key="lastName" align="left">Name</th>
+ <th att-table-header width="5%" key="orgUserId" align="left">OrgUserId</th>
+ <th att-table-header width="10%" key="orgCode" align="left">Organization</th>
+ <th att-table-header width="20%" align="left">Phone</th>
+ <th att-table-header width="20%" key="email" align="left">Email</th>
+ <th att-table-header width="10%" align="left">Import?</th>
+ </tr>
+ </thead>
+
+ <tbody att-table-row type="body" row-repeat="profile in profileList" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr >
+ <td att-table-body width="5%" align="left">
+ {{$index + 1}}
+ </td>
+ <td att-table-body width="30%" align="left">
+ <div ng-if="ngexistingUsers[profile.orgUserId] == null">
+ {{profile.lastName}},&nbsp;{{profile.firstName}}
+ </div>
+ <div ng-if="ngexistingUsers[profile.orgUserId] != null">
+ <a href="profile.htm?profile_id={{ngexistingUsers[profile.orgUserId]}}" alt="View/Edit Profile">
+ {{profile.lastName}},&nbsp;{{profile.firstName}}
+ </a>
+ </div>
+
+ </td>
+ <td att-table-body width="5%" align="left">
+ {{profile.orgUserId}}
+ </td>
+ <td att-table-body width="10%" align="left">
+ {{profile.orgCode}}
+ </td>
+ <td att-table-body width="20%" align="left">
+ {{profile.phone}}
+ </td>
+ <td att-table-body width="20%" align="left">
+ {{profile.email}}
+ </td>
+
+ <td att-table-body width="10%" align="left">
+ <div ng-if="ngexistingUsers[profile.orgUserId] == null">
+ <div ng-click="toggleSelection(profile);">
+ <input name="selected" type="checkbox" ng-model="profile.selected" att-checkbox/>
+ </div>
+ </div>
+ <div ng-if="ngexistingUsers[profile.orgUserId] != null">
+ Exists
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="fn-ebz-container">
+ Rows Per Page:
+ <input class="fn-ebz-text" type="text" ng-model="viewPerPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Current Page:
+ <input class="fn-ebz-text" type="text" ng-model="currentPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Total Page(s):
+ <input class="fn-ebz-text" type="text" ng-model="totalPage" size="5" readonly="true" style="width: 47px;">
+ </div>
+
+ <div ng-if="profileList.length != 0">
+ <input att-button btn-type="primary" size="small" class="button" type="submit" value="Import" ng-click="process();"/>
+ </div>
+
+ </div>
+
+
+
+
+</div>
+<script>
+ app.controller('postSearchController', function ($scope,modalService){
+
+ $scope.viewPerPage = 200;
+ $scope.currentPage = 1;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+
+ $scope.noResultsString = "";
+
+ $scope.postSearchBean=${postSearchBean};
+ $scope.profileList=${profileList};
+ //console.log($scope.postSearchBean);
+
+ $scope.ngexistingUsers=${existingUsers};
+ console.log($scope.ngexistingUsers);
+
+ $scope.ocisortByList=${sortByList};
+ $scope.sortByList = [];
+ if($scope.ocisortByList)
+ $.each($scope.ocisortByList, function(i, a){
+ var sortBy = {"index":i, "value":a.value, "title":a.label};
+ $scope.sortByList.push(sortBy);
+ });
+ ;
+
+ $scope.search = function(postSearchBean) {
+ console.log(postSearchBean);
+ var uuu = "post_search/search";
+ var postData={postSearchBean:postSearchBean};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.profileList=data.postSearchBean.searchResult;
+ //$scope.postSearchBean={};
+ console.log($scope.profileList);
+ if($scope.profileList.length == 0)
+ $scope.noResultsString = "There is currently no one in WEBPHONE matching your search criteria.";
+ else
+ $scope.noResultsString = "";
+ });
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while searching: "+ data.responseText);
+ }
+ });
+
+ };
+
+ $scope.reset = function() {
+ $scope.postSearchBean={};
+ $scope.profileList=[];
+ $scope.noResultsString = "";
+ //console.log($scope.postSearchBean);
+ };
+
+ $scope.process = function() {
+ $scope.prepareProfileSelection();
+ var uuu = "post_search/process";
+ var postData={postSearchBean:$scope.postSearchBean};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.profileList=data.postSearchBean.searchResult;
+ //$scope.postSearchBean={};
+ $scope.ngexistingUsers=data.existingUsers;
+ $scope.postSearchBean.selected=null;
+ });
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while searching: "+ data.responseText);
+ }
+ });
+
+ };
+ $scope.importProfileList=[];
+ $scope.toggleSelection = function(profile) {
+ if(profile.selected)
+ $scope.importProfileList.push(profile);
+ else{
+ var index = $scope.importProfileList.indexOf(profile);
+ if(index>=0)
+ $scope.importProfileList.splice(index, 1);
+ }
+ };
+
+ $scope.prepareProfileSelection = function() {
+ if($scope.importProfileList)
+ $.each($scope.importProfileList, function(i, profile){
+ $scope.preparePostSearchBean(profile);
+ });
+ ;
+ }
+
+ $scope.preparePostSearchBean = function(profile) {
+ //console.log('Importing: '+profile.orgUserId);
+ //console.log('ngexistinguser:'+$scope.ngexistingUsers[profile.orgUserId])
+ if($scope.postSearchBean.selected==null){
+ $scope.postSearchBean.selected=[];
+ $scope.postSearchBean.postOrgUserId=[];
+ $scope.postSearchBean.postHrid=[];
+ $scope.postSearchBean.postFirstName=[];
+ $scope.postSearchBean.postLastName=[];
+ $scope.postSearchBean.postOrgCode=[];
+ $scope.postSearchBean.postPhone=[];
+ $scope.postSearchBean.postEmail=[];
+ $scope.postSearchBean.postAddress1=[];
+ $scope.postSearchBean.postAddress2=[];
+ $scope.postSearchBean.postCity=[];
+ $scope.postSearchBean.postState=[];
+ $scope.postSearchBean.postZipCode=[];
+ $scope.postSearchBean.postLocationClli=[];
+ $scope.postSearchBean.postBusinessCountryCode=[];
+ $scope.postSearchBean.postBusinessCountryName=[];
+ $scope.postSearchBean.postDepartment=[];
+ $scope.postSearchBean.postDepartmentName=[];
+ $scope.postSearchBean.postBusinessUnit=[];
+ $scope.postSearchBean.postBusinessUnitName=[];
+ $scope.postSearchBean.postJobTitle=[];
+ $scope.postSearchBean.postOrgManagerUserId=[];
+ $scope.postSearchBean.postCommandChain=[];
+ $scope.postSearchBean.postCompanyCode=[];
+ $scope.postSearchBean.postCompany=[];
+ $scope.postSearchBean.postCostCenter=[];
+ $scope.postSearchBean.postSiloStatus=[];
+ $scope.postSearchBean.postFinancialLocCode=[];
+ }
+
+ $scope.postSearchBean.selected.push(profile.orgUserId);
+ $scope.postSearchBean.postOrgUserId.push(profile.orgUserId);
+ $scope.postSearchBean.postHrid.push(profile.hrid);
+ $scope.postSearchBean.postFirstName.push(profile.firstName);
+ $scope.postSearchBean.postLastName.push(profile.lastName);
+ $scope.postSearchBean.postOrgCode.push(profile.orgCode);
+ $scope.postSearchBean.postPhone.push(profile.phone);
+ $scope.postSearchBean.postEmail.push(profile.email);
+ $scope.postSearchBean.postAddress1.push(profile.address1);
+ $scope.postSearchBean.postAddress2.push(profile.address2);
+ $scope.postSearchBean.postCity.push(profile.city);
+ $scope.postSearchBean.postState.push(profile.state);
+ if(profile.zipCodeSuffix==null)
+ $scope.postSearchBean.postZipCode.push(profile.zipCode);
+ else
+ $scope.postSearchBean.postZipCode.push(profile.zipCode+'-'+profile.zipCodeSuffix);
+ $scope.postSearchBean.postLocationClli.push(profile.locationClli);
+ $scope.postSearchBean.postBusinessCountryCode.push(profile.businessCountryCode);
+ $scope.postSearchBean.postBusinessCountryName.push(profile.businessCountryName);
+ $scope.postSearchBean.postDepartment.push(profile.department);
+ $scope.postSearchBean.postDepartmentName.push(profile.departmentName);
+ $scope.postSearchBean.postBusinessUnit.push(profile.businessUnit);
+ $scope.postSearchBean.postBusinessUnitName.push(profile.businessUnitName);
+ $scope.postSearchBean.postJobTitle.push(profile.jobTitle);
+ $scope.postSearchBean.postOrgManagerUserId.push(profile.orgManagerUserId);
+ $scope.postSearchBean.postCommandChain.push(profile.commandChain);
+ $scope.postSearchBean.postCompanyCode.push(profile.companyCode);
+ $scope.postSearchBean.postCompany.push(profile.company);
+ $scope.postSearchBean.postCostCenter.push(profile.costCenter);
+ $scope.postSearchBean.postSiloStatus.push(profile.siloStatus);
+ $scope.postSearchBean.postFinancialLocCode.push(profile.financialLocCode);
+ };
+
+ });
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile.jsp
new file mode 100644
index 000000000..b8e0106ec
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile.jsp
@@ -0,0 +1,442 @@
+<%--
+ ================================================================================
+ 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.domain.User"%>
+<%@ page import="org.openecomp.portalsdk.core.web.support.UserUtils"%>
+
+<%@page import="org.openecomp.portalsdk.core.web.support.ControllerProperties"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<link rel="stylesheet" type="text/css" href="static/fusion/css/jquery-ui.css">
+<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" >
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+
+<%@ include file="/WEB-INF/fusion/jsp/include.jsp"%>
+
+<div class="pageTitle">
+ <h3>
+ <c:choose>
+ <c:when test="${!empty profileId}">
+ <h1 class="heading1" style="margin-top:20px;">Profile Edit</h1>
+ </c:when>
+ <c:otherwise>
+ <h1 class="heading1" style="margin-top:20px;">Profile Edit</h1>
+ </c:otherwise>
+ </c:choose>
+ </h3>
+</div>
+
+<div ng-controller="profileController" >
+
+ Please edit the profile details below:&nbsp;<br><br>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>First Name:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.firstName"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Last Name:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.lastName"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">OrgUserId:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.orgUserId"
+ maxlength="30" style="margin-right:0px;"/>
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Manager OrgUserId:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.orgManagerUserId"
+ maxlength="30" style="margin-right:0px;"/>
+ </div>
+<BR>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Login Id:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.loginId"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" style="margin-right:20px">
+ <label class="fn-ebz-text-label">Password:</label><BR>
+ <input type="password" ng-model="profile.loginPwd"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Phone:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.phone"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Fax:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.fax"
+ maxlength="30" />
+ </div>
+<BR>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Cellular:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.cellular"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label"><sup><b>*</b></sup>Email:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.email"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Address 1:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.address1"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Address 2:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.address2"
+ maxlength="30" />
+ </div>
+<BR>
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">City:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.city"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container">
+ <label class="fn-ebz-text-label">State:</label><BR>
+ <div class="form-field" att-select="stateList.options" ng-model="stateList.selected"></div>
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Zip Code:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="profile.zipCode"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container">
+ <label class="fn-ebz-text-label">Country:</label><BR>
+ <div class="form-field" att-select="countries" ng-model="selectedCountry"></div>
+ </div>
+ <BR>
+ <div class="fn-ebz-container">
+ <label class="fn-ebz-text-label">Time Zone:</label><BR>
+ <div class="form-field" att-select="timeZones" ng-model="selectedTimeZone"></div>
+ </div>
+
+ <div align="left" >
+ <button type="submit" ng-click="saveProfile();" att-button
+ btn-type="primary" size="small">Save</button>
+ </div>
+
+<br>
+ <div class="pageTitle">
+ <label>Roles</label>
+ <a ng-click="addNewRolePopup();" class="ion-plus-circled" size="small"></a>
+
+ </div>
+
+ <table att-table table-data="profile.roles" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage">
+<!-- <table border="1" class="hovertable_1"> -->
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" align="left" width="90%">Name</th>
+ <th att-table-header sortable="false" width="10%">Remove?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="role in profile.roles" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+<!-- <tr ng-repeat="role in profile.roles track by role.id"> -->
+ <tr>
+ <td att-table-body width="90%" >{{ role.name }}</td>
+ <td att-table-body width="10%">
+ <a ng-click="removeRole(role);" ><img src="static/fusion/images/deleteicon.gif"></a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div id="dialog" style="overflow:scroll" class="modal__informative font-showcase" >
+ <div class="modal__header">
+ <h2 class="font-showcase-font-name" style="color:#157BB2">Select 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;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr>
+ <td att-table-body width="10%">
+ <div ng-click="toggleRole(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>
+
+</div>
+
+
+
+<script>
+app.controller('profileController', function ($scope,modalService){
+
+ $scope.profile=${model.profile};
+ $scope.profileId = $scope.profile.id;
+ $scope.orgUserId=$scope.profile.orgUserId;
+ $scope.orgManagerUserId=$scope.profile.orgManagerUserId;
+
+ $scope.viewPerPage = 2;
+ $scope.currentPage = 1;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+
+ $( "#dialog" ).hide();
+
+ $scope.ociavailableRoles=${model.availableRoles};
+ //modalService.showFailure('Error','') ;
+ $scope.availableRoles = [];
+ if($scope.ociavailableRoles)
+ $.each($scope.ociavailableRoles, function(i, a){
+ var availableRole = a;
+ availableRole.selected = false;
+ $.each($scope.profile.roles, function(j, b){
+ if(a.id === b.id) {
+ availableRole.selected = true;
+ }
+ });
+ $scope.availableRoles.push(availableRole);
+ });
+ ;
+
+ $scope.ociTimeZones = ${model.timeZones};
+ $scope.timeZones = [];
+ $scope.selectedTimeZone = null;
+ if($scope.ociTimeZones){
+ $.each($scope.ociTimeZones, function(i, a){
+ var timeZone = {"index":i, "value":a.value, "title":a.label};
+ $scope.timeZones.push(timeZone);
+ if($scope.profile.timeZoneId !== null && a.value === $scope.profile.timeZoneId.toString()){
+ $scope.selectedTimeZone = timeZone;
+ }
+ });
+ };
+
+ $scope.ociCountries = ${model.countries};
+ $scope.countries = [];
+ $scope.selectedCountry = null;
+ //alert($scope.ociCountries[0].label);
+ if($scope.ociCountries)
+ $.each($scope.ociCountries, function(i, a){
+ var country = {"index":i, "value":a.value, "title":a.label};
+ $scope.countries.push(country);
+ if(a.value === $scope.profile.country){
+ $scope.selectedCountry = country;
+ }
+ });
+ ;
+
+ var stateList=${model.stateList};
+ //alert(stateList[0].label);
+ stateList = stateList== null? []: stateList;
+ var selectedState= $scope.profile.state ? $scope.profile.state:"";
+ $scope.stateList = initDropdownWithLookUp(stateList,selectedState );
+
+ $scope.saveProfile = function() {
+ var uuu = "profile/saveProfile?profile_id="+$scope.profileId;
+ var postData={profile: $scope.profile,
+ selectedCountry:$scope.selectedCountry!=null?$scope.selectedCountry.value:"",
+ selectedState:$scope.stateList.selected!=null?$scope.stateList.selected.value:"",
+ selectedTimeZone:$scope.selectedTimeZone!=null?$scope.selectedTimeZone.value:""
+ };
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ modalService.showSuccess("Success","Update Successful.");
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+ };
+
+ $scope.addNewRolePopup = function(role) {
+ $( "#dialog" ).dialog({
+ modal: true,
+ width: 500,
+ height:600
+ });
+ $(".ui-dialog-titlebar").hide();
+ };
+
+ $scope.toggleRole = function(selected,availableRole) {
+ //alert('toggleRole: '+selected);
+ if(!selected) {
+ //remove role
+ var uuu = "profile/removeRole?profile_id=" + $scope.profileId;
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to remove the role "+availableRole.name+" from the profile for "+$scope.profile.firstName+" "+$scope.profile.lastName+". Do you want to continue?",
+ function(){
+ var postData={role:availableRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.profile=data;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+ },
+ function(){
+ availableRole.selected=!availableRole.selected;
+ });
+
+ } else {
+ //add role
+ var uuu = "profile/addNewRole?profile_id=" + $scope.profileId;
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to add the role "+availableRole.name+" from the profile for "+$scope.profile.firstName+" "+$scope.profile.lastName+". Do you want to continue?",
+ function(){
+ var postData={role:availableRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.profile=data;});
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },function(){
+ availableRole.selected=!availableRole.selected;
+ })
+ }
+
+
+ };
+
+ $scope.removeRole = function(role) {
+ modalService.popupConfirmWin("Confirm","You are about to remove the role "+role.name+" from the profile for "+$scope.profile.firstName+" "+$scope.profile.lastName+". Do you want to continue?",
+ function(){
+ var uuu = "profile/removeRole?profile_id=" + $scope.profileId;
+ var postData={role:role};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.profile=data;
+ $.each($scope.availableRoles, function(k, c){
+ if(c.id === role.id) {
+ c.selected = false;
+ }
+ });
+ });
+
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ })
+
+ };
+
+ function initDropdownWithLookUp(arr,selectedValue){
+ var dropdownArray=[];
+ var selected = null;
+ if(arr){
+ for(var i = 0,l = arr.length; i < l; i++) {
+ var option = {
+ "index" : i ,
+ "value" : arr[i].value,
+ "title" : arr[i].label
+ };
+ dropdownArray.push(option);
+ if(arr[i].value === selectedValue){
+ selected = option;
+ }
+ }
+ }
+ var dropDown={};
+ dropDown.options = dropdownArray;
+ dropDown.selected = selected;
+ return dropDown;
+ };
+
+ $scope.doRolePopup = function() {
+ var modalInstance = $modal.open({
+ templateUrl: 'roles_popup.html',
+ controller: 'rolepopupController',
+ resolve: {
+ message: function () {
+ var message ={
+ availableRoles: $scope.availableRoles
+ };
+ return message;
+ }
+ }
+ });
+ modalInstance.result.then(function (opts) {
+ if(opts!=null){
+ $scope.profile=opts.profile;
+ }
+ });
+ }
+
+ $scope.close = function(){
+ $('#dialog').dialog('close');
+ }
+
+
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile_search.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile_search.jsp
new file mode 100644
index 000000000..295faf035
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/profile_search.jsp
@@ -0,0 +1,104 @@
+<%--
+ ================================================================================
+ 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.
+ ================================================================================
+ --%>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<div ng-controller="profileSearchController">
+ <div>
+ <h1 class="heading1" style="margin-top:20px;">Profile Search</h1>
+ <div style="margin-top:30px">
+ <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 key="id">User ID</th>
+ <th att-table-header key="last_name">Last Name</th>
+ <th att-table-header key="first_name">First Name</th>
+ <th att-table-header key="email">Email</th>
+ <th att-table-header key="orgUserId">OrgUserId</th>
+ <th att-table-header key="org_manager_userid">Manager OrgUserId</th>
+ <th att-table-header >Edit</th>
+ <th att-table-header key="active">Active?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="rowData in tableData">
+ <tr>
+ <td att-table-body >{{rowData.id}}</td>
+ <td att-table-body >{{rowData.lastName}}</td>
+ <td att-table-body >{{rowData.firstName}}</td>
+ <td att-table-body >{{rowData.email}}</td>
+ <td att-table-body >{{rowData.orgUserId}}</td>
+ <td att-table-body >{{rowData.managerId}}</td>
+ <td att-table-body ><a href="" ng-click="editRow(rowData.id)" class="ion-edit" style="color: #888;font-size:20px;"></a></td>
+ <td att-table-body >
+ <div ng-click="toggleProfileActive(rowData)">
+ <input type="checkbox" ng-model="rowData.active" att-toggle-main>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="fn-ebz-container">
+ Rows Per Page:
+ <input class="fn-ebz-text" type="text" ng-model="viewPerPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Current Page:
+ <input class="fn-ebz-text" type="text" ng-model="currentPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Total Page(s):
+ <input class="fn-ebz-text" type="text" ng-model="totalPage" size="5" readonly="true" style="width: 47px;">
+ </div>
+</div>
+
+<script>
+app.controller("profileSearchController", function ($scope,$http,modalService, $modal) {
+ // Table Data
+ $scope.tableData=${model.profileList};
+ $scope.viewPerPage = 20;
+ $scope.scrollViewsPerPage = 2;
+ $scope.currentPage = 1;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ // modalService.showSuccess('','Modal Sample') ;
+ for(x in $scope.tableData){
+ if($scope.tableData[x].active_yn=='Y')
+ $scope.tableData[x].active_yn=true;
+ else
+ $scope.tableData[x].active_yn=false;
+ }
+ $scope.editRow = function(profileId){
+ window.location = 'profile?profile_id=' + profileId;
+ }
+
+ $scope.toggleProfileActive = function(rowData) {
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to change user's active status. Do you want to continue?",
+ function(){
+ $http.get("profile/toggleProfileActive?profile_id="+rowData.id).success(function(){});
+ },
+ function(){
+ rowData.active=!rowData.active;
+ })
+ };
+
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role.jsp
new file mode 100644
index 000000000..9e944aa47
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role.jsp
@@ -0,0 +1,286 @@
+<%--
+ ================================================================================
+ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal_rolefunction.html" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal_role.html" %>
+<style type="text/css">
+ .bc-style{
+ margin: 20px;
+ align: left;
+ }
+</style>
+<div class="bc-style">
+ <ul class="breadcrumb" >
+ <li><a href="welcome">Home</a></li>
+ <li><a href="role_list">Roles</a></li>
+ <li class="active">Role</li>
+ </ul>
+</div>
+<div class="pageTitle">
+<h3>
+ <c:choose>
+ <c:when test="${!empty param.role_id}">
+ <h1 class="heading1" style="margin-top:20px;">Role Edit</h1>
+ </c:when>
+ <c:otherwise>
+ <h1 class="heading1" style="margin-top:20px;">Role Create</h1>
+ </c:otherwise>
+ </c:choose>
+ </h3>
+</div>
+
+<div ng-controller="roleController" >
+
+ <br>
+ Please edit the role details below:&nbsp;<br>
+
+ <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="role.name"
+ maxlength="30" />
+ </div>
+
+ <div class="fn-ebz-container" >
+ <label class="fn-ebz-text-label">Priority:</label><BR>
+ <input type="text" class="fn-ebz-text" ng-model="role.priority"
+ maxlength="30" />
+ </div>
+
+ <div align="left" >
+ <button type="submit" ng-click="saveRole();" att-button
+ btn-type="primary" size="small">Save</button>
+ </div>
+
+ <br>
+ <div class="pageTitle">
+ <label>Role Functions</label>
+ <a ng-click="addNewRoleFunctionModalPopup();" class="icon-add" size="small"></a>
+ </div>
+
+ <table table-data="role.roleFunctions" att-table >
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" align="left" width="90%">Name</th>
+ <th att-table-header sortable="false" width="10%">Remove?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="roleFunction in role.roleFunctions" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr>
+ <td att-table-body width="90%" >{{ roleFunction.name }}</td>
+ <td att-table-body width="10%">
+ <div ng-click="removeRoleFunction(roleFunction);" style="font-size:20px;"><a href="javascript:void(0)" class="icon-trash"></a></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <a href="role_function_list.htm">Manage Role Functions</a><br><br>
+
+ <div class="pageTitle">
+ <label>Child Roles</label>
+ <a ng-click="addNewChildRoleModalPopup();" class="icon-add" size="small"></a>
+ </div>
+
+ <table table-data="role.childRoles" att-table >
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" align="left" width="90%">Name</th>
+ <th att-table-header sortable="false" width="10%">Remove?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="role in role.childRoles" style="max-height: 980px;" >
+ <tr>
+ <td att-table-body width="90%" >{{ role.name }}</td>
+ <td att-table-body width="10%">
+ <div ng-click="removeChildRole(role);" style="font-size:20px;"><a href="javascript:void(0)" class="icon-trash"></a></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div id="dialogChildRole" title="Select Child Roles">
+ <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;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <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>
+app.controller('roleController', function ($scope, modalService, $modal){
+ $scope.role=${role};
+ console.log($scope.role.roleFunctions);
+
+ $( "#dialogRoleFunction" ).hide();
+ $( "#dialogChildRole" ).hide();
+
+ $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.saveRole = function() {
+ var uuu = "role/saveRole.htm?role_id=${param.role_id}";
+ var postData={role: $scope.role, childRoles: $scope.role.childRoles, roleFunctions : $scope.role.roleFunctions};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ modalService.showSuccess("Success","Update Successful.");
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+ };
+
+ $scope.addNewRoleFunctionModalPopup = function() {
+ var modalInstance = $modal.open({
+ templateUrl: 'role_functions_popup.html',
+ controller: 'rolepopupController',
+ backdrop: 'static',
+ resolve: {
+ role: function () {
+ return $scope.role;
+ }
+ }
+ });
+ modalInstance.result.then(function(response){
+ console.log('response', response);
+ $scope.role=response.role;
+ });
+ };
+
+ $scope.addNewChildRoleModalPopup = function() {
+ var modalInstance = $modal.open({
+ templateUrl: 'child_roles_popup.html',
+ controller: 'rolepopupController',
+ backdrop: 'static',
+ resolve: {
+ role: function () {
+ return $scope.role;
+ }
+ }
+ });
+ modalInstance.result.then(function(response){
+ console.log('response', response);
+ $scope.role=response.role;
+ });
+ };
+
+
+
+ $scope.removeRoleFunction = function(roleFunction) {
+ modalService.popupConfirmWin("Confirm","You are about to remove the role function "+roleFunction.name+" from the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var uuu = "role/removeRoleFunction.htm?role_id=${param.role_id}";
+ var postData={roleFunction:roleFunction};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.role=data.role;
+ $.each($scope.availableRoleFunctions, function(k, c){
+ if(c.code === roleFunction.code) {
+ c.selected = false;
+ }
+ });
+ });
+
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ })
+
+ };
+
+ $scope.removeChildRole = function(childRole) {
+ modalService.popupConfirmWin("Confirm","You are about to remove the child role "+childRole.name+" from the role for "+$scope.role.name+". Do you want to continue?",
+ function(){
+ var uuu = "role/removeChildRole.htm?role_id=${param.role_id}";
+ var postData={childRole:childRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.role=data.role;
+ $.each($scope.availableRoles, function(k, c){
+ if(c.id === childRole.id) {
+ c.selected = false;
+ }
+ });
+ });
+
+ },
+ error : function(data){
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ })
+ };
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_function_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_function_list.jsp
new file mode 100644
index 000000000..2df44ce1f
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_function_list.jsp
@@ -0,0 +1,213 @@
+<%--
+ ================================================================================
+ 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.
+ ================================================================================
+ --%>
+
+<%-- <%@ 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" %>
+
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal_rolefunction.html" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<div ng-controller="roleFunctionListController" >
+ <div class="pageTitle">
+
+ <h1 class="heading1" style="margin-top:20px;">Role Functions</h1>
+
+ <a ng-click="addNewRoleFunctionModalPopup();" class="ion-plus-circled" size="small" ></a>
+ <br><br>
+
+ </div>
+
+ <br>
+ Click on the edit icon to update a role function, the plus icon to add additional role functions, or the delete icon to remove them.
+ <br>
+ <div id="rolesTable" title="Role Functions">
+ <table att-table table-data="availableRoleFunctions" current-page="1">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header width="70%">Name</th>
+ <th att-table-header width="10%">Code</th>
+ <th att-table-header width="10%">Edit?</th>
+ <th att-table-header width="10%">Delete?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="availableRoleFunction in availableRoleFunctions" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr>
+ <td att-table-body width="70%">{{ availableRoleFunction.name }}</td>
+ <td att-table-body width="10%">{{ availableRoleFunction.code }}</td>
+ <td att-table-body width="10%">
+ <!-- <a ng-click="editRoleFunctionPopup(availableRoleFunction);" >
+ <img src="static/fusion/images/editicon.gif">
+ </a> -->
+ <div ng-click="editRoleFunctionModalPopup(availableRoleFunction);" style="font-size:20px;"><a href="javascript:void(0)" class="ion-edit"></a></div>
+ </td>
+ <td att-table-body width="10%">
+ <!-- <a ng-click="removeRole(availableRoleFunction);" ><img src="static/fusion/images/deleteicon.gif"></a> -->
+ <div ng-click="removeRole(availableRoleFunction);" style="font-size:20px;"><a href="javascript:void(0)" class="ion-trash-b"></a></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+<!-- <div align="left" style="marin-bottom: 50px;"> -->
+<!-- <button type="submit" onClick="window.location='role_function.htm';" att-button -->
+<!-- btn-type="primary" size="small">Create</button> -->
+<!-- </div> -->
+
+ <div id="dialog" title="Add Role Function">
+
+ <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="editRoleFunction.code!=null"
+ maxlength="30" />
+ </div>
+ <br/>
+ <button type="submit" ng-click="saveRoleFunction(editRoleFunction);" att-button
+ btn-type="primary" size="small">Save</button>
+
+ </div>
+
+</div>
+
+
+
+
+<script>
+app.controller('roleFunctionListController', function ($scope, modalService, $modal){
+ $( "#dialog" ).hide();
+ $scope.availableRoleFunctions=${availableRoleFunctions};
+
+
+ $scope.editRoleFunction = null;
+ var dialog = null;
+ $scope.editRoleFunctionPopup = function(availableRoleFunction) {
+ $scope.editRoleFunction = availableRoleFunction;
+ $( "#dialog" ).dialog({
+ modal: true
+ });
+ };
+
+ $scope.editRoleFunctionModalPopup = function(availableRoleFunction) {
+ $scope.editRoleFunction = availableRoleFunction;
+ var modalInstance = $modal.open({
+ templateUrl: 'edit_role_function_popup.html',
+ controller: 'rolefunctionpopupController',
+ resolve: {
+ message: function () {
+ var message = {
+ availableRoleFunction: $scope.editRoleFunction
+ };
+ return message;
+ }
+ }
+ });
+ modalInstance.result.then(function(response){
+ console.log('response', response);
+ $scope.availableRoleFunctions=response.availableRoleFunctions;
+ });
+ };
+
+ $scope.addNewRoleFunctionModalPopup = function(availableRoleFunction) {
+ $scope.editRoleFunction = null;
+ var modalInstance = $modal.open({
+ templateUrl: 'edit_role_function_popup.html',
+ controller: 'rolefunctionpopupController',
+ resolve: {
+ message: function () {
+ var message = {
+ availableRoleFunction: $scope.editRoleFunction
+ };
+ return message;
+ }
+ }
+ });
+ modalInstance.result.then(function(response){
+ console.log('response', response);
+ $scope.availableRoleFunctions=response.availableRoleFunctions;
+ });
+ };
+
+ $scope.addNewRoleFunctionPopup = function() {
+ $scope.editRoleFunction = null;
+ $( "#dialog" ).dialog({
+ modal: true
+ });
+ };
+
+ $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;
+ $( "#dialog" ).dialog("close");
+ },
+ error : function(data){
+ alert("Error while saving.");
+ }
+ });
+ };
+
+
+ $scope.removeRole = function(availableRoleFunction) {
+ modalService.popupConfirmWin("Confirm","You are about to delete the role function "+availableRoleFunction.name+". Do you want to continue?",
+ function(){
+ var uuu = "role_function_list/removeRoleFunction.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=data.availableRoleFunctions;});
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while deleting: "+ data.responseText);
+ }
+ });
+
+ })
+ };
+
+
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_list.jsp
new file mode 100644
index 000000000..c27c360b9
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/role_list.jsp
@@ -0,0 +1,139 @@
+<%--
+ ================================================================================
+ 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.
+ ================================================================================
+ --%>
+
+<%-- <%@ 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" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+
+<div class="pageTitle">
+ <h1 class="heading1" style="margin-top:20px;">Roles</h1>
+</div>
+<br>
+Click on a Role to view its details.
+
+<div ng-controller="roleListController" >
+ <div id="dialog" title="Roles">
+ <table att-table table-data="availableRoles" current-page="1">
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header width="70%">Name</th>
+ <th att-table-header width="10%">Priority</th>
+ <th att-table-header width="10%">Active?</th>
+ <th att-table-header width="10%">Delete?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="availableRole in availableRoles" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+<!-- <tr ng-repeat="availableRole in availableRoles track by availableRole.id"> -->
+ <tr>
+ <td width="70%"><a href="role.htm?role_id={{availableRole.id}}">{{ availableRole.name }}</a></td>
+ <td width="10%">{{ availableRole.priority }}</td>
+ <td width="10%">
+ <div ng-click="toggleRole(availableRole.active,availableRole);">
+ <input type="checkbox" ng-model="availableRole.active" att-toggle-main>
+ </div>
+ </td>
+ <td att-table-body width="10%">
+ <div ng-click="removeRole(availableRole);" style="font-size:20px;"><a href="javascript:void(0)" class="ion-trash-b"></a></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div align="left" style="marin-bottom: 50px;">
+ <button type="submit" onClick="window.location='role.htm';" att-button
+ btn-type="primary" size="small">Create</button>
+ </div>
+
+</div>
+
+
+
+
+<script>
+app.controller('roleListController', function ($scope,modalService){
+
+ $scope.availableRoles=${availableRoles};
+ //console.log($scope.availableRoles);
+ $scope.toggleRole = function(selected,availableRole) {
+ //alert('toggleRole: '+selected);
+ var toggleType = null;
+ if(selected) {
+ toggleType = "activate";
+ } else {
+ toggleType = "inactivate";
+ }
+
+ modalService.popupConfirmWinWithCancel("Confirm","You are about to "+toggleType+" the test role "+availableRole.name+". Do you want to continue?",
+ function(){
+ var uuu = "role_list/toggleRole";
+
+ var postData={role:availableRole};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ console.log(data);
+ $scope.$apply(function(){$scope.availableRoles=data.availableRoles;});
+ console.log($scope.availableRoles);
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while saving.");
+ }
+ });
+
+ },
+ function(){
+ availableRole.active=!availableRole.active;
+ })
+
+ };
+
+ $scope.removeRole = function(role) {
+ modalService.popupConfirmWin("Confirm","You are about to delete the role "+role.name+". Do you want to continue?",
+ function(){
+ var uuu = "role_list/removeRole";
+ var postData={role:role};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){$scope.availableRoles=data.availableRoles;});
+ },
+ error : function(data){
+ console.log(data);
+ modalService.showFailure("Fail","Error while deleting: "+ data.responseText);
+ }
+ });
+
+ })
+ };
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/usage_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/usage_list.jsp
new file mode 100644
index 000000000..4e45ffb37
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/usage_list.jsp
@@ -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.
+ ================================================================================
+ --%>
+
+<%-- <%@ 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" %>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+
+<div ng-controller="usageListController" >
+ <div class="pageTitle">
+ <h3>
+ Usage
+ </h3>
+ </div>
+ <br/>
+ The following shows all users currently logged into the application. Click the icon to expel a user from the application.
+
+ <div title="Current User Sessions">
+ <table att-table table-data="users" current-page="1">
+
+ <thead att-table-row type="header">
+ <tr>
+ <th att-table-header sortable="false" width="10%" align="left">Current User Sessions</th>
+ <th att-table-header sortable="false" width="10%" align="center"></th>
+ <th att-table-header sortable="false" width="10%" align="center"></th>
+ <th att-table-header sortable="false" width="10%" align="center"></th>
+ <th att-table-header sortable="false" width="10%" align="center"></th>
+ <th att-table-header sortable="false" width="10%" align="center"></th>
+ </tr>
+ <tr>
+ <th att-table-header sortable="false" width="10%" align="center">User Id</th>
+ <th att-table-header sortable="false" width="10%" align="center">User Name</th>
+ <th att-table-header sortable="false" width="10%" align="center">Email</th>
+ <th att-table-header sortable="false" width="10%" align="center">Last Access Time (minutes)</th>
+ <th att-table-header sortable="false" width="10%" align="center">Time Remaining (minutes)</th>
+ <th att-table-header sortable="false" width="10%" align="center">Expel?</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="user in users" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody-->
+ <tr>
+ <td att-table-body width="10%">{{user.id}}</td>
+ <td att-table-body width="10%">{{user.lastName}}</td>
+ <td att-table-body width="10%">{{user.email}}</td>
+ <td att-table-body width="10%">{{user.lastAccess}}</td>
+ <td att-table-body width="10%">{{user.remaining}}</td>
+ <td att-table-body width="10%"><div ng-hide="user.delete=='yes'">Current Session</div>
+ <div ng-click="removeSession(user.sessionId);" ng-hide="user.delete=='no'" style="font-size:20px;"><a href="javascript:void(0)" class="icon-trash"></a></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+
+
+
+
+<script>
+app.controller('usageListController', function ($scope,$interval,$http,$modal,modalService){
+
+ $scope.users=${model};console.log($scope.users);
+ $scope.removeSession = function(sessionId) {
+ modalService.popupConfirmWin("Confirm","You are about to expel this user from the application. All of their unsaved data will be lost. Do you want to continue?",
+ function(){
+ $http.get("usage_list/removeSession?deleteSessionId="+sessionId).success(function(response){$scope.users=response;});
+ });
+ }
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp
new file mode 100644
index 000000000..ff6c985e3
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp
@@ -0,0 +1,492 @@
+<%--
+ ================================================================================
+ 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>
+ <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.orgUserId}";
+ 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-app/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml
new file mode 100644
index 000000000..28060a7c4
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
new file mode 100644
index 000000000..6638b4bc7
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
@@ -0,0 +1,44 @@
+<?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.rnotebookintegration.domain">
+
+
+ <!-- RNotebookIntegration mapping details -->
+ <class name="RNoteBookCredentials" table="rcloudinvocation">
+ <id name="token" column="ID">
+
+ </id>
+ <property name="createdDate" column="created"/>
+ <property name="userString" column="userInfo"/>
+ <property name="notebookID" column="notebookID"/>
+ <property name="parametersString" column="parameters"/>
+ <property name="tokenReadDate" column="tokenreaddate"/>
+
+ </class>
+
+
+
+</hibernate-mapping>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml
new file mode 100644
index 000000000..3d8852cb3
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/custom_header_include.jsp
new file mode 100644
index 000000000..0bd373b75
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/custom_js_include.jsp
new file mode 100644
index 000000000..5abbb5ad0
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/date_end_field_run_sql.jsp
new file mode 100644
index 000000000..fd2f9c366
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/date_start_field_run_sql.jsp
new file mode 100644
index 000000000..698272621
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/default_field_run_sql.jsp
new file mode 100644
index 000000000..95c99f378
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/disclaimer.jsp
new file mode 100644
index 000000000..d5d252492
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/error_include.jsp
new file mode 100644
index 000000000..8158e6046
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/error_page.jsp
new file mode 100644
index 000000000..8ee73be01
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/footer.jsp
new file mode 100644
index 000000000..c4fbe9e84
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp
new file mode 100644
index 000000000..53959482c
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_drill_down_report.jsp
@@ -0,0 +1,601 @@
+<%--
+ ================================================================================
+ 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
+
+
+//-->
+</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);
+ setParams(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="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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_import_semaphore.jsp
new file mode 100644
index 000000000..d73a7fe25
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_semaphore.jsp
new file mode 100644
index 000000000..39eafb249
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_sql.jsp
new file mode 100644
index 000000000..c685bb138
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_table_cols.jsp
new file mode 100644
index 000000000..9dec6a53a
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/popup_testrun_sql.jsp
new file mode 100644
index 000000000..a5dbd5026
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_csv.jsp
new file mode 100644
index 000000000..811580474
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_pdf.jsp
new file mode 100644
index 000000000..e5ae9ddef
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_download_xls.jsp
new file mode 100644
index 000000000..a82470d81
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_ebz.jsp
new file mode 100644
index 000000000..8d42b65ba
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp
new file mode 100644
index 000000000..014f98ac5
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_import.jsp
@@ -0,0 +1,69 @@
+<%--
+ ================================================================================
+ 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">
+
+
+<br><br>
+
+<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" />
+
+</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-app/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_sample.jsp
new file mode 100644
index 000000000..cfbfad14e
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_search.jsp
new file mode 100644
index 000000000..480bdbcb9
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp
new file mode 100644
index 000000000..cdfe943a5
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/report_wizard.jsp
@@ -0,0 +1,309 @@
+<%--
+ ================================================================================
+ 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" %>
+<html>
+ <body>
+<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" />
+
+<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: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 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 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>
+<%--<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-app/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/test_field_run_sql.jsp
new file mode 100644
index 000000000..2fdcee46e
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/test_run_sql.jsp
new file mode 100644
index 000000000..1c30437bc
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp
new file mode 100644
index 000000000..ca091bab5
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/folderNav.jsp
@@ -0,0 +1,483 @@
+<%--
+ ================================================================================
+ 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.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-app/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp
new file mode 100644
index 000000000..951bf379c
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/tree/testTree.jsp
@@ -0,0 +1,248 @@
+<%--
+ ================================================================================
+ 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.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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_adhoc_schedule.jsp
new file mode 100644
index 000000000..76fe7a58c
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_chart.jsp
new file mode 100644
index 000000000..959adc230
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_add_multi.jsp
new file mode 100644
index 000000000..ab67b8026
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_edit.jsp
new file mode 100644
index 000000000..cc6b68b08
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_list.jsp
new file mode 100644
index 000000000..454cf7d5a
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_columns_order_all.jsp
new file mode 100644
index 000000000..fc1870c6d
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_data_forecasting.jsp
new file mode 100644
index 000000000..33cabe7e8
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_definition.jsp
new file mode 100644
index 000000000..ec61e3fd0
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_edit.jsp
new file mode 100644
index 000000000..7589f73fd
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_filters_list.jsp
new file mode 100644
index 000000000..71898b35b
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_edit.jsp
new file mode 100644
index 000000000..185f65c1f
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_form_fields_list.jsp
new file mode 100644
index 000000000..8470dbbcf
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_javascript.jsp
new file mode 100644
index 000000000..d225cb568
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_log.jsp
new file mode 100644
index 000000000..2b1703852
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_map.jsp
new file mode 100644
index 000000000..50fe1da68
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_run.jsp
new file mode 100644
index 000000000..688e7ff74
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule.jsp
new file mode 100644
index 000000000..b8d1ad1ca
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_formfield_include.jsp
new file mode 100644
index 000000000..206e23de1
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_multiple.jsp
new file mode 100644
index 000000000..70c9812a8
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only.jsp
new file mode 100644
index 000000000..ad3c612ee
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_schedule_only_from_search.jsp
new file mode 100644
index 000000000..af951cc23
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_edit.jsp
new file mode 100644
index 000000000..18c450ba9
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_list.jsp
new file mode 100644
index 000000000..63bf9cd32
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sorting_order_all.jsp
new file mode 100644
index 000000000..9e04f2b84
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_sql_def.jsp
new file mode 100644
index 000000000..d8152c05f
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_edit.jsp
new file mode 100644
index 000000000..88ecda311
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_tables_list.jsp
new file mode 100644
index 000000000..47fd435ff
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/fusion/raptor/wizard_user_access.jsp
new file mode 100644
index 000000000..b5c68045f
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/jsp/error.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/error.jsp
new file mode 100644
index 000000000..2a48507c9
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/jsp/leafletMap.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/leafletMap.jsp
new file mode 100644
index 000000000..77981f736
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/leafletMap.jsp
@@ -0,0 +1,288 @@
+<%--
+ ================================================================================
+ 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="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
+ <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
+
+ <style>
+ #map {
+ height: 450px;
+ width: 800px;
+ }
+ .animateOff {
+ color: red;
+ }
+ .animateOn {
+ color: green;
+ }
+ </style>
+
+ <script>
+
+ var siteData = [
+ {"id": "cb1ma", "name": "Cambridge, MA", "title": "100G", "lat": 42.3736, "lon": -71.11},
+ {"id": "st6wa", "name": "Seattle, WA", "title": "40G", "lat": 47.6097, "lon": -122.33},
+ {"id": "cgcil", "name": "Chicago, IL", "title": "310G", "lat": 41.8819, "lon": -87.627},
+ {"id": "n54ny", "name": "New York, NY", "title": "160G", "lat": 40.7127, "lon": -74.005},
+ {"id": "cl2oh", "name": "Columbus, OH", "title": "300G", "lat": 39.9833, "lon": -82.983},
+ {"id": "phlpa", "name": "Philadelphia, PA", "title": "210G", "lat": 39.95, "lon": -75.166},
+ {"id": "ptdor", "name": "Portland, OR", "title": "90G", "lat": 45.52, "lon": -122.68},
+ {"id": "dvmco", "name": "Denver, CO", "title": "170G", "lat": 39.7391, "lon": -104.98},
+ {"id": "kc9mo", "name": "Kansas City, MO", "title": "100G", "lat": 39.0997, "lon": -94.578},
+ {"id": "sffca", "name": "San Fransisco, CA", "title": "130G", "lat": 37.7833, "lon": -122.41},
+ {"id": "sl9mo", "name": "St Louis, MO", "title": "330G", "lat": 38.6272, "lon": -90.197},
+ {"id": "wswdc", "name": "Washington, DC", "title": "210G", "lat": 38.8951, "lon": -77.036},
+ {"id": "sc1ca", "name": "Sacramento, CA", "title": "250G", "lat": 38.5555, "lon": -121.46},
+ {"id": "slkut", "name": "Salt Lake City, UT", "title": "250G", "lat": 40.75, "lon": -111.88},
+ {"id": "rlgnc", "name": "Raleigh, NC", "title": "180G", "lat": 35.8188, "lon": -78.644},
+ {"id": "nsvtn", "name": "Nashville, TN", "title": "210G", "lat": 36.1666, "lon": -86.783},
+ {"id": "la2ca", "name": "Los Angeles, CA", "title": "180G", "lat": 34.05, "lon": -118.25},
+ {"id": "dlstx", "name": "Dallas, TX", "title": "330G", "lat": 32.7758, "lon": -96.796},
+ {"id": "attga", "name": "Atlanta, GA", "title": "280G", "lat": 33.755, "lon": -84.39},
+ {"id": "nwrla", "name": "New Orleans, LA", "title": "180G", "lat": 29.9647, "lon": -90.07},
+ {"id": "sd2ca", "name": "San Diego, CA", "title": "150G", "lat": 32.715, "lon": -117.16},
+ {"id": "phmaz", "name": "Phoenix, AZ", "title": "210G", "lat": 33.45, "lon": -112.06},
+ {"id": "santx", "name": "San Antonio, TX", "title": "220G", "lat": 29.4166, "lon": -98.5},
+ {"id": "hs1tx", "name": "Houston, TX", "title": "290G", "lat": 29.7627, "lon": -95.383},
+ {"id": "ormfl", "name": "Orlando, FL", "title": "130G", "lat": 28.4158, "lon": -81.298},
+ ];
+
+ var pipeData = [
+ {"id_a": "st6wa", "id_z": "ptdor", "name": "Seattle, WA to Portland, OR", "title": "60G", "lat_a": 47.6097, "lon_a": -122.33, "lat_z": 45.52, "lon_z": -122.68},
+ {"id_a": "sc1ca", "id_z": "slkut", "name": "Sacramento, CA to Salt Lake City, UT", "title": "200G", "lat_a": 38.5555, "lon_a": -121.46, "lat_z": 40.75, "lon_z": -111.88},
+ {"id_a": "hs1tx", "id_z": "ormfl", "name": "Houston, TX to Orlando, FL", "title": "130G", "lat_a": 29.7627, "lon_a": -95.383, "lat_z": 28.4158, "lon_z": -81.298},
+ {"id_a": "nwrla", "id_z": "ormfl", "name": "New Orleans, LA to Orlando, FL", "title": "90G", "lat_a": 29.9647, "lon_a": -90.07, "lat_z": 28.4158, "lon_z": -81.298},
+ {"id_a": "n54ny", "id_z": "phlpa", "name": "New York, NY to Philadelphia, PA", "title": "240G", "lat_a": 40.7127, "lon_a": -74.005, "lat_z": 39.95, "lon_z": -75.166},
+ {"id_a": "n54ny", "id_z": "wswdc", "name": "New York, NY to Washington, DC", "title": "380G", "lat_a": 40.7127, "lon_a": -74.005, "lat_z": 38.8951, "lon_z": -77.036},
+ {"id_a": "rlgnc", "id_z": "attga", "name": "Raleigh, NC to Atlanta, GA", "title": "160G", "lat_a": 35.8188, "lon_a": -78.644, "lat_z": 33.755, "lon_z": -84.39},
+// {"id_a": "st6wa", "id_z": "sffca", "name": "Seattle, WA to San Fransisco, CA", "title": "40G", "lat_a": 47.6097, "lon_a": -122.33, "lat_z": 37.7833, "lon_z": -122.41},
+ {"id_a": "la2ca", "id_z": "sd2ca", "name": "Los Angeles, CA to San Diego, CA", "title": "160G", "lat_a": 34.05, "lon_a": -118.25, "lat_z": 32.715, "lon_z": -117.16},
+ {"id_a": "sd2ca", "id_z": "phmaz", "name": "San Diego, CA to Phoenix, AZ", "title": "200G", "lat_a": 32.715, "lon_a": -117.16, "lat_z": 33.45, "lon_z": -112.06},
+ {"id_a": "ptdor", "id_z": "sffca", "name": "Portland, OR to San Fransisco, CA", "title": "70G", "lat_a": 45.52, "lon_a": -122.68, "lat_z": 37.7833, "lon_z": -122.41},
+ {"id_a": "sffca", "id_z": "sc1ca", "name": "San Fransisco, CA to Sacramento, CA", "title": "80G", "lat_a": 37.7833, "lon_a": -122.41, "lat_z": 38.5555, "lon_z": -121.46},
+ {"id_a": "la2ca", "id_z": "slkut", "name": "Los Angeles, CA to Salt Lake City, UT", "title": "200G", "lat_a": 34.05, "lon_a": -118.25, "lat_z": 40.75, "lon_z": -111.88},
+ {"id_a": "cgcil", "id_z": "cl2oh", "name": "Chicago, IL to Columbus, OH", "title": "200G", "lat_a": 41.8819, "lon_a": -87.627, "lat_z": 39.9833, "lon_z": -82.983},
+ {"id_a": "cl2oh", "id_z": "phlpa", "name": "Columbus, OH to Philadelphia, PA", "title": "240G", "lat_a": 39.9833, "lon_a": -82.983, "lat_z": 39.95, "lon_z": -75.166},
+ {"id_a": "phlpa", "id_z": "wswdc", "name": "Philadelphia, PA to Washington, DC", "title": "240G", "lat_a": 39.95, "lon_a": -75.166, "lat_z": 38.8951, "lon_z": -77.036},
+ {"id_a": "sffca", "id_z": "la2ca", "name": "San Fransisco, CA to Los Angeles, CA", "title": "280G", "lat_a": 37.7833, "lon_a": -122.41, "lat_z": 34.05, "lon_z": -118.25},
+ {"id_a": "dvmco", "id_z": "cgcil", "name": "Denver, CO to Chicago, IL", "title": "200G", "lat_a": 39.7391, "lon_a": -104.98, "lat_z": 41.8819, "lon_z": -87.627},
+ {"id_a": "dlstx", "id_z": "hs1tx", "name": "Dallas, TX to Houston, TX", "title": "360G", "lat_a": 32.7758, "lon_a": -96.796, "lat_z": 29.7627, "lon_z": -95.383},
+ {"id_a": "nsvtn", "id_z": "cl2oh", "name": "Nashville, TN to Columbus, OH", "title": "200G", "lat_a": 36.1666, "lon_a": -86.783, "lat_z": 39.9833, "lon_z": -82.983},
+ {"id_a": "cb1ma", "id_z": "phlpa", "name": "Cambridge, MA to Philadelphia, PA", "title": "110G", "lat_a": 42.3736, "lon_a": -71.11, "lat_z": 39.95, "lon_z": -75.166},
+// {"id_a": "sffca", "id_z": "cgcil", "name": "San Fransisco, CA to Chicago, IL", "title": "170G", "lat_a": 37.7833, "lon_a": -122.41, "lat_z": 41.8819, "lon_z": -87.627},
+ {"id_a": "sffca", "id_z": "dvmco", "name": "San Fransisco, CA to Denver, CO", "title": "90G", "lat_a": 37.7833, "lon_a": -122.41, "lat_z": 39.7391, "lon_z": -104.98},
+ {"id_a": "sffca", "id_z": "sl9mo", "name": "San Fransisco, CA to St Louis, MO", "title": "80G", "lat_a": 37.7833, "lon_a": -122.41, "lat_z": 38.6272, "lon_z": -90.197},
+ {"id_a": "santx", "id_z": "dlstx", "name": "San Antonio, TX to Dallas, TX", "title": "180G", "lat_a": 29.4166, "lon_a": -98.5, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "santx", "id_z": "hs1tx", "name": "San Antonio, TX to Houston, TX", "title": "240G", "lat_a": 29.4166, "lon_a": -98.5, "lat_z": 29.7627, "lon_z": -95.383},
+ {"id_a": "sl9mo", "id_z": "wswdc", "name": "St Louis, MO to Washington, DC", "title": "280G", "lat_a": 38.6272, "lon_a": -90.197, "lat_z": 38.8951, "lon_z": -77.036},
+ {"id_a": "nwrla", "id_z": "attga", "name": "New Orleans, LA to Atlanta, GA", "title": "200G", "lat_a": 29.9647, "lon_a": -90.07, "lat_z": 33.755, "lon_z": -84.39},
+ {"id_a": "la2ca", "id_z": "dlstx", "name": "Los Angeles, CA to Dallas, TX", "title": "280G", "lat_a": 34.05, "lon_a": -118.25, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "slkut", "id_z": "dvmco", "name": "Salt Lake City, UT to Denver, CO", "title": "200G", "lat_a": 40.75, "lon_a": -111.88, "lat_z": 39.7391, "lon_z": -104.98},
+ {"id_a": "dvmco", "id_z": "dlstx", "name": "Denver, CO to Dallas, TX", "title": "200G", "lat_a": 39.7391, "lon_a": -104.98, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "kc9mo", "id_z": "sl9mo", "name": "Kansas City, MO to St Louis, MO", "title": "280G", "lat_a": 39.0997, "lon_a": -94.578, "lat_z": 38.6272, "lon_z": -90.197},
+ {"id_a": "kc9mo", "id_z": "dlstx", "name": "Kansas City, MO to Dallas, TX", "title": "280G", "lat_a": 39.0997, "lon_a": -94.578, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "cgcil", "id_z": "wswdc", "name": "Chicago, IL to Washington, DC", "title": "200G", "lat_a": 41.8819, "lon_a": -87.627, "lat_z": 38.8951, "lon_z": -77.036},
+ {"id_a": "cgcil", "id_z": "sl9mo", "name": "Chicago, IL to St Louis, MO", "title": "370G", "lat_a": 41.8819, "lon_a": -87.627, "lat_z": 38.6272, "lon_z": -90.197},
+ {"id_a": "n54ny", "id_z": "cb1ma", "name": "New York, NY to Cambridge, MA", "title": "80G", "lat_a": 40.7127, "lon_a": -74.005, "lat_z": 42.3736, "lon_z": -71.11},
+ {"id_a": "st6wa", "id_z": "dvmco", "name": "Seattle, WA to Denver, CO", "title": "40G", "lat_a": 47.6097, "lon_a": -122.33, "lat_z": 39.7391, "lon_z": -104.98},
+ {"id_a": "la2ca", "id_z": "phmaz", "name": "Los Angeles, CA to Phoenix, AZ", "title": "260G", "lat_a": 34.05, "lon_a": -118.25, "lat_z": 33.45, "lon_z": -112.06},
+ {"id_a": "phmaz", "id_z": "santx", "name": "Phoenix, AZ to San Antonio, TX", "title": "160G", "lat_a": 33.45, "lon_a": -112.06, "lat_z": 29.4166, "lon_z": -98.5},
+ {"id_a": "sl9mo", "id_z": "dlstx", "name": "St Louis, MO to Dallas, TX", "title": "200G", "lat_a": 38.6272, "lon_a": -90.197, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "dlstx", "id_z": "nsvtn", "name": "Dallas, TX to Nashville, TN", "title": "160G", "lat_a": 32.7758, "lon_a": -96.796, "lat_z": 36.1666, "lon_z": -86.783},
+ {"id_a": "wswdc", "id_z": "attga", "name": "Washington, DC to Atlanta, GA", "title": "380G", "lat_a": 38.8951, "lon_a": -77.036, "lat_z": 33.755, "lon_z": -84.39},
+ {"id_a": "st6wa", "id_z": "cgcil", "name": "Seattle, WA to Chicago, IL", "title": "70G", "lat_a": 47.6097, "lon_a": -122.33, "lat_z": 41.8819, "lon_z": -87.627},
+ {"id_a": "dvmco", "id_z": "kc9mo", "name": "Denver, CO to Kansas City, MO", "title": "100G", "lat_a": 39.7391, "lon_a": -104.98, "lat_z": 39.0997, "lon_z": -94.578},
+ {"id_a": "phmaz", "id_z": "dlstx", "name": "Phoenix, AZ to Dallas, TX", "title": "210G", "lat_a": 33.45, "lon_a": -112.06, "lat_z": 32.7758, "lon_z": -96.796},
+ {"id_a": "cgcil", "id_z": "n54ny", "name": "Chicago, IL to New York, NY", "title": "280G", "lat_a": 41.8819, "lon_a": -87.627, "lat_z": 40.7127, "lon_z": -74.005},
+ {"id_a": "sl9mo", "id_z": "nsvtn", "name": "St Louis, MO to Nashville, TN", "title": "170G", "lat_a": 38.6272, "lon_a": -90.197, "lat_z": 36.1666, "lon_z": -86.783},
+ {"id_a": "dlstx", "id_z": "attga", "name": "Dallas, TX to Atlanta, GA", "title": "240G", "lat_a": 32.7758, "lon_a": -96.796, "lat_z": 33.755, "lon_z": -84.39},
+ {"id_a": "hs1tx", "id_z": "nwrla", "name": "Houston, TX to New Orleans, LA", "title": "170G", "lat_a": 29.7627, "lon_a": -95.383, "lat_z": 29.9647, "lon_z": -90.07},
+ {"id_a": "ormfl", "id_z": "attga", "name": "Orlando, FL to Atlanta, GA", "title": "210G", "lat_a": 28.4158, "lon_a": -81.298, "lat_z": 33.755, "lon_z": -84.39},
+ {"id_a": "nsvtn", "id_z": "attga", "name": "Nashville, TN to Atlanta, GA", "title": "240G", "lat_a": 36.1666, "lon_a": -86.783, "lat_z": 33.755, "lon_z": -84.39},
+ {"id_a": "wswdc", "id_z": "rlgnc", "name": "Washington, DC to Raleigh, NC", "title": "200G", "lat_a": 38.8951, "lon_a": -77.036, "lat_z": 35.8188, "lon_z": -78.644}
+ ];
+ </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 key="id">Site</th>
+ <th att-table-header 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 key="id">Link</th>
+ <th att-table-header 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);
+ L.tileLayer('', {maxZoom:18}).addTo(map); //TODO configure
+
+ 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>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/login_external.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/login_external.jsp
new file mode 100644
index 000000000..b4e3c0932
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/login_external.jsp
@@ -0,0 +1,154 @@
+<%--
+ ================================================================================
+ 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 -->
+ <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" >
+ <link rel="stylesheet" type="text/css" href="static/fusion/css/jquery-ui.css">
+ <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/angular-cookies.js"></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/ebz/angular_js/app.js"></script>
+ <script src= "app/fusion/external/ebz/angular_js/gestures.js"></script>
+ <script src="static/js/modalService.js"></script>
+ <script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
+
+ <style>
+ .terms {
+ font-family: Verdana,Arial,Helvetica, sans-serif;
+ font-size: 9px;
+ }
+
+ </style>
+ </head>
+ <body style="padding-top: 15px;">
+ <div ng-controller="externalLoginController">
+ <div class="centered style="-webkit-transform: translateZ(0);background:white, z-index:0;">
+ <div align="center" id="errorInfo" style="display:none;float:left;font-size:12px;margin-left:5px"><span style="color:red">Invaild username or password, Please try again</span></div>
+ <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>
+ <label>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<label class="form-field__label">Login ID:</label>
+ </label>
+ <input type="text" class="fn-ebz-text" ng-model="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" ng-model="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="image" ng-click="loginExternal();" src="static/fusion/images/login_button.gif" alt="Login" />
+ <br>
+ </div>
+ </div>
+ <br/><br/><br/><br/><br/><br/><br/>
+ <div id="footer">
+ </div>
+ </div>
+ </body>
+<script>
+app.controller("externalLoginController", function ($scope) {
+ // Table Data
+
+ $scope.viewPerPage = 200;
+ $scope.currentPage = 2;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ $scope.loginId="";
+ $scope.password="";
+ $scope.loginError=true;
+ $scope.viewPerPage = 200;
+ $scope.currentPage = 2;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ $scope.loginId="";
+ $scope.password="";
+
+
+ $scope.loginExternal = function() {
+
+ $.ajax({
+ url: "login_external/login?"+"loginId="+$scope.loginId+"&password="+$scope.password,
+ type : "POST",
+ success:function (response){
+ if(response=="success"){
+ window.location.href = 'welcome.htm';
+ }else{
+ $("#errorInfo").show();
+ }
+ },
+ error:function( jqXHR, status,error ){
+ $("#errorInfo").show();
+ }
+
+ });
+
+ };
+
+
+ /**
+ $scope.loginExternal = function() {
+
+
+ var redirectUrl = "login_external/login";
+ var form = $('<form action="' + redirectUrl + '" method="post">' +
+ '<input type="hidden" name="loginId" value='+$scope.loginId+' />' +
+ '<input type="hidden" name="password" value='+$scope.password+' />' +
+ '</form>');
+
+ $('body').append(form);
+ $(form).submit();
+
+
+ };
+ */
+
+});
+</script>
+</html>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/net_map.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/net_map.jsp
new file mode 100644
index 000000000..2a341467f
--- /dev/null
+++ b/ecomp-sdk-app/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-app/src/main/webapp/WEB-INF/jsp/user_profile.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/user_profile.jsp
new file mode 100644
index 000000000..cb5c4e3bf
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/user_profile.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.
+ ================================================================================
+ --%>
+<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %>
+<div ng-controller="userProfileSampleController">
+ <div>
+ <h1 class="heading1" style="margin-top:20px;">Profile Search</h1>
+ <div style="margin-top:30px">
+ <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 key="id">User ID</th>
+ <th att-table-header key="last_name">Last Name</th>
+ <th att-table-header key="first_name">First Name</th>
+ <th att-table-header key="email">Email</th>
+ <th att-table-header key="org_user_id">OrgUserId</th>
+ <th att-table-header key="org_manager_userid">Manager OrgUserId</th>
+ </tr>
+ </thead>
+ <tbody att-table-row type="body" row-repeat="rowData in tableData">
+ <tr>
+ <td att-table-body >{{rowData.id}}</td>
+ <td att-table-body >{{rowData.last_name}}</td>
+ <td att-table-body >{{rowData.first_name}}</td>
+ <td att-table-body >{{rowData.email}}</td>
+ <td att-table-body >{{rowData.orgUserId}}</td>
+ <td att-table-body >{{rowData.org_manager_userid}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="fn-ebz-container">
+ Rows Per Page:
+ <input class="fn-ebz-text" type="text" ng-model="viewPerPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Current Page:
+ <input class="fn-ebz-text" type="text" ng-model="currentPage" size="5" style="width: 47px;">
+ </div>
+ <div class="fn-ebz-container">
+ Total Page(s):
+ <input class="fn-ebz-text" type="text" ng-model="totalPage" size="5" readonly="true" style="width: 47px;">
+ </div>
+</div>
+
+<script>
+app.controller("userProfileSampleController", function ($scope,$http,modalService, $modal) {
+ // Table Data
+ $scope.tableData=${model.customerInfo};
+ console.log($scope.tableData);
+ $scope.viewPerPage = 20;
+ $scope.scrollViewsPerPage = 2;
+ $scope.currentPage = 1;
+ $scope.totalPage;
+ $scope.searchCategory = "";
+ $scope.searchString = "";
+ // modalService.showSuccess('','Modal Sample') ;
+ for(x in $scope.tableData){
+ if($scope.tableData[x].active_yn=='Y')
+ $scope.tableData[x].active_yn=true;
+ else
+ $scope.tableData[x].active_yn=false;
+ }
+
+});
+</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/welcome.jsp b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/welcome.jsp
new file mode 100644
index 000000000..d7d3b8967
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/jsp/welcome.jsp
@@ -0,0 +1,629 @@
+<%--
+ ================================================================================
+ 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="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/sample/css/scribble.css" />
+
+<link rel="stylesheet" type="text/css" href="static/fusion/sample/css/welcome.css" />
+
+<script src="static/js/jquery-1.10.2.js"></script>
+<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>
+
+<!-- <script src="static/fusion/js/jquery.resize.js"></script> -->
+<link rel="stylesheet" href="static/fusion/css/att_angular_gridster/ui-gridster.css"/>
+<link rel="stylesheet" href="static/fusion/css/att_angular_gridster/sandbox-gridster.css"/>
+<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/sandbox/att-abs-tpls.js" type="text/javascript"></script>
+
+<!--for line Chart and Area Chart-->
+<script src="static/fusion/d3/js/d3.v3.min.js"></script>
+<script src="static/fusion/d3/js/nv.d3.min.js"></script>
+<script src="static/fusion/d3/js/models/axis.min.js"></script>
+
+<!-- Style for line Chart and area chart -->
+<link rel="stylesheet" type="text/css" href="static/fusion/d3/css/nv.d3.css">
+
+
+<script type="text/javascript" src="static/fusion/sample/js/FusionCharts.js"></script> <!-- Charts -->
+<script type="text/javascript" src="static/fusion/sample/js/charts.js"></script> <!-- Charts -->
+<script type="text/javascript" src="static/fusion/sample/js/scribble.js"></script> <!-- Scribble -->
+
+<!-- Data for Line and Area Charts -->
+<script>
+historicalBarChart=[{"type":"line","key":"AP_CPU","yAxis":"1","values":[{"x":1388552400000,"y":2.13},{"x":1388552400000,"y":5.0},{"x":1388552400000,"y":2.36},{"x":1388552400000,"y":10.0},{"x":1391230800000,"y":3.15},{"x":1391230800000,"y":2.88},{"x":1391230800000,"y":3.0},{"x":1391230800000,"y":4.0},{"x":1393650000000,"y":8.0},{"x":1393650000000,"y":3.93},{"x":1393650000000,"y":4.27},{"x":1393650000000,"y":4.0},{"x":1396324800000,"y":4.25},{"x":1396324800000,"y":5.35},{"x":1396324800000,"y":5.92},{"x":1396324800000,"y":12.0},{"x":1398916800000,"y":5.55},{"x":1398916800000,"y":4.89},{"x":1398916800000,"y":5.01},{"x":1398916800000,"y":3.27},{"x":1401595200000,"y":6.27},{"x":1401595200000,"y":9.17},{"x":1401595200000,"y":9.31},{"x":1401595200000,"y":6.07},{"x":1404187200000,"y":8.37},{"x":1404187200000,"y":8.11},{"x":1404187200000,"y":8.84},{"x":1404187200000,"y":8.93},{"x":1406865600000,"y":11.79},{"x":1406865600000,"y":12.22},{"x":1406865600000,"y":12.6},{"x":1406865600000,"y":11.61},{"x":1409544000000,"y":15.27},{"x":1409544000000,"y":19.09},{"x":1409544000000,"y":16.09},{"x":1409544000000,"y":18.66},{"x":1412136000000,"y":18.4},{"x":1412136000000,"y":22.05},{"x":1412136000000,"y":21.66},{"x":1412136000000,"y":19.04},{"x":1414814400000,"y":19.13},{"x":1414814400000,"y":19.61},{"x":1414814400000,"y":17.61},{"x":1414814400000,"y":17.5},{"x":1417410000000,"y":19.0},{"x":1417410000000,"y":15.73},{"x":1420088400000,"y":9.67},{"x":1420088400000,"y":15.19},{"x":1420088400000,"y":15.02},{"x":1420088400000,"y":9.62333333333333},{"x":1422766800000,"y":16.95},{"x":1422766800000,"y":14.29},{"x":1425186000000,"y":12.9},{"x":1425186000000,"y":16.1166666666667}]},{"type":"line","key":"ROUTER_CPU","yAxis":"1","values":[{"x":1388552400000,"y":3.0},{"x":1388552400000,"y":4.0},{"x":1388552400000,"y":4.89},{"x":1388552400000,"y":7.0},{"x":1391230800000,"y":4.57},{"x":1391230800000,"y":4.0},{"x":1391230800000,"y":4.0},{"x":1391230800000,"y":7.0},{"x":1393650000000,"y":7.0},{"x":1393650000000,"y":4.18},{"x":1393650000000,"y":5.0},{"x":1393650000000,"y":5.0},{"x":1396324800000,"y":5.0},{"x":1396324800000,"y":5.0},{"x":1396324800000,"y":5.06},{"x":1396324800000,"y":6.0},{"x":1398916800000,"y":5.0},{"x":1398916800000,"y":5.0},{"x":1398916800000,"y":5.0},{"x":1398916800000,"y":5.0},{"x":1401595200000,"y":6.0},{"x":1401595200000,"y":6.09},{"x":1401595200000,"y":6.0},{"x":1401595200000,"y":6.0},{"x":1404187200000,"y":6.36},{"x":1404187200000,"y":7.0},{"x":1404187200000,"y":7.0},{"x":1404187200000,"y":7.0},{"x":1406865600000,"y":7.0},{"x":1406865600000,"y":7.02},{"x":1406865600000,"y":7.24},{"x":1406865600000,"y":7.0},{"x":1409544000000,"y":8.23},{"x":1409544000000,"y":8.11},{"x":1409544000000,"y":8.12},{"x":1409544000000,"y":8.03},{"x":1412136000000,"y":9.0},{"x":1412136000000,"y":8.93},{"x":1412136000000,"y":8.57},{"x":1412136000000,"y":9.0},{"x":1414814400000,"y":5.97},{"x":1414814400000,"y":6.0},{"x":1414814400000,"y":9.0},{"x":1414814400000,"y":9.0},{"x":1417410000000,"y":9.0},{"x":1417410000000,"y":8.78},{"x":1420088400000,"y":3.0},{"x":1420088400000,"y":2.01},{"x":1420088400000,"y":3.0},{"x":1420088400000,"y":3.01},{"x":1422766800000,"y":2.67},{"x":1422766800000,"y":2.0},{"x":1425186000000,"y":2.8},{"x":1425186000000,"y":3.63333333333333}]},{"type":"line","key":"SCTP_CPU","yAxis":"1","values":[{"x":1388552400000,"y":7.0},{"x":1388552400000,"y":10.0},{"x":1388552400000,"y":8.27},{"x":1388552400000,"y":8.0},{"x":1391230800000,"y":10.02},{"x":1391230800000,"y":8.04},{"x":1391230800000,"y":9.0},{"x":1391230800000,"y":10.0},{"x":1393650000000,"y":12.0},{"x":1393650000000,"y":10.04},{"x":1393650000000,"y":11.16},{"x":1393650000000,"y":10.0},{"x":1396324800000,"y":10.7},{"x":1396324800000,"y":13.31},{"x":1396324800000,"y":12.73},{"x":1396324800000,"y":9.0},{"x":1398916800000,"y":12.41},{"x":1398916800000,"y":11.95},{"x":1398916800000,"y":12.82},{"x":1398916800000,"y":9.58},{"x":1401595200000,"y":11.28},{"x":1401595200000,"y":14.01},{"x":1401595200000,"y":14.63},{"x":1401595200000,"y":11.83},{"x":1404187200000,"y":14.06},{"x":1404187200000,"y":13.96},{"x":1404187200000,"y":14.66},{"x":1404187200000,"y":14.36},{"x":1406865600000,"y":16.6},{"x":1406865600000,"y":16.95},{"x":1406865600000,"y":17.11},{"x":1406865600000,"y":15.94},{"x":1409544000000,"y":19.86},{"x":1409544000000,"y":22.97},{"x":1409544000000,"y":21.56},{"x":1409544000000,"y":24.55},{"x":1412136000000,"y":22.66},{"x":1412136000000,"y":26.79},{"x":1412136000000,"y":26.54},{"x":1412136000000,"y":25.35},{"x":1414814400000,"y":21.0},{"x":1414814400000,"y":20.35},{"x":1414814400000,"y":21.93},{"x":1414814400000,"y":23.63},{"x":1417410000000,"y":24.0},{"x":1417410000000,"y":21.43},{"x":1420088400000,"y":12.63},{"x":1420088400000,"y":25.14},{"x":1420088400000,"y":21.85},{"x":1420088400000,"y":12.5766666666667},{"x":1422766800000,"y":26.3},{"x":1422766800000,"y":24.4},{"x":1425186000000,"y":23.3833333333333},{"x":1425186000000,"y":24.5833333333333}]},{"type":"line","key":"DP_CPU","yAxis":"1","values":[{"x":1388552400000,"y":2.0},{"x":1388552400000,"y":5.0},{"x":1388552400000,"y":2.17},{"x":1388552400000,"y":2.0},{"x":1391230800000,"y":3.01},{"x":1391230800000,"y":2.56},{"x":1391230800000,"y":3.0},{"x":1391230800000,"y":9.0},{"x":1393650000000,"y":10.0},{"x":1393650000000,"y":3.64},{"x":1393650000000,"y":4.06},{"x":1393650000000,"y":4.0},{"x":1396324800000,"y":4.04},{"x":1396324800000,"y":5.11},{"x":1396324800000,"y":5.9},{"x":1396324800000,"y":8.0},{"x":1398916800000,"y":5.08},{"x":1398916800000,"y":4.65},{"x":1398916800000,"y":4.74},{"x":1398916800000,"y":2.98},{"x":1401595200000,"y":6.13},{"x":1401595200000,"y":8.98},{"x":1401595200000,"y":9.22},{"x":1401595200000,"y":5.84},{"x":1404187200000,"y":8.12},{"x":1404187200000,"y":7.89},{"x":1404187200000,"y":8.41},{"x":1404187200000,"y":8.47},{"x":1406865600000,"y":11.06},{"x":1406865600000,"y":11.84},{"x":1406865600000,"y":11.92},{"x":1406865600000,"y":10.8},{"x":1409544000000,"y":14.58},{"x":1409544000000,"y":18.39},{"x":1409544000000,"y":15.5},{"x":1409544000000,"y":18.33},{"x":1412136000000,"y":18.01},{"x":1412136000000,"y":21.3},{"x":1412136000000,"y":21.11},{"x":1412136000000,"y":18.37},{"x":1414814400000,"y":18.59},{"x":1414814400000,"y":18.81},{"x":1414814400000,"y":17.13},{"x":1414814400000,"y":16.92},{"x":1417410000000,"y":18.0},{"x":1417410000000,"y":15.18},{"x":1420088400000,"y":9.16},{"x":1420088400000,"y":12.13},{"x":1420088400000,"y":11.76},{"x":1420088400000,"y":9.31},{"x":1422766800000,"y":13.47},{"x":1422766800000,"y":13.41},{"x":1425186000000,"y":12.2333333333333},{"x":1425186000000,"y":12.4}]}];
+</script>
+
+ <script>
+ $(function(){
+
+
+ /* area chart and line chart titles */
+ d3.select("#areaChart svg").append("text").attr("x", 200).attr("y", 15)
+ .attr("text-anchor", "middle").style("font-size", "16px").text(
+ "Data Usage in NJ Locations");
+
+ d3.select("#lineChart svg").append("text").attr("x", 200).attr("y", 15)
+ .attr("text-anchor", "middle").style("font-size", "16px").text(
+ "Data Usage in NJ Locations");
+ });
+</script>
+
+<div ng-controller="welcomeController">
+ <fmt:message key="general.home" var="title" />
+ <div>
+ <span style="font-weight:bold;font-size:11pt;">Welcome ${sessionScope.user.firstName} ${sessionScope.user.lastName}</span>&nbsp;
+ (Last Login:&nbsp;<fmt:formatDate value="${sessionScope.user.lastLoginDate}" type="date" pattern="dd MMM yyyy hh:mma zzz" var="lastLogin" /> ${lastLogin})
+ </div>
+
+ <div id="gridDiv" class="center">
+ <div class="gridster-container">
+ <div att-gridster att-gridster-options='gridsterOpts'>
+ <div att-gridster-item='item' ng-repeat="item in standardItems">
+ <div att-gridster-item-header
+ header-text={{item.headerText}}
+ sub-header-text={{item.subHeaderText}}>
+ <!--ICON BUTTONS PLACEHOLDER START-->
+ <div class="tileMinMaxBtn" ng-click="toggleMinMax($index,'')">
+ <span class="tileMinMaxIcon">
+ <i class="ion-chevron-up" style="color:gray" ng-show="item.max"></i>
+ <i class="ion-chevron-down" style="color:gray" ng-hide="item.max"></i>
+ </span>
+ </div>
+ <!--ICON BUTTONS PLACEHOLDER END-->
+ </div>
+ <div att-gridster-item-body >
+ <!--ACTUAL BODY CONTENT START-->
+ <div align="center" style="margin-top:10px;">
+ <div align="left" ng-if="item.headerText=='Dashboard' && item.max">
+ <label>&nbsp; Sample Charts</label><BR>
+ <iframe scrolling="no" frameBorder="0" style="width: 430px; height: 360px;" src="static/fusion/sample/html/wordcloud.html"></iframe>
+ </div>
+ <div ng-if="item.headerText=='Donut Chart' && item.max">
+ <iframe scrolling="no" frameBorder="0" style="width: 310px; height: 210px;" src="static/fusion/sample/html/donut_d3.html"></iframe>
+ </div>
+ <div ng-if="item.headerText=='Area Chart' && item.max">
+ <div id="areaChart">
+ <div> <svg></svg> </div>
+ <script src="static/fusion/sample/html/js/area_chart.min.js"></script>
+ </div>
+ <!-- <iframe scrolling="no" frameBorder="0" style="width: 310px; height: 210px;" src="static/fusion/sample/html/area_chart.html"></iframe> -->
+ </div>
+ <div ng-if="item.headerText=='Pie Chart' && item.max">
+ <iframe scrolling="no" frameBorder="0" style="width: 310px; height: 210px;" src="static/fusion/sample/html/pie_chart.html"></iframe>
+ </div>
+ <div ng-if="item.headerText=='Line Chart' && item.max">
+ <div id="lineChart">
+ <div> <svg></svg> </div>
+ <script src="static/fusion/sample/html/js/line_chart.min.js"></script>
+ </div>
+
+<!-- <iframe scrolling="no" frameBorder="0" style="width: 310px; height: 210px;" src="static/fusion/sample/html/line_chart.html"></iframe> -->
+ </div>
+ <div ng-if="item.headerText=='Gauges' && item.max">
+ <iframe scrolling="no" frameBorder="0" style="width: 310pxx; height: 210px;" src="static/fusion/sample/html/d3_gauges_demo.html"></iframe>
+ </div>
+
+ <div align="left" ng-if="item.headerText=='Traffic distribution by day of week' && item.max">
+ <div id = "selectedTrafficDay">
+ <ul>
+ <li ng-repeat="Daytab in selectedTrafficDay"
+ ng-class="{active1:isActiveTab1(Daytab.url)}"
+ ng-click="onClickTab1(Daytab)">{{Daytab.title}}</li>
+ </ul>
+ <div id = "SelectedTrafficeDayView">
+ <div ng-include="currentSelectedDayTab"></div>
+ </div>
+ <script type="text/ng-template" id="#Monday">
+ <div id="Monday" align="centers"><img src="static/fusion/sample/images/tunnels/1_mon.png" width=100% height=100% alt="Monday"></div>
+ </script>
+ <script type="text/ng-template" id="#Tuesday">
+ <div id="Tuesday" align="center"><img src="static/fusion/sample/images/tunnels/2_tue.png" width=100% height=100% alt="Tuesday"></div>
+ </script>
+ <script type="text/ng-template" id="#Wednesday">
+ <div id="Wednesday" align="center"><img src="static/fusion/sample/images/tunnels/3_wed.png" width=100% height=100% alt="Wednesday"></div>
+ </script>
+ <script type="text/ng-template" id="#Thursday">
+ <div id="Thursday" align="center"><img src="static/fusion/sample/images/tunnels/4_thu.png" width=100% height=100% alt="Thursday"></div>
+ </script>
+ <script type="text/ng-template" id="#Friday">
+ <div id="Friday" align="center"><img src="static/fusion/sample/images/tunnels/5_fri.png" width=100% height=100% alt="Friday"></div>
+ </script>
+ <script type="text/ng-template" id="#Saturday">
+ <div id="Saturday" align="center"><img src="static/fusion/sample/images/tunnels/6_sat.png" width=100% height=100% alt="Saturday"></div>
+ </script>
+ <script type="text/ng-template" id="#Sunday">
+ <div id="Sunday" align="center"><img src="static/fusion/sample/images/tunnels/7_sun.png" width=100% height=100% alt="Sunday"></div>
+ </script>
+ </div>
+ </div>
+
+ <div align="left" ng-if="item.headerText=='Busy hour traffic analysis by day of week' && item.max">
+ <div id = "BusyHourTraffic">
+ <ul>
+ <li ng-repeat="TrafficTab in BusyHourTraffic"
+ ng-class="{active2:isActiveTab2(TrafficTab.url)}"
+ ng-click="onClickTab2(TrafficTab)">{{TrafficTab.title}}</li>
+ </ul>
+ <div id = "BusyHourTrafficView">
+ <div ng-include="currentSelectedBusyHourTraffic"></div>
+ </div>
+ <script type="text/ng-template" id="#Incoming">
+ <div id="Incoming" align="left"><img src="static/fusion/sample/images/tunnels/BH_DLSTX_IN.png" width=100% height=100%></div>
+ </script>
+ <script type="text/ng-template" id="#Outgoing">
+ <div id="Outgoing" align="center"><img src="static/fusion/sample/images/tunnels/BH_DLSTX_OUT.png" width=100% height=100%></div>
+ </script>
+ <script type="text/ng-template" id="#Default">
+ <div id="Default" align="center"><img src="static/fusion/sample/images/tunnels/BH_Nat_Def.png" width=100% height=100%></div>
+ </script>
+ <script type="text/ng-template" id="#Priority">
+ <div id="Priority" align="center"><img src="static/fusion/sample/images/tunnels/BH_Nat_Priority.png" width=100% height=100%></div>
+ </script>
+ <script type="text/ng-template" id="#BHNational">
+ <div id="BHNational" align="center"><img src="static/fusion/sample/images/tunnels/BH_Nat.png" width=100% height=100%></div>
+ </script>
+ </div>
+ </div>
+
+ <div align="left" ng-if="item.headerText=='Additional Samples' && item.max">
+ <label>&nbsp;Quick Links</label>
+ <table att-table >
+
+
+ <tr>
+ <td att-table-body width="90%" ><a href="http://jquery.com" target="_blank">JQuery</a></td>
+ <td att-table-body width="10%">
+ <a ng-click="removeRole();" ><img src="static/fusion/sample/images/deleteicon.gif"></a>
+ </td>
+ </tr>
+
+ <!-- <tr>
+ <td att-table-body width="90%" ><a href="sample_heat_map.htm" target="">Heat Map</a></td>
+ <td att-table-body width="10%">
+ <a ng-click="removeRole();" ><img src="static/fusion/sample/images/deleteicon.gif"></a>
+ </td>
+ </tr> -->
+ <tr>
+ <td att-table-body width="90%" ><a href="leafletMap.htm" target="">Animated Map</a></td>
+ <td att-table-body width="10%">
+ <a ng-click="removeRole();" ><img src="static/fusion/sample/images/deleteicon.gif"></a>
+ </td>
+ </tr>
+ <tr>
+ <td att-table-body width="90%" ><a href="collaborate_list.htm">Chat Session</a></td>
+ <td att-table-body width="10%">
+ <a ng-click="removeRole();" ><img src="static/fusion/sample/images/deleteicon.gif"></a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div ng-if="item.headerText=='Sticky Notes' && item.max">
+ <div style="width:100%; height:400px" id="scribble-pad"><pre id="scribble" contenteditable="true" onkeyup="storeUserScribble(this.id);"></pre></div>
+ </div>
+
+ <div ng-if="item.headerText=='Service Configuration' && item.max">
+ <accordion close-others="true" css="att-accordion">
+ <accordion-group heading="Service Configuration" is-open="group11.open">
+ <iframe style="overflow:auto" frameBorder="0" align="center" width="100%" height="400px" src="static/fusion/sample/org_chart/example.html" ></iframe>
+ </accordion-group>
+ <accordion-group heading="VSP Service Configuration" is-open="group12.open">
+ <iframe style="overflow:auto" frameBorder="0" align="center" width="100%" height="400px" src="static/fusion/sample/org_chart/example_vsp.html" ></iframe>
+ </accordion-group>
+ </accordion>
+
+ </div>
+
+ </div>
+
+ <!--ACTUAL BODY CONTENT END-->
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div> <!-- End gridDiv -->
+
+</div>
+
+<script>
+ $(document).ready(function() {
+ $("#rightIcon").hide();
+ $("#leftIcon").show();
+ });
+
+ app.controller('welcomeController',function($scope, modalService, $modal) {
+ $scope.gridsterOpts = {
+ columns : 3, // the width of the grid, in columns
+ pushing : true, // whether to push other items out of the way on move or resize
+ floating : true, // whether to automatically float items up so they stack (you can temporarily disable if you are adding unsorted items with ng-repeat)
+ width : 'auto', // can be an integer or 'auto'. 'auto' scales gridster to be the full width of its containing element
+ colWidth : 'auto', // can be an integer or 'auto'. 'auto' uses the pixel width of the element divided by 'columns'
+ rowHeight : 60, // can be an integer or 'match'. Match uses the colWidth, giving you square widgets.
+ margins : [ 10, 10 ], // the pixel distance between each widget
+ outerMargin : true, // whether margins apply to outer edges of the grid
+ swapping : true,
+ draggable : {
+ enabled : true, // whether dragging items is supported
+ stop: function(event, uiWidget, $element) {$scope.setCookie();} // optional callback fired when item is finished dragging
+ }
+
+ };
+
+ /* $scope.gridsterOpts = {
+ columns: 6,
+ width: 'auto',
+ colWidth: '230',
+ rowHeight: '120',
+ margins: [10, 10],
+ outerMargin: true,
+ pushing: true,
+ floating: true,
+ swapping: true
+ }; */
+
+ $scope.toggleMinMax = function(index, tileName) {
+ if (tileName == '') {
+ $scope.standardItems[index].max = !$scope.standardItems[index].max;
+ if ($scope.standardItems[index].max)
+ $scope.standardItems[index].sizeY = $scope.standardItems[index].maxHeight;
+ else
+ $scope.standardItems[index].sizeY = 0;
+ } else {
+ $scope.tileTemp = $scope.$eval(tileName);
+ var tileMax = $parse(tileName + '.max');
+ tileMax.assign($scope,!$scope.$eval(tileName).max);
+ var tileSizeY = $parse(tileName + '.sizeY');
+ if ($scope.tileTemp.max)
+ tileSizeY.assign($scope,$scope.tileTemp.maxHeight);
+ else
+ tileSizeY.assign($scope, 0);
+ }
+ };
+
+
+
+ // These map directly to gridsterItem options
+ // IMPORTANT: Items should be placed in the grid in the order in which
+ // they should appear.
+ // In most cases the sorting should be by row ASC, col ASC
+ $scope.standardItems = [{
+ sizeX : 1,
+ sizeY : 8,
+ maxHeight : 8,
+ row : 0,
+ col : 0,
+ headerText : 'Dashboard',
+ max : false
+
+ },
+ {
+ sizeX : 1,
+ sizeY : 5,
+ maxHeight : 5,
+ row : 0,
+ col : 1,
+ headerText : 'Donut Chart',
+ max : false
+
+ },
+ {
+ sizeX : 1,
+ sizeY : 5,
+ maxHeight : 5,
+ row : 0,
+ col : 2,
+ headerText : 'Area Chart',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 5,
+ maxHeight : 5,
+ row : 8,
+ col : 0,
+ headerText : 'Pie Chart',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 5,
+ maxHeight : 5,
+ row : 8,
+ col : 1,
+ headerText : 'Line Chart',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 5,
+ maxHeight : 5,
+ row : 8,
+ col : 2,
+ headerText : 'Gauges',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 8,
+ maxHeight : 8,
+ row : 16,
+ col : 0,
+ headerText : 'Traffic distribution by day of week',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 8,
+ maxHeight : 8,
+ row : 16,
+ col : 1,
+ headerText : 'Busy hour traffic analysis by day of week',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 6,
+ maxHeight : 6,
+ row : 24,
+ col : 0,
+ headerText : 'Additional Samples',
+ max : false
+ },
+ {
+ sizeX : 1,
+ sizeY : 8,
+ maxHeight : 8,
+ row : 24,
+ col : 1,
+ headerText : 'Sticky Notes',
+ max : false
+ },
+ {
+ sizeX : 3,
+ sizeY : 10,
+ maxHeight : 10,
+ row : 32,
+ col : 0,
+ headerText : 'Service Configuration',
+ max : false
+ } ];
+
+ $.each($scope.standardItems, function(i, a) {
+ $scope.toggleMinMax(i, '');
+ });
+ $scope.activeTabId = 'Monday';
+ //for generic tabs
+
+ $scope.selectedTrafficDay = [{
+ title : 'Mon',
+ url : '#Monday'
+ }, {
+ title : 'Tue',
+ url : '#Tuesday'
+ }, {
+ title : 'Wed',
+ url : '#Wednesday'
+ }, {
+ title : 'Thu',
+ url : '#Thursday'
+ }, {
+ title : 'Fri',
+ url : '#Friday'
+ }, {
+ title : 'Sat',
+ url : '#Saturday'
+ }, {
+ title : 'Sun',
+ url : '#Sunday'
+ }];
+
+ $scope.currentSelectedDayTab = '#Monday';
+
+ $scope.onClickTab1 = function (Daytab) {
+ $scope.currentSelectedDayTab = Daytab.url;
+ }
+
+ $scope.isActiveTab1 = function(tabUrl) {
+ return tabUrl == $scope.currentSelectedDayTab;
+ }
+
+
+ $scope.gTabs = [ {
+ title : 'Monday',
+ id : 'Monday',
+ url : '#Monday',
+ selected : true
+ }, {
+ title : 'Tuesday',
+ id : 'Tuesday',
+ url : '#Tuesday'
+ }, {
+ title : 'Wednesday',
+ id : 'Wednesday',
+ url : '#Wednesday'
+ }, {
+ title : 'Thursday',
+ id : 'Thursday',
+ url : '#Thursday'
+ }, {
+ title : 'Friday',
+ id : 'Friday',
+ url : '#Friday'
+ }, {
+ title : 'Saturday',
+ id : 'Saturday',
+ url : '#Saturday'
+ }, {
+ title : 'Sunday',
+ id : 'Sunday',
+ url : '#Sunday'
+ }
+ ];
+
+
+
+
+
+ $scope.BusyHourTraffic = [ {
+ title : 'BH SNRC DLSTX - Incoming',
+ url : '#Incoming'
+ }, {
+ title : 'BH SNRC DLSTX - Outgoing',
+ url : '#Outgoing'
+ }, {
+ title : 'BH National - Default',
+ url : '#Default'
+ }, {
+ title : 'BH National - Priority',
+ url : '#Priority'
+ }, {
+ title : 'BH National',
+ url : '#BHNational'
+ }
+
+ ];
+
+ $scope.currentSelectedBusyHourTraffic = '#Incoming';
+
+ $scope.onClickTab2 = function (TrafficTab) {
+ $scope.currentSelectedBusyHourTraffic = TrafficTab.url;
+ }
+
+ $scope.isActiveTab2 = function(tabUrl) {
+ return tabUrl == $scope.currentSelectedBusyHourTraffic;
+ }
+
+
+ $scope.activeTabId2 = 'Incoming';
+ //for generic tabs
+ $scope.gTabs2 = [ {
+ title : 'BH SNRC DLSTX - Incoming',
+ id : 'Incoming',
+ url : '#Incoming',
+ selected : true
+ }, {
+ title : 'BH SNRC DLSTX - Outgoing',
+ id : 'Outgoing',
+ url : '#Outgoing'
+ }, {
+ title : 'BH National - Default',
+ id : 'Default',
+ url : '#Default'
+ }, {
+ title : 'BH National - Priority',
+ id : 'Priority',
+ url : '#Priority'
+ }, {
+ title : 'BH National',
+ id : 'BHNational',
+ url : '#BHNational'
+ }
+ ];
+
+ $scope.activeTabId3 = 'Incoming';
+ //for generic tabs
+ $scope.gTabs3 = [ {
+ title : 'BH SNRC DLSTX - Incoming',
+ id: 'Incoming',
+ url : '#Incoming',
+ selected : true
+ }, {
+ title : 'BH SNRC DLSTX - Outgoing',
+ id : 'Outgoing',
+ url : '#Outgoing'
+ }, {
+ title : 'BH National - Default',
+ id : 'Default',
+ url : '#Default'
+ }, {
+ title : 'BH National - Priority',
+ id : 'Priority',
+ url : '#Priority'
+ }, {
+ title : 'BH National',
+ id : 'BHNational',
+ url : '#BHNational'
+ }
+ ];
+
+ /* $scope.$watch('activeTabId', function(newVal) {
+ alert(newval);
+ $('#'+newval).show();
+ }, true); */
+
+ $scope.toggleEastToWest = function() {
+ $("#toggle").toggle('slide');
+ if ($("#leftIcon").is(":visible")) {
+ $("#rightIcon").show();
+ $("#leftIcon").hide();
+ }
+ else if ($("#rightIcon").is(":visible")) {
+ $("#rightIcon").hide();
+ $("#leftIcon").show();
+ }
+ };
+
+ $scope.group1 = {
+ open : true
+ };
+ $scope.group2 = {
+ open : true
+ };
+ $scope.group3 = {
+ open : true
+ };
+ $scope.group4 = {
+ open : true
+ };
+ $scope.group5 = {
+ open : true
+ };
+ $scope.group6 = {
+ open : true
+ };
+ $scope.group7 = {
+ open : true
+ };
+ $scope.group71 = {
+ open : true
+ };
+ $scope.group8 = {
+ open : true
+ };
+ $scope.group9 = {
+ open : true
+ };
+ $scope.group10 = {
+ open : true
+ };
+ $scope.group11 = {
+ open : true
+ };
+ $scope.group12 = {
+ open : false
+ };
+ });
+</script>
+
+<!-- Select the Slider control by default -->
+ <script>$('input[name=viewer]:eq(1)').click();</script>
diff --git a/ecomp-sdk-app/src/main/webapp/WEB-INF/web.xml b/ecomp-sdk-app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 000000000..32cfa88ec
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?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">
+
+ <display-name>ecomp-sdk-app</display-name>
+
+ <!-- The app can function on a HA cluster -->
+ <distributable />
+ <servlet>
+ <servlet-name>FileManagerServlet</servlet-name>
+ <servlet-class>org.openecomp.policy.admin.PolicyManagerServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>FileManagerServlet</servlet-name>
+ <url-pattern>/fm/*</url-pattern>
+ </servlet-mapping>
+ <session-config>
+ <session-timeout>7</session-timeout>
+ <tracking-mode>COOKIE</tracking-mode>
+ </session-config>
+
+</web-app>